{"version":3,"file":"healthcatalyst-cashmere.mjs","sources":["../../../projects/cashmere/src/lib/util.ts","../../../projects/cashmere/src/lib/accordion/accordion.component.ts","../../../projects/cashmere/src/lib/accordion/accordion.component.html","../../../projects/cashmere/src/lib/accordion/accordion-toolbar.component.ts","../../../projects/cashmere/src/lib/accordion/accordion.module.ts","../../../projects/cashmere/src/lib/app-switcher/app-switcher-interfaces.ts","../../../projects/cashmere/src/lib/shared/work-tracker.service.ts","../../../projects/cashmere/src/lib/progress-indicators/progress-spinner.component.ts","../../../projects/cashmere/src/lib/progress-indicators/progress-spinner.component.html","../../../projects/cashmere/src/lib/pipes/ellipsis/ellipsis.pipe.ts","../../../projects/cashmere/src/lib/app-switcher/app-switcher.component.ts","../../../projects/cashmere/src/lib/app-switcher/app-switcher.component.html","../../../projects/cashmere/src/lib/icon/icon.component.ts","../../../projects/cashmere/src/lib/app-switcher/app-switcher-application-link/app-switcher-links.component.ts","../../../projects/cashmere/src/lib/app-switcher/app-switcher-application-link/app-switcher-links.component.html","../../../projects/cashmere/src/lib/pop/popover.animations.ts","../../../projects/cashmere/src/lib/pop/notification.service.ts","../../../projects/cashmere/src/lib/pop/types.ts","../../../projects/cashmere/src/lib/pop/popover.errors.ts","../../../projects/cashmere/src/lib/pop/directives/menu-item.directive.ts","../../../projects/cashmere/src/lib/pop/popover.component.ts","../../../projects/cashmere/src/lib/pop/popover.component.html","../../../projects/cashmere/src/lib/pop/tooltip/tooltip.component.ts","../../../projects/cashmere/src/lib/pop/tooltip/tooltip.component.html","../../../projects/cashmere/src/lib/pop/popover-anchoring.service.ts","../../../projects/cashmere/src/lib/pop/popover-accessibility.service.ts","../../../projects/cashmere/src/lib/pop/directives/popover-anchor.directive.ts","../../../projects/cashmere/src/lib/pop/directives/menu.directive.ts","../../../projects/cashmere/src/lib/pop/directives/menu-icon.directive.ts","../../../projects/cashmere/src/lib/pop/directives/menu-text.directive.ts","../../../projects/cashmere/src/lib/pop/directives/menu-sub-text.directive.ts","../../../projects/cashmere/src/lib/pop/directives/divider.directive.ts","../../../projects/cashmere/src/lib/pop/popover.module.ts","../../../projects/cashmere/src/lib/progress-indicators/progress-dots.component.ts","../../../projects/cashmere/src/lib/progress-indicators/progress-dots.component.html","../../../projects/cashmere/src/lib/progress-indicators/progress-bar.component.ts","../../../projects/cashmere/src/lib/progress-indicators/progress-bar.component.html","../../../projects/cashmere/src/lib/progress-indicators/progress-indicators.module.ts","../../../projects/cashmere/src/lib/app-switcher/app-switcher.service.ts","../../../projects/cashmere/src/lib/pipes/ellipsis/ellipsis-pipe.module.ts","../../../projects/cashmere/src/lib/pipes/null-or-empty-string/null-or-empty-string.pipe.ts","../../../projects/cashmere/src/lib/pipes/null-or-empty-string/null-or-empty-string-pipe.module.ts","../../../projects/cashmere/src/lib/pipes/file-size/file-size.pipe.ts","../../../projects/cashmere/src/lib/pipes/file-size/file-size-pipe.module.ts","../../../projects/cashmere/src/lib/pipes/number-abbreviator/number-abbreviator.pipe.ts","../../../projects/cashmere/src/lib/pipes/number-abbreviator/number-abbreviator-pipe.module.ts","../../../projects/cashmere/src/lib/pipes/highlight/highlight.pipe.ts","../../../projects/cashmere/src/lib/pipes/highlight/highlight-pipe.module.ts","../../../projects/cashmere/src/lib/pipes/pipes.module.ts","../../../projects/cashmere/src/lib/icon/hc-icon-sm.directive.ts","../../../projects/cashmere/src/lib/icon/hc-icon-md.directive.ts","../../../projects/cashmere/src/lib/icon/hc-icon-lg.directive.ts","../../../projects/cashmere/src/lib/icon/icon.module.ts","../../../projects/cashmere/src/lib/app-switcher/app-switcher.module.ts","../../../projects/cashmere/src/lib/banner/hc-banner.component.ts","../../../projects/cashmere/src/lib/banner/hc-banner.html","../../../projects/cashmere/src/lib/banner/hc-banner-stamp.directive.ts","../../../projects/cashmere/src/lib/banner/hc-banner.module.ts","../../../projects/cashmere/src/lib/breadcrumbs/breadcrumbs.component.ts","../../../projects/cashmere/src/lib/breadcrumbs/breadcrumbs.component.html","../../../projects/cashmere/src/lib/breadcrumbs/breadcrumbs.module.ts","../../../projects/cashmere/src/lib/utils/supported-colors.ts","../../../projects/cashmere/src/lib/button/button.component.ts","../../../projects/cashmere/src/lib/button/anchor.component.ts","../../../projects/cashmere/src/lib/button/split-button/split-button.component.ts","../../../projects/cashmere/src/lib/button/split-button/split-button.component.html","../../../projects/cashmere/src/lib/button/button.module.ts","../../../projects/cashmere/src/lib/button-toggle/button-toggle.component.ts","../../../projects/cashmere/src/lib/button-toggle/button-toggle-change-event.ts","../../../projects/cashmere/src/lib/form-field/hc-form-control.component.ts","../../../projects/cashmere/src/lib/button-toggle/button-toggle-group.component.ts","../../../projects/cashmere/src/lib/button-toggle/button-toggle.module.ts","../../../projects/cashmere/src/lib/checkbox/checkbox.component.ts","../../../projects/cashmere/src/lib/checkbox/checkbox.component.html","../../../projects/cashmere/src/lib/checkbox/checkbox-required.directive.ts","../../../projects/cashmere/src/lib/checkbox/checkbox.module.ts","../../../projects/cashmere/src/lib/chip/chip.component.ts","../../../projects/cashmere/src/lib/chip/chip.component.html","../../../projects/cashmere/src/lib/chip/chip-row/chip-row.component.ts","../../../projects/cashmere/src/lib/chip/chip.module.ts","../../../projects/cashmere/src/lib/utils/local-storage.ts","../../../projects/cashmere/src/lib/column-menu/column-menu.component.ts","../../../projects/cashmere/src/lib/column-menu/column-menu.component.html","../../../projects/cashmere/src/lib/column-menu/column-menu.module.ts","../../../projects/cashmere/src/lib/datepicker/datetime/datepicker-errors.ts","../../../projects/cashmere/src/lib/datepicker/datetime/date-formats.ts","../../../projects/cashmere/src/lib/datepicker/calendar-body/calendar-body.component.ts","../../../projects/cashmere/src/lib/datepicker/calendar-body/calendar-body.component.html","../../../projects/cashmere/src/lib/datepicker/datetime/date-adapter.ts","../../../projects/cashmere/src/lib/datepicker/multi-year-view/multi-year-view.component.ts","../../../projects/cashmere/src/lib/datepicker/multi-year-view/multi-year-view.component.html","../../../projects/cashmere/src/lib/datepicker/month-view/month-view.component.ts","../../../projects/cashmere/src/lib/datepicker/month-view/month-view.component.html","../../../projects/cashmere/src/lib/datepicker/year-view/year-view.component.ts","../../../projects/cashmere/src/lib/datepicker/year-view/year-view.component.html","../../../projects/cashmere/src/lib/datepicker/datepicker-intl.ts","../../../projects/cashmere/src/lib/input/input.directive.ts","../../../projects/cashmere/src/lib/form-field/hc-error.component.ts","../../../projects/cashmere/src/lib/form-field/hc-prefix.directive.ts","../../../projects/cashmere/src/lib/form-field/hc-suffix.directive.ts","../../../projects/cashmere/src/lib/form-field/hc-label.component.ts","../../../projects/cashmere/src/lib/form-field/hc-form-field.component.ts","../../../projects/cashmere/src/lib/form-field/hc-form-field.component.html","../../../projects/cashmere/src/lib/select/select.service.ts","../../../projects/cashmere/src/lib/select/hc-option.directive.ts","../../../projects/cashmere/src/lib/select/select.component.ts","../../../projects/cashmere/src/lib/select/select.component.html","../../../projects/cashmere/src/lib/datepicker/calendar/calendar.component.ts","../../../projects/cashmere/src/lib/datepicker/calendar/calendar-header.html","../../../projects/cashmere/src/lib/datepicker/calendar/calendar.component.html","../../../projects/cashmere/src/lib/datepicker/datepicker-animations.ts","../../../projects/cashmere/src/lib/datepicker/datepicker-content/datepicker-content.component.ts","../../../projects/cashmere/src/lib/datepicker/datepicker-content/datepicker-content.component.html","../../../projects/cashmere/src/lib/datepicker/datepicker-input/datepicker-input.directive.ts","../../../projects/cashmere/src/lib/datepicker/datepicker-toggle/datepicker-toggle.component.ts","../../../projects/cashmere/src/lib/datepicker/datepicker-toggle/datepicker-toggle.component.html","../../../projects/cashmere/src/lib/datepicker/datetime/native-date-adapter.ts","../../../projects/cashmere/src/lib/datepicker/datetime/native-date-formats.ts","../../../projects/cashmere/src/lib/datepicker/datetime/datetime.module.ts","../../../projects/cashmere/src/lib/datepicker/datepicker.component.ts","../../../projects/cashmere/src/lib/form-field/hc-label-ext.component.ts","../../../projects/cashmere/src/lib/form-field/hc-form.directive.ts","../../../projects/cashmere/src/lib/form-field/hc-form-field.module.ts","../../../projects/cashmere/src/lib/input/clear-input.component.ts","../../../projects/cashmere/src/lib/input/input.module.ts","../../../projects/cashmere/src/lib/select/select.module.ts","../../../projects/cashmere/src/lib/datepicker/datepicker.module.ts","../../../projects/cashmere/src/lib/date-range/services/config-store.service.ts","../../../projects/cashmere/src/lib/date-range/calendar-wrapper/calendar-wrapper.component.ts","../../../projects/cashmere/src/lib/date-range/calendar-wrapper/calendar-wrapper.component.html","../../../projects/cashmere/src/lib/radio-button/radio.ts","../../../projects/cashmere/src/lib/radio-button/radio-button.component.html","../../../projects/cashmere/src/lib/date-range/picker-overlay/picker-overlay.component.ts","../../../projects/cashmere/src/lib/date-range/picker-overlay/picker-overlay.component.html","../../../projects/cashmere/src/lib/date-range/services/calendar-overlay.service.ts","../../../projects/cashmere/src/lib/date-range/date-range/date-range.directive.ts","../../../projects/cashmere/src/lib/radio-button/radio-button.module.ts","../../../projects/cashmere/src/lib/date-range/date-range.module.ts","../../../projects/cashmere/src/lib/drawer/drawer.component.ts","../../../projects/cashmere/src/lib/backdrop/backdrop.component.ts","../../../projects/cashmere/src/lib/backdrop/backdrop-host.directive.ts","../../../projects/cashmere/src/lib/drawer/drawer-container.component.ts","../../../projects/cashmere/src/lib/drawer/drawer-container.component.html","../../../projects/cashmere/src/lib/drawer/menu-drawer/drawer-header.directive.ts","../../../projects/cashmere/src/lib/drawer/menu-drawer/menu-drawer.component.ts","../../../projects/cashmere/src/lib/drawer/menu-drawer/menu-drawer.component.html","../../../projects/cashmere/src/lib/drawer/menu-drawer/drawer-item.component.ts","../../../projects/cashmere/src/lib/backdrop/backdrop.module.ts","../../../projects/cashmere/src/lib/drawer/drawer.module.ts","../../../projects/cashmere/src/lib/drag-list/drag-list.component.ts","../../../projects/cashmere/src/lib/drag-list/drag-list.component.html","../../../projects/cashmere/src/lib/drag-list/drag-list.module.ts","../../../projects/cashmere/src/lib/env-switcher/env-switcher-interfaces.ts","../../../projects/cashmere/src/lib/env-switcher/env-switcher.component.ts","../../../projects/cashmere/src/lib/env-switcher/env-switcher.component.html","../../../projects/cashmere/src/lib/env-switcher/env-switcher.module.ts","../../../projects/cashmere/src/lib/file-uploader/file-uploader.component.ts","../../../projects/cashmere/src/lib/file-uploader/file-uploader.component.html","../../../projects/cashmere/src/lib/file-uploader/file-uploader.module.ts","../../../projects/cashmere/src/lib/measurable/measurable.component.ts","../../../projects/cashmere/src/lib/measurable/measurable.component.html","../../../projects/cashmere/src/lib/measurable/measurable.service.ts","../../../projects/cashmere/src/lib/measurable/measurable.module.ts","../../../projects/cashmere/src/lib/instance-switcher/instance-switcher.component.ts","../../../projects/cashmere/src/lib/instance-switcher/instance-switcher.component.html","../../../projects/cashmere/src/lib/instance-switcher/instance-switcher.module.ts","../../../projects/cashmere/src/lib/list/list.component.ts","../../../projects/cashmere/src/lib/list/list.component.html","../../../projects/cashmere/src/lib/list/list-item/list-item.component.ts","../../../projects/cashmere/src/lib/list/list-item/list-item.component.html","../../../projects/cashmere/src/lib/list/list-item/directives/list-avatar.directive.ts","../../../projects/cashmere/src/lib/list/list-item/directives/list-icon.directive.ts","../../../projects/cashmere/src/lib/list/list-item/directives/list-line.directive.ts","../../../projects/cashmere/src/lib/list/list.module.ts","../../../projects/cashmere/src/lib/modal/active-modal.ts","../../../projects/cashmere/src/lib/modal/modal-body.component.ts","../../../projects/cashmere/src/lib/modal/modal-footer.component.ts","../../../projects/cashmere/src/lib/modal/modal-header.component.ts","../../../projects/cashmere/src/lib/modal/modal.component.ts","../../../projects/cashmere/src/lib/modal/modal-window.component.ts","../../../projects/cashmere/src/lib/modal/modal-overlay.component.ts","../../../projects/cashmere/src/lib/modal/modal.ts","../../../projects/cashmere/src/lib/modal/simple-modal/simple-modal-options.model.ts","../../../projects/cashmere/src/lib/modal/simple-modal/simple-modal.component.ts","../../../projects/cashmere/src/lib/modal/simple-modal/simple-modal.component.html","../../../projects/cashmere/src/lib/modal/modal.service.ts","../../../projects/cashmere/src/lib/modal/modal.module.ts","../../../projects/cashmere/src/lib/multiselect/multiselect.component.ts","../../../projects/cashmere/src/lib/multiselect/multiselect.module.ts","../../../projects/cashmere/src/lib/navbar/navbar-link/navbar-link.component.ts","../../../projects/cashmere/src/lib/navbar/navbar-link/navbar-link.component.html","../../../projects/cashmere/src/lib/navbar/navbar-mobile-menu/navbar-mobile-menu.component.ts","../../../projects/cashmere/src/lib/navbar/navbar-mobile-menu/navbar-mobile-menu.component.html","../../../projects/cashmere/src/lib/navbar/navbar.component.ts","../../../projects/cashmere/src/lib/navbar/navbar.component.html","../../../projects/cashmere/src/lib/navbar/navbar-dropdown/navbar-dropdown.component.ts","../../../projects/cashmere/src/lib/navbar/navbar-dropdown/navbar-dropdown.component.html","../../../projects/cashmere/src/lib/navbar/navbar-cobrand/navbar-cobrand.component.ts","../../../projects/cashmere/src/lib/navbar/navbar.module.ts","../../../projects/cashmere/src/lib/shared/initializable.ts","../../../projects/cashmere/src/lib/pagination/base-pagination.ts","../../../projects/cashmere/src/lib/pagination/pagination.component.ts","../../../projects/cashmere/src/lib/pagination/pagination.component.html","../../../projects/cashmere/src/lib/pagination/load-more-pagination.component.ts","../../../projects/cashmere/src/lib/pagination/load-more-pagination.component.html","../../../projects/cashmere/src/lib/pagination/page-event.ts","../../../projects/cashmere/src/lib/pagination/pagination.module.ts","../../../projects/cashmere/src/lib/picklist-old/picklist-old.model.ts","../../../projects/cashmere/src/lib/picklist-old/pane/picklist-pane.model.ts","../../../projects/cashmere/src/lib/picklist-old/services/picklist-filter-local.service.ts","../../../projects/cashmere/src/lib/picklist-old/services/picklist-state.service.ts","../../../projects/cashmere/src/lib/picklist-old/services/picklist-filter-remote.service.ts","../../../projects/cashmere/src/lib/picklist-old/services/picklist-filter.service.ts","../../../projects/cashmere/src/lib/picklist-old/services/picklist-valueset-moving.service.ts","../../../projects/cashmere/src/lib/picklist-old/services/picklist-old.service.ts","../../../projects/cashmere/src/lib/picklist-old/services/picklist-action.service.ts","../../../projects/cashmere/src/lib/picklist-old/pane/picklist-pane.component.ts","../../../projects/cashmere/src/lib/picklist-old/pane/picklist-pane.component.html","../../../projects/cashmere/src/lib/picklist-old/picklist-old.component.ts","../../../projects/cashmere/src/lib/picklist-old/picklist-old.component.html","../../../projects/cashmere/src/lib/picklist-old/picklist-old.module.ts","../../../projects/cashmere/src/lib/picklist/pick-templates.directive.ts","../../../projects/cashmere/src/lib/picklist/pick-option.component.ts","../../../projects/cashmere/src/lib/picklist/picklist.service.ts","../../../projects/cashmere/src/lib/picklist/pick.types.ts","../../../projects/cashmere/src/lib/picklist/pane/items-list.ts","../../../projects/cashmere/src/lib/picklist/pane/pick-pane-list.service.ts","../../../projects/cashmere/src/lib/picklist/pane/pick-pane-list.component.ts","../../../projects/cashmere/src/lib/picklist/pane/pick-pane-drag.service.ts","../../../projects/cashmere/src/lib/picklist/pane/pick-pane.component.ts","../../../projects/cashmere/src/lib/picklist/pane/pick-pane.component.html","../../../projects/cashmere/src/lib/picklist/picklist.component.ts","../../../projects/cashmere/src/lib/picklist/picklist.component.html","../../../projects/cashmere/src/lib/picklist/pane/selection-model.ts","../../../projects/cashmere/src/lib/picklist/picklist.module.ts","../../../projects/cashmere/src/lib/release-notes-modal/release-notes-modal.component.ts","../../../projects/cashmere/src/lib/release-notes-modal/release-notes-modal.component.html","../../../projects/cashmere/src/lib/release-notes-modal/release-notes.model.ts","../../../projects/cashmere/src/lib/release-notes-modal/release-notes.service.ts","../../../projects/cashmere/src/lib/release-notes-modal/release-notes-modal.module.ts","../../../projects/cashmere/src/lib/resizable/resizable.config.ts","../../../projects/cashmere/src/lib/resizable/resizable.meta.ts","../../../projects/cashmere/src/lib/resizable/resizable.component.ts","../../../projects/cashmere/src/lib/resizable/resizable.component.html","../../../projects/cashmere/src/lib/resizable/resizable-static.directive.ts","../../../projects/cashmere/src/lib/resizable/resizable-container.directive.ts","../../../projects/cashmere/src/lib/resizable/resizable.module.ts","../../../projects/cashmere/src/lib/scroll-nav/nav/scroll-nav-link.directive.ts","../../../projects/cashmere/src/lib/scroll-nav/nav/scroll-nav.component.ts","../../../projects/cashmere/src/lib/scroll-nav/nav/scroll-nav.component.html","../../../projects/cashmere/src/lib/scroll-nav/content/scroll-nav-target.directive.ts","../../../projects/cashmere/src/lib/scroll-nav/content/scroll-nav-content.component.ts","../../../projects/cashmere/src/lib/scroll-nav/content/scroll-nav-content.component.html","../../../projects/cashmere/src/lib/scroll-nav/scroll-nav.module.ts","../../../projects/cashmere/src/lib/search-bar/search-bar.component.ts","../../../projects/cashmere/src/lib/search-bar/search-bar.component.html","../../../projects/cashmere/src/lib/search-bar/search-bar.module.ts","../../../projects/cashmere/src/lib/slide-toggle/slide-toggle.component.ts","../../../projects/cashmere/src/lib/slide-toggle/slide-toggle.component.html","../../../projects/cashmere/src/lib/slide-toggle/slide-toggle.module.ts","../../../projects/cashmere/src/lib/slider/slider.component.ts","../../../projects/cashmere/src/lib/slider/slider.module.ts","../../../projects/cashmere/src/lib/sidenav/sidenav.component.ts","../../../projects/cashmere/src/lib/sidenav/sidenav.component.html","../../../projects/cashmere/src/lib/sidenav/sidenav.models.ts","../../../projects/cashmere/src/lib/sidenav/sidenav-header.directive.ts","../../../projects/cashmere/src/lib/sidenav/sidenav-body.directive.ts","../../../projects/cashmere/src/lib/sidenav/sidenav-footer.directive.ts","../../../projects/cashmere/src/lib/sidenav/sidenav.module.ts","../../../projects/cashmere/src/lib/sort/sort-animations.ts","../../../projects/cashmere/src/lib/sort/sort-errors.ts","../../../projects/cashmere/src/lib/sort/sort-header-intl.ts","../../../projects/cashmere/src/lib/sort/sort.ts","../../../projects/cashmere/src/lib/sort/sort-header.ts","../../../projects/cashmere/src/lib/sort/sort-header.html","../../../projects/cashmere/src/lib/sort/sort-menu.component.ts","../../../projects/cashmere/src/lib/sort/sort-menu.component.html","../../../projects/cashmere/src/lib/sort/sort-module.ts","../../../projects/cashmere/src/lib/stepper/stepper.component.ts","../../../projects/cashmere/src/lib/stepper/stepper.component.html","../../../projects/cashmere/src/lib/stepper/stepper.module.ts","../../../projects/cashmere/src/lib/subnav/subnav.component.ts","../../../projects/cashmere/src/lib/subnav/subnav-right.directive.ts","../../../projects/cashmere/src/lib/subnav/subnav.module.ts","../../../projects/cashmere/src/lib/table/table.component.ts","../../../projects/cashmere/src/lib/table/cell.ts","../../../projects/cashmere/src/lib/table/row.ts","../../../projects/cashmere/src/lib/table/cell-resizer.component.ts","../../../projects/cashmere/src/lib/table/table-container.directive.ts","../../../projects/cashmere/src/lib/table/table.module.ts","../../../projects/cashmere/src/lib/table/table-data-source.ts","../../../projects/cashmere/src/lib/tabs/tab/tab-title.component.ts","../../../projects/cashmere/src/lib/tabs/tab/tab.component.ts","../../../projects/cashmere/src/lib/tabs/tab/tab.component.html","../../../projects/cashmere/src/lib/tabs/tab-set/tab-set.component.ts","../../../projects/cashmere/src/lib/tabs/tab-set/tab-set.component.html","../../../projects/cashmere/src/lib/tabs/tabs.module.ts","../../../projects/cashmere/src/lib/tile/tile.component.ts","../../../projects/cashmere/src/lib/tile/tile-header.directive.ts","../../../projects/cashmere/src/lib/tile/tile.module.ts","../../../projects/cashmere/src/lib/toaster/hc-toast.component.ts","../../../projects/cashmere/src/lib/toaster/hc-toast.component.html","../../../projects/cashmere/src/lib/toaster/hc-toast-ref.ts","../../../projects/cashmere/src/lib/toaster/hc-toaster.service.ts","../../../projects/cashmere/src/lib/toaster/hc-toaster.module.ts","../../../projects/cashmere/src/lib/typeform-survey/typeform-survey.component.ts","../../../projects/cashmere/src/lib/typeform-survey/typeform-survey.module.ts","../../../projects/cashmere/src/public_api.ts","../../../projects/cashmere/src/healthcatalyst-cashmere.ts"],"sourcesContent":["import {Observable, Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\n/** Parse a given input into a boolean. */\nexport function parseBooleanAttribute(value: boolean | string): boolean {\n    if (value === null || value === undefined) {\n        return false;\n    }\n    if (typeof value === 'boolean') {\n        return value;\n    }\n    if (value.toLowerCase() === 'false') {\n        return false;\n    }\n    if (value.toLowerCase() === 'true' || value === '') {\n        return true;\n    }\n    throw Error(String(value) + ' is not a boolean value');\n}\n\n/** Accepts a string, return that string with HTML tag escaped. */\nconst helperEl = document.createElement('p');\nexport function escapeHTML(string: string): string {\n    helperEl.innerText = string; // Setting inner text causes escaping\n    return helperEl.innerHTML;\n}\n\n/** Return true if given value is not null and not undefined. */\nexport function isDefined(value: unknown): boolean {\n    return value !== undefined && value !== null;\n}\n\n/** Return true if given value is an object that is defined. */\nexport function isObject(value: unknown): boolean {\n    return typeof value === 'object' && isDefined(value);\n}\n\n/** Return true if given value is a promise. */\nexport function isPromise(value: unknown): boolean {\n    return value instanceof Promise;\n}\n\n/** Return true if given value is a function. */\nexport function isFunction(value: unknown): boolean {\n    return value instanceof Function;\n}\n\n/* Open Source `take-until-destroy` operator from: https://github.com/NetanelBasal/ngx-take-until-destroy */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const untilDestroyed = (componentInstance, destroyMethodName = 'ngOnDestroy') => <T>(source: Observable<T>) => {\n    const originalDestroy = componentInstance[destroyMethodName];\n    if (isFunction(originalDestroy) === false) {\n        throw new Error(`${componentInstance.constructor.name} is using untilDestroyed but doesn't implement ${destroyMethodName}`);\n    }\n    if (!componentInstance['__takeUntilDestroy']) {\n        componentInstance['__takeUntilDestroy'] = new Subject();\n\n        componentInstance[destroyMethodName] = function () {\n            if (isFunction(originalDestroy)) {\n                // eslint-disable-next-line prefer-rest-params\n                originalDestroy.apply(this, arguments);\n            }\n            componentInstance['__takeUntilDestroy'].next(true);\n            componentInstance['__takeUntilDestroy'].complete();\n        };\n    }\n    return source.pipe(takeUntil<T>(componentInstance['__takeUntilDestroy']));\n};\n\nexport function hcClassify(style: string): string {\n    return `hc-${style}`;\n}\n\nexport function validateInput<T>(input: T, validOptions: T[], inputName: string, component: string): void {\n    if (validOptions.indexOf(input) < 0) {\n        throw Error(`Unsupported ${inputName || 'input'} attribute value on ${component || 'cashmere component'}: ${input} \\n\n        The following are valid options: ${validOptions.join(', ')}`);\n    }\n}\n","import {AfterContentInit, Component, ElementRef, EventEmitter, HostBinding, Input, Output, ViewEncapsulation} from '@angular/core';\nimport {animate, AnimationEvent, state, style, transition, trigger} from '@angular/animations';\nimport {parseBooleanAttribute} from '../util';\n\nconst supportedAligns = ['left', 'right'];\n\nexport function validateAlignInput(inputStr: string): void {\n    if (supportedAligns.indexOf(inputStr) < 0) {\n        throw Error('Unsupported accordion alignment value: ' + inputStr);\n    }\n}\n\n/** Parent component that can have a `<hc-accordion-toolbar>` and content that is collapsable */\n@Component({\n    selector: 'hc-accordion',\n    templateUrl: './accordion.component.html',\n    styleUrls: ['./accordion.component.scss'],\n    exportAs: 'hcAccordion',\n    animations: [\n        trigger('openState', [\n            state('open, open-instant', style({\n                height: '*'\n            })),\n            state('void', style({\n                height: '0px',\n                visibility: 'hidden'\n            })),\n            transition('void => open-instant', animate('0ms')),\n            transition('void <=> open', animate('400ms ease'))\n        ])\n    ],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class AccordionComponent implements AfterContentInit {\n    private _animationDisabled = false;\n    private _currentlyAnimating = false;\n    private _hideToolbar = false;\n    private _toolbarTrigger = true;\n    private _triggerAlign = 'left';\n    private __isOpen = false;\n    private _disabled = false;\n\n    constructor(public elementRef: ElementRef) {}\n\n    /** Side the accordion trigger is attached to: `left` or `right` */\n    @Input()\n    get triggerAlign(): string {\n        return this._triggerAlign;\n    }\n\n    set triggerAlign(alignType: string) {\n        validateAlignInput(alignType);\n        this._triggerAlign = alignType;\n    }\n\n    /** Whether the entire width of the accordion bar is clickable, or only the down arrow button; default = true */\n    @Input()\n    get toolbarTrigger(): boolean {\n        return this._toolbarTrigger;\n    }\n\n    set toolbarTrigger(doTrigger: boolean) {\n        this._toolbarTrigger = parseBooleanAttribute(doTrigger);\n    }\n\n    /** Hide toolbar. */\n    @Input()\n    get hideToolbar(): boolean {\n        return this._hideToolbar;\n    }\n\n    set hideToolbar(hide: boolean) {\n        this._hideToolbar = parseBooleanAttribute(hide);\n    }\n\n    /** Whether the accordion is opened. */\n    @Input()\n    get open(): boolean {\n        return this.__isOpen;\n    }\n\n    set open(opened: boolean) {\n        this.toggle(parseBooleanAttribute(opened));\n    }\n\n    /** Whether the accordion button is disabled. */\n    @Input()\n    get disabled(): boolean {\n        return this._disabled;\n    }\n\n    set disabled(isDisabled: boolean) {\n        this._disabled = parseBooleanAttribute(isDisabled);\n    }\n\n    /** Allows for two-way binding of the `open` property */\n    @Output() openChange = new EventEmitter<boolean>();\n\n    /** Event emitted when accordion is opened. */\n    @Output()\n    opened = new EventEmitter();\n\n    /** Event emitted when accordion has started to open. */\n    @Output()\n    openStart = new EventEmitter();\n\n    /** Event emitted when accordion is closed. */\n    @Output()\n    closed = new EventEmitter();\n\n    /** Event emitted when accordion has started to close. */\n    @Output()\n    closeStart = new EventEmitter();\n\n    @HostBinding('class.hc-accordion')\n    _hostClass = true;\n\n    get _alignment(): string {\n        return this.triggerAlign === 'right' ? 'hc-align-right' : '';\n    }\n\n    get _pointer(): string {\n        return this.toolbarTrigger === true && this.disabled === false ? 'hc-toolbar-pointer' : '';\n    }\n\n    get _hideButton(): string {\n        return this.disabled === true ? 'hc-accordian-hide-button' : '';\n    }\n\n    get _openState(): 'void' | 'open-instant' | 'open' {\n        if (this.__isOpen) {\n            return this._animationDisabled ? 'open-instant' : 'open';\n        }\n        return 'void';\n    }\n\n    _animationStart(event: AnimationEvent): void {\n        this._currentlyAnimating = true;\n\n        const {fromState, toState} = event;\n        if (fromState === 'void' && toState === 'open') {\n            this.openStart.emit();\n        } else if (fromState === 'open' && toState === 'void') {\n            this.closeStart.emit();\n        }\n    }\n\n    _animationEnd(event: AnimationEvent): void {\n        this._currentlyAnimating = false;\n\n        const {fromState, toState} = event;\n        if (fromState === 'void' && toState === 'open') {\n            this.opened.emit();\n        } else if (fromState === 'open' && toState === 'void') {\n            this.closed.emit();\n        }\n    }\n\n    @HostBinding('class.hc-accordion-opened')\n    get _isOpened(): boolean {\n        return this.__isOpen && !this._currentlyAnimating;\n    }\n\n    @HostBinding('class.hc-accordion-opening')\n    get _isOpening(): boolean {\n        return this.__isOpen && this._currentlyAnimating;\n    }\n\n    @HostBinding('class.hc-accordion-closed')\n    get _isClosed(): boolean {\n        return !this.__isOpen && !this._currentlyAnimating;\n    }\n\n    @HostBinding('class.hc-accordion-closing')\n    get _isClosing(): boolean {\n        return !this.__isOpen && this._currentlyAnimating;\n    }\n\n    ngAfterContentInit(): void {\n        this._animationDisabled = false;\n    }\n\n    _triggerClick(event: Event, toolbarClick: boolean): void {\n        if ((toolbarClick && this.toolbarTrigger && !this.disabled) || !toolbarClick) {\n            event.stopPropagation();\n            this.toggle();\n        }\n    }\n\n    /** Opens accordion. */\n    toggleOpen(): void {\n        return this.toggle(true);\n    }\n\n    /** Closes accordion. */\n    toggleClose(): void {\n        return this.toggle(false);\n    }\n\n    /** Toggle this accordion. */\n    toggle(isOpen = !this.open): void {\n        if (!this._currentlyAnimating) {\n            this.__isOpen = isOpen;\n            this.openChange.emit(isOpen);\n        }\n    }\n}\n","@if (!hideToolbar) {\n<div class=\"hc-accordion-toolbar-wrapper\" [ngClass]=\"[_pointer, _alignment]\" (click)=\"_triggerClick($event, true)\">\n    <button\n        type=\"button\"\n        [ngClass]=\"[_hideButton]\"\n        class=\"hc-accordion-trigger\"\n        [disabled]=\"disabled\"\n        (click)=\"_triggerClick($event, false)\"\n    ></button>\n    <ng-content select=\"hc-accordion-toolbar\"></ng-content>\n</div>\n}\n\n<div\n    class=\"hc-accordion-collapse\"\n    [@openState]=\"_openState\"\n    (@openState.start)=\"_animationStart($event)\"\n    (@openState.done)=\"_animationEnd($event)\"\n>\n    <div class=\"hc-accordion-content\">\n        <ng-content></ng-content>\n    </div>\n</div>\n","import {ChangeDetectionStrategy, Component, HostBinding, ViewEncapsulation} from '@angular/core';\n\n/** Container for content that is to be shown in-line with the accordion trigger  */\n@Component({\n    selector: 'hc-accordion-toolbar',\n    template: '<ng-content></ng-content>',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class AccordionToolbarComponent {\n    @HostBinding('class.hc-accordion-toolbar')\n    _hostClass = true;\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {AccordionComponent} from './accordion.component';\nimport {AccordionToolbarComponent} from './accordion-toolbar.component';\n\n@NgModule({\n    imports: [CommonModule],\n    declarations: [AccordionComponent, AccordionToolbarComponent],\n    exports: [AccordionComponent, AccordionToolbarComponent]\n})\nexport class AccordionModule {}\n","import {Observable, of} from 'rxjs';\nimport {InjectionToken} from '@angular/core';\n\nexport interface IDiscoveryApplication {\n    /** Usually the name of the application */\n    ServiceName: string;\n    /** A formatted version of the name of the application */\n    FriendlyName: string;\n    /** A short description of the application */\n    Description: string;\n    /** Optional build number for the application */\n    BuildNumber: string | null;\n    /** Version number of the application */\n    Version: number;\n    /** The unique id for this application in the Discovery Service */\n    DiscoveryServiceId: number | null;\n    /** The url to link to for the application */\n    ServiceUrl: string;\n    /** The last successful ping of the application */\n    Heartbeat?: Date;\n    /** Whether the app should be displayed in the app switcher */\n    IsHidden?: boolean;\n    /** The type of element, usually `application` */\n    DiscoveryType: string;\n    /** The base64 encoded png or svg of the application icon */\n    Icon: string;\n}\n\nexport interface IDiscoveryRequest {\n    value: IDiscoveryApplication[];\n}\n\nexport interface IAppSwitcherService {\n    /** Optional URL for a separate page the app switcher can link to with a complete list of all available applications */\n    allApplicationsUri: string;\n\n    getApplications(): Observable<IDiscoveryRequest>;\n}\n\nexport const APP_SWITCHER_SERVICE = new InjectionToken<IAppSwitcherService>('IAppSwitcherService');\n\nexport interface IAppSwitcherConfig {\n    discoveryServiceUri: string;\n}\n\nexport const APP_SWITCHER_CONFIG = new InjectionToken<IAppSwitcherConfig>('IAppSwitcherConfig');\n\nexport class MockAppSwitcherService implements IAppSwitcherService {\n    allApplicationsUri: string;\n\n    getApplications(): Observable<IDiscoveryRequest> {\n        return of({\n            value: [\n                {\n                    ServiceName: 'MyApp',\n                    FriendlyName: 'My App',\n                    Description: 'The currently showing app',\n                    BuildNumber: '123',\n                    Version: 1,\n                    DiscoveryServiceId: 1,\n                    ServiceUrl: 'http://myapp.com',\n                    DiscoveryType: 'Application',\n                    Icon: ''\n                },\n                {\n                    ServiceName: 'AnotherApp',\n                    FriendlyName: 'Another App',\n                    Description: 'App we could switch to',\n                    BuildNumber: '123',\n                    Version: 1,\n                    DiscoveryServiceId: 2,\n                    ServiceUrl: 'http://anotherapp.com',\n                    DiscoveryType: 'Application',\n                    Icon: ''\n                }\n            ]\n        });\n    }\n}\n","import {Injectable} from '@angular/core';\nimport {Observable, ReplaySubject, Subscription} from 'rxjs';\n\n@Injectable()\nexport class WorkTrackerService {\n    public start(task: () => Promise<unknown>): Observable<boolean> {\n        const working = new ReplaySubject<boolean>();\n        working.next(true);\n        task()\n            .then(() => {\n                working.next(false);\n            })\n            .catch(() => {\n                working.next(false);\n            });\n\n        return working.asObservable();\n    }\n\n    public startObservable(task: () => Subscription): Observable<boolean> {\n        const working = new ReplaySubject<boolean>();\n        const taskSubscription = task();\n        working.next(true);\n\n        taskSubscription.add(() => {\n            working.next(false);\n            taskSubscription.unsubscribe();\n        });\n\n        return working.asObservable();\n    }\n}\n","import {Component, Input, ViewEncapsulation} from '@angular/core';\n\nconst supportedColors = ['blue', 'green', 'purple', 'orange', 'red', 'gray', 'white'];\n\nexport function validateColorInput(inputStr: string): void {\n    if (supportedColors.indexOf(inputStr) < 0) {\n        throw Error('Unsupported progress spinner color value: ' + inputStr);\n    }\n}\n\n@Component({\n    selector: 'hc-progress-spinner',\n    templateUrl: 'progress-spinner.component.html',\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class ProgressSpinnerComponent {\n    private _color = 'blue';\n\n    /** Color of the spinner: `blue`, `green`, `purple`, `orange`, `red`, `gray`, `white` */\n    @Input()\n    get color(): string {\n        return this._color;\n    }\n\n    set color(colorVal: string) {\n        validateColorInput(colorVal);\n        this._color = colorVal;\n    }\n\n    /** If true, the spinner will center itself inside its container. */\n    @Input()\n    public isCentered = true;\n\n    /** If true, include background \"channel\" circle. */\n    @Input()\n    public hasChannel = true;\n\n    /** If true, switches to determinate mode. Must pass in progress (0-100%), instead of having the loader spin freely. */\n    @Input()\n    public isDeterminate = false;\n\n    /** (0-100%) Only used if \"isDeterminate\" is set to true. */\n    @Input()\n    public set progress(progress: number) {\n        this.setProgress(progress);\n    }\n    public get progress(): number {\n        return this._progress;\n    }\n\n    /** Set the diameter of the circle, in pixels. Minimum is 20, maximum is 250. */\n    @Input()\n    public set diameter(diameter: number) {\n        this._diameter = Math.min(Math.max(this._minDiameter, diameter), this._maxDiameter);\n    }\n    public get diameter(): number {\n        return this._diameter;\n    }\n\n    public _rightCircleTransform = '';\n    public _leftCircleTransform = '';\n    public _rightCircleTransition = '';\n    public _leftCircleTransition = '';\n    private _progress = 0;\n    private _diameter = 0;\n    private _minDiameter = 20;\n    private _maxDiameter = 250;\n\n    private setProgress(progress: number) {\n        progress = Math.min(100, progress);\n        progress = Math.max(0, progress);\n\n        this.setProgressTransition(progress);\n        this.setProgressTransform(progress);\n\n        this._progress = progress;\n    }\n\n    private setProgressTransition(progress: number) {\n        const sizeBasedTime = this.diameter > 150 ? 0.6 : 0.4;\n        const timing = Math.abs(progress - this._progress) > 40 ? sizeBasedTime : sizeBasedTime / 2;\n        const halfTime = timing / 2;\n        if ((progress <= 50 && this._progress <= 50) || (progress >= 51 && this._progress >= 51)) {\n            this._leftCircleTransition = `transform ${timing}s ease-in-out 0s`;\n            this._rightCircleTransition = `transform ${timing}s ease-in-out 0s`;\n        } else if (progress <= 50 && this._progress >= 51) {\n            this._leftCircleTransition = `transform ${halfTime}s ease-in 0s`;\n            this._rightCircleTransition = `transform ${halfTime}s ease-out ${halfTime - 0.001}s`;\n        } else if (progress >= 51 && this._progress <= 50) {\n            this._leftCircleTransition = `transform ${halfTime}s ease-out ${halfTime - 0.001}s`;\n            this._rightCircleTransition = `transform ${halfTime}s ease-in 0s`;\n        }\n    }\n\n    /**\n     * Using a somewhat complicated set of transforms to achive the animation.\n     * For 0% to 50% the right circle element rotates from -135deg to 45deg\n     * For 51% to 100% the left circle element rotates from 135deg to 315deg\n     */\n    private setProgressTransform(progress: number) {\n        if (progress <= 50) {\n            const rightDegrees = (progress / 50) * 180 - 135;\n            this._rightCircleTransform = `rotate(${rightDegrees}deg)`;\n            this._leftCircleTransform = `rotate(135deg)`;\n        } else if (progress >= 51) {\n            const leftDegrees = ((progress - 50) / 50) * 180 + 135;\n            this._leftCircleTransform = `rotate(${leftDegrees}deg)`;\n            this._rightCircleTransform = 'rotate(45deg)';\n        }\n    }\n}\n","<div class=\"hc-spinner-container\" [ngClass]=\"{'center-spinner': isCentered }\">\n    <div class=\"hc-spinner\" \n        [ngClass]=\"{'indeterminate-spin': !isDeterminate, 'large-spinner': diameter >= 150 }\"\n        [style.width.px]=\"diameter\"\n        [style.height.px]=\"diameter\"\n        [style.marginTop.px]=\"isCentered ? diameter / -2 : 0\"\n        [style.marginLeft.px]=\"isCentered ? diameter / -2 : 0\">\n        <div class=\"spinner-layer spinner-{{color}}\" [ngClass]=\"{'spinner-base': hasChannel }\">\n            <div class=\"circle base-circle\"></div>\n            <div class=\"circle-clipper left\"><div class=\"circle\" [style.transform]=\"_leftCircleTransform\" [style.transition]=\"_leftCircleTransition\"></div>\n            </div><div class=\"gap-patch\"><div class=\"circle\"></div>\n            </div><div class=\"circle-clipper right\"><div class=\"circle\" [style.transform]=\"_rightCircleTransform\" [style.transition]=\"_rightCircleTransition\"></div></div>\n        </div>\n    </div>\n</div>","import {Pipe, PipeTransform} from '@angular/core';\n\nexport type EllipsisMode = 'characters' | 'words';\n\n@Pipe({\n    name: 'ellipsis',\n    pure: true,\n    standalone: false\n})\nexport class EllipsisPipe implements PipeTransform {\n    static readonly ELLIPSIS = '…';\n\n    transform(value: string, length: number, mode: EllipsisMode = 'characters'): string {\n        if (typeof value !== 'string' || typeof length !== 'number' || length < 0 || isNaN(length) || Math.floor(length) !== length) {\n            return value;\n        }\n\n        const truncated = mode === 'words' ? this.firstNWords(value, length) : this.firstNCharacters(value, length);\n\n        if (truncated === value) {\n            return value;\n        }\n\n        return truncated + EllipsisPipe.ELLIPSIS;\n    }\n\n    private firstNWords(value: string, n: number): string | undefined {\n        const words = value.split(/\\s+/g);\n        if (words.length <= n) {\n            return value;\n        }\n\n        const pattern = new RegExp('^' + words.slice(0, n).join('\\\\s+'));\n        return pattern.exec(value)?.[0];\n    }\n\n    private firstNCharacters(value: string, n: number): string {\n        return value.length > n ? value.substring(0, n) : value;\n    }\n}\n","import {takeUntil} from 'rxjs/operators';\nimport {Component, Inject, OnDestroy, OnInit, Input, ViewEncapsulation, Output, EventEmitter, HostBinding} from '@angular/core';\nimport {Subject, Observable} from 'rxjs';\n\nimport {IAppSwitcherService, IDiscoveryApplication, APP_SWITCHER_SERVICE} from './app-switcher-interfaces';\nimport {WorkTrackerService} from '../shared/work-tracker.service';\n\n/**\n * `hc-app-switcher` is typically included in a popover to display links to available apps from the Discovery Service\n */\n@Component({\n    selector: 'hc-app-switcher',\n    templateUrl: './app-switcher.component.html',\n    styleUrls: ['./app-switcher.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class AppSwitcherComponent implements OnInit, OnDestroy {\n    @HostBinding('class.hc-app-switcher-container') _hostClass = true;\n\n    /** The array of applications pulled from the Discovery Service */\n    public applications: IDiscoveryApplication[];\n\n    /** Whether the app switcher is currently loading data from the Discovery Service */\n    public loading: Observable<boolean>;\n\n    /** Whether the load from the Discovery Service was successful */\n    public loadFailed = false;\n\n    private _iconHeight = 60;\n    private _serviceName = '';\n    private _version = '';\n\n    private ngUnsubscribe = new Subject();\n\n    /** Sets the height of the app thumbnail icons, width is auto (defaults to 60px) */\n    @Input()\n    get iconHeight(): number {\n        return this._iconHeight;\n    }\n\n    set iconHeight(heightVal: number) {\n        this._iconHeight = heightVal;\n    }\n\n    /** Used to disable switching for your own app. `serviceVersion` must also be set. */\n    @Input()\n    get serviceName(): string {\n        return this._serviceName;\n    }\n\n    set serviceName(serviceNameVal: string) {\n        this._serviceName = serviceNameVal;\n    }\n\n    /** Used to disable switching for your own app. `serviceName` must also be set. */\n    @Input()\n    get serviceVersion(): string | number {\n        return this._version;\n    }\n\n    set serviceVersion(serviceVersionVal: string | number) {\n        this._version = `${serviceVersionVal}`;\n    }\n\n    /** Event emitted when a user clicks an app in the app switcher */\n    @Output()\n    appClick = new EventEmitter<IDiscoveryApplication>();\n\n    constructor(@Inject(APP_SWITCHER_SERVICE) public _appSwitcherService: IAppSwitcherService, private workTracker: WorkTrackerService) {}\n\n    ngOnInit(): void {\n        this.loadApplications();\n    }\n\n    ngOnDestroy(): void {\n        this.ngUnsubscribe.next();\n        this.ngUnsubscribe.complete();\n    }\n\n    /** Manually loads all applications from the configured Discovery Service */\n    public loadApplications(): void {\n        try {\n            this.loadApplicationFromDiscoveryService();\n        } catch (error) {\n            this.handleError(error);\n        }\n    }\n\n    private loadApplicationFromDiscoveryService() {\n        this.loading = this.workTracker.startObservable(() =>\n            this._appSwitcherService\n                .getApplications()\n                .pipe(takeUntil(this.ngUnsubscribe))\n                .subscribe(\n                    (response) => {\n                        this.loadFailed = false;\n                        this.applications = response.value;\n                    },\n                    (error) => {\n                        this.handleError(error);\n                    }\n                )\n        );\n    }\n\n    private handleError(error: Error) {\n        console.error('Failed to load applications from the app switcher service.', error);\n        this.loadFailed = true;\n    }\n\n    _linkIfNotMe(app: IDiscoveryApplication): string | null {\n        return this._appIsMe(app) ? null : app.ServiceUrl;\n    }\n\n    _appIsMe(app: IDiscoveryApplication): boolean {\n        return app.ServiceName === this.serviceName && `${app.Version}` === this.serviceVersion;\n    }\n\n    _appClick( app: IDiscoveryApplication ): void {\n        this.appClick.emit( app );\n    }\n}\n","<div class=\"hc-app-switcher\">\n    <h4 class=\"hc-app-switcher-header\">\n        Applications @if (_appSwitcherService.allApplicationsUri) {\n        <a\n            hc-button\n            buttonStyle=\"link-inline\"\n            class=\"hc-app-switcher-all-apps-link\"\n            [href]=\"_appSwitcherService.allApplicationsUri\"\n            target=\"_blank\"\n        >\n            View All\n        </a>\n        }\n    </h4>\n\n    @if (applications?.length > 0) {\n    <div class=\"hc-app-switcher-apps\">\n        @for (app of applications; track app) {\n        <div class=\"hc-app-switcher-app\">\n            <a\n                class=\"hc-app-switcher-link\"\n                [ngClass]=\"{'hc-app-switcher-link-highlighted': _appIsMe(app)}\"\n                [title]=\"_appIsMe(app) ? 'Current Application' : app.Description\"\n                [attr.href]=\"_linkIfNotMe(app)\"\n                (click)=\"_appClick(app)\"\n                target=\"_blank\"\n            >\n                <div\n                    class=\"hc-app-switcher-app-img\"\n                    [ngStyle]=\"{\n                        width: iconHeight + 'px',\n                        height: iconHeight + 'px',\n                        'background-image': 'url(' + app.Icon + ')'\n                    }\"\n                ></div>\n                <div class=\"hc-app-switcher-app-title\">{{ app?.FriendlyName | ellipsis: 18 }}</div>\n            </a>\n        </div>\n        }\n    </div>\n    }\n\n    <!-- Loading -->\n    @if (loading | async) {\n    <div class=\"hc-app-switcher-empty hc-app-switcher-spinner-container\">\n        <hc-progress-spinner diameter=\"60\"></hc-progress-spinner>\n    </div>\n    }\n\n    <!-- Load Failed -->\n    @if (!(loading | async) && loadFailed) {\n    <div class=\"hc-app-switcher-empty\">\n        <span class=\"hc-app-switcher-warning-icon\"></span>\n        <em>Failed to load applications.</em>\n        <a class=\"hc-app-switcher-retry\" hc-button buttonStyle=\"link\" (click)=\"loadApplications()\">Retry now.</a>\n    </div>\n    }\n\n    <!-- No Apps Available -->\n    @if (!(loading | async) && applications?.length === 0) {\n    <div class=\"hc-app-switcher-empty\">\n        <span class=\"hc-app-switcher-empty-icon\"></span>\n        <em>No applications available.</em>\n    </div>\n    }\n</div>\n","import {Attribute, Component, ElementRef, HostBinding, Input, OnChanges, ViewEncapsulation} from '@angular/core';\n\n/** Object used to pass values that will be used in an IconComponent */\nexport interface HcIcon {\n    /** Font set icon is a part of */\n    fontSet: string;\n    /** Name of icon within a font set */\n    fontIcon: string;\n    /** Optional height in pixels of the icon; defaults to 37 */\n    fontSize?: number;\n}\n\n/** Makes using a font icon easier. */\n@Component({\n    selector: 'hc-icon',\n    template: '<ng-content></ng-content>',\n    styleUrls: ['./icon.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class IconComponent implements OnChanges {\n    private _fontIcon = '';\n    private _fontSet = '';\n\n    private _previousFontIcon = '';\n    private _previousFontSet = '';\n\n    @HostBinding('class.hc-icon')\n    _hostClass = true;\n\n    /** Name of icon within a font set. */\n    @Input()\n    get fontIcon(): string {\n        return this._fontIcon;\n    }\n\n    set fontIcon(icon: string) {\n        this._fontIcon = this._cleanupFontValue(icon);\n    }\n\n    /** Font set icon is a part of. */\n    @Input()\n    get fontSet(): string {\n        return this._fontSet;\n    }\n\n    set fontSet(fontSet: string) {\n        this._fontSet = this._cleanupFontValue(fontSet);\n    }\n\n    constructor(private elementRef: ElementRef, @Attribute('aria-hidden') ariaHidden: string) {\n        // icon should be hidden for accessibility\n        if (!ariaHidden) {\n            elementRef.nativeElement.setAttribute('aria-hidden', 'true');\n        }\n    }\n\n    ngOnChanges(): void {\n        this._updateFontIcon();\n    }\n\n    private _updateFontIcon(): void {\n        const element = this.elementRef.nativeElement;\n        if (this._previousFontIcon !== this._fontIcon) {\n            if (this._previousFontIcon) {\n                element.classList.remove(this._previousFontIcon);\n            }\n            if (this._fontIcon) {\n                element.classList.add(this._fontIcon);\n                this._previousFontIcon = this._fontIcon;\n            }\n        }\n\n        if (this._previousFontSet !== this._fontSet) {\n            if (this._previousFontSet) {\n                element.classList.remove(this._previousFontSet);\n            }\n            if (this._fontSet) {\n                element.classList.add(this._fontSet);\n                this._previousFontSet = this._fontSet;\n            }\n        }\n    }\n\n    // make sure that there are no spaces and that if they sent multiple space separated values grab the first\n    private _cleanupFontValue(fontValue: string): string {\n        return (fontValue || '').trim().split(' ')[0];\n    }\n}\n","import {Component, Inject, ViewEncapsulation} from '@angular/core';\nimport {IAppSwitcherService, APP_SWITCHER_SERVICE} from '../app-switcher-interfaces';\n\n/**\n * `hc-app-switcher-links` is used to link to an app switcher page from the navbar mobile menu\n */\n@Component({\n    selector: 'hc-app-switcher-links',\n    templateUrl: './app-switcher-links.component.html',\n    styleUrls: ['./app-switcher-links.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class AppSwitcherLinksComponent {\n    constructor(@Inject(APP_SWITCHER_SERVICE) public _appSwitcherService: IAppSwitcherService) {}\n}\n","<div class=\"hc-app-switcher-links-bottom-spacer\"></div>\n<a class=\"hc-app-switcher-links\" [href]=\"_appSwitcherService?.allApplicationsUri\">\n    <hc-icon class=\"hc-app-switcher-links-icon\" fontIcon=\"hc-app-switcher-links-ico-th\"></hc-icon>\n    <span class=\"hc-app-switcher-links-text\">View all my applications</span>\n</a>\n","import {trigger, style, animate, transition, AnimationTriggerMetadata} from '@angular/animations';\n\nexport const transformPopover: AnimationTriggerMetadata = trigger('transformPopover', [\n    transition(':enter', [style({opacity: 0}), animate('{{openTransition}}', style({opacity: 1}))]),\n    transition(':leave', [animate('{{closeTransition}}', style({opacity: 0}))])\n]);\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport {Injectable} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\n\n/** Enumerated actions for a popover to perform. */\nexport enum NotificationAction {\n    /** Popover should open. */\n    OPEN,\n    /** Popover should close. */\n    CLOSE,\n    /** Popover should toggle open or closed. */\n    TOGGLE,\n    /** Popover has new target positions. */\n    REPOSITION,\n    /** Popover needs new configuration. */\n    UPDATE_CONFIG,\n    /** Popover should realign itself to the anchor.  */\n    REALIGN\n}\n\n/** Event object for dispatching to anchoring service. */\nexport class PopoverNotification {\n    constructor(\n        /** Action to perform. */\n        public action: NotificationAction,\n        /** Optional payload. */\n        public value?: any\n    ) {}\n}\n\n@Injectable()\nexport class PopoverNotificationService {\n    private store = new Subject<PopoverNotification>();\n\n    /** Dispatch a notification to all subscribers. */\n    dispatch(notification: PopoverNotification): void {\n        this.store.next(notification);\n    }\n\n    /** Stream of notification events. */\n    events(): Observable<PopoverNotification> {\n        return this.store.asObservable();\n    }\n\n    /** Complete event stream. */\n    dispose(): void {\n        this.store.complete();\n    }\n}\n","export type HcPopoverScrollStrategy = 'noop' | 'block' | 'reposition' | 'close';\nexport const VALID_SCROLL: HcPopoverScrollStrategy[] = ['noop', 'block', 'reposition', 'close'];\n\nexport type HcPopoverTrigger = 'click' | 'mousedown' | 'rightclick' | 'hover' | 'none';\nexport const VALID_TRIGGER: HcPopoverTrigger[] = ['click', 'mousedown', 'rightclick', 'hover', 'none'];\n\nexport type HcPopoverHorizontalAlign = 'before' | 'start' | 'center' | 'end' | 'after' | 'mouse';\nexport const VALID_HORIZ_ALIGN: HcPopoverHorizontalAlign[] = ['before', 'start', 'center', 'end', 'after', 'mouse'];\n\nexport type HcPopoverVerticalAlign = 'above' | 'start' | 'center' | 'end' | 'below' | 'mouse';\nexport const VALID_VERT_ALIGN: HcPopoverVerticalAlign[] = ['above', 'start', 'center', 'end', 'below', 'mouse'];\n\nexport interface HcPopoverOpenOptions {\n    /**\n     * Whether the popover should return focus to the previously focused element after\n     * closing. Defaults to true.\n     */\n    restoreFocus?: boolean;\n\n    /** Whether the first focusable element should be focused on open. Defaults to true. */\n    autoFocus?: boolean;\n\n    /** The horizontal position for a fixed position popover. Defaults to 0 if `y` is set. */\n    x?: number;\n\n    /** The vertical position for a fixed position popover. Defaults to 0 if `x` is set. */\n    y?: number;\n}\n","import {VALID_HORIZ_ALIGN, VALID_VERT_ALIGN, VALID_SCROLL, VALID_TRIGGER} from './types';\n\nexport function getInvalidPopoverError(): Error {\n    return Error('HcPopoverAnchorDirective must be provided an HcPopover component instance.');\n}\n\nexport function getUnanchoredPopoverError(): Error {\n    return Error('HcPopover is not anchored to any HcPopoverAnchorDirective.');\n}\n\nexport function getInvalidHorizontalAlignError(alignment: unknown): Error {\n    return Error(generateGenericError('horizontalAlign/xAlign', alignment, VALID_HORIZ_ALIGN));\n}\n\nexport function getInvalidVerticalAlignError(alignment: unknown): Error {\n    return Error(generateGenericError('verticalAlign/yAlign', alignment, VALID_VERT_ALIGN));\n}\n\nexport function getInvalidTriggerError(trigger: unknown): Error {\n    return Error(generateGenericError('trigger', trigger, VALID_TRIGGER));\n}\n\nexport function getInvalidScrollStrategyError(strategy: unknown): Error {\n    return Error(generateGenericError('scrollStrategy', strategy, VALID_SCROLL));\n}\n\nfunction generateGenericError(apiName: string, invalid: unknown, valid: string[]): string {\n    return `Invalid ${apiName}: '${invalid}'. Valid options are ` + `${valid.map(v => `'${v}'`).join(', ')}.`;\n}\n","import {Directive, HostBinding, ElementRef, HostListener, Output, EventEmitter} from '@angular/core';\n\n/** Use `hcMenuItem` for a selectable item in an hcMenu. */\n@Directive({\n    selector: '[hcMenuItem], [hcButtonItem]',\n    standalone: false\n})\nexport class MenuItemDirective {\n    @HostBinding('class.hc-menu-item')\n    _hostClass = true;\n\n    // Event fired on mouseenter (used to close submenus)\n    @Output() _itemEnter = new EventEmitter<void>();\n\n    // Menu Item uses focus for hover highlighting to sync with keyboard navigation of the menu\n    @HostListener('mouseenter')\n    focus(): void {\n        this.ref.nativeElement.focus();\n        this._itemEnter.emit();\n    }\n\n    @HostListener('touchend')\n    @HostListener('touchcancel')\n    @HostListener('mouseleave')\n    blur(): void {\n        this.ref.nativeElement.blur();\n    }\n\n    constructor(public ref: ElementRef) {}\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  ViewChild,\n  ViewEncapsulation,\n  TemplateRef,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  ContentChildren,\n  DOCUMENT\n} from '@angular/core';\nimport type {QueryList} from '@angular/core';\nimport {AnimationEvent} from '@angular/animations';\n\nimport {ConfigurableFocusTrapFactory, ConfigurableFocusTrap} from '@angular/cdk/a11y';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {transformPopover} from './popover.animations';\nimport {NotificationAction, PopoverNotification, PopoverNotificationService} from './notification.service';\nimport {\n    getUnanchoredPopoverError,\n    getInvalidHorizontalAlignError,\n    getInvalidVerticalAlignError,\n    getInvalidScrollStrategyError\n} from './popover.errors';\nimport {\n    HcPopoverScrollStrategy,\n    HcPopoverHorizontalAlign,\n    HcPopoverVerticalAlign,\n    VALID_SCROLL,\n    VALID_HORIZ_ALIGN,\n    VALID_VERT_ALIGN,\n    HcPopoverOpenOptions\n} from './types';\nimport {OverlayRef} from '@angular/cdk/overlay';\nimport {MenuItemDirective} from './directives/menu-item.directive';\nimport {Subject} from 'rxjs';\n\n// See http://cubic-bezier.com/#.25,.8,.25,1 for reference.\nconst DEFAULT_TRANSITION = '100ms linear';\nconst EMPTY_TRANSITION = '0ms linear';\n\n@Component({\n    selector: 'hc-pop',\n    encapsulation: ViewEncapsulation.None,\n    animations: [transformPopover],\n    styleUrls: ['./popover.component.scss'],\n    templateUrl: './popover.component.html',\n    standalone: false\n})\nexport class HcPopComponent implements OnInit, OnDestroy {\n    /** Whether or not to disable default popover container styles. *Defaults to `false`.* */\n    @Input() disableStyle = false;\n\n    /** Whether or not to show a connection arrow when possible. *Defaults to `true`.* */\n    @Input() showArrow = true;\n\n    /** Alignment of the popover on the horizontal axis. Can be `before`, `start`, `center`, `end`, `after`, or `mouse`.\n     * *Defaults to `center`.* */\n    @Input()\n    get horizontalAlign(): HcPopoverHorizontalAlign {\n        return this._horizontalAlign;\n    }\n    set horizontalAlign(val: HcPopoverHorizontalAlign) {\n        this._validateHorizontalAlign(val);\n        if (this._horizontalAlign !== val) {\n            this._horizontalAlign = val;\n            this._dispatchConfigNotification(new PopoverNotification(NotificationAction.REPOSITION));\n        }\n    }\n    private _horizontalAlign: HcPopoverHorizontalAlign = 'center';\n\n    /** Alignment of the popover on the x axis. Alias for `horizontalAlign`. *Defaults to `\"center\"`.* */\n    @Input()\n    get xAlign(): HcPopoverHorizontalAlign {\n        return this.horizontalAlign;\n    }\n    set xAlign(val: HcPopoverHorizontalAlign) {\n        this.horizontalAlign = val;\n    }\n\n    /** Alignment of the popover on the vertical axis. Can be `above`, `start`, `center`, `end`, `below`, or `mouse`.\n     * *Defaults to `\"below\"`.* */\n    @Input()\n    get verticalAlign(): HcPopoverVerticalAlign {\n        return this._verticalAlign;\n    }\n    set verticalAlign(val: HcPopoverVerticalAlign) {\n        this._validateVerticalAlign(val);\n        if (this._verticalAlign !== val) {\n            this._verticalAlign = val;\n            this._dispatchConfigNotification(new PopoverNotification(NotificationAction.REPOSITION));\n        }\n    }\n    private _verticalAlign: HcPopoverVerticalAlign = 'below';\n\n    /** Alignment of the popover on the y axis. Alias for `verticalAlign`. *Defaults to `\"below\"`.* */\n    @Input()\n    get yAlign(): HcPopoverVerticalAlign {\n        return this.verticalAlign;\n    }\n    set yAlign(val: HcPopoverVerticalAlign) {\n        this.verticalAlign = val;\n    }\n\n    /** Whether the popover always opens with the specified alignment. *Defaults to `false`.* */\n    @Input()\n    get forceAlignment(): boolean {\n        return this._forceAlignment;\n    }\n    set forceAlignment(val: boolean) {\n        const coercedVal = coerceBooleanProperty(val);\n        if (this._forceAlignment !== coercedVal) {\n            this._forceAlignment = coercedVal;\n            this._dispatchConfigNotification(new PopoverNotification(NotificationAction.REPOSITION));\n        }\n    }\n    private _forceAlignment = false;\n\n    /**\n     * Whether the popover's alignment is locked after opening. This prevents the popover\n     * from changing its alignement when scrolling or changing the size of the viewport.\n     * *Defaults to `false`.*\n     */\n    @Input()\n    get lockAlignment(): boolean {\n        return this._lockAlignment;\n    }\n    set lockAlignment(val: boolean) {\n        const coercedVal = coerceBooleanProperty(val);\n        if (this._lockAlignment !== coercedVal) {\n            this._lockAlignment = coerceBooleanProperty(val);\n            this._dispatchConfigNotification(new PopoverNotification(NotificationAction.REPOSITION));\n        }\n    }\n    private _lockAlignment = false;\n\n    /** Constrains the content of a container to a standard css string value; *Defaults to `none`.* */\n    @Input()\n    get maxWidth(): string {\n        return this._maxWidth;\n    }\n    set maxWidth(val: string) {\n        this._maxWidth = val;\n    }\n    private _maxWidth = 'none';\n\n    /** Whether the first focusable element should be focused on open. *Defaults to `false`.* */\n    @Input()\n    get autoFocus(): boolean {\n        return this._autoFocus && this._autoFocusOverride;\n    }\n    set autoFocus(val: boolean) {\n        this._autoFocus = coerceBooleanProperty(val);\n    }\n    private _autoFocus = false;\n    _autoFocusOverride = false;\n\n    /** Whether the popover should return focus to the previously focused element after closing. *Defaults to `true`.* */\n    @Input()\n    get restoreFocus(): boolean {\n        return this._restoreFocus && this._restoreFocusOverride;\n    }\n    set restoreFocus(val: boolean) {\n        this._restoreFocus = coerceBooleanProperty(val);\n    }\n    private _restoreFocus = true;\n    _restoreFocusOverride = true;\n\n    /** How the popover should handle scrolling. *Defaults to `\"reposition\"`.* */\n    @Input()\n    get scrollStrategy(): HcPopoverScrollStrategy {\n        return this._scrollStrategy;\n    }\n    set scrollStrategy(val: HcPopoverScrollStrategy) {\n        this._validateScrollStrategy(val);\n        if (this._scrollStrategy !== val) {\n            this._scrollStrategy = val;\n            this._dispatchConfigNotification(new PopoverNotification(NotificationAction.UPDATE_CONFIG));\n        }\n    }\n    private _scrollStrategy: HcPopoverScrollStrategy = 'reposition';\n\n    /** Whether the popover should have a backdrop (includes closing on click). *Defaults to `true`.* */\n    @Input()\n    get hasBackdrop(): boolean {\n        return this._hasBackdrop;\n    }\n    set hasBackdrop(val: boolean) {\n        this._hasBackdrop = coerceBooleanProperty(val);\n        this._dispatchConfigNotification(new PopoverNotification(NotificationAction.UPDATE_CONFIG));\n    }\n    private _hasBackdrop = true;\n\n    /** Whether the popover should close when the user clicks the backdrop or presses ESC. *Defaults to `true`.* */\n    @Input()\n    get interactiveClose(): boolean {\n        return this._interactiveClose;\n    }\n    set interactiveClose(val: boolean) {\n        this._interactiveClose = coerceBooleanProperty(val);\n        this._dispatchConfigNotification(new PopoverNotification(NotificationAction.UPDATE_CONFIG));\n    }\n    private _interactiveClose = true;\n\n    /** Custom transition to use while opening. *Defaults to `'200ms cubic-bezier(0.25, 0.8, 0.25, 1)'`.* */\n    @Input()\n    get openTransition(): string {\n        return this._openTransition;\n    }\n    set openTransition(val: string) {\n        if (val) {\n            this._openTransition = val;\n        }\n    }\n    private _openTransition = DEFAULT_TRANSITION;\n\n    /** Custom transition to use while closing. *Defaults to `'200ms cubic-bezier(0.25, 0.8, 0.25, 1)'`.* */\n    @Input()\n    get closeTransition(): string {\n        return this._closeTransition;\n    }\n    set closeTransition(val: string) {\n        if (val) {\n            this._closeTransition = val;\n        }\n    }\n    private _closeTransition = DEFAULT_TRANSITION;\n\n    /** A link to an associated parent menu that will be closed when this menu closes. */\n    @Input()\n    get parent(): HcPopComponent | null {\n        return this._parentMenu;\n    }\n    set parent(val: HcPopComponent | null) {\n        if (this._parentMenu) {\n            this._parentClose.unsubscribe();\n        }\n        this._parentMenu = val;\n        if ( this._parentMenu ) {\n            this._parentClose = this._parentMenu.closed.subscribe(() => {\n                if (this.isOpen()) {\n                    this.close();\n                }\n            });\n        }\n    }\n    private _parentMenu: HcPopComponent | null;\n\n    /** Should the popover animate? *Defaults to `true`.* */\n    @Input() shouldAnimate = true;\n\n    /** Optional backdrop class. *Defaults to `''`.* */\n    @Input() backdropClass = '';\n\n    /** Set to true if clicking anywhere inside the popover should close it. *Defaults to `false`.* */\n    @Input() autoCloseOnContentClick = false;\n\n    /** Emits when the popover is opened. If `context` was set on the anchor, it will be emitted with this event. */\n    @Output() opened = new EventEmitter<any>();\n\n    /** Emits when the popover is closed. */\n    @Output() closed = new EventEmitter<any>();\n\n    /** Emits when the popover has finished opening. */\n    @Output() afterOpen = new EventEmitter<void>();\n\n    /** Emits when the popover has finished closing. */\n    @Output() afterClose = new EventEmitter<void>();\n\n    /** Emits when the backdrop is clicked. */\n    @Output() backdropClicked = new EventEmitter<void>();\n\n    /** Emits when a keydown event is targeted to this popover's overlay. */\n    @Output() overlayKeydown = new EventEmitter<KeyboardEvent>();\n\n    /** Reference to template so it can be placed within a portal. */\n    @ViewChild(TemplateRef) _templateRef: TemplateRef<any>;\n\n    /** Stores the click coordinates for mouse-based positioning */\n    _offsetPos: number[] = [0, 0];\n\n    /** Stores a reference to the associated overlay */\n    _componentOverlay: OverlayRef;\n\n    /** Classes to be added to the popover for setting the correct transform origin. */\n    _classList: any = {};\n    _yAlignClass = '';\n    _xAlignClass = '';\n\n    /** Whether the popover is presently open. */\n    _open = false;\n\n    /** Instance of notification service. Will be undefined until attached to an anchor. */\n    _notifications: PopoverNotificationService;\n\n    /** Reference to the element to build a focus trap around. */\n    @ViewChild('focusTrapElement')\n    private _focusTrapElement: ElementRef;\n\n    /** Reference to the element that was focused before opening. */\n    private _previouslyFocusedElement: HTMLElement | null;\n\n    /** Reference to a focus trap around the popover. */\n    private _focusTrap: ConfigurableFocusTrap | undefined;\n\n    /** If this menu has children, keep track of whether any of them are open */\n    public _subMenuOpen = false;\n\n    /** Reference to subscription of parent popover close events */\n    private _parentClose: any = new Subject();\n\n    /** Block this popover from closing its parent on close */\n    _parentCloseBlock = false;\n\n    /** Reference to hcMenuItems (if the popover contains them) */\n    @ContentChildren(MenuItemDirective, {descendants: true}) _menuItems: QueryList<MenuItemDirective>;\n\n    constructor(\n        public _elementRef: ElementRef,\n        private _focusTrapFactory: ConfigurableFocusTrapFactory,\n        @Optional() @Inject(DOCUMENT) private _document: any\n    ) {}\n\n    ngOnInit(): void {\n        this._setAlignmentClasses();\n    }\n\n    ngOnDestroy(): void {\n        if (this._notifications) {\n            this._notifications.dispose();\n        }\n        if (this._parentMenu) {\n            this._parentClose.unsubscribe();\n        }\n    }\n\n    _popContainerClicked(): void {\n        if (this.autoCloseOnContentClick) {\n            this.close();\n        }\n    }\n\n    /** Open this popover. */\n    open(options: HcPopoverOpenOptions = {}): void {\n        const notification = new PopoverNotification(NotificationAction.OPEN, options);\n        this._dispatchActionNotification(notification);\n    }\n\n    /** Close this popover and its parent (if linked). */\n    close(value?: unknown): void {\n        const notification = new PopoverNotification(NotificationAction.CLOSE, value);\n        this._dispatchActionNotification(notification);\n        if (this.parent && !this._parentCloseBlock) {\n            this.parent.close();\n        }\n    }\n\n    /** Toggle this popover open or closed. */\n    toggle(): void {\n        if (this.parent) {\n            this.parent._subMenuOpen = !this.isOpen();\n        }\n        const notification = new PopoverNotification(NotificationAction.TOGGLE);\n        this._dispatchActionNotification(notification);\n    }\n\n    /** Realign the popover to the anchor. */\n    realign(): void {\n        const notification = new PopoverNotification(NotificationAction.REALIGN);\n        this._dispatchActionNotification(notification);\n    }\n\n    /** Gets whether the popover is presently open. */\n    isOpen(): boolean {\n        return this._open;\n    }\n\n    /** Gets an animation config with customized (or default) transition values. */\n    _getAnimation(): {value: any; params: any} {\n        return {\n            value: 'visible',\n            params: {\n                openTransition: this.shouldAnimate ? this.openTransition : EMPTY_TRANSITION,\n                closeTransition: this.shouldAnimate ? this.closeTransition : EMPTY_TRANSITION\n            }\n        };\n    }\n\n    /** Callback for when the popover is finished animating in or out. */\n    _onAnimationDone(event: AnimationEvent): void {\n        if (event.toState === 'visible') {\n            this._trapFocus();\n            this.afterOpen.emit();\n        } else if (event.toState === 'void') {\n            this._restoreFocusAndDestroyTrap();\n            this.afterClose.emit();\n        }\n    }\n\n    /** Apply alignment classes based on alignment inputs. */\n    _setAlignmentClasses(horizAlign = this.horizontalAlign, vertAlign = this.verticalAlign): void {\n        this._setAlignmentClassesForAnimation(horizAlign, vertAlign);\n        this._setAlignmentClassesForArrow();\n    }\n\n    _setAlignmentClassesForAnimation(horizAlign = this.horizontalAlign, vertAlign = this.verticalAlign): void {\n        this._classList['hc-pop-before'] = horizAlign === 'before' || horizAlign === 'end';\n        this._classList['hc-pop-after'] = horizAlign === 'after' || horizAlign === 'start';\n\n        this._classList['hc-pop-above'] = vertAlign === 'above' || vertAlign === 'end';\n        this._classList['hc-pop-below'] = vertAlign === 'below' || vertAlign === 'start';\n\n        this._classList['hc-pop-center'] = horizAlign === 'center' || vertAlign === 'center';\n    }\n\n    _setAlignmentClassesForArrow(xAlign = this.horizontalAlign, yAlign = this.verticalAlign): void {\n        this._classList['hc-pop-show-arrow'] =\n            (this.showArrow &&\n                (xAlign === 'start' || xAlign === 'center' || xAlign === 'end') &&\n                (yAlign === 'above' || yAlign === 'below')) ||\n            ((yAlign === 'start' || yAlign === 'center' || yAlign === 'end') && (xAlign === 'before' || xAlign === 'after'));\n\n        this._yAlignClass = this._classList['hc-pop-show-arrow'] ? `hc-pop-arrow-y-${yAlign}` : '';\n        this._xAlignClass = this._classList['hc-pop-show-arrow'] ? `hc-pop-arrow-x-${xAlign}` : '';\n    }\n\n    /** Set the focus of an hcMenu based on a keyboard arrow press */\n    _keyFocus(downPress: boolean): void {\n        const itemArray = this._menuItems.toArray();\n        if (!downPress) {\n            itemArray.reverse();\n        }\n        let selected = false;\n\n        // Determine if any item in the menu is currently focused, and select the next (or previous)\n        for (let i = 0; i < itemArray.length; i++) {\n            if (selected && !itemArray[i].ref.nativeElement.classList.contains('hc-divider') && !itemArray[i].ref.nativeElement.disabled) {\n                itemArray[i].focus();\n                return;\n            }\n            if (itemArray[i].ref.nativeElement === document.activeElement) {\n                selected = true;\n            }\n        }\n\n        // If no item is focused, selected the first (or last) item that isn't a divider or disabled\n        for (let i = 0; i < itemArray.length; i++) {\n            if (!itemArray[i].ref.nativeElement.classList.contains('hc-divider') && !itemArray[i].ref.nativeElement.disabled) {\n                itemArray[i].focus();\n                return;\n            }\n        }\n    }\n\n    /** Restore focus to the element focused before the popover opened. Also destroy trap. */\n    _restoreFocusAndDestroyTrap(): void {\n        const toFocus = this._previouslyFocusedElement;\n\n        // Must check active element is focusable for IE sake\n        if (toFocus && 'focus' in toFocus && this.restoreFocus && this._previouslyFocusedElement) {\n            this._previouslyFocusedElement.focus();\n        }\n\n        this._previouslyFocusedElement = null;\n\n        if (this._focusTrap) {\n            this._focusTrap.destroy();\n            this._focusTrap = undefined;\n        }\n    }\n\n    /** Save a reference to the element focused before the popover was opened. */\n    _savePreviouslyFocusedElement(): void {\n        if (this._document) {\n            this._previouslyFocusedElement = this._document.activeElement as HTMLElement;\n        }\n    }\n\n    /** Move the focus inside the focus trap and remember where to return later. */\n    private _trapFocus(): void {\n        // There won't be a focus trap element if the close animation starts before open finishes\n        if (!this._focusTrapElement) {\n            return;\n        }\n\n        if (!this._focusTrap && this._focusTrapElement) {\n            this._focusTrap = this._focusTrapFactory.create(this._focusTrapElement.nativeElement);\n        }\n\n        if (this.autoFocus && this._focusTrap) {\n            this._focusTrap.focusInitialElementWhenReady();\n        }\n    }\n\n    /** Dispatch a notification to the notification service, if possible. */\n    private _dispatchConfigNotification(notification: PopoverNotification) {\n        if (this._notifications) {\n            this._notifications.dispatch(notification);\n        }\n    }\n\n    /** Dispatch a notification to the notification service and throw if unable to. */\n    private _dispatchActionNotification(notification: PopoverNotification) {\n        if (!this._notifications) {\n            throw getUnanchoredPopoverError();\n        }\n\n        this._notifications.dispatch(notification);\n    }\n\n    /** Throws an error if the alignment is not a valid horizontalAlign. */\n    private _validateHorizontalAlign(pos: HcPopoverHorizontalAlign): void {\n        if (VALID_HORIZ_ALIGN.indexOf(pos) === -1) {\n            throw getInvalidHorizontalAlignError(pos);\n        }\n    }\n\n    /** Throws an error if the alignment is not a valid verticalAlign. */\n    private _validateVerticalAlign(pos: HcPopoverVerticalAlign): void {\n        if (VALID_VERT_ALIGN.indexOf(pos) === -1) {\n            throw getInvalidVerticalAlignError(pos);\n        }\n    }\n\n    /** Throws an error if the scroll strategy is not a valid strategy. */\n    private _validateScrollStrategy(strategy: HcPopoverScrollStrategy): void {\n        if (VALID_SCROLL.indexOf(strategy) === -1) {\n            throw getInvalidScrollStrategyError(strategy);\n        }\n    }\n}\n","<ng-template>\n    <div\n        class=\"hc-pop-container\"\n        #focusTrapElement\n        class=\"{{ _yAlignClass }} {{ _xAlignClass }}\"\n        [class.hc-pop-container-basic]=\"!disableStyle\"\n        [ngClass]=\"_classList\"\n        [style.max-width]=\"maxWidth\"\n        (click)=\"_popContainerClicked()\"\n        [@transformPopover]=\"_getAnimation()\"\n        (@transformPopover.done)=\"_onAnimationDone($event)\"\n    >\n        <ng-content></ng-content>\n        @if (showArrow) {\n        <div class=\"hc-pop-arrow {{ _yAlignClass }} {{ _xAlignClass }}\"></div>\n        }\n    </div>\n</ng-template>\n","import {Component, Input, ViewEncapsulation} from '@angular/core';\nimport {HcPopComponent} from '../popover.component';\nimport {transformPopover} from '../popover.animations';\n\n/** Displays additional information on hover above the element after a specified delay */\n@Component({\n    selector: 'hc-tooltip',\n    templateUrl: './tooltip.component.html',\n    animations: [transformPopover],\n    styleUrls: ['../popover.component.scss', './tooltip.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class HcTooltipComponent extends HcPopComponent {\n    /** The content to be display in the tooltip */\n    @Input()\n    tooltipContent = '';\n}\n","<ng-template #_templateRef>\n    <div\n        class=\"hc-pop-container , hc-tooltip-container\"\n        class=\"{{ _yAlignClass }} {{ _xAlignClass }}\"\n        [class.hc-pop-container-basic]=\"!disableStyle\"\n        [ngClass]=\"_classList\"\n        [style.max-width]=\"maxWidth\"\n        [@transformPopover]=\"_getAnimation()\"\n        (@transformPopover.done)=\"_onAnimationDone($event)\"\n    >\n        <div class=\"hc-tooltip\">\n            {{ tooltipContent }}\n        </div>\n        @if (showArrow) {\n        <div class=\"hc-pop-arrow hc-pop-arrow-y-above hc-pop-arrow-x-center\"></div>\n        }\n    </div>\n</ng-template>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {ElementRef, Injectable, NgZone, OnDestroy, Optional, Renderer2, ViewContainerRef} from '@angular/core';\nimport {\n    ConnectionPositionPair,\n    FlexibleConnectedPositionStrategy,\n    GlobalPositionStrategy,\n    HorizontalConnectionPos,\n    Overlay,\n    OverlayConfig,\n    OverlayRef,\n    ScrollStrategy,\n    VerticalConnectionPos\n} from '@angular/cdk/overlay';\nimport {Directionality, Direction} from '@angular/cdk/bidi';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {Subscription, Subject} from 'rxjs';\nimport {takeUntil, take, filter, tap} from 'rxjs/operators';\n\nimport {HcPopComponent} from './popover.component';\nimport {HcPopoverHorizontalAlign, HcPopoverVerticalAlign, HcPopoverScrollStrategy, HcPopoverOpenOptions} from './types';\n\nimport {PopoverNotificationService, NotificationAction} from './notification.service';\nimport {HcPopoverAnchorDirective} from './directives/popover-anchor.directive';\n\n/**\n * Configuration provided by the popover for the anchoring service\n * to build the correct overlay config.\n */\ninterface PopoverConfig {\n    horizontalAlign: HcPopoverHorizontalAlign;\n    verticalAlign: HcPopoverVerticalAlign;\n    hasBackdrop: boolean;\n    backdropClass: string;\n    scrollStrategy: HcPopoverScrollStrategy;\n    forceAlignment: boolean;\n    lockAlignment: boolean;\n}\n\n@Injectable()\nexport class HcPopoverAnchoringService implements OnDestroy {\n    /** Emits when the popover is opened. */\n    popoverOpened = new Subject<void>();\n\n    /** Emits when the popover is closed. */\n    popoverClosed = new Subject<void>();\n\n    /** Reference to the overlay containing the popover component. */\n    _overlayRef: OverlayRef | null;\n\n    /** Reference to the target popover. */\n    private _popover: HcPopComponent;\n\n    /** Stores the context assigned to the popover */\n    _context: any;\n\n    /** Reference to the view container for the popover template. */\n    private _viewContainerRef: ViewContainerRef;\n\n    /** Reference to the anchor */\n    private _anchor: HcPopoverAnchorDirective;\n\n    /** Reference to a template portal where the overlay will be attached. */\n    private _portal: TemplatePortal<any>;\n\n    /** Communications channel with the popover. */\n    private _notifications: PopoverNotificationService;\n\n    /** Single subscription to notifications service events. */\n    private _notificationsSubscription: Subscription;\n\n    /** Single subscription to position changes. */\n    private _positionChangeSubscription: Subscription;\n\n    /** Whether the popover is presently open. */\n    private _popoverOpen = false;\n\n    /** Emits when the service is destroyed. */\n    private _onDestroy = new Subject<void>();\n\n    /** Stores the fixed position coordinates */\n    _fixedPos: number[] = [];\n\n    /** Function to remove a right-click event listener if added */\n    private _unlistener: () => void;\n\n    constructor(private _overlay: Overlay, private _renderer: Renderer2, private _ngZone: NgZone, @Optional() private _dir: Directionality) {}\n\n    ngOnDestroy(): void {\n        // Destroy popover before terminating subscriptions so that any resulting\n        // detachments update 'closed state'\n        this._destroyPopover();\n\n        // Terminate subscriptions\n        if (this._notificationsSubscription) {\n            this._notificationsSubscription.unsubscribe();\n        }\n        if (this._positionChangeSubscription) {\n            this._positionChangeSubscription.unsubscribe();\n        }\n        this._onDestroy.next();\n        this._onDestroy.complete();\n\n        this.popoverOpened.complete();\n        this.popoverClosed.complete();\n    }\n\n    /** Anchor a popover instance to a view and connection element. */\n    anchor(popover: HcPopComponent, viewContainerRef: ViewContainerRef, anchor: HcPopoverAnchorDirective): void {\n        // Destroy any previous popovers\n        this._destroyPopover();\n\n        // Assign local refs\n        this._popover = popover;\n        this._viewContainerRef = viewContainerRef;\n        this._anchor = anchor;\n\n        // Provide notification service as a communication channel between popover and anchor.\n        // Then subscribe to notifications to take appropriate actions.\n        this._popover._notifications = this._notifications = this._anchor._notifications = new PopoverNotificationService();\n        this._subscribeToNotifications();\n    }\n\n    /** Gets whether the popover is presently open. */\n    isPopoverOpen(): boolean {\n        return this._popoverOpen;\n    }\n\n    /** Toggles the popover between the open and closed states. */\n    togglePopover(): void {\n        return this._popoverOpen ? this.closePopover() : this.openPopover();\n    }\n\n    /** Opens the popover. */\n    openPopover(options: HcPopoverOpenOptions = {}): void {\n        if (!this._popoverOpen) {\n            this._applyOpenOptions(options);\n            this._popover._componentOverlay = this._createOverlay();\n            this._subscribeToBackdrop();\n            this._subscribeToEscape();\n            this._subscribeToDetachments();\n            this._saveOpenedState();\n            this._popover._savePreviouslyFocusedElement();\n        }\n    }\n\n    /** Closes the popover. */\n    closePopover(value?: unknown, neighborSubMenusAreOpen = false): void {\n        if ( this._unlistener ) {\n            this._unlistener();\n        }\n        if (this._popover._componentOverlay) {\n            this._saveClosedState(value, neighborSubMenusAreOpen);\n            this._popover._componentOverlay.detach();\n            this._popover._restoreFocusAndDestroyTrap();\n        }\n    }\n\n    /** Realign the popover to the anchor. */\n    realignPopoverToAnchor(): void {\n        if (this._popover._componentOverlay) {\n            const config = this._popover._componentOverlay.getConfig();\n            const strategy = config.positionStrategy as FlexibleConnectedPositionStrategy;\n            strategy.reapplyLastPosition();\n        }\n    }\n\n    /** Get a reference to the anchor element. */\n    getAnchorElement(): ElementRef {\n        return this._anchor._elementRef;\n    }\n\n    /** Apply behavior properties on the popover based on the open options. */\n    private _applyOpenOptions(options: HcPopoverOpenOptions): void {\n        // Only override restoreFocus as `false` if the option is explicitly `false`\n        const restoreFocus = options.restoreFocus !== false;\n        this._popover._restoreFocusOverride = restoreFocus;\n\n        // Only override autoFocus as `false` if the option is explicitly `false`\n        const autoFocus = options.autoFocus !== false;\n        this._popover._autoFocusOverride = autoFocus;\n\n        // Set the fixed position coordinates if a x or y value is provided\n        if ( options.x || options.y ) {\n            this._destroyPopoverOnceClosed();\n\n            this._fixedPos[0] = options.x ? options.x : 0;\n            this._fixedPos[1] = options.y ? options.y : 0;\n        }\n    }\n\n    /** Create an overlay to be attached to the portal. */\n    private _createOverlay(): OverlayRef {\n        // Create overlay if it doesn't yet exist\n        if (!this._overlayRef) {\n            this._portal = new TemplatePortal(this._popover._templateRef, this._viewContainerRef);\n\n            const popoverConfig = {\n                horizontalAlign: this._popover.horizontalAlign,\n                verticalAlign: this._popover.verticalAlign,\n                hasBackdrop: this._popover.hasBackdrop,\n                backdropClass: this._popover.backdropClass,\n                scrollStrategy: this._popover.scrollStrategy,\n                forceAlignment: this._popover.forceAlignment,\n                lockAlignment: this._popover.lockAlignment\n            };\n\n            const overlayConfig = this._getOverlayConfig(popoverConfig, this._anchor);\n\n            // Only subscribe to position changes when the popover is not fixed position\n            if ( !this._fixedPos.length ) {\n                this._subscribeToPositionChanges(overlayConfig.positionStrategy as FlexibleConnectedPositionStrategy);\n            }\n\n            this._overlayRef = this._overlay.create(overlayConfig);\n        } else if (this._popover.horizontalAlign === 'mouse' || this._popover.verticalAlign === 'mouse' && !this._fixedPos.length ) {\n            /* If aligning to mouse clicks - adjust the strategy based on the most current click */\n            this._overlayRef.updatePositionStrategy(\n                this._getPositionStrategy(\n                    this._popover.horizontalAlign,\n                    this._popover.verticalAlign,\n                    this._popover.forceAlignment,\n                    this._popover.lockAlignment,\n                    this._anchor._elementRef\n                )\n            );\n        }\n\n        // Actually open the popover\n        this._overlayRef.attach(this._portal);\n        return this._overlayRef;\n    }\n\n    /** Removes the popover from the DOM. Does NOT update open state. */\n    private _destroyPopover(): void {\n        if (this._overlayRef) {\n            this._overlayRef.dispose();\n            this._overlayRef = null;\n        }\n    }\n\n    /**\n     * Destroys the popover immediately if it is closed, or waits until it\n     * has been closed to destroy it.\n     */\n    private _destroyPopoverOnceClosed(): void {\n        if (this.isPopoverOpen() && this._overlayRef) {\n            this._overlayRef\n                .detachments()\n                .pipe(take(1), takeUntil(this._onDestroy))\n                .subscribe(() => this._destroyPopover());\n        } else {\n            this._destroyPopover();\n        }\n    }\n\n    /**\n     * Call appropriate anchor method when an event is dispatched through\n     * the notification service.\n     */\n    private _subscribeToNotifications(): void {\n        if (this._notificationsSubscription) {\n            this._notificationsSubscription.unsubscribe();\n        }\n\n        this._notificationsSubscription = this._notifications.events().subscribe(event => {\n            switch (event.action) {\n                case NotificationAction.OPEN:\n                    this.openPopover(event.value);\n                    break;\n                case NotificationAction.CLOSE:\n                    this.closePopover(event.value);\n                    break;\n                case NotificationAction.TOGGLE:\n                    this.togglePopover();\n                    break;\n                // TODO: When the overlay's position can be dynamically changed, do not destroy\n                case NotificationAction.REPOSITION:\n                case NotificationAction.UPDATE_CONFIG:\n                    this._destroyPopoverOnceClosed();\n                    break;\n                case NotificationAction.REALIGN:\n                    this.realignPopoverToAnchor();\n                    break;\n            }\n        });\n    }\n\n    /** Close popover when backdrop is clicked. */\n    private _subscribeToBackdrop(): void {\n        if (!this._overlayRef) {\n            return;\n        }\n        this._overlayRef\n            .backdropClick()\n            .pipe(\n                tap(() => this._popover.backdropClicked.emit()),\n                filter(() => this._popover.interactiveClose),\n                takeUntil(this.popoverClosed),\n                takeUntil(this._onDestroy)\n            )\n            .subscribe(() => this.closePopover());\n\n        // Allow right-clicks to close an open popover\n        if ( this._overlayRef.backdropElement && this._popover.interactiveClose ) {\n            this._unlistener = this._renderer.listen( this._overlayRef.backdropElement, 'contextmenu', event => {\n                event.preventDefault();\n                this._popover.backdropClicked.emit();\n                this.closePopover();\n            });\n        }\n    }\n\n    /** Close popover when escape keydown event occurs. */\n    private _subscribeToEscape(): void {\n        if (!this._overlayRef) {\n            return;\n        }\n        this._overlayRef\n            .keydownEvents()\n            .pipe(\n                tap(event => this._popover.overlayKeydown.emit(event)),\n                filter(event => event.key === 'Escape'),\n                filter(() => this._popover.interactiveClose),\n                takeUntil(this.popoverClosed),\n                takeUntil(this._onDestroy)\n            )\n            .subscribe(() => this.closePopover());\n    }\n\n    /** Set state back to closed when detached. */\n    private _subscribeToDetachments(): void {\n        if (!this._overlayRef) {\n            return;\n        }\n        this._overlayRef\n            .detachments()\n            .pipe(takeUntil(this._onDestroy))\n            .subscribe(() => this._saveClosedState());\n    }\n\n    /** Save the opened state of the popover and emit. */\n    private _saveOpenedState(): void {\n        if (!this._popoverOpen) {\n            this._popover._open = this._popoverOpen = true;\n            if ( this._popover.parent ) {\n                this._popover.parent._subMenuOpen = true;\n            }\n\n            this.popoverOpened.next();\n            if (typeof this._context === 'undefined') {\n                this._popover.opened.emit();\n            } else {\n                this._popover.opened.emit(this._context);\n            }\n        }\n    }\n\n    /** Save the closed state of the popover and emit. */\n    private _saveClosedState(value?: any, neighborSubMenusAreOpen = false): void {\n        if (this._popoverOpen) {\n            this._popover._open = this._popoverOpen = false;\n            if ( this._popover.parent ) {\n                this._popover.parent._subMenuOpen = neighborSubMenusAreOpen;\n            }\n            this.popoverClosed.next(value);\n            this._popover.closed.emit(value);\n        }\n    }\n\n    /** Gets the text direction of the containing app. */\n    private _getDirection(): Direction {\n        return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n    }\n\n    /** Create and return a config for creating the overlay. */\n    private _getOverlayConfig(config: PopoverConfig, anchor: HcPopoverAnchorDirective): OverlayConfig {\n        return new OverlayConfig({\n            positionStrategy: this._fixedPos.length ?\n                this._getFixedPositionStrategy() :\n                this._getPositionStrategy(\n                    config.horizontalAlign,\n                    config.verticalAlign,\n                    config.forceAlignment,\n                    config.lockAlignment,\n                    anchor._elementRef\n                ),\n            // make it hard for users to shoot themselves in the foot by disabling backdrop if hover is the trigger\n            hasBackdrop: anchor.trigger !== 'hover' ? config.hasBackdrop : false,\n\n            backdropClass: config.backdropClass || 'cdk-overlay-transparent-backdrop',\n            scrollStrategy: this._getScrollStrategyInstance(config.scrollStrategy),\n            direction: this._getDirection(),\n\n            // disable pointer events for hover popovers to avoid potential flickering issues\n            panelClass: anchor.trigger === 'hover' && !anchor._hasSubmenu ? 'overlay-pointer-events' : ''\n        });\n    }\n\n    /**\n     * Listen to changes in the position of the overlay and set the correct alignment classes,\n     * ensuring that the animation origin is correct, even with a fallback position.\n     */\n    private _subscribeToPositionChanges(position: FlexibleConnectedPositionStrategy): void {\n        if (this._positionChangeSubscription) {\n            this._positionChangeSubscription.unsubscribe();\n        }\n\n        this._positionChangeSubscription = position.positionChanges.pipe(takeUntil(this._onDestroy)).subscribe(change => {\n            // Position changes may occur outside the Angular zone\n            this._ngZone.run(() => {\n                this._popover._setAlignmentClassesForAnimation(\n                    getHorizontalPopoverAlignment(change.connectionPair.overlayX),\n                    getVerticalPopoverAlignment(change.connectionPair.overlayY)\n                );\n                this._popover._setAlignmentClassesForArrow(\n                    getHPopAlignmentForArrow(change.connectionPair.overlayX, change.connectionPair.originX),\n                    getVPopAlignmentForArrow(change.connectionPair.overlayY, change.connectionPair.originY)\n                );\n            });\n        });\n    }\n\n    /** Map a scroll strategy string type to an instance of a scroll strategy. */\n    private _getScrollStrategyInstance(strategy: HcPopoverScrollStrategy): ScrollStrategy {\n        switch (strategy) {\n            case 'block':\n                return this._overlay.scrollStrategies.block();\n            case 'reposition':\n                return this._overlay.scrollStrategies.reposition();\n            case 'close':\n                return this._overlay.scrollStrategies.close();\n            case 'noop':\n            default:\n                return this._overlay.scrollStrategies.noop();\n        }\n    }\n\n    /** Create and return a position strategy based on config provided to the component instance. */\n    private _getPositionStrategy(\n        horizontalTarget: HcPopoverHorizontalAlign,\n        verticalTarget: HcPopoverVerticalAlign,\n        forceAlignment: boolean,\n        lockAlignment: boolean,\n        anchor: ElementRef\n    ): FlexibleConnectedPositionStrategy {\n        // Attach the overlay at the preferred position\n        const targetPosition = getPosition(horizontalTarget, verticalTarget, this._popover._offsetPos);\n        const positions = [targetPosition];\n\n        const strategy = this._overlay\n            .position()\n            .flexibleConnectedTo(anchor)\n            .withPush(false)\n            .withViewportMargin(0)\n            .withLockedPosition(lockAlignment);\n\n        // Unless the alignment is forced, add fallbacks based on the preferred positions\n        if (!forceAlignment) {\n            const fallbacks = this._getFallbacks(horizontalTarget, verticalTarget);\n            positions.push(...fallbacks);\n        }\n\n        return strategy.withPositions(positions);\n    }\n\n    /** Create and return a position strategy for a fixed position popover. */\n    private _getFixedPositionStrategy(): GlobalPositionStrategy {\n        return this._overlay\n            .position()\n            .global()\n            .left(this._fixedPos[0] + 'px')\n            .top(this._fixedPos[1] + 'px');\n    }\n\n    /** Get fallback positions based around target alignments. */\n    private _getFallbacks(hTarget: HcPopoverHorizontalAlign, vTarget: HcPopoverVerticalAlign): ConnectionPositionPair[] {\n        // Determine if the target alignments overlap the anchor\n        const horizontalOverlapAllowed = hTarget !== 'before' && hTarget !== 'after';\n        const verticalOverlapAllowed = vTarget !== 'above' && vTarget !== 'below';\n\n        // If a target alignment doesn't cover the anchor, don't let any of the fallback alignments\n        // cover the anchor\n        const possibleHorizontalAlignments: HcPopoverHorizontalAlign[] = horizontalOverlapAllowed\n            ? ['before', 'start', 'center', 'end', 'after', 'mouse']\n            : ['before', 'after'];\n        const possibleVerticalAlignments: HcPopoverVerticalAlign[] = verticalOverlapAllowed\n            ? ['above', 'start', 'center', 'end', 'below', 'mouse']\n            : ['above', 'below'];\n\n        // Create fallbacks for each allowed prioritized fallback alignment combo\n        const fallbacks: ConnectionPositionPair[] = [];\n        prioritizeAroundTarget(hTarget, possibleHorizontalAlignments).forEach(h => {\n            prioritizeAroundTarget(vTarget, possibleVerticalAlignments).forEach(v => {\n                fallbacks.push(getPosition(h, v, this._popover._offsetPos));\n            });\n        });\n\n        // Remove the first item since it will be the target alignment and isn't considered a fallback\n        return fallbacks.slice(1, fallbacks.length);\n    }\n}\n\n/** Helper function to convert an overlay connection position to equivalent popover alignment for arrow positioning */\nfunction getHPopAlignmentForArrow(hOverlay: HorizontalConnectionPos, hOrigin: HorizontalConnectionPos): HcPopoverHorizontalAlign {\n    if (hOverlay === hOrigin) {\n        return hOverlay;\n    }\n\n    if (hOverlay === 'start') {\n        return 'after';\n    }\n\n    if (hOverlay === 'end') {\n        return 'before';\n    }\n\n    return 'center';\n}\n\n/** Helper function to convert an overlay connection position to equivalent popover alignment for arrow positioning. */\nfunction getVPopAlignmentForArrow(vOverlay: VerticalConnectionPos, vOrigin: VerticalConnectionPos): HcPopoverVerticalAlign {\n    if (vOverlay === vOrigin && (vOverlay === 'top' || vOverlay === 'bottom')) {\n        return vOverlay === 'top' ? 'start' : 'end';\n    }\n\n    if (vOverlay === 'top') {\n        return 'below';\n    }\n\n    if (vOverlay === 'bottom') {\n        return 'above';\n    }\n\n    return 'center';\n}\n\n/** Helper function to get a cdk position pair from HcPopover alignments. */\nfunction getPosition(h: HcPopoverHorizontalAlign, v: HcPopoverVerticalAlign, offset: number[]): ConnectionPositionPair {\n    const {originX, overlayX} = getHorizontalConnectionPosPair(h);\n    const {originY, overlayY} = getVerticalConnectionPosPair(v);\n    return new ConnectionPositionPair({originX, originY}, {overlayX, overlayY}, offset[0], offset[1]);\n}\n\n/** Helper function to convert an overlay connection position to equivalent popover alignment. */\nfunction getHorizontalPopoverAlignment(h: HorizontalConnectionPos): HcPopoverHorizontalAlign {\n    if (h === 'start') {\n        return 'after';\n    }\n\n    if (h === 'end') {\n        return 'before';\n    }\n\n    return 'center';\n}\n\n/** Helper function to convert an overlay connection position to equivalent popover alignment. */\nfunction getVerticalPopoverAlignment(v: VerticalConnectionPos): HcPopoverVerticalAlign {\n    if (v === 'top') {\n        return 'below';\n    }\n\n    if (v === 'bottom') {\n        return 'above';\n    }\n\n    return 'center';\n}\n\n/** Helper function to convert alignment to origin/overlay position pair. */\nfunction getHorizontalConnectionPosPair(\n    h: HcPopoverHorizontalAlign\n): {originX: HorizontalConnectionPos; overlayX: HorizontalConnectionPos} {\n    switch (h) {\n        case 'before':\n            return {originX: 'start', overlayX: 'end'};\n        case 'start':\n        case 'mouse':\n            return {originX: 'start', overlayX: 'start'};\n        case 'end':\n            return {originX: 'end', overlayX: 'end'};\n        case 'after':\n            return {originX: 'end', overlayX: 'start'};\n        default:\n            return {originX: 'center', overlayX: 'center'};\n    }\n}\n\n/** Helper function to convert alignment to origin/overlay position pair. */\nfunction getVerticalConnectionPosPair(v: HcPopoverVerticalAlign): {originY: VerticalConnectionPos; overlayY: VerticalConnectionPos} {\n    switch (v) {\n        case 'above':\n            return {originY: 'top', overlayY: 'bottom'};\n        case 'start':\n        case 'mouse':\n            return {originY: 'top', overlayY: 'top'};\n        case 'end':\n            return {originY: 'bottom', overlayY: 'bottom'};\n        case 'below':\n            return {originY: 'bottom', overlayY: 'top'};\n        default:\n            return {originY: 'center', overlayY: 'center'};\n    }\n}\n\n/**\n * Helper function that takes an ordered array options and returns a reorderded\n * array around the target item. e.g.:\n *\n * target: 3; options: [1, 2, 3, 4, 5, 6, 7];\n *\n * return: [3, 4, 2, 5, 1, 6, 7]\n */\nfunction prioritizeAroundTarget<T>(target: T, options: T[]): T[] {\n    const targetIndex = options.indexOf(target);\n\n    // Set the first item to be the target\n    const reordered = [target];\n\n    // Make left and right stacks where the highest priority item is last\n    const left = options.slice(0, targetIndex);\n    const right = options.slice(targetIndex + 1, options.length).reverse();\n\n    // Alternate between stacks until one is empty\n    while (left.length && right.length) {\n        const r = right.pop();\n        if (r) {\n            reordered.push(r);\n        }\n        const l = left.pop();\n        if (l) {\n            reordered.push(l);\n        }\n    }\n\n    // Flush out right side\n    while (right.length) {\n        const r2 = right.pop();\n        if (r2) {\n            reordered.push(r2);\n        }\n    }\n\n    // Flush out left side\n    while (left.length) {\n        const l2 = left.pop();\n        if (l2) {\n            reordered.push(l2);\n        }\n    }\n\n    return reordered;\n}\n","import {Injectable, OnDestroy} from '@angular/core';\n\nexport interface HcPopKeyboardNotifier {\n    isOpen: boolean;\n    nativeElement: HTMLElement;\n    hasSubmenu: () => boolean;\n    onKeyDown: (event: KeyboardEvent) => void;\n}\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class HcPopoverAccessibilityService implements OnDestroy {\n    private notifiers: HcPopKeyboardNotifier[] = [];\n\n    constructor() {\n        window.addEventListener('keydown', this.handleKeydown);\n    }\n\n    ngOnDestroy():void {\n        window.removeEventListener('keydown', this.handleKeydown);\n    }\n\n    registerNotifier(notifier: HcPopKeyboardNotifier): void {\n        this.notifiers.push(notifier);\n    }\n\n    private handleKeydown = (event: KeyboardEvent) => {\n        this.notifiers.filter(n => n.isOpen).forEach(n => n.onKeyDown(event));\n        if (event.key === 'ArrowRight') {\n            this.notifiers.filter(n => document.activeElement === n.nativeElement && n.hasSubmenu()).forEach(n => n.onKeyDown(event));\n        }\n    };\n}\n","import {\n    Directive,\n    ElementRef,\n    EventEmitter,\n    Input,\n    OnInit,\n    OnDestroy,\n    Output,\n    ViewContainerRef,\n    HostListener,\n    HostBinding,\n    AfterContentInit,\n    ComponentFactoryResolver\n} from '@angular/core';\nimport { Subject, merge } from 'rxjs';\nimport { tap, takeUntil } from 'rxjs/operators';\n\nimport { HcPopComponent } from '../popover.component';\nimport { getInvalidPopoverError, getInvalidTriggerError } from '../popover.errors';\nimport { HcPopoverAnchoringService } from '../popover-anchoring.service';\nimport { HcPopoverHorizontalAlign, HcPopoverOpenOptions, HcPopoverTrigger, HcPopoverVerticalAlign, VALID_TRIGGER } from '../types';\nimport { PopoverNotification, PopoverNotificationService, NotificationAction } from '../notification.service';\nimport { HcPopoverAccessibilityService, HcPopKeyboardNotifier } from '../popover-accessibility.service';\nimport { HcTooltipComponent } from '../tooltip/tooltip.component';\nimport { parseBooleanAttribute } from '../../util';\n\n@Directive({\n    selector: '[hcPop],[hcTooltip]',\n    exportAs: 'hcPopAnchor',\n    providers: [HcPopoverAnchoringService],\n    standalone: false\n})\nexport class HcPopoverAnchorDirective implements OnInit, AfterContentInit, OnDestroy {\n    /** Reference to the popover instance. */\n    @Input('hcPop')\n    get attachedPopover(): HcPopComponent {\n        return this._attachedPopover;\n    }\n    set attachedPopover(value: HcPopComponent) {\n        this._validateAttachedPopover(value);\n        this._attachedPopover = value;\n        // Anchor the popover to the element ref\n        this._anchoring.anchor(this.attachedPopover, this._viewContainerRef, this);\n    }\n    private _attachedPopover: HcPopComponent;\n\n    /** A string of text to display as a tooltip above an element */\n    @Input('hcTooltip')\n    get tooltipText(): string {\n        return this._tooltipText;\n    }\n    set tooltipText(value: string) {\n        this._tooltipText = value;\n        const factory = this._componentFactoryResolver.resolveComponentFactory(HcTooltipComponent);\n        const popover = this._viewContainerRef.createComponent(factory).instance;\n        popover.tooltipContent = value;\n        popover.disableStyle = true;\n        popover.verticalAlign = 'above';\n        popover.scrollStrategy = 'close';\n        popover.restoreFocus = false;\n        popover.maxWidth = this._maxWidth;\n        this.attachedPopover = popover;\n        // Don't enable the tooltip if the content string is empty\n        this.trigger = value ? 'hover' : 'none';\n        this.popoverDelay = 300;\n    }\n    private _tooltipText: string;\n\n    /** Trigger event to toggle the popover. *Defaults to `\"click\"`.*\n     * Accepts `click`, `mousedown`, `hover`, `rightclick`, or `none`.\n     * Note: if \"hover\" is selected, the backdrop for the popover will be disabled. */\n    @Input()\n    get trigger(): HcPopoverTrigger {\n        return this._trigger;\n    }\n    set trigger(val: HcPopoverTrigger) {\n        this._validateTrigger(val);\n        if (this._trigger !== val) {\n            this._trigger = val;\n        }\n        this._dispatchConfigNotification(new PopoverNotification(NotificationAction.UPDATE_CONFIG));\n    }\n    private _trigger: HcPopoverTrigger = 'click';\n\n    /** Number that can be passed into the popover to change hover delay. Also used for tooltip.\n     * Delay is measured in milliseconds.\n     */\n    @Input()\n    get popoverDelay(): number {\n        return this._popoverDelay;\n    }\n\n    set popoverDelay(val: number) {\n        this._popoverDelay = Number(val);\n    }\n\n    private _popoverDelay = 0;\n\n    /** Timer that delays togglePopover on hover. */\n    private hoverInterval: number;\n\n    /** Constrains the content of a popover to a standard css string value; *Defaults to `none`.* */\n    @Input()\n    get maxWidth(): string {\n        return this._attachedPopover.maxWidth;\n    }\n\n    set maxWidth(val: string) {\n        this._maxWidth = val;\n        if ( this.attachedPopover ) {\n            this._attachedPopover.maxWidth = val;\n        }\n    }\n\n    private _maxWidth = 'none';\n\n    /** Whether the popover should return focus to the previously focused element after closing.* */\n    @Input()\n    get restoreFocus(): boolean {\n        return this._attachedPopover.restoreFocus && this._attachedPopover._restoreFocusOverride;\n    }\n    set restoreFocus(val: boolean) {\n        if ( this.attachedPopover ) {\n            this._attachedPopover.restoreFocus = parseBooleanAttribute(val);\n        }\n    }\n\n    /** Object or value that can be passed into the popover to customize its content */\n    @Input()\n    get context(): unknown {\n        return this._anchoring._context;\n    }\n    set context(val: unknown) {\n        this._anchoring._context = val;\n    }\n\n    /** Alignment of the popover on the horizontal axis. Can be `before`, `start`, `center`, `end`, `after`, or `mouse`.\n     * *Defaults to `center`.* */\n    @Input()\n    get horizontalAlign(): HcPopoverHorizontalAlign {\n        return this._attachedPopover.horizontalAlign;\n    }\n    set horizontalAlign(val: HcPopoverHorizontalAlign) {\n        if ( this.attachedPopover ) {\n            this.attachedPopover.horizontalAlign = val;\n        }\n    }\n\n    /** Alignment of the popover on the vertical axis. Can be `above`, `start`, `center`, `end`, `below`, or `mouse`.\n     * *Defaults to `\"below\"`.* */\n    @Input()\n    get verticalAlign(): HcPopoverVerticalAlign {\n        return this._attachedPopover.verticalAlign;\n    }\n    set verticalAlign(val: HcPopoverVerticalAlign) {\n        if ( this.attachedPopover ) {\n            this.attachedPopover.verticalAlign = val;\n        }\n    }\n\n    @HostBinding('class.hc-menu-item-submenu')\n    _hasSubmenu = false;\n\n    /** Emits when the popover is opened. */\n    @Output() popoverOpened = new EventEmitter<void>();\n\n    /** Emits when the popover is closed. */\n    @Output() popoverClosed = new EventEmitter<unknown>();\n\n    /** Instance of notification service. Will be undefined until attached to a popover. */\n    _notifications: PopoverNotificationService;\n\n    /** Emits when the directive is destroyed. */\n    private _onDestroy = new Subject<void>();\n\n    constructor(\n        public _elementRef: ElementRef,\n        private _viewContainerRef: ViewContainerRef,\n        public _anchoring: HcPopoverAnchoringService,\n        private _accessibility: HcPopoverAccessibilityService,\n        private _componentFactoryResolver: ComponentFactoryResolver\n    ) { }\n\n    ngOnInit(): void {\n        // Re-emit open and close events\n        const opened$ = this._anchoring.popoverOpened.pipe(tap(() => this.popoverOpened.emit()));\n        const closed$ = this._anchoring.popoverClosed.pipe(tap(value => this.popoverClosed.emit(value)));\n        merge(opened$, closed$)\n            .pipe(takeUntil(this._onDestroy))\n            .subscribe();\n    }\n\n    ngAfterContentInit(): void {\n        this._setupKeyboardEvents();\n    }\n\n    ngOnDestroy(): void {\n        clearTimeout(this.hoverInterval);\n        this._onDestroy.next();\n        this._onDestroy.complete();\n    }\n\n    @HostListener('click', ['$event'])\n    _showOrHideOnClick(event: MouseEvent): void {\n        if (this._hasSubmenu && event) {\n            // Prevent the popover component from auto closing on click if a submenu was selected\n            event.stopPropagation();\n            event.preventDefault();\n        }\n        if (this.trigger !== 'click') {\n            return;\n        }\n        this._attachedPopover._offsetPos[0] = this._attachedPopover.horizontalAlign === 'mouse' ? event.offsetX : 0;\n        this._attachedPopover._offsetPos[1] = this._attachedPopover.verticalAlign === 'mouse' ? event.offsetY : 0;\n        this.togglePopover();\n    }\n\n    /** So popover anchors can be accessible via keyboard. */\n    @HostListener('keydown', ['$event'])\n    _showOrHideOnEnter(event: KeyboardEvent): void {\n        // buttons already trigger a click when you press enter, so executing this event handler would be redundant\n        const targetElement = event.target as Element;\n        const triggerFromButton = targetElement && targetElement.tagName === \"BUTTON\";\n        // not triggering popover on keypress unless the key pressed was enter or spacebar\n        const keyPressedShouldTrigger = event.key === 'Enter' || event.key === ' ';\n        // not triggering popover on keypress unless the trigger is 'click'\n        const anchorHasClickTrigger = this.trigger === 'click';\n\n        if (triggerFromButton || !keyPressedShouldTrigger || !anchorHasClickTrigger ) {\n            return;\n        }\n        this.togglePopover();\n    }\n\n    @HostListener('touchstart', ['$event'])\n    @HostListener('mousedown', ['$event'])\n    _showOrHideOnMouseOver($event: MouseEvent): void {\n        if (this.trigger !== 'mousedown') {\n            return;\n        }\n        this._attachedPopover._offsetPos[0] = this._attachedPopover.horizontalAlign === 'mouse' ? $event.offsetX : 0;\n        this._attachedPopover._offsetPos[1] = this._attachedPopover.verticalAlign === 'mouse' ? $event.offsetY : 0;\n        this.togglePopover();\n    }\n\n    @HostListener('contextmenu', ['$event'])\n    _showOrHideRightClick($event: MouseEvent): boolean {\n        if (this.trigger !== 'rightclick') {\n            return true;\n        } else {\n            this._attachedPopover._offsetPos[0] = this._attachedPopover.horizontalAlign === 'mouse' ? $event.offsetX : 0;\n            this._attachedPopover._offsetPos[1] = this._attachedPopover.verticalAlign === 'mouse' ? $event.offsetY : 0;\n            this.togglePopover();\n            return false;\n        }\n    }\n\n    @HostListener('mouseenter', ['$event'])\n    _showOnHover($event: MouseEvent): void {\n        if (this.trigger !== 'hover') {\n            return;\n        }\n\n        this._attachedPopover._offsetPos[0] = this._attachedPopover.horizontalAlign === 'mouse' ? $event.offsetX : 0;\n        this._attachedPopover._offsetPos[1] = this._attachedPopover.verticalAlign === 'mouse' ? $event.offsetY : 0;\n        this.hoverInterval = window.setTimeout(() => {\n            // Hover triggers on hcMenu sub-menus should only ever open on mouseenter\n            // Toggle would cause the menu to close unexpectedly\n            if ( this._hasSubmenu ) {\n                this.openPopover();\n            } else {\n                this.togglePopover();\n            }\n        }, this.popoverDelay);\n    }\n\n    @HostListener('touchend')\n    @HostListener('touchcancel')\n    @HostListener('mouseleave')\n    _hideOnLeave(): void {\n        if (this.trigger !== 'hover') {\n            return;\n        }\n        // For hcMenu sub-menus, closing on mouseleave would cause the sub-menu\n        // to close when you leave the anchor and try to move your mouse to the sub-menu\n        if ( !this._hasSubmenu ) {\n            this.closePopover();\n        }\n    }\n\n    /** Handle keyboard navigation of a hcMenu using the arrow or tab keys */\n    _keyEvent(event: KeyboardEvent): void {\n        if (this.attachedPopover.isOpen() && this.attachedPopover._menuItems.length > 0 && !this.attachedPopover._subMenuOpen) {\n            if (event.key === 'ArrowUp' || (event.key === 'Tab' && event.shiftKey)) {\n                event.stopPropagation();\n                event.preventDefault();\n                this.attachedPopover._keyFocus(false);\n            } else if (event.key === 'ArrowDown' || (event.key === 'Tab' && !event.shiftKey)) {\n                event.stopPropagation();\n                event.preventDefault();\n                this.attachedPopover._keyFocus(true);\n            } else if (this.attachedPopover.parent && this.attachedPopover.parent.isOpen() && event.key === 'ArrowLeft') {\n                event.stopPropagation();\n                event.preventDefault();\n                this.closePopover();\n            }\n        }\n        if (this._hasSubmenu && this._elementRef.nativeElement === document.activeElement && event.key === 'ArrowRight') {\n            event.stopPropagation();\n            event.preventDefault();\n            this.openPopover();\n            this.attachedPopover._keyFocus(true);\n        }\n    }\n\n    /** Gets whether the popover is presently open. */\n    isPopoverOpen(): boolean {\n        return this._anchoring.isPopoverOpen();\n    }\n\n    /** Toggles the popover between the open and closed states. */\n    togglePopover(): void {\n        this._anchoring.togglePopover();\n    }\n\n    /** Opens the popover. */\n    openPopover(options: HcPopoverOpenOptions = {}): void {\n        this._anchoring.openPopover(options);\n    }\n\n    /** Closes the popover. */\n    closePopover(value?: unknown, neighborSubMenusAreOpen = false): void {\n        clearTimeout(this.hoverInterval);\n        this._anchoring.closePopover(value, neighborSubMenusAreOpen);\n    }\n\n    /** Realign the popover to the anchor. */\n    realignPopover(): void {\n        this._anchoring.realignPopoverToAnchor();\n    }\n\n    /** Get a reference to the anchor element. */\n    getElement(): ElementRef {\n        return this._elementRef;\n    }\n\n    /** Throws an error if the popover instance is not provided. */\n    private _validateAttachedPopover(popover: HcPopComponent): void {\n        if (!popover || !(popover instanceof HcPopComponent)) {\n            throw getInvalidPopoverError();\n        }\n    }\n\n    /** Throws an error if the trigger is not a valid HcPopoverTrigger. */\n    private _validateTrigger(trig: HcPopoverTrigger): void {\n        if (VALID_TRIGGER.indexOf(trig) === -1) {\n            throw getInvalidTriggerError(trig);\n        }\n    }\n\n    /** Dispatch a notification to the notification service, if possible. */\n    private _dispatchConfigNotification(notification: PopoverNotification) {\n        if (this._notifications) {\n            this._notifications.dispatch(notification);\n        }\n    }\n\n    private _setupKeyboardEvents() {\n        const notifier: HcPopKeyboardNotifier = {\n            isOpen: false,\n            nativeElement: this._elementRef.nativeElement,\n            hasSubmenu: () => this._hasSubmenu,\n            onKeyDown: event => this._keyEvent(event)\n        };\n        this.popoverClosed.asObservable().subscribe(() => (notifier.isOpen = false));\n        this.popoverOpened.asObservable().subscribe(() => (notifier.isOpen = true));\n        this._accessibility.registerNotifier(notifier);\n    }\n}\n","import {Directive, HostBinding, ContentChildren, AfterContentInit, OnDestroy} from '@angular/core';\nimport type {QueryList} from '@angular/core';\nimport {HcPopoverAnchorDirective} from './popover-anchor.directive';\nimport {Subject, Subscription} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {MenuItemDirective} from './menu-item.directive';\n\n/** The `hcMenu` directive provides a standard way of displaying a series of selectable elements in a popover. */\n@Directive({\n    selector: '[hcMenu]',\n    standalone: false\n})\nexport class MenuDirective implements AfterContentInit, OnDestroy {\n    @HostBinding('class.hc-menu-panel')\n    _hostClass = true;\n\n    @ContentChildren(HcPopoverAnchorDirective)\n    _subMenus: QueryList<HcPopoverAnchorDirective>;\n\n    @ContentChildren(MenuItemDirective)\n    _menuItems: QueryList<MenuItemDirective>;\n\n    private unsubscribe$ = new Subject<void>();\n\n    ngAfterContentInit(): void {\n        this.updateSubMenus();\n\n        // Update submenus if they are added dynamically or after check\n        this._menuItems.changes.pipe(takeUntil(this.unsubscribe$)).subscribe(() => this.updateSubMenus());\n    }\n\n    /** Rechecks the content for instances of `HcPopComponent` and inits them as submenus */\n    updateSubMenus(): void {\n        this._subMenus.forEach((anchor: HcPopoverAnchorDirective) => {\n            anchor._hasSubmenu = true;\n            // Force the trigger on any menu item with a submenu to a hover trigger\n            anchor.trigger = \"hover\";\n        });\n\n        // Subscribe to submenu mouseenter events so we can close any other submenus currently open\n        this._menuItems.forEach((item: MenuItemDirective) => {\n            item._itemEnter.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n                this._subMenus.forEach((sub: HcPopoverAnchorDirective) => {\n                    if (sub._elementRef.nativeElement !== item.ref.nativeElement && sub.attachedPopover.isOpen()) {\n                        sub.attachedPopover._parentCloseBlock = true;\n                        sub.attachedPopover._restoreFocusOverride = false;\n                        sub.closePopover({}, true);\n                        sub.attachedPopover._restoreFocusOverride = true;\n                        const closeSub: Subscription = sub.attachedPopover.afterClose.subscribe(() => {\n                            sub.attachedPopover._parentCloseBlock = false;\n                            closeSub.unsubscribe();\n                        });\n                    }\n                });\n            });\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.unsubscribe$.next();\n        this.unsubscribe$.complete();\n    }\n}\n","import {Directive, HostBinding} from '@angular/core';\n\n/** Use `hcMenuIcon` to prefix an icon to the beginning of a button inside of a menu. */\n@Directive({\n    selector: '[hcMenuIcon]',\n    standalone: false\n})\nexport class MenuIconDirective {\n    @HostBinding('class.hc-menu-icon')\n    _hostClass = true;\n}\n","import {Directive, HostBinding} from '@angular/core';\n\n/** Use `hcMenuText` for main button text inside of a menu. */\n@Directive({\n    selector: '[hcMenuText]',\n    standalone: false\n})\nexport class MenuTextDirective {\n    @HostBinding('class.hc-menu-text')\n    _hostClass = true;\n}\n","import {Directive, HostBinding} from '@angular/core';\n\n/** Use `hcMenuSubText` for right-aligned subtext of a button inside of a menu. Often used for keyboard shortcuts. */\n@Directive({\n    selector: '[hcMenuSubText]',\n    standalone: false\n})\nexport class MenuSubTextDirective {\n    @HostBinding('class.hc-menu-sub-text')\n    _hostClass = true;\n}\n","import {Directive, HostBinding} from '@angular/core';\n\n/** Use `hcDivider` for a horizontal divider in a menu. */\n@Directive({\n    selector: '[hcDivider]',\n    standalone: false\n})\nexport class DividerDirective {\n    @HostBinding('class.hc-divider')\n    _hostClass = true;\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {BidiModule} from '@angular/cdk/bidi';\n\nimport {HcPopComponent} from './popover.component';\nimport {HcTooltipComponent} from './tooltip/tooltip.component';\nimport {HcPopoverAnchorDirective} from './directives/popover-anchor.directive';\n\nimport {MenuItemDirective} from './directives/menu-item.directive';\nimport {MenuDirective} from './directives/menu.directive';\nimport {MenuIconDirective} from './directives/menu-icon.directive';\nimport {MenuTextDirective} from './directives/menu-text.directive';\nimport {MenuSubTextDirective} from './directives/menu-sub-text.directive';\nimport {DividerDirective} from './directives/divider.directive';\nimport {HcPopoverAccessibilityService} from './popover-accessibility.service';\n\n@NgModule({\n    imports: [CommonModule, OverlayModule, A11yModule, BidiModule],\n    declarations: [\n        HcPopComponent,\n        HcTooltipComponent,\n        HcPopoverAnchorDirective,\n        MenuDirective,\n        MenuItemDirective,\n        MenuIconDirective,\n        MenuTextDirective,\n        MenuSubTextDirective,\n        DividerDirective\n    ],\n    exports: [\n        HcPopComponent,\n        HcTooltipComponent,\n        HcPopoverAnchorDirective,\n        BidiModule,\n        MenuDirective,\n        MenuItemDirective,\n        MenuIconDirective,\n        MenuTextDirective,\n        MenuSubTextDirective,\n        DividerDirective\n    ],\n    providers: [HcPopoverAccessibilityService]\n})\nexport class PopModule {}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\n\nexport type ProgressDotsColor = 'light' | 'dark';\n\nconst supportedColors: ProgressDotsColor[] = ['light', 'dark'];\n\nexport function validateColorInput(inputStr: ProgressDotsColor): void {\n    if (supportedColors.indexOf(inputStr) < 0) {\n        throw Error('Unsupported progress dots color value: ' + inputStr);\n    }\n}\n\n@Component({\n    selector: 'hc-progress-dots',\n    templateUrl: 'progress-dots.component.html',\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class ProgressDotsComponent {\n    private _color: ProgressDotsColor = 'dark';\n\n    /** Use `light` on darker backgrounds and `dark` for lighter backgrounds. */\n    @Input()\n    get color(): ProgressDotsColor {\n        return this._color;\n    }\n\n    set color(colorVal: ProgressDotsColor) {\n        validateColorInput(colorVal);\n        this._color = colorVal;\n    }\n\n    /** If true, the loader will center itself within its container. */\n    @Input()\n    public isCentered = true;\n    /** If true, you'll get a teeny tiny little loader. */\n    @Input()\n    public isMini = false;\n}\n","<div class=\"hc-dots-container\" [ngClass]=\"{'center-dots': isCentered }\">\n    <div class=\"hc-HCDotsLoader\" [ngClass]=\"{'loader-light': color === 'light', 'loader-mini': isMini}\">\n        <div class=\"loader-animate\"></div>\n    </div>\n</div>\n","import {Component, Input, ViewEncapsulation} from '@angular/core';\n\nconst supportedColors = ['blue', 'green', 'purple', 'orange', 'red', 'gray', 'white'];\n\nexport function validateColorInput(inputStr: string): void {\n    if (supportedColors.indexOf(inputStr) < 0) {\n        throw Error('Unsupported progress bar color value: ' + inputStr);\n    }\n}\n\n@Component({\n    selector: 'hc-progress-bar',\n    templateUrl: 'progress-bar.component.html',\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class ProgressBarComponent {\n    private _color = 'blue';\n\n    /** Color of the bar: `blue`, `green`, `purple`, `orange`, `red`, `gray`, `white` */\n    @Input()\n    get color(): string {\n        return this._color;\n    }\n\n    set color(colorVal: string) {\n        validateColorInput(colorVal);\n        this._color = colorVal;\n    }\n\n    /** If true, switches to determinate mode. Must pass in progress (0-100%), instead of having the loader spin freely. */\n    @Input()\n    public isDeterminate = false;\n\n    /** If true, displays the current percentage of the progress bar and expands the height to accomidate. Only used if \"isDeterminate\" is set to true.*/\n    @Input()\n    public showValue = false;\n\n    /** Optional text string to be displayed beneath the progress bar */\n    @Input()\n    public label: string;\n\n    /** (0-100%) Only used if \"isDeterminate\" is set to true. */\n    @Input()\n    public set progress(progress: number) {\n        this.setProgress(progress);\n    }\n    public get progress(): number {\n        return this._progress;\n    }\n\n    private _progress = 0;\n\n    private setProgress(progress: number) {\n        progress = Math.min(100, progress);\n        progress = Math.max(0, progress);\n\n        this._progress = progress;\n    }\n}\n","<div class=\"hc-progress-bar-wrapper\">\n    <div class=\"hc-progress-bar-container bar-{{ color }}\">\n        <div\n            class=\"hc-progress-bar-fill bar-{{ color }}\"\n            [class.hc-progress-bar-indeterminate]=\"!isDeterminate\"\n            [style.width]=\"isDeterminate ? progress + '%' : '100%'\"\n        >\n            @if (showValue && isDeterminate) {\n            <span class=\"hc-progress-bar-value bar-{{ color }}\">{{ progress }}%</span>\n            }\n        </div>\n    </div>\n    @if (label) {\n    <div class=\"hc-progress-bar-label bar-{{ color }}\">{{ label }}</div>\n    }\n</div>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ProgressSpinnerComponent} from './progress-spinner.component';\nimport {ProgressDotsComponent} from './progress-dots.component';\nimport {ProgressBarComponent} from './progress-bar.component';\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [ProgressSpinnerComponent, ProgressDotsComponent, ProgressBarComponent],\n    declarations: [ProgressSpinnerComponent, ProgressDotsComponent, ProgressBarComponent]\n})\nexport class ProgressIndicatorsModule {}\n","import {Observable} from 'rxjs';\n\nimport { HttpClient } from '@angular/common/http';\nimport {Inject, Injectable} from '@angular/core';\nimport {IAppSwitcherConfig, IAppSwitcherService, IDiscoveryRequest, APP_SWITCHER_CONFIG} from './app-switcher-interfaces';\n\n/**\n * An app switcher service designed to work with the Health Catalyst DOS platform's DiscoveryService\n */\n@Injectable()\nexport class AppSwitcherService implements IAppSwitcherService {\n    /** Optional URL for a separate page the app switcher can link to with a complete list of all available applications */\n    readonly allApplicationsUri: string;\n\n    private readonly discoveryServiceUri: string;\n\n    constructor(private http: HttpClient, @Inject(APP_SWITCHER_CONFIG) private config: IAppSwitcherConfig) {\n        if (!config || !config.discoveryServiceUri) {\n            throw new Error(\n                [\n                    'Failed to initialize AppSwitcherService: invalid APP_SWITCHER_CONFIG.',\n                    'You must provide a config object with a `discoveryServiceUri`.',\n                    `(value provided: ${config ? config.discoveryServiceUri : config})`\n                ].join(' ')\n            );\n        }\n\n        this.discoveryServiceUri = this.normalizeUri(this.config.discoveryServiceUri);\n        this.allApplicationsUri = `${this.discoveryServiceUri}/apps`;\n    }\n\n    getApplications(): Observable<IDiscoveryRequest> {\n        const url = `${this.discoveryServiceUri}/v1/Services?$filter=DiscoveryType eq 'Application' and IsHidden eq false&$top=12`;\n        return this.http.get<IDiscoveryRequest>(url, {withCredentials: true});\n    }\n\n    private normalizeUri(uri: string): string {\n        return uri.replace(/\\/(v\\d+\\/?)?$/, '');\n    }\n}\n","import {NgModule} from '@angular/core';\nimport {EllipsisPipe} from './ellipsis.pipe';\n\n@NgModule({\n    declarations: [EllipsisPipe],\n    exports: [EllipsisPipe]\n})\nexport class EllipsisPipeModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    'name': 'ifNullOrEmpty',\n    standalone: false\n})\nexport class NullOrEmptyStringPipe implements PipeTransform {\n\n    public transform(value: unknown, altText: string): string | unknown {\n        if (typeof(value) === 'string') {\n            value = value.trim();\n            return value ? value : altText;\n        }\n\n        if (value === undefined || value === null) {\n            return altText;\n        }\n\n        // if given value is not null or undefined, and is not a string, return as is\n        return value;\n    }\n}\n","import {NgModule} from '@angular/core';\nimport {NullOrEmptyStringPipe} from './null-or-empty-string.pipe';\n\n@NgModule({\n    declarations: [NullOrEmptyStringPipe],\n    exports: [NullOrEmptyStringPipe]\n})\nexport class NullOrEmptyStringPipeModule {}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n// Convert bytes into largest possible unit.\n// Credit to https://gist.github.com/JonCatmull/ecdf9441aaa37336d9ae2c7f9cb7289a\n@Pipe({\n    name: 'fileSize', pure: true,\n    standalone: false\n})\nexport class FileSizePipe implements PipeTransform {\n    private units: string[] = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];\n\n    public transform(bytes: number, precision = 2): string {\n        const originalInput = bytes;\n        if (typeof bytes === 'string') {\n            bytes = +bytes;\n        }\n        if (typeof bytes !== 'number' || isNaN(bytes) || !isFinite(bytes) || bytes < 0 || Math.floor(bytes) !== bytes) {\n            return `${originalInput}`;\n        }\n\n        if (\n            typeof precision !== 'number' ||\n            isNaN(precision) ||\n            !isFinite(precision) ||\n            precision < 0 ||\n            Math.floor(precision) !== precision\n        ) {\n            precision = 2;\n        }\n        if (precision > 100) {\n            precision = 100;\n        }\n\n        let unit = 0;\n\n        while (bytes >= 1024) {\n            bytes /= 1024;\n            unit++;\n\n            if (unit === 5) {\n                // PB, largest size for pipe\n                break;\n            }\n        }\n\n        let rounded = bytes.toFixed(precision);\n\n        // if the value after truncating is a whole number, don't display a decimal\n        if (Math.floor(+rounded) === +rounded) {\n            rounded = (+rounded).toString();\n        }\n\n        return rounded + ' ' + this.units[unit];\n    }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\nimport { FileSizePipe } from './file-size.pipe';\n\n@NgModule({\n    imports: [CommonModule],\n    declarations: [FileSizePipe],\n    exports: [FileSizePipe]\n})\nexport class FileSizePipeModule {}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n/** Creates an abbreviated number for display. 1,234,234 => 1.23M */\n@Pipe({\n    name: \"abbreviateNumber\",\n    standalone: false\n})\nexport class NumberAbbreviatorPipe implements PipeTransform {\n    public static powers = [\n        { key: \"Q\", value: Math.pow(10, 15) },\n        { key: \"T\", value: Math.pow(10, 12) },\n        { key: \"B\", value: Math.pow(10, 9) },\n        { key: \"M\", value: Math.pow(10, 6) },\n        { key: \"K\", value: 1000 }\n    ];\n\n    /**\n     * @param value the value to be abbreviated\n     * @param decimalPoints how many decimal points to round to\n     * @param threshold represents the number at which we should start abbreviating;\n     * if the threshold is 1 million, we'll leave number less than 1 million as is (aside from adding commas or decimal points)\n     */\n    public transform(value: number, decimalPoints = 2, threshold = 1000000): string {\n        if (value === null) { return value; }\n\n        // use defaults if given funky parameters\n        if (decimalPoints < 0 || !Number.isInteger(decimalPoints)) { decimalPoints = 2; }\n        if (threshold < 1000 || !Number.isInteger(threshold)) { threshold = 1000; }\n\n        const abs = Math.abs(value);\n        let key = \"\";\n        let roundedStringVal = \"\";\n        const isNegative = value < 0;\n\n        if (abs >= threshold) {\n            // Abbreviate, adding unit if greater than specified limit\n            for (const power of NumberAbbreviatorPipe.powers) {\n                let reduced = abs / power.value;\n                reduced = this.roundValue(reduced, decimalPoints);\n\n                if (reduced >= 1) {\n                    roundedStringVal = reduced.toString();\n                    key = power.key;\n                    break;\n                }\n            }\n        } else {\n            // Just round decimals and add commas if less than specified limit\n            roundedStringVal = this.roundValue(abs, decimalPoints).toLocaleString();\n        }\n\n        return (isNegative ? \"-\" : \"\") + roundedStringVal + key;\n    }\n\n    private roundValue(value: number, decimalPoints = 2): number {\n        const rounder = Math.pow(10, decimalPoints);\n        return Math.round(value * rounder) / rounder;\n    }\n}","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\nimport {NumberAbbreviatorPipe} from './number-abbreviator.pipe';\n\n@NgModule({\n    imports: [CommonModule],\n    declarations: [NumberAbbreviatorPipe],\n    exports: [NumberAbbreviatorPipe]\n})\nexport class NumberAbbreviatorPipeModule {}\n","import {PipeTransform, Pipe} from '@angular/core';\n\n@Pipe({\n    name: 'highlight',\n    pure: true,\n    standalone: false\n})\nexport class HighlightPipe implements PipeTransform {\n    transform(text: string, search?: string, preserveHTML = false): string {\n        if (search && text) {\n            // eslint-disable-next-line no-useless-escape\n            let pattern: string = this.escapeTags(search).replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n            pattern = pattern\n                .split(' ')\n                .filter(t => {\n                    return t.length > 0;\n                })\n                .join('|');\n            const regex = new RegExp(pattern, 'gi');\n\n            if ( preserveHTML ) {\n                const parser = new DOMParser();\n                const htmlDoc = parser.parseFromString(text, 'text/html');\n\n                this.searchChildren( htmlDoc.children[0].children[1], regex );\n                return this.reverseEscapeTags(htmlDoc.children[0].children[1].innerHTML);\n            } else {\n                return this.escapeTags(text).replace(regex, match => `<span class=\"hc-text-highlight\">${match}</span>`);\n            }\n        } else {\n            return preserveHTML ? text : this.escapeTags(text);\n        }\n    }\n\n    searchChildren( parent: ChildNode, regex: RegExp ): void {\n        if( parent.childNodes.length > 0 ){\n            parent.childNodes.forEach( child => this.searchChildren( child, regex ) );\n        } else {\n            if( parent.nodeValue ) {\n                parent.nodeValue = parent.nodeValue.replace(regex, match => `<span class=\"hc-text-highlight\">${match}</span>`);\n            }\n        }\n    }\n\n    escapeTags(input: string): string {\n        return (input || '').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n    }\n\n    reverseEscapeTags( input: string ): string {\n        return (input || '').replace(/&lt;/g, '<').replace(/&gt;/g, '>');\n    }\n}\n","import {NgModule} from '@angular/core';\nimport {HighlightPipe} from './highlight.pipe';\n\n@NgModule({\n    declarations: [HighlightPipe],\n    exports: [HighlightPipe]\n})\nexport class HighlightPipeModule {}\n","import {NgModule} from '@angular/core';\nimport {EllipsisPipeModule} from './ellipsis/ellipsis-pipe.module';\nimport {NullOrEmptyStringPipeModule} from './null-or-empty-string/null-or-empty-string-pipe.module';\nimport {FileSizePipeModule} from './file-size/file-size-pipe.module';\nimport {NumberAbbreviatorPipeModule} from './number-abbreviator/number-abbreviator-pipe.module';\nimport {HighlightPipeModule} from './highlight/highlight-pipe.module';\n\n@NgModule({\n    imports: [EllipsisPipeModule, NullOrEmptyStringPipeModule, FileSizePipeModule, NumberAbbreviatorPipeModule, HighlightPipeModule],\n    exports: [EllipsisPipeModule, NullOrEmptyStringPipeModule, FileSizePipeModule, NumberAbbreviatorPipeModule, HighlightPipeModule]\n})\nexport class PipesModule {}\n","import {Directive, HostBinding} from '@angular/core';\n\n/** `hcIconSm` - small size of hc-icon (14px) */\n@Directive({\n    selector: '[hcIconSm]',\n    standalone: false\n})\nexport class HcIconSmallDirective {\n    @HostBinding('class.hc-icon-sm')\n    _hostHcIconSmallClass = true;\n}\n","import {Directive, HostBinding} from '@angular/core';\n\n/** `hcIconMd` - medium size of hc-icon (20px) - default size */\n@Directive({\n    selector: '[hcIconMd]',\n    standalone: false\n})\nexport class HcIconMediumDirective {\n    @HostBinding('class.hc-icon-md')\n    _hostHcIconMediumClass = true;\n}\n","import {Directive, HostBinding} from '@angular/core';\n\n/** `hcIconLg` - large size of hc-icon (36px) */\n@Directive({\n    selector: '[hcIconLg]',\n    standalone: false\n})\nexport class HcIconLargeDirective {\n    @HostBinding('class.hc-icon-lg')\n    _hostHcIconLargeClass = true;\n}\n","import {NgModule} from '@angular/core';\nimport {IconComponent} from './icon.component';\nimport {HcIconSmallDirective} from './hc-icon-sm.directive';\nimport {HcIconMediumDirective} from './hc-icon-md.directive';\nimport {HcIconLargeDirective} from './hc-icon-lg.directive';\n\n@NgModule({\n    declarations: [IconComponent, HcIconSmallDirective, HcIconMediumDirective, HcIconLargeDirective],\n    exports: [IconComponent, HcIconSmallDirective, HcIconMediumDirective, HcIconLargeDirective]\n})\nexport class IconModule {}\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\n\nimport {AppSwitcherComponent} from './app-switcher.component';\nimport {PopModule} from '../pop/popover.module';\nimport {ProgressIndicatorsModule} from '../progress-indicators/progress-indicators.module';\nimport {AppSwitcherService} from './app-switcher.service';\nimport {WorkTrackerService} from '../shared/work-tracker.service';\nimport {PipesModule} from '../pipes/pipes.module';\nimport {IAppSwitcherConfig, APP_SWITCHER_CONFIG, APP_SWITCHER_SERVICE} from './app-switcher-interfaces';\nimport {AppSwitcherLinksComponent} from './app-switcher-application-link/app-switcher-links.component';\nimport {IconModule} from '../icon/icon.module';\n\n@NgModule({ declarations: [AppSwitcherComponent, AppSwitcherLinksComponent],\n    exports: [AppSwitcherComponent, AppSwitcherLinksComponent], imports: [CommonModule, PopModule, PipesModule, IconModule, ProgressIndicatorsModule], providers: [\n        {\n            provide: APP_SWITCHER_SERVICE,\n            useClass: AppSwitcherService\n        },\n        WorkTrackerService,\n        provideHttpClient(withInterceptorsFromDi())\n    ] })\nexport class AppSwitcherModule {\n    static forRoot(config: IAppSwitcherConfig): ModuleWithProviders<AppSwitcherModule> {\n        return {\n            ngModule: AppSwitcherModule,\n            providers: [\n                {\n                    provide: APP_SWITCHER_CONFIG,\n                    useValue: config\n                }\n            ]\n        };\n    }\n}\n","import {Component, Input, ViewEncapsulation, EventEmitter, Output} from '@angular/core';\nimport {parseBooleanAttribute} from '../util';\n\nexport type BannerType = 'success' | 'info' | 'warning' | 'alert';\nconst bannerTypes: BannerType[] = ['success', 'info', 'warning', 'alert'];\n\n/** Notification banners are used for general information about the state of the application or upcoming events. For instant\n * feedback responding to user actions, use a toaster message.*/\n@Component({\n    selector: 'hc-banner',\n    templateUrl: './hc-banner.html',\n    styleUrls: ['./hc-banner.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class HcBannerComponent {\n    private _type: BannerType = 'info';\n    private _clickDismiss = false;\n\n    /** If the banner can be dismissed, emits when the banner is clicked to close */\n    @Output()\n    bannerClose: EventEmitter<MouseEvent> = new EventEmitter();\n\n    /** Style of the notification banner; Defaults to info.\n     * Options are: `success`, `info`, `warning`, `alert`*/\n    @Input()\n    get type(): BannerType {\n        return this._type;\n    }\n\n    set type(typeVal: BannerType) {\n        if (!bannerTypes.includes(typeVal)) {\n            throw new Error('Unsupported banner type: ' + typeVal);\n        }\n        this._type = typeVal;\n    }\n\n    /** When set to true, a close icon is added to the right side and `bannerClose`\n     * emits on a click. Defaults to false.*/\n    @Input()\n    get clickDismiss(): boolean {\n        return this._clickDismiss;\n    }\n\n    set clickDismiss(dismissVal: boolean) {\n        this._clickDismiss = parseBooleanAttribute(dismissVal);\n    }\n\n    _bannerClick(event: MouseEvent): void {\n        if (this._clickDismiss) {\n            this.bannerClose.emit(event);\n        }\n    }\n}\n","<div class=\"hc-banner hc-banner-{{type}}\" [class.hc-banner-dismiss]=\"clickDismiss\" (click)=\"_bannerClick($event)\">\n    <ng-content></ng-content>\n    @if (clickDismiss) {\n    <span class=\"hc-banner-close\">\n        <div class=\"hc-banner-close-icon\"></div>\n    </span>\n    }\n</div>\n","import {Directive, HostBinding} from '@angular/core';\n\n/** Including `hcBannerStamp` wraps the enclosed text in a stamp to provide greater emphasis */\n@Directive({\n    selector: '[hcBannerStamp]',\n    standalone: false\n})\nexport class BannerStampDirective {\n    @HostBinding('class.hc-banner-stamp')\n    get _hostClass(): boolean {\n        return true;\n    }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {HcBannerComponent} from './hc-banner.component';\nimport {BannerStampDirective} from './hc-banner-stamp.directive';\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [HcBannerComponent, BannerStampDirective],\n    declarations: [HcBannerComponent, BannerStampDirective]\n})\nexport class BannerModule {}\n","import {Component, OnDestroy, OnInit, Input, ViewEncapsulation} from '@angular/core';\nimport {ActivatedRoute, Event, NavigationEnd, Params, PRIMARY_OUTLET, Router} from '@angular/router';\nimport { Subscription } from 'rxjs';\n\n/**\n * IBreadcrumb interface is used to store all required data for each breadcrumb element\n * @docs-private\n */\nexport interface IBreadcrumb {\n    label: string;\n    params?: Params;\n    url: string;\n}\n\n/*\n  This type is from @angular/router, but the import location varies by Angular version\n  Including here to allow Cashmere to work regardless of Angular version\n*/\nexport type QueryParamsHandling = 'merge' | 'preserve' | '';\n\n/** A navigational aid that allows users to keep track of their location within the current application  */\n@Component({\n    selector: 'hc-breadcrumbs',\n    templateUrl: './breadcrumbs.component.html',\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class BreadcrumbsComponent implements OnInit, OnDestroy {\n    public _breadcrumbs: IBreadcrumb[] = [];\n    public _routerSubscription: Subscription;\n    _backURL = '';\n    _backShow = 'none';\n    _locationLabel = '';\n    _queryParamsHandling: QueryParamsHandling = '';\n\n    /** Sets the handling of the query parameters for the breadcrumb. Choose from: `'preserve' | 'merge' | '' (default)` */\n    @Input()\n    get queryParamsHandling(): QueryParamsHandling {\n        return this._queryParamsHandling;\n    }\n\n    set queryParamsHandling(queryParamsHandling: QueryParamsHandling) {\n        this._queryParamsHandling = queryParamsHandling;\n    }\n\n    constructor(private activatedRoute: ActivatedRoute, private router: Router) {}\n\n    ngOnInit(): void {\n        // Add the first breadcrumb for the base page\n        const root: ActivatedRoute = this.activatedRoute.root;\n        this._breadcrumbs = this.getBreadcrumbs(root);\n\n        // subscribe to the NavigationEnd event\n        this._routerSubscription = this.router.events.subscribe((event: Event) => {\n            if (event instanceof NavigationEnd) {\n                this.setBreadcrumbs();\n            }\n        });\n\n        // set initial breadcrumb state\n        this.setBreadcrumbs();\n    }\n\n    private setBreadcrumbs() {\n        const root = this.activatedRoute.root;\n        this._breadcrumbs = this.getBreadcrumbs(root);\n        if (this._breadcrumbs.length > 1) {\n            this._backURL = this._breadcrumbs[this._breadcrumbs.length - 2].url;\n            this._backShow = 'inline';\n            this._locationLabel = '';\n        } else if (this._breadcrumbs.length === 1) {\n            this._backShow = 'none';\n            this._locationLabel = this._breadcrumbs[this._breadcrumbs.length - 1].label;\n        } else {\n            this._backShow = 'none';\n            this._locationLabel = '';\n        }\n    }\n\n    private getBreadcrumbs(route: ActivatedRoute, url = '', breadcrumbs: IBreadcrumb[] = []): IBreadcrumb[] {\n        const ROUTE_DATA_BREADCRUMB = 'breadcrumb';\n\n        // get the child routes\n        const children: ActivatedRoute[] = route.children;\n\n        // return if there are no more children\n        if (children.length === 0) {\n            return breadcrumbs;\n        }\n\n        // iterate over each children\n        for (const child of children) {\n            // verify primary route\n            if (child.outlet !== PRIMARY_OUTLET) {\n                continue;\n            }\n\n            // verify the custom data property \"breadcrumb\" is specified on the route\n            // eslint-disable-next-line no-prototype-builtins\n            if (!child.snapshot.data.hasOwnProperty(ROUTE_DATA_BREADCRUMB)) {\n                return this.getBreadcrumbs(child, url, breadcrumbs);\n            }\n\n            // get the route's URL segment\n            const routeURL: string = child.snapshot.url.map(segment => segment.path).join('/');\n\n            // append route URL to URL\n            url += `/${routeURL}`;\n\n            // add breadcrumb\n            const parent: ActivatedRoute | null = this.activatedRoute.parent;\n            let fullURL = '';\n            if (parent !== null) {\n                fullURL += '/' + parent.snapshot.url.map(segment => segment.path).join('/');\n            }\n            fullURL += `${url}`;\n            const breadcrumb: IBreadcrumb = {\n                label: child.snapshot.data[ROUTE_DATA_BREADCRUMB],\n                params: child.snapshot.params,\n                url: fullURL\n            };\n\n            breadcrumbs.push(breadcrumb);\n\n            // recursive\n            return this.getBreadcrumbs(child, url, breadcrumbs);\n        }\n\n        // we should never get here, but just in case\n        return breadcrumbs;\n    }\n\n    ngOnDestroy(): void {\n        this._routerSubscription.unsubscribe();\n    }\n}\n","<ol class=\"breadcrumb\">\n    @for (breadcrumb of _breadcrumbs; track breadcrumb; let last = $last) {\n    <li class=\"breadcrumb-item\">\n        @if (!last) {\n        <a [routerLink]=\"[breadcrumb.url]\" queryParamsHandling=\"{{ queryParamsHandling }}\" [innerText]=\"breadcrumb.label\"></a>\n        } @if (last) {\n        <span [innerText]=\"breadcrumb.label\"></span>\n        }\n        <i class=\"fa-solid fa-chevron-right breadcrumb-arrow\"></i>\n    </li>\n    }\n</ol>\n<div class=\"breadcrumb-responsive-container\">\n    <a [style.display]=\"_backShow\" class=\"breadcrumb-back-button\" [routerLink]=\"_backURL\" queryParamsHandling=\"{{ queryParamsHandling }}\">\n        <i class=\"fa-solid fa-chevron-left\"></i>\n        <span>&nbsp;Back</span>\n    </a>\n    <span [innerText]=\"_locationLabel\"></span>\n</div>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {BreadcrumbsComponent} from './breadcrumbs.component';\nimport {RouterModule} from '@angular/router';\nimport {IconModule} from '../icon/icon.module';\n\n@NgModule({\n    imports: [CommonModule, RouterModule, IconModule],\n    exports: [BreadcrumbsComponent],\n    declarations: [BreadcrumbsComponent]\n})\nexport class BreadcrumbsModule {}\n","export const supportedColors = [\n    'blue',\n    'green',\n    'purple',\n    'red',\n    'orange',\n    'ruby-red',\n    'deep-red',\n    'red-orange',\n    'magenta',\n    'pink',\n    'light-pink',\n    'azure',\n    'teal',\n    'ai-green',\n    'dark-green',\n    'light-green',\n    'brown',\n    'purple-gray',\n    'yellow',\n    'yellow-orange',\n    'tan',\n    'white',\n    'black',\n    'offblack',\n    'shadow',\n    'dark-blue',\n    'charcoal-blue',\n    'slate-gray-100',\n    'slate-gray-200',\n    'slate-gray-300',\n    'slate-gray-400',\n    'slate-gray-500',\n    'slate-gray-600',\n    'gray-100',\n    'gray-200',\n    'gray-300',\n    'gray-400',\n    'gray-500',\n    'gray-600'\n];\n","import {ChangeDetectionStrategy, Component, ElementRef, HostBinding, Input, Renderer2, ViewEncapsulation} from '@angular/core';\nimport {parseBooleanAttribute, validateInput, hcClassify} from '../util';\nimport {supportedColors} from '../utils/supported-colors';\n\nexport const supportedStyles = ['primary', 'primary-alt', 'destructive', 'neutral', 'secondary', 'minimal', 'link', 'link-inline', 'pagination'];\nexport const supportedSizes = ['sm', 'md', 'lg'];\nconst buttonAttributes = ['hc-icon-button', 'hc-button'];\n\n/** Cashmere styled button */\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: 'button[hc-button], button[hc-icon-button]',\n    template: '<ng-content></ng-content>',\n    styleUrls: ['./button.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class ButtonComponent {\n    private _disabled = false;\n    private _style: string;\n    private _size: string;\n\n    /** Sets style of button. Choose from: `'primary' | 'primary-alt' | 'destructive' |\n     * 'neutral' | 'secondary' | 'minimal' | link' | 'link-inline'`. If needed, colors from\n     * the primary, secondary, or neutral palette may be used as well (e.g. 'pink', 'red-orange', etc) */\n    @Input()\n    get buttonStyle(): string {\n        return this._style;\n    }\n\n    set buttonStyle(btnStyle: string) {\n        validateInput(btnStyle, supportedColors.concat(supportedStyles), 'buttonStyle', 'ButtonComponent');\n        if ( supportedStyles.indexOf(btnStyle) < 0 ) {\n            btnStyle = \"button-\" + btnStyle;\n        }\n        this.setHostClass(this._style, btnStyle);\n        this._style = btnStyle;\n    }\n\n    /** Sets size of button. Choose from: `'sm' | 'md' | 'lg' |`. *Defaults to `md`.* */\n    @Input()\n    get size(): string {\n        return this._size;\n    }\n\n    set size(size: string) {\n        validateInput(size, supportedSizes, 'size', 'ButtonComponent');\n        this.setHostClass(this._size, size);\n        this._size = size;\n    }\n\n    /** Whether the control is disabled. */\n    @Input()\n    get disabled(): boolean {\n        return this._disabled;\n    }\n\n    set disabled(isDisabled: boolean) {\n        this._disabled = parseBooleanAttribute(isDisabled);\n    }\n\n    @HostBinding('attr.disabled')\n    get _disabledAttr(): string | null {\n        return this.disabled ? \"disabled\" : null;\n    }\n\n    constructor(public elementRef: ElementRef, private renderer: Renderer2) {\n        this.buttonStyle = 'primary';\n        this.size = 'md';\n\n        for (const attr of buttonAttributes) {\n            if (elementRef.nativeElement.hasAttribute(attr)) {\n                renderer.addClass(elementRef.nativeElement, attr);\n            }\n        }\n    }\n\n    /** Used to give focus to the button */\n    focus(): void {\n        this.elementRef.nativeElement.focus();\n    }\n\n    private setHostClass(previous: string, current) {\n        if (previous !== current) {\n            if (previous) {\n                this.renderer.removeClass(this.elementRef.nativeElement, hcClassify(previous));\n            }\n            this.renderer.addClass(this.elementRef.nativeElement, hcClassify(current));\n        }\n    }\n\n\n}\n","/* eslint-disable @angular-eslint/component-selector */\n// https://github.com/mgechev/codelyzer/issues/178#issuecomment-265154480\n\nimport {ChangeDetectionStrategy, Component, ElementRef, HostBinding, Renderer2, ViewEncapsulation} from '@angular/core';\nimport {ButtonComponent} from './button.component';\n\n/* Cashmere button styled anchor */\n@Component({\n    selector: 'a[hc-button]',\n    template: '<ng-content></ng-content>',\n    styleUrls: ['./button.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class AnchorComponent extends ButtonComponent {\n    @HostBinding('attr.aria-disabled')\n    get _hostAriaDisabled(): string {\n        return this.disabled ? this.disabled.toString() : 'false';\n    }\n\n    @HostBinding('attr.tabindex')\n    get _hostTabIndex(): number {\n        return this.disabled ? -1 : 0;\n    }\n\n    @HostBinding('style.pointer-events')\n    get _handleClickEvents(): string {\n        return this.disabled ? 'none' : 'auto';\n    }\n\n    constructor(elementRef: ElementRef, renderer: Renderer2) {\n        super(elementRef, renderer);\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    Input,\n    Output,\n    ViewEncapsulation,\n    ViewChild,\n    ContentChildren\n} from '@angular/core';\nimport type {QueryList} from '@angular/core';\nimport {parseBooleanAttribute, validateInput} from '../../util';\nimport {ButtonComponent, supportedSizes} from '../button.component';\nimport {HcPopComponent} from '../../pop/popover.component';\nimport {MenuItemDirective} from '../../pop/directives/menu-item.directive';\nimport { supportedColors } from '../../utils/supported-colors';\n\nconst supportedStyles = ['primary', 'primary-alt', 'destructive', 'neutral', 'secondary', 'minimal', 'link', 'link-inline'];\n\n/** SplitButton click event */\nexport class SplitButtonClickEvent {\n    constructor(public source: SplitButtonComponent) {}\n}\n\n/** Split button provides a primary action button along with a secondary menu of actions */\n@Component({\n    selector: 'hc-split-button',\n    templateUrl: './split-button.component.html',\n    styleUrls: ['../button.component.scss', './split-button.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class SplitButtonComponent {\n    private _tabIndex: number;\n    private _disabled = false;\n    private _style = 'primary';\n    private _size = 'md';\n\n    @ViewChild('splitBtnToggle')\n    _splitBtnToggle: ButtonComponent;\n\n    @ViewChild('splitMenu')\n    _splitMenu: HcPopComponent;\n\n    @ContentChildren(MenuItemDirective, {descendants: true}) _menuItems: QueryList<MenuItemDirective>;\n\n    /** Primary button's click event */\n    @Output()\n    click = new EventEmitter<SplitButtonClickEvent>();\n\n    /** Additional information shown as tooltip */\n    @Input()\n    title: string;\n\n    /** Positioning for the menu. Possible values: 'start', 'end', 'center' */\n    @Input()\n    menuPosition = 'end';\n\n    /** True if clicking anywhere in the menu should automatically close it. */\n    @Input()\n    autoCloseMenuOnClick = true;\n\n    /** Type of button. Possible values: 'submit', 'reset', 'button' */\n    @Input()\n    type = 'button';\n\n    /** Used as a reference in JavaScript, or to reference form data after a form is submitted */\n    @Input()\n    name: string;\n\n    /** Value of primary button when submitted within a form */\n    @Input()\n    value: string;\n\n    /** Button tabindex */\n    @Input()\n    get tabIndex(): number {\n        return this.disabled ? -1 : this._tabIndex;\n    }\n\n    set tabIndex(value: number) {\n        this._tabIndex = value == null ? 0 : value;\n    }\n\n    /** Sets style of button. Choose from: `'primary' | 'primary-alt' | 'destructive' |\n     * 'neutral' | 'secondary' | 'minimal'`. If needed, colors from\n     * the primary or secondary palette may be used as well (e.g. 'pink', 'red-orange', etc) */\n    @Input()\n    get buttonStyle(): string {\n        return this._style;\n    }\n\n    set buttonStyle(btnStyle: string) {\n        validateInput(btnStyle, supportedColors.concat(supportedStyles), 'buttonStyle', 'SplitButtonComponent');\n        if ( supportedStyles.indexOf(btnStyle) < 0 ) {\n            btnStyle = \"button-\" + btnStyle;\n        }\n        this._style = btnStyle;\n    }\n\n    /** Sets size of button. Choose from: `'sm' | 'md' | 'lg'` */\n    @Input()\n    get size(): string {\n        return this._size;\n    }\n\n    set size(size: string) {\n        validateInput(size, supportedSizes, 'size', 'SplitButtonComponent');\n        this._size = size;\n    }\n\n    /** Whether the control is disabled. */\n    @Input()\n    get disabled(): boolean {\n        return this._disabled;\n    }\n\n    set disabled(isDisabled: boolean) {\n        this._disabled = parseBooleanAttribute(isDisabled);\n    }\n\n    @HostBinding('class.hc-split-button')\n    get _hostClass(): boolean {\n        return true;\n    }\n\n    constructor(private elementRef: ElementRef) {}\n\n    _stopClick($event: MouseEvent): void {\n        $event.stopPropagation();\n    }\n\n    /** Used to give focus to the button */\n    focus(): void {\n        this.elementRef.nativeElement.focus();\n    }\n\n    _mainBtnClick(event: MouseEvent): void {\n        event.stopPropagation();\n\n        if (!this.disabled) {\n            this.click.emit(new SplitButtonClickEvent(this));\n        }\n    }\n\n    /** Manually close the menu */\n    closeMenu(): void {\n        this._splitMenu.close();\n    }\n\n    /** Manually open the menu */\n    openMenu(): void {\n        // pass menuItems on to the HcPop instance so that keyboard accessibility works\n        if (this._splitMenu) { this._splitMenu._menuItems = this._menuItems; }\n\n        this._splitMenu.open();\n    }\n}\n","<span class=\"hc-split-button-wrap\" [hcPop]=\"splitMenu\" trigger=\"none\">\n    <button\n        hc-button\n        class=\"hc-split-button-main\"\n        [attr.type]=\"type\"\n        [buttonStyle]=\"buttonStyle\"\n        [size]=\"size\"\n        [attr.title]=\"title\"\n        [attr.name]=\"name\"\n        [attr.value]=\"value\"\n        [tabIndex]=\"tabIndex\"\n        [disabled]=\"disabled\"\n        (click)=\"_mainBtnClick($event)\"\n    >\n        <ng-content></ng-content>\n    </button>\n    <button\n        #splitBtnToggle\n        hc-button\n        class=\"hc-split-button-toggle\"\n        type=\"button\"\n        [buttonStyle]=\"buttonStyle\"\n        [size]=\"size\"\n        (click)=\"_stopClick($event); openMenu()\"\n        [disabled]=\"disabled\"\n        trigger=\"none\"\n    ></button>\n</span>\n\n<hc-pop #splitMenu [xAlign]=\"menuPosition\" [autoCloseOnContentClick]=\"autoCloseMenuOnClick\" [showArrow]=\"false\">\n    <div hcMenu>\n        <ng-content select=\"[hcButtonItem], [hcMenuItem]\"></ng-content>\n    </div>\n</hc-pop>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ButtonComponent} from './button.component';\nimport {AnchorComponent} from './anchor.component';\nimport {SplitButtonComponent} from './split-button/split-button.component';\nimport {PopModule} from '../pop/popover.module';\n\n@NgModule({\n    imports: [CommonModule, PopModule],\n    declarations: [AnchorComponent, ButtonComponent, SplitButtonComponent],\n    exports: [AnchorComponent, ButtonComponent, SplitButtonComponent, PopModule]\n})\nexport class ButtonModule {}\n","import { Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { parseBooleanAttribute } from '../util';\n\n\n/** Button Toggle components are the individually selectable buttons used within the Button Toggle Group component. */\n\n@Component({\n    selector: 'hc-button-toggle',\n    template: '<ng-content></ng-content>',\n    styleUrls: ['./button-toggle.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\n\nexport class ButtonToggleComponent {\n    _disabled = false;\n    _parentDisabled = false;\n    _selected = false;\n\n    @HostBinding('class') _hostClass = 'hc-button-toggle';\n\n    /** Event emitted when this specific toggle is changed. */\n    @Output()\n    _toggleClick: EventEmitter<ButtonToggleComponent> = new EventEmitter();\n\n    /** The value assigned to this particular toggle. Used by the group to get/set the value of the selected item(s). */\n    @Input()\n    value: string;\n\n    /** Whether the toggle is currently selected. Updates the value of the group when set. *Defaults to `false`.* */\n    @Input()\n    get selected(): boolean {\n        return this._selected;\n    }\n    set selected(isSelected: boolean) {\n        this._selected = parseBooleanAttribute(isSelected);\n        this._toggleClick.emit(this);\n    }\n\n    /** Whether the individual toggle is disabled */\n    @Input()\n    get disabled(): boolean {\n        return this._disabled;\n    }\n    set disabled(isDisabled: boolean) {\n        this._disabled = parseBooleanAttribute(isDisabled);\n        if ( this._disabled && !this._hostClass.includes( 'hc-toggle-disabled' )) {\n            this._hostClass += ' hc-toggle-disabled';\n        }\n        if ( !this._disabled && this._hostClass.includes( 'hc-toggle-disabled' )) {\n            this._hostClass = this._hostClass.replace( ' hc-toggle-disabled', '' );\n        }\n    }\n\n    @HostListener('click')\n    _onClick(): void {\n        if ( !this.disabled && !this._parentDisabled ) {\n            this.selected = !this.selected;\n        }\n    }\n}\n","import {ButtonToggleComponent} from './button-toggle.component';\n\nexport class ButtonToggleChangeEvent {\n    /**\n     * @param source the button toggle that fired the event\n     * @param buttonToggles the collection of button toggles in the group\n     * @param selectedValues the values of all 'selected' button toggles\n     */\n    constructor(\n        public source: ButtonToggleComponent | null,\n        public buttonToggles: ButtonToggleComponent[] | null,\n        public selectedValues: string[] | null\n    ) {}\n}\n","\n/** Wrapper component that textual form controls extend to work with hc-form-field */\nexport abstract class HcFormControlComponent {\n    /** Whether the control should be displaying an associated error */\n    _errorState = false;\n\n    /** An error message to be shown in the UI when there is an error state present */\n    _errorMessage = '';\n\n    /** An object that represents the Angular validation errors that are present on the form */\n    _errors: {\n        [key: string]: unknown;\n    } = {};\n\n    /** Whether the control is disabled */\n    _isDisabled = false;\n\n    /** ID identifier of the the control */\n    _componentId: string;\n\n    /** Whether the control is required */\n    _isRequired = false;\n\n    /** Whether the control should apply tight styling */\n    _tight = false;\n}\n","import {\n    AfterContentInit,\n    Component,\n    ContentChildren,\n    EventEmitter,\n    forwardRef,\n    HostBinding,\n    Input,\n    OnDestroy,\n    Output,\n    ViewEncapsulation } from '@angular/core';\nimport type { QueryList } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ButtonToggleChangeEvent } from './button-toggle-change-event';\nimport { parseBooleanAttribute, validateInput } from '../util';\nimport { ButtonToggleComponent } from './button-toggle.component';\nimport { supportedSizes, supportedStyles } from '../button/button.component';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { HcFormControlComponent } from '../form-field/hc-form-control.component';\nimport { supportedColors } from '../utils/supported-colors';\n\n\n/** `hc-button-toggle-group` components are on/off toggles with the appearance of an `hc-button`.\n * These toggle groups may be configured to behave as single-select (like radio buttons), or multi-select (like checkboxes). */\n@Component({\n    selector: 'hc-button-toggle-group',\n    template: '<ng-content></ng-content>',\n    styleUrls: ['./button-toggle.component.scss'],\n    providers: [{\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => ButtonToggleGroupComponent),\n            multi: true\n        }],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class ButtonToggleGroupComponent extends HcFormControlComponent implements AfterContentInit, OnDestroy, ControlValueAccessor {\n    private _disabled = false;\n    private _style = 'secondary';\n    private _size = 'md';\n    private _valueRequired = false;\n    private _multiple = false;\n    private unsubscribe$ = new Subject<void>();\n    private _value;\n\n    @HostBinding('class.hc-button-toggle-group') _hostClass = true;\n\n    @ContentChildren(ButtonToggleComponent)\n    _buttons: QueryList<ButtonToggleComponent>;\n\n    /** Event fired whenever a change is made to any button toggle in the group. */\n    @Output() selectionChangedEvent: EventEmitter<ButtonToggleChangeEvent> = new EventEmitter<ButtonToggleChangeEvent>();\n\n    /** Sets style of toggle. Choose from: `'primary' | 'primary-alt' | 'destructive' | 'neutral' | 'secondary'`.\n    * If needed, colors from the primary or secondary palette may be used as well (e.g. 'pink', 'red-orange', etc).\n    * *Defaults to `secondary`.* */\n    @Input()\n    get buttonStyle(): string {\n        return this._style;\n    }\n    set buttonStyle(val: string) {\n        validateInput(val, supportedColors.concat(supportedStyles), 'buttonStyle', 'ButtonToggleComponent');\n        if (supportedStyles.indexOf(val) < 0) {\n            val = \"button-\" + val;\n        }\n        this._style = val;\n        this._updateButtonStyle();\n    }\n\n    @Input()\n    get value(): unknown {\n        return this._value;\n    }\n\n    set value(newValue: unknown) {\n        if ( newValue !== undefined && this._value !== newValue) {\n            this._value = newValue;\n            this.onChange(newValue);\n        }\n    }\n\n    /** Sets size of toggle. Choose from: `'sm' | 'md' | 'lg' |`. *Defaults to `md`.* */\n    @Input()\n    get size(): string {\n        return this._size;\n    }\n\n    set size(size: string) {\n        validateInput(size, supportedSizes, 'size', 'ButtonToggleGroupComponent');\n        this._size = size;\n        this._updateButtonStyle();\n    }\n\n    /** Whether multiple button toggles can be selected. *Defaults to `false`.* */\n    @Input()\n    get multiple(): boolean {\n        return this._multiple;\n    }\n    set multiple(val: boolean) {\n        this._multiple = parseBooleanAttribute(val);\n    }\n\n    /** Whether at least one button must remain selected. */\n    @Input()\n    get valueRequired(): boolean {\n        return this._valueRequired;\n    }\n    set valueRequired(required: boolean) {\n        this._valueRequired = parseBooleanAttribute(required);\n    }\n\n    /** Whether the entire toggle group is disabled. */\n    @Input()\n    get disabled(): boolean {\n        return this._disabled;\n    }\n\n    set disabled(isDisabled: boolean) {\n        this._disabled = parseBooleanAttribute(isDisabled);\n        if (this._buttons) {\n            this._buttons.forEach((button: ButtonToggleComponent) => button._parentDisabled = this._disabled);\n        }\n        this._updateButtonStyle();\n    }\n\n    ngAfterContentInit(): void {\n        this._connectToButtonChildren();\n        setTimeout(() => {\n            this._setInitalModelAsNeeded();\n            this._updateButtonStateFromModel();\n            this._emitEventForInitiallySelected();\n            this._updateButtonStyle();\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.unsubscribe$.next();\n        this.unsubscribe$.complete();\n    }\n\n    writeValue(value: unknown): void {\n        // Prevent the form control from trying to write a value when removing the control\n        if ( this.onChange.name !== 'noop' ) {\n            this._value = value;\n            this._updateButtonStateFromModel();\n        }\n    }\n\n    public onChange: (value: unknown) => void = () => undefined;\n    public onTouch: () => unknown = () => undefined;\n    public registerOnChange(fn: (value: unknown) => void): void {\n        this.onChange = fn;\n    }\n    public registerOnTouched(fn: () => unknown): void {\n        this.onTouch = fn;\n    }\n\n    setDisabledState(state: boolean): void {\n        this.disabled = state;\n    }\n\n    _touch(): void {\n        if (this.onTouch) {\n            this.onTouch();\n        }\n    }\n\n    _updateButtonStyle(): void {\n        if (this._buttons) {\n            this._buttons.forEach((button: ButtonToggleComponent) => {\n                const checkedClass = button.selected ? 'hc-toggle-checked' : '';\n                const disabledClass = button.disabled || this.disabled ? 'hc-toggle-disabled' : '';\n                const classStr = 'hc-button-toggle hc-' + this._style + ' ' + 'hc-' + this._size + ' ' + checkedClass + ' ' + disabledClass;\n                button._hostClass = classStr.trim();\n            });\n        }\n    }\n\n    _updateButtonStateFromModel(): void {\n        this._buttons?.forEach((button: ButtonToggleComponent) => {\n            if (this.multiple) {\n                button._selected = this._value?.some(v => v === button.value);\n            } else {\n                button._selected = button.value === this._value;\n            }\n        });\n\n        if (!this.multiple && this._buttons?.filter(b => b._selected).length > 1) {\n            throw new Error(`Multiple buttons in group have same value (${this._value}).\n                This is not allowed if \"multiple\" property isn't set to true.`);\n        }\n        this._updateButtonStyle();\n    }\n\n    _updateValueOnClick(targetButton: ButtonToggleComponent): void {\n        if (!this.multiple) {\n            this._buttons.forEach((button: ButtonToggleComponent) => {\n                if (button !== targetButton) {\n                    button._selected = false;\n                }\n                if (this.valueRequired && button === targetButton) {\n                    button._selected = true;\n                }\n            });\n        } else {\n            this._buttons.forEach((button: ButtonToggleComponent) => {\n                if (this.valueRequired && this._buttons.filter((btn: ButtonToggleComponent) => btn.selected ).length === 0) {\n                    if (button === targetButton) { button._selected = true; }\n                }\n            });\n        }\n\n        // if multiple = true, _value is an array, if not, _value should be a single value.\n        const selectedValues = this._buttons.filter((btn: ButtonToggleComponent) => btn.selected).map(val => val.value);\n        this.value = this.multiple ? selectedValues : selectedValues[0];\n        this.onChange(this.value);\n\n        this._updateButtonStyle();\n    }\n\n    /** The component allows you to set [selected] on individual buttons, so we need to honor that in the model. */\n    private _setInitalModelAsNeeded() {\n        this._value = this._value || (this.multiple ? [] : this.value);\n        this._buttons.forEach((button: ButtonToggleComponent) => {\n            if (button.selected) {\n                if (this.multiple && !(this.value as Array<unknown>)?.includes(button.value)) {\n                    (this.value as Array<unknown>)?.push(button.value);\n                }\n\n                if (!this.multiple) {\n                    this.value = button.value;\n                }\n            } else {\n                if (this.multiple && (this.value as Array<unknown>)?.includes(button.value)) {\n                    (this.value as Array<unknown>)?.splice((this.value as Array<unknown>)?.indexOf(button.value, 1));\n                }\n            }\n        });\n    }\n\n    private _emitEventForInitiallySelected() {\n        if (this._buttons.some((button: ButtonToggleComponent) => {\n            return button.selected;\n        })) {\n            this.selectionChangedEvent.emit(new ButtonToggleChangeEvent(\n                null,\n                this._buttons.toArray()\n                , this._buttons.filter((btn: ButtonToggleComponent) => btn.selected).map(val => val.value)\n            ));\n        }\n    }\n\n    private _connectToButtonChildren() {\n        if (this._buttons) {\n            this._buttons.forEach((button: ButtonToggleComponent) => {\n                button._parentDisabled = this.disabled;\n                this._subscribeToButtonClick(button);\n            });\n        }\n    }\n\n    private _subscribeToButtonClick(button: ButtonToggleComponent) {\n        button._toggleClick.pipe(takeUntil(this.unsubscribe$)).subscribe(\n            (target: ButtonToggleComponent) => {\n                this._updateValueOnClick(target);\n                this.selectionChangedEvent.emit(new ButtonToggleChangeEvent(\n                    target,\n                    this._buttons.toArray()\n                    , this._buttons.filter((btn: ButtonToggleComponent) => btn.selected).map(val => val.value)\n                ));\n            });\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonToggleGroupComponent } from './button-toggle-group.component';\nimport { ButtonToggleComponent } from './button-toggle.component';\n\n\n@NgModule({\n    imports: [CommonModule, FormsModule],\n    declarations: [ButtonToggleComponent, ButtonToggleGroupComponent],\n    exports: [ButtonToggleComponent, ButtonToggleGroupComponent],\n    providers: [ButtonToggleGroupComponent]\n})\nexport class ButtonToggleModule {}\n","import {\n    Attribute,\n    Component,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    HostBinding,\n    Input,\n    Output,\n    Renderer2,\n    ViewChild,\n    Self,\n    Optional,\n    ContentChildren,\n    ViewEncapsulation,\n    AfterViewInit,\n    OnDestroy,\n    ChangeDetectorRef,\n    QueryList\n} from '@angular/core';\nimport {ControlValueAccessor, NgForm, FormGroupDirective, NgControl} from '@angular/forms';\nimport {HcFormControlComponent} from '../form-field/hc-form-control.component';\nimport {parseBooleanAttribute} from '../util';\nimport {delay, filter, takeUntil} from 'rxjs/operators';\nimport {Subject} from 'rxjs';\n\nlet nextCheckboxId = 1;\n\nexport class CheckboxChangeEvent {\n    constructor(public source: CheckboxComponent, public checked: boolean) {}\n}\n\n@Component({\n    selector: 'hc-checkbox-group',\n    styleUrls: ['./checkbox.component.scss'],\n    providers: [{provide: HcFormControlComponent, useExisting: forwardRef(() => CheckboxGroup)}],\n    exportAs: 'hcCheckboxGroup',\n    template: `\n        @if (!_disableParent) {\n        <hc-checkbox [checked]=\"_groupState\" [indeterminate]=\"_isIndeterminate\" (change)=\"toggleCheckAll()\">{{ _parentLabel }}</hc-checkbox>\n        }\n        <div [class.hc-checkbox-children-group]=\"!_disableParent\">\n            <ng-content></ng-content>\n        </div>\n    `,\n    standalone: false\n})\nexport class CheckboxGroup extends HcFormControlComponent {\n    /** A list of all the checkboxes included in the group */\n    private _checkboxes: QueryList<CheckboxComponent>;\n    private _checkboxesArray: CheckboxComponent[];\n\n    _groupState = false;\n    _parentLabel = 'Parent Checkbox';\n    _disableParent = false;\n    _isIndeterminate = true;\n\n    /** gets all children and subscribes to their events */\n    @ContentChildren(forwardRef(() => CheckboxComponent), {descendants: false})\n    get checkboxes(): QueryList<CheckboxComponent> {\n        return this._checkboxes;\n    }\n    set checkboxes(value: QueryList<CheckboxComponent>) {\n        if (value) {\n            this._checkboxes = value;\n            const arr = value.toArray() || [];\n            this._checkboxesArray = arr;\n            arr.forEach(c => c.change.pipe(filter(() => this._checkboxesArray === arr)).subscribe(() => this.updateParentState()));\n        }\n    }\n\n    /** Input to disable the Parent button *Defaults to `false`.* */\n    @Input()\n    get disableParent(): boolean {\n        return this._disableParent;\n    }\n    set disableParent(disableParent: boolean) {\n        this._disableParent = disableParent;\n    }\n\n    /** Input to change the label for the parent checkbox *Defaults to 'Parent Checkbox'* */\n    @Input()\n    get parentLabel(): string {\n        return this._parentLabel;\n    }\n    set parentLabel(parentLabel: string) {\n        this._parentLabel = parentLabel;\n    }\n\n    /** Function to handle the indeterminate checkbox */\n    updateParentState(): void {\n        if (this.checkboxes) {\n            const checkedCount = this.checkboxes.filter(c => c.checked).length;\n            if (checkedCount === this.checkboxes.length) {\n                this._groupState = true;\n                this._isIndeterminate = false;\n            } else if (checkedCount === 0) {\n                this._groupState = false;\n                this._isIndeterminate = false;\n            } else {\n                this._groupState = false;\n                this._isIndeterminate = true;\n            }\n        }\n    }\n\n    /** Function to return all checkboxes*/\n    getSelected(): CheckboxComponent[] {\n        if (this.checkboxes) {\n            return this.checkboxes.filter(c => c.checked);\n        }\n        return [];\n    }\n\n    /** Function that handles the parent checkbox functionality */\n    toggleCheckAll(): void {\n        if (this._groupState === true) {\n            this.checkboxes.filter(c => (c.checked = false));\n        } else {\n            this.checkboxes.filter(c => (c.checked = true));\n        }\n        this.updateParentState();\n    }\n}\n\n@Component({\n    selector: 'hc-checkbox',\n    templateUrl: './checkbox.component.html',\n    styleUrls: ['./checkbox.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    providers: [{provide: HcFormControlComponent, useExisting: forwardRef(() => CheckboxComponent)}],\n    exportAs: 'hcCheckbox',\n    standalone: false\n})\nexport class CheckboxComponent extends HcFormControlComponent implements ControlValueAccessor, AfterViewInit, OnDestroy {\n    private _uniqueId = `hc-checkbox-${nextCheckboxId++}`;\n    private _form: NgForm | FormGroupDirective | null;\n    private _checked = false;\n    private _tabIndex: number;\n    private _parent = false;\n    private readonly checkboxGroup: CheckboxGroup | null;\n    private _unsubscribe = new Subject<void>();\n    _componentId = this._uniqueId;\n\n    /** Value attribute of the native checkbox */\n    @Input()\n    value: string;\n\n    /** Whether the checkbox is indeterminate. It can represent a checkbox with three states. */\n    @Input()\n    indeterminate: boolean;\n\n    /** If true, the checkbox is for display purposes (not user interaction). As such its checked/unchecked state\n     * can only be controlled programatically. Useful for embedding in an ng-select typeahead */\n    @Input()\n    isStub = false;\n\n    /** Unique id for the checkbox element. If none is supplied, one will be auto-generated. */\n    @Input()\n    get id(): string {\n        return this._componentId || this._uniqueId;\n    }\n\n    set id(idVal: string) {\n        this._componentId = idVal ? idVal : this._uniqueId;\n    }\n\n    /** If true, condense the default margin and reduce the font size. *Defaults to `false`.*  */\n    @Input()\n    get tight(): boolean {\n        return this._tight;\n    }\n    set tight(value: boolean) {\n        this._tight = parseBooleanAttribute(value);\n    }\n\n    /** Sets the position of the checkbox relative to its associated label. *Defaults to `center`.*  */\n    @Input()\n    align: 'center' | 'top' | 'bottom' = 'center';\n\n    /** Sets unique name used in a form */\n    @Input()\n    name: string | null = null;\n\n    /** Event emitted whenever the state changes */\n    @Output()\n    change = new EventEmitter<CheckboxChangeEvent>();\n\n    @ViewChild('checkboxInput', {static: true})\n    _checkboxInput: ElementRef;\n\n    @HostBinding('attr.id')\n    get _getHostId(): string {\n        return this.id;\n    }\n\n    @HostBinding('class.hc-checkbox-checked')\n    get _getCheckboxCheckedClass(): boolean {\n        return this.checked;\n    }\n\n    @HostBinding('class.hc-checkbox-disabled')\n    get _getCheckboxDisabledClass(): boolean {\n        if (this._ngControl && this._ngControl.disabled) {\n            return this._ngControl.disabled;\n        }\n        return this._isDisabled;\n    }\n\n    @HostBinding('class.hc-checkbox-indeterminate')\n    get _getCheckboxIndeterminateClass(): boolean {\n        return this.indeterminate;\n    }\n\n    /** Whether the checkbox is required. */\n    @Input()\n    get required(): boolean {\n        return this._isRequired;\n    }\n\n    set required(requiredVal: boolean) {\n        this._isRequired = parseBooleanAttribute(requiredVal);\n    }\n\n    /** Whether the checkbox is disabled. */\n    @Input()\n    get disabled(): boolean {\n        if (this._ngControl && this._ngControl.disabled) {\n            return this._ngControl.disabled;\n        }\n        return this._isDisabled;\n    }\n\n    set disabled(disabledVal: boolean) {\n        this._isDisabled = parseBooleanAttribute(disabledVal);\n    }\n\n    /** Whether the checkbox is checked. */\n    @Input()\n    get checked(): boolean {\n        return this._checked;\n    }\n\n    set checked(checked: boolean) {\n        if (this._checked === checked) {\n            return;\n        }\n        this._checked = checked;\n    }\n\n    /** Whether the checkbox is a parent. */\n    @Input()\n    get parent(): boolean {\n        return this._parent;\n    }\n\n    set parent(parent: boolean) {\n        this._parent = parseBooleanAttribute(parent);\n    }\n\n    /** TabIndex attribute of native checkbox */\n    get tabIndex(): number {\n        return this._isDisabled ? -1 : this._tabIndex;\n    }\n\n    set tabIndex(value: number) {\n        this._tabIndex = value == null ? 0 : value;\n    }\n\n    get _inputId(): string {\n        return `${this.id || this._uniqueId}-input`;\n    }\n\n    ngAfterViewInit(): void {\n        if (this._ngControl?.statusChanges) {\n            // delay() is necessary to make sure any form or control state changes have been applied before rechecking error states\n            this._ngControl.statusChanges.pipe(delay(0), takeUntil(this._unsubscribe)).subscribe(() => this._updateErrorState());\n        }\n        if (this._form) {\n            this._form.ngSubmit.pipe(takeUntil(this._unsubscribe)).subscribe(() => this._updateErrorState());\n        }\n\n        /** Monkey patching the markAsTouched function to call error state checking because there is not an event for touched changes */\n        if (this._ngControl && this._ngControl.control) {\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            const self = this;\n            const originalMarkMethod = this._ngControl.control.markAsTouched;\n            this._ngControl.control.markAsTouched = function () {\n                // eslint-disable-next-line prefer-rest-params\n                originalMarkMethod.apply(this, arguments);\n                self._updateErrorState();\n            };\n\n            const originalMarkAllMethod = this._ngControl.control.markAllAsTouched;\n            this._ngControl.control.markAllAsTouched = function () {\n                // eslint-disable-next-line prefer-rest-params\n                originalMarkAllMethod.apply(this, arguments);\n                self._updateErrorState();\n            };\n        }\n    }\n\n    constructor(\n        @Attribute('tabindex') tabindex: string,\n        private _renderer: Renderer2,\n        @Optional() _parentForm: NgForm,\n        @Optional() _parentFormGroup: FormGroupDirective,\n        @Optional() checkboxGroup: CheckboxGroup,\n        @Optional()\n        @Self()\n        public _ngControl: NgControl,\n        private _changeRef: ChangeDetectorRef\n    ) {\n        super();\n\n        this.checkboxGroup = checkboxGroup;\n        this.tabIndex = parseInt(tabindex, 10) || 0;\n\n        this._form = _parentForm || _parentFormGroup;\n        if (this._ngControl != null) {\n            this._ngControl.valueAccessor = this;\n        }\n    }\n\n    writeValue(value: unknown): void {\n        // Prevent the form control from trying to write a value when removing the control\n        if (this.onChange.name !== 'noop') {\n            this.checked = !!value;\n        }\n    }\n\n    public onChange: (value: unknown) => void = () => undefined;\n    public onTouch: () => unknown = () => undefined;\n    public registerOnChange(fn: (value: unknown) => void): void {\n        this.onChange = fn;\n    }\n    public registerOnTouched(fn: () => unknown): void {\n        this.onTouch = fn;\n    }\n\n    setDisabledState(disabledVal: boolean): void {\n        this.disabled = disabledVal;\n        this._renderer.setProperty(this._checkboxInput.nativeElement, 'disabled', disabledVal);\n    }\n\n    /** Toggles the current checked state of the checkbox */\n    toggle(): void {\n        this.checked = !this.checked;\n    }\n\n    _clickEvent(event: Event): void {\n        event.stopPropagation(); // prevent native click event from being dispatched\n        if (!this.disabled) {\n            if (this.checkboxGroup && this._parent) {\n                this.checkboxGroup.toggleCheckAll();\n            }\n            this.toggle();\n            this._emitChangeEvent();\n        }\n    }\n\n    _stopChangeEvent(event: Event): void {\n        event.stopPropagation(); // prevent native change event from emitting its own object through output 'change'\n    }\n\n    private _emitChangeEvent(): void {\n        this.onTouch();\n        this.onChange(this.checked);\n        this.change.emit(new CheckboxChangeEvent(this, this.checked));\n    }\n\n    _onBlur(): void {\n        this.onTouch();\n        this._updateErrorState();\n    }\n\n    private _updateErrorState() {\n        const oldState = this._errorState;\n\n        // TODO: this could be abstracted out as an @Input() if we need this to be configurable\n        const newState = !!(\n            this._ngControl &&\n            this._ngControl.invalid &&\n            (this._ngControl.touched || (this._form && this._form.submitted))\n        );\n\n        if (oldState !== newState) {\n            this._errorState = newState;\n            this._changeRef.detectChanges();\n        }\n    }\n\n    ngOnDestroy(): void {\n        this._unsubscribe.next();\n        this._unsubscribe.complete();\n    }\n}\n","<div class=\"hc-checkbox-container\" [class.hc-checkbox-stub]=\"isStub\">\n    <div class=\"hc-checkbox-content\" [class.hc-checkbox-tight]=\"tight\" [ngClass]=\"'hc-checkbox-align-'+align\">\n        <input #checkboxInput\n               type=\"checkbox\"\n               [id]=\"_inputId\"\n               [attr.value]=\"value\"\n               [attr.name]=\"name\"\n               [indeterminate]=\"indeterminate\"\n               [disabled]=\"disabled\"\n               [required]=\"required\"\n               [checked]=\"checked\"\n               (change)=\"_stopChangeEvent($event)\"\n               (click)=\"_clickEvent($event)\"\n               (blur)=\"_onBlur()\"/>\n        <label class=\"hc-checkbox-overlay\" [attr.for]=\"_inputId\" [tabIndex]=\"tabIndex\" (keydown.space)=\"_clickEvent($event); $event.preventDefault();\"></label>\n        <label class=\"hc-checkbox-label\" [ngClass]=\"'hc-checkbox-align-label-'+align\" [attr.for]=\"_inputId\">\n            <ng-content></ng-content>\n        </label>\n    </div>\n</div>\n","import {Directive, forwardRef, Input, Provider} from '@angular/core';\nimport {AbstractControl, NG_VALIDATORS, ValidationErrors, Validator, Validators} from '@angular/forms';\n\nexport const HC_CHECKBOX_REQUIRED_VALIDATOR: Provider = {\n    provide: NG_VALIDATORS,\n    useExisting: forwardRef(() => HcCheckboxRequiredValidatorDirective),\n    multi: true\n};\n\n/** @docs-private */\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: `hc-checkbox[required][formControlName],hc-checkbox[required][formControl],hc-checkbox[required][ngModel]`,\n    providers: [HC_CHECKBOX_REQUIRED_VALIDATOR],\n    standalone: false\n})\nexport class HcCheckboxRequiredValidatorDirective implements Validator {\n    private _required = false;\n    private _onChange?: () => void;\n\n    validate(control: AbstractControl): ValidationErrors | null {\n        return this.required ? Validators.requiredTrue(control) : null;\n    }\n\n    @Input()\n    get required(): boolean | string {\n        return this._required;\n    }\n\n    set required(value: boolean | string) {\n        this._required = value != null && value !== false && `${value}` !== 'false';\n        if (this._onChange) {\n            this._onChange();\n        }\n    }\n\n    registerOnValidatorChange(fn: () => void): void {\n        this._onChange = fn;\n    }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {CheckboxComponent, CheckboxGroup} from './checkbox.component';\nimport {HcCheckboxRequiredValidatorDirective} from './checkbox-required.directive';\n\n@NgModule({\n    imports: [CommonModule, FormsModule],\n    exports: [CheckboxComponent, HcCheckboxRequiredValidatorDirective, CheckboxGroup],\n    declarations: [CheckboxComponent, HcCheckboxRequiredValidatorDirective, CheckboxGroup]\n})\nexport class CheckboxModule {}\n","import {Component, Input, ViewEncapsulation, Output, EventEmitter} from '@angular/core';\nimport {parseBooleanAttribute} from '../util';\n\nconst supportedColors = ['neutral', 'yellow', 'green', 'red', 'blue'];\n\nexport function validateColorInput(inputStr: string): void {\n    if (supportedColors.indexOf(inputStr) < 0) {\n        throw Error('Unsupported chip color value: ' + inputStr);\n    }\n}\n\n/** Chips represent complex entities in small blocks, such as filters, contacts, or system information */\n@Component({\n    selector: 'hc-chip',\n    templateUrl: './chip.component.html',\n    styleUrls: ['./chip.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class ChipComponent {\n    private _hasCloseButton = false;\n    private _color = 'neutral';\n    _tight = false;\n\n    /** Emitted when the 'X' close button is clicked. `(click)` may be used for clicks on the entire chip */\n    @Output()\n    closeClick = new EventEmitter<MouseEvent>();\n\n    /** Sets chip color to one of: `neutral`, `yellow`, `green`, `red`, or `blue` (default=`neutral`) */\n    @Input()\n    get color(): string {\n        return this._color;\n    }\n\n    set color(colorType: string) {\n        validateColorInput(colorType);\n        this._color = colorType;\n    }\n\n    /** If true, displays an X button on the right side of the chip which emits a `closeClick` event */\n    @Input()\n    get hasCloseButton(): boolean {\n        return this._hasCloseButton;\n    }\n\n    set hasCloseButton(hasButton: boolean) {\n        this._hasCloseButton = parseBooleanAttribute(hasButton);\n    }\n\n    /** If true, removes the margins & padding from the chip; defaults to `false` */\n    @Input()\n    get tight(): boolean {\n        return this._tight;\n    }\n\n    set tight(val: boolean) {\n        this._tight = parseBooleanAttribute(val);\n    }\n\n    /** Allows you to customize the width of a chip (ie. `100%`, `250px`); defaults to `auto` */\n    @Input()\n    width = 'auto';\n\n    /** Called on a click of the X close button */\n    _closeClick(e: MouseEvent): void {\n        this.closeClick.emit(e);\n    }\n}\n","<div class=\"hc-chip hc-chip-{{ color }}\" [class.hc-chip-padding]=\"!tight\" [style.width]=\"width\">\n    <span class=\"hc-chip-content-{{ color }}\">\n        <ng-content></ng-content>\n    </span>\n    @if (hasCloseButton) {\n    <span class=\"hc-chip-close\" (click)=\"_closeClick($event)\">\n        <span class=\"hc-chip-close-icon\"></span>\n    </span>\n    }\n</div>\n","import {Component, Input, ViewEncapsulation} from '@angular/core';\nimport {parseBooleanAttribute} from '../../util';\n\n/** Supporting component to help with grouping chips into collections */\n@Component({\n    selector: 'hc-chip-row',\n    template: `\n        <div class=\"hc-chip-row-contents\" [ngClass]=\"{'hc-chip-single-row': !wrap}\">\n            <div>\n                <div class=\"hc-chip-row-buffer\"><ng-content></ng-content></div>\n            </div>\n        </div>\n    `,\n    styleUrls: ['../chip.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class ChipRowComponent {\n    private _wrap = true;\n\n    /** If false, constrain the container to one line with overflow ellipses (default=true) */\n    @Input()\n    get wrap(): boolean {\n        return this._wrap;\n    }\n\n    set wrap(doWrap: boolean) {\n        this._wrap = parseBooleanAttribute(doWrap);\n    }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ChipComponent} from './chip.component';\nimport {ChipRowComponent} from './chip-row/chip-row.component';\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [ChipComponent, ChipRowComponent],\n    declarations: [ChipComponent, ChipRowComponent]\n})\nexport class ChipModule {}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport function writeToStorage(key: string, value: any): void {\n    window.localStorage.setItem(key, JSON.stringify(value));\n}\n\nexport function readFromStorage(key: string): any | null {\n    const rawValue = window.localStorage.getItem(key);\n    return rawValue ? JSON.parse(rawValue) : null;\n}\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { HcPopComponent } from '../pop/popover.component';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { HcDynamicColumn, HcCachedColumn } from './column-menu.models';\nimport { readFromStorage, writeToStorage } from '../utils/local-storage';\n\n/** Component for toggling and reordering columns within a data grid */\n@Component({\n    selector: 'hc-column-menu',\n    templateUrl: './column-menu.component.html',\n    styleUrls: ['./column-menu.component.scss'],\n    standalone: false\n})\nexport class ColumnMenuComponent implements OnInit {\n    /** Reference to the popover menu. */\n    @ViewChild('columns') menu!: HcPopComponent;\n    /** Every time column settings are changed, emits an array of displayed columns in their proper order. */\n    @Output() displayedColumnChange: EventEmitter<string[]> = new EventEmitter<string[]>();\n    /** Fires when button to open menu is clicked. */\n    @Output() onMenuIconClick: EventEmitter<void> = new EventEmitter<void>();\n    /** Key used when caching the column order and display settings in local storage. If not provided, these settings will not be cached. */\n    @Input() cacheKey = '';\n    /** Keys for columns that cannot be moved or hidden and sit at the start of the row. */\n    @Input() set staticPrefixCols(prefixCols: string[]) {\n        this._staticPrefixCols = prefixCols;\n        this._refreshCols();\n    }\n    get staticPrefixCols(): string[] { return this._staticPrefixCols; }\n    private _staticPrefixCols: string[] = [];\n\n    /** Keys for columns that cannot be moved or hidden and sit at the end of the row. */\n    @Input() set staticSuffixCols(suffixCols: string[]) {\n        this._staticSuffixCols = suffixCols;\n        this._refreshCols();\n    }\n    get staticSuffixCols(): string[] { return this._staticSuffixCols; }\n    private _staticSuffixCols: string[] = [];\n\n    /** Collection of columns that can be hidden and/or reordered. */\n    @Input() set dynamicCols(cols: Array<HcDynamicColumn>) {\n        this._dynamicCols = cols;\n        this._generateColumnSelectionForms(cols);\n        this._getCachedPreferences();\n    }\n    get dynamicCols(): Array<HcDynamicColumn> { return this._dynamicCols; }\n    private _dynamicCols = new Array<HcDynamicColumn>();\n\n    /** An array of the currently displayed column keys sorted in their proper order. */\n    get displayedColumns(): string[] { return this._displayedColumns; }\n    _displayedColumns: string[] = [];\n\n    /** Collection of the sortable/hidable column forms. */\n    get colSelectionForm(): FormGroup { return this._colSelectionForm; }\n    _colSelectionForm = new FormGroup({});\n\n    ngOnInit(): void {\n        this._generateColumnSelectionForms(this._dynamicCols);\n        this._getCachedPreferences();\n    }\n\n    /** Returns true if every hideable column is currently hidden. */\n    get allHidden(): boolean {\n        return !Object.values(this._colSelectionForm.controls).some(c => (c as FormControl).value);\n    }\n\n    /** Show all columns */\n    selectAll(): void {\n        Object.values(this._colSelectionForm.controls).forEach(c => (c as FormControl).setValue(true));\n        this._onColChange();\n    }\n\n    /** Hide all columns */\n    clearAll(): void {\n        Object.values(this._colSelectionForm.controls).forEach(c => (c as FormControl).setValue(false));\n        this._onColChange();\n    }\n\n    /** Open the column menu */\n    open(): void {\n        this.menu.open();\n    }\n\n    /** Close the column menu */\n    close(): void {\n        this.menu.close();\n    }\n\n    _onColChange(): void {\n        this._refreshCols();\n        this.saveCachedPreferences();\n    }\n\n    _generateColumnSelectionForms(cols: Array<HcDynamicColumn>): void {\n        this._colSelectionForm = new FormGroup({});\n        cols.filter(c => this._interpretOptionalBoolean(c.isHidable)).forEach((c) => {\n            this._colSelectionForm.addControl(c.name, new FormControl(this._interpretOptionalBoolean(c.isShownByDefault)));\n        });\n        this._refreshCols();\n    }\n\n    _interpretOptionalBoolean(val?: boolean): boolean {\n        return val === undefined || val === null ? true : val;\n    }\n\n    _refreshCols(): string[] {\n        // merge user controlled columns with static columns\n        this._displayedColumns = this.staticPrefixCols\n            .concat(this._getDisplayedColumns())\n            .concat(this.staticSuffixCols);\n\n        setTimeout(() => this.displayedColumnChange.emit(this._displayedColumns));\n        return this._displayedColumns;\n    }\n\n    _getDisplayedColumns(): string[] {\n        return this.dynamicCols\n        .filter((col) =>\n        this._interpretOptionalBoolean(col.isHidable) ? this._colSelectionForm.get(col.name)?.value : true\n        )\n        .map((cd) => cd.name as string);\n    }\n\n    /**\n     * Handle rearanging of columns via drag and drop\n     * @param event contains data from the drag and drop event\n     * @param isInDataGrid if true, we need to take in account the fact that some columns may currently be hidden\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    columnDropped(event: CdkDragDrop<any>, isInDataGrid = true): void {\n        if (event) {\n            const prevIndex = isInDataGrid ?\n                this._dynamicCols.findIndex(c => c.name === event.item.data.name) :\n                event.previousIndex;\n            const adjustedIndexForPrefixes = event.currentIndex + this.staticPrefixCols.length;\n            const newIndex = isInDataGrid ?\n                this._dynamicCols.findIndex( c => c.name === this._displayedColumns[adjustedIndexForPrefixes]) :\n                event.currentIndex;\n            moveItemInArray(this._dynamicCols, prevIndex, newIndex);\n            this._refreshCols();\n            this.saveCachedPreferences();\n        }\n    }\n\n    /**\n     * Save ordered list of columns with their display status to local storage\n     */\n    saveCachedPreferences(): void {\n        if (!this.cacheKey) { return; } // don't save if no key is provided\n        const cachedColumns: HcCachedColumn[] = this.dynamicCols\n            .map((col) => ({ key: col.name, isHidden: !this._colSelectionForm.get(col.name?.toString())?.value}));\n        writeToStorage(this.cacheKey, cachedColumns);\n    }\n\n    /**\n     * Load user preferences for columns order and display status\n     */\n    _getCachedPreferences(): void {\n        if (!this.cacheKey) { return; } // don't load if no key is provided\n        const cachedColumns: HcCachedColumn[] = readFromStorage(this.cacheKey) || new Array<HcCachedColumn>();\n        const orderedAvailableColumns = new Array<HcDynamicColumn>();\n        cachedColumns?.forEach((col) => {\n            const existingColumn = this._dynamicCols.find(c => c.name === col.key);\n            if(!existingColumn) { return; } // watch for columns that don't exist anymore\n\n            // if the cached column still exists, set display status & add at correct index\n            this._colSelectionForm.get(col.key)?.setValue(!col.isHidden);\n            orderedAvailableColumns.push(existingColumn);\n        });\n\n        // if available columns don't exist in cache (like a newly introduced column),\n        // add them in at their default index\n        this._dynamicCols.forEach((availableColumn, index) => {\n            if(!cachedColumns.find(c => c.key === availableColumn.name)) {\n                orderedAvailableColumns.splice(index, 0, availableColumn);\n            }\n        });\n\n        this._dynamicCols = orderedAvailableColumns;\n        this._refreshCols();\n    }\n}\n","<button\n    size=\"lg\"\n    class=\"hc-grid-col-menu-btn hc-simple-ico-btn\"\n    hc-icon-button\n    [hcPop]=\"columns\"\n    title=\"Configure columns\"\n    (click)=\"onMenuIconClick.emit($event)\"\n>\n    <hc-icon fontIcon=\"ico-table-cog hc-grid-col-menu-btn-ico\"></hc-icon>\n</button>\n\n<hc-pop #columns>\n    <div hcMenu [formGroup]=\"_colSelectionForm\" cdkDropList (cdkDropListDropped)=\"columnDropped($event, false)\">\n        <div class=\"hc-grid-col-menu-header\">\n            <span class=\"ico-table-cog hc-icon-left\"></span>\n            Configure Columns\n        </div>\n        <div class=\"hc-grid-col-menu-subheader\">\n            <button hc-button buttonStyle=\"link\" size=\"sm\" (click)=\"selectAll()\">Select all</button>\n            <button hc-button buttonStyle=\"link\" size=\"sm\" (click)=\"clearAll()\">Clear all</button>\n        </div>\n        @for (column of dynamicCols; track column) {\n        <div\n            hcMenuItem\n            class=\"hc-grid-col-menu-item\"\n            cdkDrag\n            [title]=\"\n                column.description ||\n                (_interpretOptionalBoolean(column.isHidable)\n                    ? 'Drag to rearrange columns, click to toggle'\n                    : 'Drag to rearrange. Column is not togglable.')\n            \"\n        >\n            <span class=\"ico-grip\"></span>\n            @if (_interpretOptionalBoolean(column.isHidable)) {\n            <hc-checkbox [formControlName]=\"column.name\" [tight]=\"true\" (change)=\"_onColChange()\">{{ column.title }}</hc-checkbox>\n            } @if (!_interpretOptionalBoolean(column.isHidable)) {\n            <hc-checkbox [tight]=\"true\" class=\"hc-grid-col-menu-cannot-hide\" [disabled]=\"true\" [checked]=\"true\">\n                {{ column.title }}\n            </hc-checkbox>\n            }\n        </div>\n        }\n        <div class=\"hc-grid-col-menu-footer\">\n            <button hc-button buttonStyle=\"primary\" size=\"sm\" (click)=\"columns.close()\">Done</button>\n        </div>\n    </div>\n</hc-pop>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {ColumnMenuComponent} from './column-menu.component';\nimport { CheckboxModule } from '../checkbox/checkbox.module';\nimport { PopModule } from '../pop/popover.module';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { IconModule } from '../icon';\nimport { ButtonModule } from '../button';\n\n@NgModule({\n    imports: [CommonModule, FormsModule, ReactiveFormsModule, ButtonModule, CheckboxModule, PopModule, DragDropModule, IconModule],\n    exports: [ColumnMenuComponent],\n    declarations: [ColumnMenuComponent]\n})\nexport class ColumnMenuModule {}\n","/**\n * @license\n * Copyright Health Catalyst All Rights Reserved.\n *\n * Use of this source code is governed by an Apache-2.0 license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/HealthCatalyst/Fabric.Cashmere/dev/LICENSE\n */\n\n/** @docs-private */\nexport function createMissingDateImplError(provider: string): Error {\n    return Error(\n        `Datepicker: No provider found for ${provider}. You must import one of the following ` +\n            `modules at your application root: HcNativeDateModule, MatMomentDateModule, or provide a ` +\n            `custom implementation.`\n    );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * @license\n * Copyright Health Catalyst All Rights Reserved.\n *\n * Use of this source code is governed by an Apache-2.0 license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/HealthCatalyst/Fabric.Cashmere/dev/LICENSE\n */\n\nimport {InjectionToken} from '@angular/core';\n\nexport type D = Date;\n\nexport type HcDateFormats = {\n    parse: {\n        dateInput: any;\n    };\n    display: {\n        dateInput: any;\n        timeInput: any;\n        dateTimeInput: any;\n        monthYearLabel: any;\n        dateA11yLabel: any;\n        monthYearA11yLabel: any;\n    };\n};\n\nexport const HC_DATE_FORMATS = new InjectionToken<HcDateFormats>('hc-date-formats');\n","/* eslint-disable @angular-eslint/component-selector */\nimport {\n    Component,\n    ViewEncapsulation,\n    ChangeDetectionStrategy,\n    OnChanges,\n    Input,\n    Output,\n    EventEmitter,\n    ElementRef,\n    NgZone,\n    SimpleChanges,\n    HostBinding\n} from '@angular/core';\nimport {take} from 'rxjs/operators';\n\n/**\n * Extra CSS classes that can be associated with a calendar cell.\n */\nexport type HcCalendarCellCssClasses = string | string[] | Set<string> | {[key: string]: unknown};\n\n/**\n * An internal class that represents the data corresponding to a single calendar cell.\n * @docs-private\n */\nexport class HcCalendarCell {\n    constructor(\n        public value: number,\n        public displayValue: string,\n        public ariaLabel: string,\n        public enabled: boolean,\n        public cssClasses?: HcCalendarCellCssClasses\n    ) {}\n}\n\n/**\n * An internal component used to display calendar data in a table.\n * @docs-private\n */\n@Component({\n    selector: '[hc-calendar-body]',\n    templateUrl: './calendar-body.component.html',\n    styleUrls: ['calendar-body.component.scss'],\n    exportAs: 'hcCalendarBody',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class CalendarBodyComponent implements OnChanges {\n    @HostBinding('class.hc-calendar-body') _hostClass = true;\n    @HostBinding('attr.role') _role = 'grid';\n    @HostBinding('attr.aria-readonly') _aria = true;\n\n    /** The label for the table. (e.g. \"Jan 2017\"). */\n    @Input()\n    label: string;\n\n    /** The cells to display in the table. */\n    @Input()\n    rows: HcCalendarCell[][];\n\n    /** The value in the table that corresponds to today. */\n    @Input()\n    todayValue: number;\n\n    /** The value in the table that is currently selected. */\n    @Input()\n    selectedValue: number;\n\n    /** The minimum number of free cells needed to fit the label in the first row. */\n    @Input()\n    labelMinRequiredCells: number;\n\n    /** The number of columns in the table. */\n    @Input()\n    numCols = 7;\n\n    /** The cell number of the active cell in the table. */\n    @Input()\n    activeCell = 0;\n\n    /**\n     * The aspect ratio (width / height) to use for the cells in the table. This aspect ratio will be\n     * maintained even as the table resizes.\n     */\n    @Input()\n    cellAspectRatio = 1;\n\n    /** Emits when a new value is selected. */\n    @Output()\n    readonly selectedValueChange: EventEmitter<number> = new EventEmitter<number>();\n\n    /** The number of blank cells to put at the beginning for the first row. */\n    _firstRowOffset: number;\n\n    /** Padding for the individual date cells. */\n    _cellPadding: string;\n\n    /** Width of an individual cell. */\n    _cellWidth: string;\n\n    constructor(private _elementRef: ElementRef<HTMLElement>, private _ngZone: NgZone) {}\n\n    _cellClicked(cell: HcCalendarCell): void {\n        if (cell.enabled) {\n            this.selectedValueChange.emit(cell.value);\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        const columnChanges = changes.numCols;\n        const {rows, numCols} = this;\n\n        if (changes.rows || columnChanges) {\n            this._firstRowOffset = rows && rows.length && rows[0].length ? numCols - rows[0].length : 0;\n        }\n\n        if (changes.cellAspectRatio || columnChanges || !this._cellPadding) {\n            this._cellPadding = `${(50 * this.cellAspectRatio) / numCols}%`;\n        }\n\n        if (columnChanges || !this._cellWidth) {\n            this._cellWidth = `${100 / numCols}%`;\n        }\n    }\n\n    _isActiveCell(rowIndex: number, colIndex: number): boolean {\n        let cellNumber = rowIndex * this.numCols + colIndex;\n\n        // Account for the fact that the first row may not have as many cells.\n        if (rowIndex) {\n            cellNumber -= this._firstRowOffset;\n        }\n\n        return cellNumber === this.activeCell;\n    }\n\n    /** Focuses the active cell after the microtask queue is empty. */\n    _focusActiveCell(): void {\n        this._ngZone.runOutsideAngular(() => {\n            this._ngZone.onStable\n                .asObservable()\n                .pipe(take(1))\n                .subscribe(() => {\n                    const activeCell: HTMLElement | null = this._elementRef.nativeElement.querySelector('.hc-calendar-body-active');\n\n                    if (activeCell) {\n                        activeCell.focus();\n                    }\n                });\n        });\n    }\n}\n","<!-- Create the first row separately so we can include a special spacer cell. -->\n@for (row of rows; track row; let rowIndex = $index) {\n<tr role=\"row\">\n    <!--\n    We mark this cell as aria-hidden so it doesn't get read out as one of the days in the week.\n    The aspect ratio of the table cells is maintained by setting the top and bottom padding as a\n    percentage of the width (a variant of the trick described here:\n    https://www.w3schools.com/howto/howto_css_aspect_ratio.asp).\n    -->\n    @if (rowIndex === 0 && _firstRowOffset) {\n    <td aria-hidden=\"true\" class=\"hc-calendar-body-label\" [attr.colspan]=\"_firstRowOffset\"></td>\n    } @for (item of row; track item; let colIndex = $index) {\n    <td\n        role=\"gridcell\"\n        class=\"hc-calendar-body-cell\"\n        [ngClass]=\"item.cssClasses\"\n        [tabindex]=\"_isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n        [class.hc-calendar-body-available]=\"item.enabled && !_isActiveCell(rowIndex, colIndex)\"\n        [class.hc-calendar-body-disabled]=\"!item.enabled\"\n        [class.hc-calendar-body-active]=\"_isActiveCell(rowIndex, colIndex)\"\n        [attr.aria-label]=\"item.ariaLabel\"\n        [attr.aria-disabled]=\"!item.enabled || null\"\n        [attr.aria-selected]=\"selectedValue === item.value\"\n        (click)=\"_cellClicked(item)\"\n        [style.width]=\"_cellWidth\"\n        [style.paddingTop]=\"_cellPadding\"\n        [style.paddingBottom]=\"_cellPadding\"\n    >\n        <div\n            class=\"hc-calendar-body-cell-content\"\n            [class.hc-calendar-body-selected]=\"selectedValue === item.value\"\n            [class.hc-calendar-body-today]=\"todayValue === item.value\"\n        >\n            {{ item.displayValue }}\n        </div>\n    </td>\n    }\n</tr>\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/**\n * @license\n * Copyright Health Catalyst All Rights Reserved.\n *\n * Use of this source code is governed by an Apache-2.0 license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/HealthCatalyst/Fabric.Cashmere/dev/LICENSE\n */\n\nimport {inject, InjectionToken, LOCALE_ID} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\n\n/** InjectionToken for datepicker that can be used to override default locale code. */\nexport const HC_DATE_LOCALE = new InjectionToken<string>('HC_DATE_LOCALE', {\n    providedIn: 'root',\n    factory: HC_DATE_LOCALE_FACTORY\n});\n\n/** @docs-private */\nexport function HC_DATE_LOCALE_FACTORY(): string {\n    return inject(LOCALE_ID);\n}\n\n/** Adapts type `D` to be usable as a date by cdk-based components that work with dates. */\nexport abstract class DateAdapter<D> {\n    /** The locale to use for all dates. */\n    protected locale;\n\n    /** A stream that emits when the locale changes. */\n    get localeChanges(): Observable<void> {\n        return this._localeChanges;\n    }\n    protected _localeChanges = new Subject<void>();\n\n    /**\n     * Gets the year component of the given date.\n     * @param date The date to extract the year from.\n     * @returns The year component.\n     */\n    abstract getYear(date: D): number;\n\n    /**\n     * Gets the month component of the given date.\n     * @param date The date to extract the month from.\n     * @returns The month component (0-indexed, 0 = January).\n     */\n    abstract getMonth(date: D): number;\n\n    /**\n     * Gets the date of the month component of the given date.\n     * @param date The date to extract the date of the month from.\n     * @returns The month component (1-indexed, 1 = first of month).\n     */\n    abstract getDate(date: D): number;\n\n    abstract getHours(date: D): number;\n    abstract getMinutes(date: D): number;\n\n    /**\n     * Gets the day of the week component of the given date.\n     * @param date The date to extract the day of the week from.\n     * @returns The month component (0-indexed, 0 = Sunday).\n     */\n    abstract getDayOfWeek(date: D): number;\n\n    /**\n     * Gets a list of names for the months.\n     * @param style The naming style (e.g. long = 'January', short = 'Jan', narrow = 'J').\n     * @returns An ordered list of all month names, starting with January.\n     */\n    abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n    /**\n     * Gets a list of names for the dates of the month.\n     * @returns An ordered list of all date of the month names, starting with '1'.\n     */\n    abstract getDateNames(): string[];\n\n    /**\n     * Gets a list of names for the days of the week.\n     * @param style The naming style (e.g. long = 'Sunday', short = 'Sun', narrow = 'S').\n     * @returns An ordered list of all weekday names, starting with Sunday.\n     */\n    abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n    /**\n     * Gets the name for the year of the given date.\n     * @param date The date to get the year name for.\n     * @returns The name of the given year (e.g. '2017').\n     */\n    abstract getYearName(date: D): string;\n\n    /**\n     * Gets the first day of the week.\n     * @returns The first day of the week (0-indexed, 0 = Sunday).\n     */\n    abstract getFirstDayOfWeek(): number;\n\n    /**\n     * Gets the number of days in the month of the given date.\n     * @param date The date whose month should be checked.\n     * @returns The number of days in the month of the given date.\n     */\n    abstract getNumDaysInMonth(date: D): number;\n\n    /**\n     * Clones the given date.\n     * @param date The date to clone\n     * @returns A new date equal to the given date.\n     */\n    abstract clone(date: D): D;\n\n    /**\n     * Creates a date with the given year, month, and date. Does not allow over/under-flow of the\n     * month and date.\n     * @param year The full year of the date. (e.g. 89 means the year 89, not the year 1989).\n     * @param month The month of the date (0-indexed, 0 = January). Must be an integer 0 - 11.\n     * @param date The date of month of the date. Must be an integer 1 - length of the given month.\n     * @returns The new date, or null if invalid.\n     */\n    abstract createDate(year: number, month: number, date: number): D;\n\n    /**\n     * Gets today's date.\n     * @returns Today's date.\n     */\n    abstract today(): D;\n\n    /**\n     * Parses a date from a user-provided value.\n     * @param value The value to parse.\n     * @param parseFormat The expected format of the value being parsed\n     *     (type is implementation-dependent).\n     * @returns The parsed date.\n     */\n    abstract parse(value: any, parseFormat: any): D | null;\n\n    /**\n     * Formats a date as a string according to the given format.\n     * @param date The value to format.\n     * @param displayFormat The format to use to display the date as a string.\n     * @returns The formatted date string.\n     */\n    abstract format(date: D, displayFormat: any): string;\n\n    /**\n     * Adds the given number of years to the date. Years are counted as if flipping 12 pages on the\n     * calendar for each year and then finding the closest date in the new month. For example when\n     * adding 1 year to Feb 29, 2016, the resulting date will be Feb 28, 2017.\n     * @param date The date to add years to.\n     * @param years The number of years to add (may be negative).\n     * @returns A new date equal to the given one with the specified number of years added.\n     */\n    abstract addCalendarYears(date: D, years: number): D;\n\n    /**\n     * Adds the given number of months to the date. Months are counted as if flipping a page on the\n     * calendar for each month and then finding the closest date in the new month. For example when\n     * adding 1 month to Jan 31, 2017, the resulting date will be Feb 28, 2017.\n     * @param date The date to add months to.\n     * @param months The number of months to add (may be negative).\n     * @returns A new date equal to the given one with the specified number of months added.\n     */\n    abstract addCalendarMonths(date: D, months: number): D;\n\n    /**\n     * Adds the given number of days to the date. Days are counted as if moving one cell on the\n     * calendar for each day.\n     * @param date The date to add days to.\n     * @param days The number of days to add (may be negative).\n     * @returns A new date equal to the given one with the specified number of days added.\n     */\n    abstract addCalendarDays(date: D, days: number): D;\n\n    /**\n     * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.\n     * This method is used to generate date strings that are compatible with native HTML attributes\n     * such as the `min` or `max` attribute of an `<input>`.\n     * @param date The date to get the ISO date string for.\n     * @returns The ISO date string date string.\n     */\n    abstract toIso8601(date: D): string;\n\n    /**\n     * Checks whether the given object is considered a date instance by this DateAdapter.\n     * @param obj The object to check\n     * @returns Whether the object is a date instance.\n     */\n    abstract isDateInstance(obj: any): boolean;\n\n    /**\n     * Checks whether the given date is valid.\n     * @param date The date to check.\n     * @returns Whether the date is valid.\n     */\n    abstract isValid(date: D): boolean;\n\n    /**\n     * Gets date instance that is not valid.\n     * @returns An invalid date.\n     */\n    abstract invalid(): D;\n\n    /**\n     * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n     * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n     * string). The default implementation does not allow any deserialization, it simply checks that\n     * the given value is already a valid date object or null. The `<sat-datepicker>` will call this\n     * method on all of it's `@Input()` properties that accept dates. It is therefore possible to\n     * support passing values from your backend directly to these properties by overriding this method\n     * to also deserialize the format used by your backend.\n     * @param value The value to be deserialized into a date object.\n     * @returns The deserialized date object, either a valid date, null if the value can be\n     *     deserialized into a null date (e.g. the empty string), or an invalid date.\n     */\n    deserialize(value: any): D | null {\n        if (value == null || (this.isDateInstance(value) && this.isValid(value))) {\n            return value;\n        }\n        return this.invalid();\n    }\n\n    /**\n     * Sets the locale used for all dates.\n     * @param locale The new locale.\n     */\n    setLocale(locale: any) {\n        this.locale = locale;\n        this._localeChanges.next();\n    }\n\n    /**\n     * Compares two dates.\n     * @param first The first date to compare.\n     * @param second The second date to compare.\n     * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n     *     a number greater than 0 if the first date is later.\n     */\n    compareDate(first: D, second: D): number {\n        return (\n            this.getYear(first) - this.getYear(second) ||\n            this.getMonth(first) - this.getMonth(second) ||\n            this.getDate(first) - this.getDate(second) ||\n            this.getHours(first) - this.getHours(second) ||\n            this.getMinutes(first) - this.getMinutes(second)\n        );\n    }\n\n    /**\n     * Checks if two dates are equal.\n     * @param first The first date to check.\n     * @param second The second date to check.\n     * @returns Whether the two dates are equal.\n     *     Null dates are considered equal to other null dates.\n     */\n    sameDate(first: D | null, second: D | null): boolean {\n        if (first && second) {\n            const firstValid = this.isValid(first);\n            const secondValid = this.isValid(second);\n            if (firstValid && secondValid) {\n                return !this.compareDate(first, second);\n            }\n            return firstValid === secondValid;\n        }\n        return first === second;\n    }\n\n    /**\n     * Clamp the given date between min and max dates.\n     * @param date The date to clamp.\n     * @param min The minimum value to allow. If null or omitted no min is enforced.\n     * @param max The maximum value to allow. If null or omitted no max is enforced.\n     * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n     *     otherwise `date`.\n     */\n    clampDate(date: D, min?: D | null, max?: D | null): D {\n        if (min && this.compareDate(date, min) < 0) {\n            return min;\n        }\n        if (max && this.compareDate(date, max) > 0) {\n            return max;\n        }\n        return date;\n    }\n}\n","import {\n    Component,\n    ViewEncapsulation,\n    ChangeDetectionStrategy,\n    AfterContentInit,\n    Input,\n    Output,\n    EventEmitter,\n    ViewChild,\n    ChangeDetectorRef,\n    Optional\n} from '@angular/core';\nimport {DateAdapter} from '../datetime/date-adapter';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {createMissingDateImplError} from '../datetime/datepicker-errors';\nimport {D} from '../datetime/date-formats';\nimport {CalendarBodyComponent, HcCalendarCell} from '../calendar-body/calendar-body.component';\n\nexport const yearsPerPage = 24;\n\nexport const yearsPerRow = 4;\n\n@Component({\n    selector: 'hc-multi-year-view',\n    templateUrl: './multi-year-view.component.html',\n    exportAs: 'hcMultiYearView',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class MultiYearViewComponent implements AfterContentInit {\n    /** The date to display in this multi-year view (everything other than the year is ignored). */\n    @Input()\n    get activeDate(): D {\n        return this._activeDate;\n    }\n    set activeDate(value: D) {\n        const oldActiveDate = this._activeDate;\n        const validDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today();\n        this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n        if (\n            Math.floor(this._dateAdapter.getYear(oldActiveDate) / yearsPerPage) !==\n            Math.floor(this._dateAdapter.getYear(this._activeDate) / yearsPerPage)\n        ) {\n            this._init();\n        }\n    }\n    private _activeDate: D;\n\n    /** The currently selected date. */\n    @Input()\n    get selected(): D | null {\n        return this._selected;\n    }\n    set selected(value: D | null) {\n        this._selected = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n        this._selectedYear = this._selected && this._dateAdapter.getYear(this._selected);\n    }\n    private _selected: D | null;\n\n    /** The minimum selectable date. */\n    @Input()\n    get minDate(): D | null {\n        return this._minDate;\n    }\n    set minDate(value: D | null) {\n        this._minDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n    }\n    private _minDate: D | null;\n\n    /** The maximum selectable date. */\n    @Input()\n    get maxDate(): D | null {\n        return this._maxDate;\n    }\n    set maxDate(value: D | null) {\n        this._maxDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n    }\n    private _maxDate: D | null;\n\n    /** A function used to filter which dates are selectable. */\n    @Input()\n    dateFilter: (date: D) => boolean;\n\n    /** Emits when a new year is selected. */\n    @Output()\n    readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n    /** Emits the selected year. This doesn't imply a change on the selected date */\n    @Output()\n    readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n    /** Emits when any date is activated. */\n    @Output()\n    readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n    /** The body of calendar table */\n    @ViewChild(CalendarBodyComponent)\n    _hcCalendarBody: CalendarBodyComponent;\n\n    /** Grid of calendar cells representing the currently displayed years. */\n    _years: HcCalendarCell[][];\n\n    /** The year that today falls on. */\n    _todayYear: number;\n\n    /** The year of the selected date. Null if the selected date is null. */\n    _selectedYear: number | null;\n\n    constructor(\n        private _changeDetectorRef: ChangeDetectorRef,\n        @Optional() public _dateAdapter: DateAdapter<D>,\n        @Optional() private _dir?: Directionality\n    ) {\n        if (!this._dateAdapter) {\n            throw createMissingDateImplError('DateAdapter');\n        }\n\n        this._activeDate = this._dateAdapter.today();\n    }\n\n    ngAfterContentInit(): void {\n        this._init();\n    }\n\n    /** Initializes this multi-year view. */\n    _init(): void {\n        this._todayYear = this._dateAdapter.getYear(this._dateAdapter.today());\n        const activeYear = this._dateAdapter.getYear(this._activeDate);\n        const activeOffset = activeYear % yearsPerPage;\n        this._years = [];\n        for (let i = 0, row: number[] = []; i < yearsPerPage; i++) {\n            row.push(activeYear - activeOffset + i);\n            if (row.length === yearsPerRow) {\n                this._years.push(row.map(year => this._createCellForYear(year)));\n                row = [];\n            }\n        }\n        this._changeDetectorRef.markForCheck();\n    }\n\n    /** Handles when a new year is selected. */\n    _yearSelected(year: number): void {\n        this.yearSelected.emit(this._dateAdapter.createDate(year, 0, 1));\n        const month = this._dateAdapter.getMonth(this.activeDate);\n        const daysInMonth = this._dateAdapter.getNumDaysInMonth(this._dateAdapter.createDate(year, month, 1));\n        this.selectedChange.emit(\n            this._dateAdapter.createDate(year, month, Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth))\n        );\n    }\n\n    /** Handles keydown events on the calendar body when calendar is in multi-year view. */\n    _handleCalendarBodyKeydown(event: KeyboardEvent): void {\n        // disabled ones from being selected. This may not be ideal, we should look into whether\n        // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n        const oldActiveDate = this._activeDate;\n        const isRtl = this._isRtl();\n\n        switch (event.key) {\n            case 'ArrowLeft':\n                this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, isRtl ? 1 : -1);\n                break;\n            case 'ArrowRight':\n                this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, isRtl ? -1 : 1);\n                break;\n            case 'ArrowUp':\n                this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -yearsPerRow);\n                break;\n            case 'ArrowDown':\n                this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerRow);\n                break;\n            case 'Home':\n                this.activeDate = this._dateAdapter.addCalendarYears(\n                    this._activeDate,\n                    -this._dateAdapter.getYear(this._activeDate) % yearsPerPage\n                );\n                break;\n            case 'End':\n                this.activeDate = this._dateAdapter.addCalendarYears(\n                    this._activeDate,\n                    yearsPerPage - (this._dateAdapter.getYear(this._activeDate) % yearsPerPage) - 1\n                );\n                break;\n            case 'PageUp':\n                this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -yearsPerPage * 10 : -yearsPerPage);\n                break;\n            case 'PageDown':\n                this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? yearsPerPage * 10 : yearsPerPage);\n                break;\n            case 'Enter':\n            case ' ':\n                this._yearSelected(this._dateAdapter.getYear(this._activeDate));\n                break;\n            default:\n                // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n                return;\n        }\n\n        if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n            this.activeDateChange.emit(this.activeDate);\n        }\n\n        this._focusActiveCell();\n        // Prevent unexpected default actions such as form submission.\n        event.preventDefault();\n    }\n\n    _getActiveCell(): number {\n        return this._dateAdapter.getYear(this.activeDate) % yearsPerPage;\n    }\n\n    /** Focuses the active cell after the microtask queue is empty. */\n    _focusActiveCell(): void {\n        this._hcCalendarBody._focusActiveCell();\n    }\n\n    /** Creates an hcCalendarCell for the given year. */\n    private _createCellForYear(year: number) {\n        const yearName = this._dateAdapter.getYearName(this._dateAdapter.createDate(year, 0, 1));\n        return new HcCalendarCell(year, yearName, yearName, this._shouldEnableYear(year));\n    }\n\n    /** Whether the given year is enabled. */\n    private _shouldEnableYear(year: number) {\n        // disable if the year is greater than maxDate lower than minDate\n        if (\n            year === undefined ||\n            year === null ||\n            (this.maxDate && year > this._dateAdapter.getYear(this.maxDate)) ||\n            (this.minDate && year < this._dateAdapter.getYear(this.minDate))\n        ) {\n            return false;\n        }\n\n        // enable if it reaches here and there's no filter defined\n        if (!this.dateFilter) {\n            return true;\n        }\n\n        const firstOfYear = this._dateAdapter.createDate(year, 0, 1);\n\n        // If any date in the year is enabled count the year as enabled.\n        for (let date = firstOfYear; this._dateAdapter.getYear(date) === year; date = this._dateAdapter.addCalendarDays(date, 1)) {\n            if (this.dateFilter(date)) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n    /**\n     * @param obj The object to check.\n     * @returns The given object if it is both a date instance and valid, otherwise null.\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    private _getValidDateOrNull(obj: any): D | null {\n        return this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj) ? obj : null;\n    }\n\n    /** Determines whether the user has the RTL layout direction. */\n    private _isRtl() {\n        return this._dir && this._dir.value === 'rtl';\n    }\n}\n","<table class=\"hc-calendar-table\">\n    <thead class=\"hc-calendar-table-header\">\n      <tr><th class=\"hc-calendar-table-header-divider\" colspan=\"4\"></th></tr>\n    </thead>\n    <tbody hc-calendar-body\n           [rows]=\"_years\"\n           [todayValue]=\"_todayYear\"\n           [selectedValue]=\"_selectedYear\"\n           [numCols]=\"4\"\n           [cellAspectRatio]=\"4 / 7\"\n           [activeCell]=\"_getActiveCell()\"\n           (selectedValueChange)=\"_yearSelected($event)\"\n           (keydown)=\"_handleCalendarBodyKeydown($event)\">\n    </tbody>\n  </table>\n  ","import {\n    Component,\n    ViewEncapsulation,\n    ChangeDetectionStrategy,\n    AfterContentInit,\n    Input,\n    Output,\n    EventEmitter,\n    ViewChild,\n    ChangeDetectorRef,\n    Optional,\n    Inject\n} from '@angular/core';\nimport {HcCalendarCellCssClasses, CalendarBodyComponent, HcCalendarCell} from '../calendar-body/calendar-body.component';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {createMissingDateImplError} from '../datetime/datepicker-errors';\nimport {D, HC_DATE_FORMATS, HcDateFormats} from '../datetime/date-formats';\nimport {DateAdapter} from '../datetime/date-adapter';\n\nconst DAYS_PER_WEEK = 7;\n\n/**\n * An internal component used to display a single month in the datepicker.\n * @docs-private\n */\n@Component({\n    selector: 'hc-month-view',\n    templateUrl: './month-view.component.html',\n    exportAs: 'hcMonthView',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class MonthViewComponent implements AfterContentInit {\n    /**\n     * The date to display in this month view (everything other than the month and year is ignored).\n     */\n    @Input()\n    get activeDate(): D {\n        return this._activeDate;\n    }\n    set activeDate(value: D) {\n        const oldActiveDate = this._activeDate;\n        const validDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today();\n        this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n        if (!this._hasSameMonthAndYear(oldActiveDate, this._activeDate)) {\n            this._init();\n        }\n    }\n    private _activeDate: D;\n\n    /** The currently selected date. */\n    @Input()\n    get selected(): D | null {\n        return this._selected;\n    }\n    set selected(value: D | null) {\n        this._selected = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n        this._selectedDate = this._getDateInCurrentMonth(this._selected);\n    }\n    private _selected: D | null;\n\n    /** The minimum selectable date. */\n    @Input()\n    get minDate(): D | null {\n        return this._minDate;\n    }\n    set minDate(value: D | null) {\n        this._minDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n    }\n    private _minDate: D | null;\n\n    /** The maximum selectable date. */\n    @Input()\n    get maxDate(): D | null {\n        return this._maxDate;\n    }\n    set maxDate(value: D | null) {\n        this._maxDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n    }\n    private _maxDate: D | null;\n\n    /** Function used to filter which dates are selectable. */\n    @Input()\n    dateFilter: (date: D) => boolean;\n\n    /** Function that can be used to add custom CSS classes to dates. */\n    @Input()\n    dateClass: (date: D) => HcCalendarCellCssClasses;\n\n    /** Emits when a new date is selected. */\n    @Output()\n    readonly selectedChange: EventEmitter<D | null> = new EventEmitter<D | null>();\n\n    /** Emits when any date is selected. */\n    @Output()\n    readonly _userSelection: EventEmitter<void> = new EventEmitter<void>();\n\n    /** Emits when any date is activated. */\n    @Output()\n    readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n    /** The body of calendar table */\n    @ViewChild(CalendarBodyComponent)\n    _hcCalendarBody: CalendarBodyComponent;\n\n    /** The label for this month (e.g. \"January 2017\"). */\n    _monthLabel: string;\n\n    /** Grid of calendar cells representing the dates of the month. */\n    _weeks: HcCalendarCell[][];\n\n    /** The number of blank cells in the first row before the 1st of the month. */\n    _firstWeekOffset: number;\n\n    /**\n     * The date of the month that the currently selected Date falls on.\n     * Null if the currently selected Date is in another month.\n     */\n    _selectedDate: number | null;\n\n    /** The date of the month that today falls on. Null if today is in another month. */\n    _todayDate: number | null;\n\n    /** The names of the weekdays. */\n    _weekdays: {long: string; narrow: string}[];\n\n    constructor(\n        private _changeDetectorRef: ChangeDetectorRef,\n        @Optional()\n        @Inject(HC_DATE_FORMATS)\n        private _dateFormats: HcDateFormats,\n        @Optional() public _dateAdapter: DateAdapter<D>,\n        @Optional() private _dir?: Directionality\n    ) {\n        if (!this._dateAdapter) {\n            throw createMissingDateImplError('DateAdapter');\n        }\n        if (!this._dateFormats) {\n            throw createMissingDateImplError('HC_DATE_FORMATS');\n        }\n\n        const firstDayOfWeek = this._dateAdapter.getFirstDayOfWeek();\n        const narrowWeekdays = this._dateAdapter.getDayOfWeekNames('short');\n        const longWeekdays = this._dateAdapter.getDayOfWeekNames('long');\n\n        // Rotate the labels for days of the week based on the configured first day of the week.\n        const weekdays = longWeekdays.map((long, i) => {\n            return {long, narrow: narrowWeekdays[i]};\n        });\n        this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));\n\n        this._activeDate = this._dateAdapter.today();\n    }\n\n    ngAfterContentInit(): void {\n        this._init();\n    }\n\n    /** Handles when a new date is selected. */\n    _dateSelected(date: number): void {\n        if (this._selectedDate !== date) {\n            const selectedYear = this._dateAdapter.getYear(this.activeDate);\n            const selectedMonth = this._dateAdapter.getMonth(this.activeDate);\n            const selectedDate = this._dateAdapter.createDate(selectedYear, selectedMonth, date);\n\n            if (this._selected) {\n                selectedDate.setHours(this._selected.getHours());\n                selectedDate.setMinutes(this._selected.getMinutes());\n            }\n\n            this.selectedChange.emit(selectedDate);\n        }\n\n        this._userSelection.emit();\n    }\n\n    /** Handles keydown events on the calendar body when calendar is in month view. */\n    _handleCalendarBodyKeydown(event: KeyboardEvent): void {\n        // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n        // disabled ones from being selected. This may not be ideal, we should look into whether\n        // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n        const oldActiveDate = this._activeDate;\n        const isRtl = this._isRtl();\n\n        switch (event.key) {\n            case 'ArrowLeft':\n                this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, isRtl ? 1 : -1);\n                break;\n            case 'ArrowRight':\n                this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, isRtl ? -1 : 1);\n                break;\n            case 'ArrowUp':\n                this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, -7);\n                break;\n            case 'ArrowDown':\n                this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 7);\n                break;\n            case 'Home':\n                this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 1 - this._dateAdapter.getDate(this._activeDate));\n                break;\n            case 'End':\n                this.activeDate = this._dateAdapter.addCalendarDays(\n                    this._activeDate,\n                    this._dateAdapter.getNumDaysInMonth(this._activeDate) - this._dateAdapter.getDate(this._activeDate)\n                );\n                break;\n            case 'PageUp':\n                this.activeDate = event.altKey\n                    ? this._dateAdapter.addCalendarYears(this._activeDate, -1)\n                    : this._dateAdapter.addCalendarMonths(this._activeDate, -1);\n                break;\n            case 'PageDown':\n                this.activeDate = event.altKey\n                    ? this._dateAdapter.addCalendarYears(this._activeDate, 1)\n                    : this._dateAdapter.addCalendarMonths(this._activeDate, 1);\n                break;\n            case 'Enter':\n            case ' ':\n                if (!this.dateFilter || this.dateFilter(this._activeDate)) {\n                    this._dateSelected(this._dateAdapter.getDate(this._activeDate));\n                    this._userSelection.emit();\n                    // Prevent unexpected default actions such as form submission.\n                    event.preventDefault();\n                }\n                return;\n            default:\n                // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n                return;\n        }\n\n        if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n            this.activeDateChange.emit(this.activeDate);\n        }\n\n        this._focusActiveCell();\n        // Prevent unexpected default actions such as form submission.\n        event.preventDefault();\n    }\n\n    /** Initializes this month view. */\n    _init(): void {\n        this._selectedDate = this._getDateInCurrentMonth(this.selected);\n        this._todayDate = this._getDateInCurrentMonth(this._dateAdapter.today());\n        this._monthLabel = this._dateAdapter.getMonthNames('short')[this._dateAdapter.getMonth(this.activeDate)].toLocaleUpperCase();\n\n        const firstOfMonth = this._dateAdapter.createDate(\n            this._dateAdapter.getYear(this.activeDate),\n            this._dateAdapter.getMonth(this.activeDate),\n            1\n        );\n        this._firstWeekOffset =\n            (DAYS_PER_WEEK + this._dateAdapter.getDayOfWeek(firstOfMonth) - this._dateAdapter.getFirstDayOfWeek()) % DAYS_PER_WEEK;\n\n        this._createWeekCells();\n        this._changeDetectorRef.markForCheck();\n    }\n\n    /** Focuses the active cell after the microtask queue is empty. */\n    _focusActiveCell(): void {\n        this._hcCalendarBody._focusActiveCell();\n    }\n\n    /** Creates hcCalendarCells for the dates in this month. */\n    private _createWeekCells() {\n        const daysInMonth = this._dateAdapter.getNumDaysInMonth(this.activeDate);\n        const dateNames = this._dateAdapter.getDateNames();\n        this._weeks = [[]];\n        for (let i = 0, cell = this._firstWeekOffset; i < daysInMonth; i++, cell++) {\n            if (cell === DAYS_PER_WEEK) {\n                this._weeks.push([]);\n                cell = 0;\n            }\n            const date = this._dateAdapter.createDate(\n                this._dateAdapter.getYear(this.activeDate),\n                this._dateAdapter.getMonth(this.activeDate),\n                i + 1\n            );\n            const enabled = this._shouldEnableDate(date);\n            const ariaLabel = this._dateAdapter.format(date, this._dateFormats.display.dateA11yLabel);\n            const cellClasses = this.dateClass ? this.dateClass(date) : undefined;\n\n            this._weeks[this._weeks.length - 1].push(new HcCalendarCell(i + 1, dateNames[i], ariaLabel, enabled, cellClasses));\n        }\n    }\n\n    /** Date filter for the month */\n    private _shouldEnableDate(date: D): boolean {\n        return (\n            !!date &&\n            (!this.dateFilter || this.dateFilter(date)) &&\n            (!this.minDate || this._dateAdapter.compareDate(date, this.minDate) >= 0) &&\n            (!this.maxDate || this._dateAdapter.compareDate(date, this.maxDate) <= 0)\n        );\n    }\n\n    /**\n     * Gets the date in this month that the given Date falls on.\n     * Returns null if the given Date is in another month.\n     */\n    private _getDateInCurrentMonth(date: D | null): number | null {\n        return date && this._hasSameMonthAndYear(date, this.activeDate) ? this._dateAdapter.getDate(date) : null;\n    }\n\n    /** Checks whether the 2 dates are non-null and fall within the same month of the same year. */\n    private _hasSameMonthAndYear(d1: D | null, d2: D | null): boolean {\n        return !!(\n            d1 &&\n            d2 &&\n            this._dateAdapter.getMonth(d1) === this._dateAdapter.getMonth(d2) &&\n            this._dateAdapter.getYear(d1) === this._dateAdapter.getYear(d2)\n        );\n    }\n\n    /**\n     * @param obj The object to check.\n     * @returns The given object if it is both a date instance and valid, otherwise null.\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    private _getValidDateOrNull(obj: any): D | null {\n        return this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj) ? obj : null;\n    }\n\n    /** Determines whether the user has the RTL layout direction. */\n    private _isRtl() {\n        return this._dir && this._dir.value === 'rtl';\n    }\n}\n","<table class=\"hc-calendar-table\">\n    <thead class=\"hc-calendar-table-header\">\n        <tr>\n            @for (day of _weekdays; track day) {\n            <th [attr.aria-label]=\"day.long\">{{ day.narrow }}</th>\n            }\n        </tr>\n        <tr>\n            <th class=\"hc-calendar-table-header-divider\" colspan=\"7\" aria-hidden=\"true\"></th>\n        </tr>\n    </thead>\n    <tbody\n        hc-calendar-body\n        [label]=\"_monthLabel\"\n        [rows]=\"_weeks\"\n        [todayValue]=\"_todayDate\"\n        [selectedValue]=\"_selectedDate\"\n        [labelMinRequiredCells]=\"3\"\n        [activeCell]=\"_dateAdapter.getDate(activeDate) - 1\"\n        (selectedValueChange)=\"_dateSelected($event)\"\n        (keydown)=\"_handleCalendarBodyKeydown($event)\"\n    ></tbody>\n</table>\n","import {\n    Component,\n    ViewEncapsulation,\n    ChangeDetectionStrategy,\n    AfterContentInit,\n    Input,\n    Output,\n    EventEmitter,\n    ViewChild,\n    ChangeDetectorRef,\n    Optional,\n    Inject\n} from '@angular/core';\nimport {CalendarBodyComponent, HcCalendarCell} from '../calendar-body/calendar-body.component';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {createMissingDateImplError} from '../datetime/datepicker-errors';\nimport {D, HC_DATE_FORMATS, HcDateFormats} from '../datetime/date-formats';\nimport {DateAdapter} from '../datetime/date-adapter';\n\n/**\n * An internal component used to display a single year in the datepicker.\n * @docs-private\n */\n@Component({\n    selector: 'hc-year-view',\n    templateUrl: './year-view.component.html',\n    exportAs: 'hcYearView',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class YearViewComponent implements AfterContentInit {\n    /** The date to display in this year view (everything other than the year is ignored). */\n    @Input()\n    get activeDate(): D {\n        return this._activeDate;\n    }\n    set activeDate(value: D) {\n        const oldActiveDate = this._activeDate;\n        const validDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today();\n        this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n        if (this._dateAdapter.getYear(oldActiveDate) !== this._dateAdapter.getYear(this._activeDate)) {\n            this._init();\n        }\n    }\n    private _activeDate: D;\n\n    /** The currently selected date. */\n    @Input()\n    get selected(): D | null {\n        return this._selected;\n    }\n    set selected(value: D | null) {\n        this._selected = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n        this._selectedMonth = this._getMonthInCurrentYear(this._selected);\n    }\n    private _selected: D | null;\n\n    /** The minimum selectable date. */\n    @Input()\n    get minDate(): D | null {\n        return this._minDate;\n    }\n    set minDate(value: D | null) {\n        this._minDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n    }\n    private _minDate: D | null;\n\n    /** The maximum selectable date. */\n    @Input()\n    get maxDate(): D | null {\n        return this._maxDate;\n    }\n    set maxDate(value: D | null) {\n        this._maxDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n    }\n    private _maxDate: D | null;\n\n    /** A function used to filter which dates are selectable. */\n    @Input()\n    dateFilter: (date: D) => boolean;\n\n    /** Emits when a new month is selected. */\n    @Output()\n    readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n    /** Emits the selected month. This doesn't imply a change on the selected date */\n    @Output()\n    readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n    /** Emits when any date is activated. */\n    @Output()\n    readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n    /** The body of calendar table */\n    @ViewChild(CalendarBodyComponent)\n    _hcCalendarBody: CalendarBodyComponent;\n\n    /** Grid of calendar cells representing the months of the year. */\n    _months: HcCalendarCell[][];\n\n    /** The label for this year (e.g. \"2017\"). */\n    _yearLabel: string;\n\n    /** The month in this year that today falls on. Null if today is in a different year. */\n    _todayMonth: number | null;\n\n    /**\n     * The month in this year that the selected Date falls on.\n     * Null if the selected Date is in a different year.\n     */\n    _selectedMonth: number | null;\n\n    constructor(\n        private _changeDetectorRef: ChangeDetectorRef,\n        @Optional()\n        @Inject(HC_DATE_FORMATS)\n        private _dateFormats: HcDateFormats,\n        @Optional() public _dateAdapter: DateAdapter<D>,\n        @Optional() private _dir?: Directionality\n    ) {\n        if (!this._dateAdapter) {\n            throw createMissingDateImplError('DateAdapter');\n        }\n        if (!this._dateFormats) {\n            throw createMissingDateImplError('HC_DATE_FORMATS');\n        }\n\n        this._activeDate = this._dateAdapter.today();\n    }\n\n    ngAfterContentInit(): void {\n        this._init();\n    }\n\n    /** Handles when a new month is selected. */\n    _monthSelected(month: number): void {\n        const normalizedDate = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1);\n\n        this.monthSelected.emit(normalizedDate);\n\n        const daysInMonth = this._dateAdapter.getNumDaysInMonth(normalizedDate);\n\n        this.selectedChange.emit(\n            this._dateAdapter.createDate(\n                this._dateAdapter.getYear(this.activeDate),\n                month,\n                Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth)\n            )\n        );\n    }\n\n    /** Handles keydown events on the calendar body when calendar is in year view. */\n    _handleCalendarBodyKeydown(event: KeyboardEvent): void {\n        // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n        // disabled ones from being selected. This may not be ideal, we should look into whether\n        // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n        const oldActiveDate = this._activeDate;\n        const isRtl = this._isRtl();\n\n        switch (event.key) {\n            case 'ArrowLeft':\n                this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, isRtl ? 1 : -1);\n                break;\n            case 'ArrowRight':\n                this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, isRtl ? -1 : 1);\n                break;\n            case 'ArrowUp':\n                this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -4);\n                break;\n            case 'ArrowDown':\n                this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 4);\n                break;\n            case 'Home':\n                this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -this._dateAdapter.getMonth(this._activeDate));\n                break;\n            case 'End':\n                this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 11 - this._dateAdapter.getMonth(this._activeDate));\n                break;\n            case 'PageUp':\n                this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -10 : -1);\n                break;\n            case 'PageDown':\n                this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? 10 : 1);\n                break;\n            case 'Enter':\n            case ' ':\n                this._monthSelected(this._dateAdapter.getMonth(this._activeDate));\n                break;\n            default:\n                // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n                return;\n        }\n\n        if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n            this.activeDateChange.emit(this.activeDate);\n        }\n\n        this._focusActiveCell();\n        // Prevent unexpected default actions such as form submission.\n        event.preventDefault();\n    }\n\n    /** Initializes this year view. */\n    _init(): void {\n        this._selectedMonth = this._getMonthInCurrentYear(this.selected);\n        this._todayMonth = this._getMonthInCurrentYear(this._dateAdapter.today());\n        this._yearLabel = this._dateAdapter.getYearName(this.activeDate);\n\n        const monthNames = this._dateAdapter.getMonthNames('short');\n        // First row of months only contains 5 elements so we can fit the year label on the same row.\n        this._months = [\n            [0, 1, 2, 3],\n            [4, 5, 6, 7],\n            [8, 9, 10, 11]\n        ].map(row => row.map(month => this._createCellForMonth(month, monthNames[month])));\n        this._changeDetectorRef.markForCheck();\n    }\n\n    /** Focuses the active cell after the microtask queue is empty. */\n    _focusActiveCell(): void {\n        this._hcCalendarBody._focusActiveCell();\n    }\n\n    /**\n     * Gets the month in this year that the given Date falls on.\n     * Returns null if the given Date is in another year.\n     */\n    private _getMonthInCurrentYear(date: D | null) {\n        return date && this._dateAdapter.getYear(date) === this._dateAdapter.getYear(this.activeDate)\n            ? this._dateAdapter.getMonth(date)\n            : null;\n    }\n\n    /** Creates an hcCalendarCell for the given month. */\n    private _createCellForMonth(month: number, monthName: string) {\n        const ariaLabel = this._dateAdapter.format(\n            this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1),\n            this._dateFormats.display.monthYearA11yLabel\n        );\n        return new HcCalendarCell(month, monthName.toLocaleUpperCase(), ariaLabel, this._shouldEnableMonth(month));\n    }\n\n    /** Whether the given month is enabled. */\n    private _shouldEnableMonth(month: number) {\n        const activeYear = this._dateAdapter.getYear(this.activeDate);\n\n        if (\n            month === undefined ||\n            month === null ||\n            this._isYearAndMonthAfterMaxDate(activeYear, month) ||\n            this._isYearAndMonthBeforeMinDate(activeYear, month)\n        ) {\n            return false;\n        }\n\n        if (!this.dateFilter) {\n            return true;\n        }\n\n        const firstOfMonth = this._dateAdapter.createDate(activeYear, month, 1);\n\n        // If any date in the month is enabled count the month as enabled.\n        for (let date = firstOfMonth; this._dateAdapter.getMonth(date) === month; date = this._dateAdapter.addCalendarDays(date, 1)) {\n            if (this.dateFilter(date)) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n    /**\n     * Tests whether the combination month/year is after this.maxDate, considering\n     * just the month and year of this.maxDate\n     */\n    private _isYearAndMonthAfterMaxDate(year: number, month: number) {\n        if (this.maxDate) {\n            const maxYear = this._dateAdapter.getYear(this.maxDate);\n            const maxMonth = this._dateAdapter.getMonth(this.maxDate);\n\n            return year > maxYear || (year === maxYear && month > maxMonth);\n        }\n\n        return false;\n    }\n\n    /**\n     * Tests whether the combination month/year is before this.minDate, considering\n     * just the month and year of this.minDate\n     */\n    private _isYearAndMonthBeforeMinDate(year: number, month: number) {\n        if (this.minDate) {\n            const minYear = this._dateAdapter.getYear(this.minDate);\n            const minMonth = this._dateAdapter.getMonth(this.minDate);\n\n            return year < minYear || (year === minYear && month < minMonth);\n        }\n\n        return false;\n    }\n\n    /**\n     * @param obj The object to check.\n     * @returns The given object if it is both a date instance and valid, otherwise null.\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    private _getValidDateOrNull(obj: any): D | null {\n        return this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj) ? obj : null;\n    }\n\n    /** Determines whether the user has the RTL layout direction. */\n    private _isRtl() {\n        return this._dir && this._dir.value === 'rtl';\n    }\n}\n","<table class=\"hc-calendar-table\">\n  <thead class=\"hc-calendar-table-header\">\n    <tr><th class=\"hc-calendar-table-header-divider\" colspan=\"4\"></th></tr>\n  </thead>\n  <tbody hc-calendar-body\n         [label]=\"_yearLabel\"\n         [rows]=\"_months\"\n         [todayValue]=\"_todayMonth\"\n         [selectedValue]=\"_selectedMonth\"\n         [labelMinRequiredCells]=\"2\"\n         [numCols]=\"4\"\n         [cellAspectRatio]=\"4 / 7\"\n         [activeCell]=\"_dateAdapter.getMonth(activeDate)\"\n         (selectedValueChange)=\"_monthSelected($event)\"\n         (keydown)=\"_handleCalendarBodyKeydown($event)\">\n  </tbody>\n</table>\n","/**\n * @license\n * Copyright Health Catalyst All Rights Reserved.\n *\n * Use of this source code is governed by an Apache-2.0 license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/HealthCatalyst/Fabric.Cashmere/dev/LICENSE\n */\n\nimport {Injectable} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/** Datepicker data that requires internationalization. */\n@Injectable({providedIn: 'root'})\nexport class HcDatepickerIntl {\n    /**\n     * Stream that emits whenever the labels here are changed. Use this to notify\n     * components if the labels have changed after initialization.\n     */\n    readonly changes: Subject<void> = new Subject<void>();\n\n    /** A label for the calendar popup (used by screen readers). */\n    calendarLabel = 'Calendar';\n\n    /** A label for the button used to open the calendar popup (used by screen readers). */\n    openCalendarLabel = 'Open calendar';\n\n    /** A label for the current month button (used by screen readers). */\n    currentMonthLabel = 'Current month';\n\n    /** A label for the previous month button (used by screen readers). */\n    prevMonthLabel = 'Previous month';\n\n    /** A label for the next month button (used by screen readers). */\n    nextMonthLabel = 'Next month';\n\n    /** A label for the previous year button (used by screen readers). */\n    prevYearLabel = 'Previous year';\n\n    /** A label for the next year button (used by screen readers). */\n    nextYearLabel = 'Next year';\n\n    /** A label for the previous multi-year button (used by screen readers). */\n    prevMultiYearLabel = 'Previous 20 years';\n\n    /** A label for the next multi-year button (used by screen readers). */\n    nextMultiYearLabel = 'Next 20 years';\n\n    /** A label for the 'switch to month view' button (used by screen readers). */\n    switchToMonthViewLabel = 'Choose date';\n\n    /** A label for the 'switch to year view' button (used by screen readers). */\n    switchToMultiYearViewLabel = 'Choose month and year';\n\n    /** A label for the 'jump to the current date' button (used by screen readers). */\n    switchToTodayLabel = 'Jump to the current date';\n}\n","import {\n    Directive,\n    ElementRef,\n    HostBinding,\n    HostListener,\n    Input,\n    Optional,\n    Self,\n    forwardRef,\n    Output,\n    EventEmitter,\n    AfterViewInit,\n    OnDestroy,\n    ChangeDetectorRef\n} from '@angular/core';\nimport {parseBooleanAttribute} from '../util';\nimport {HcFormControlComponent} from '../form-field/hc-form-control.component';\nimport {FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {delay, takeUntil} from 'rxjs/operators';\nimport {Subject} from 'rxjs';\n\nexport function getUnsupportedHCInputType(type: string): Error {\n    return new Error(`hc-input doesn't support the following type: ${type}`);\n}\n\nexport function validateValidationType(type: string): void {\n    if (supportedValidation.indexOf(type) < 0) {\n        throw Error('Unsupported validation type: ' + type);\n    }\n}\n\nlet uniqueId = 1;\n\nconst unsupportedTypes = ['button', 'checkbox', 'file', 'hidden', 'image', 'radio', 'reset'];\nconst supportedValidation = ['onBlur', 'onChange'];\n\n/** Directive that allows a native input to work inside a HcFormFieldComponent */\n@Directive({\n    selector: '[hcInput]',\n    providers: [{ provide: HcFormControlComponent, useExisting: forwardRef(() => InputDirective) }],\n    standalone: false\n})\nexport class InputDirective extends HcFormControlComponent implements AfterViewInit, OnDestroy {\n    private _focused = false;\n    private _mobile = false;\n    private _validationType = 'onBlur';\n    private _uniqueInputId = `hc-input-${uniqueId++}`;\n    private _form: NgForm | FormGroupDirective | null;\n    private _unsubscribe = new Subject<void>();\n\n    _componentId = this._uniqueInputId;\n\n    /** Input type of the element. */\n    @Input()\n    get type(): string {\n        return this._type;\n    }\n\n    set type(type: string) {\n        if (unsupportedTypes.indexOf(type) > -1) {\n            throw getUnsupportedHCInputType(type);\n        }\n        this._type = type;\n\n        // textArea doesn't have type property\n        if (!this._isTextArea()) {\n            this._elementRef.nativeElement.type = this.type;\n        }\n    }\n\n    private _type = 'input';\n\n    /** Element id. */\n    @Input()\n    get id(): string {\n        return this._componentId || this._uniqueInputId;\n    }\n\n    set id(idVal: string) {\n        this._componentId = idVal ? idVal : this._uniqueInputId;\n    }\n\n    /** Sets input element as readonly. */\n    @Input()\n    get readonly(): boolean {\n        return this._readonly;\n    }\n\n    set readonly(isReadOnly: boolean) {\n        this._readonly = parseBooleanAttribute(isReadOnly);\n    }\n\n    private _readonly = false;\n\n    /** Disables the input element. */\n    @Input()\n    get disabled(): boolean {\n        if (this._ngControl && this._ngControl.disabled) {\n            return this._ngControl.disabled;\n        }\n        return this._isDisabled;\n    }\n\n    set disabled(disabledInput: boolean) {\n        this._isDisabled = parseBooleanAttribute(disabledInput);\n\n        if (this._focused) {\n            this._focused = false;\n            // TODO: trigger state change\n        }\n    }\n\n    /** Sets required attribute. */\n    @Input()\n    get required(): boolean {\n        return this._isRequired;\n    }\n\n    set required(requiredInput: boolean) {\n        this._isRequired = parseBooleanAttribute(requiredInput);\n    }\n\n    /** Fires when the input either gets focus or loses focus. */\n    @Output() focusChanged = new EventEmitter<boolean>();\n\n    /** Fires on either a `change` or `input` event type from the input. */\n    @Output() inputEvent = new EventEmitter<Event>();\n\n    @HostBinding('class.hc-input')\n    _hostHcInputClass = true;\n\n    @HostBinding('attr.id')\n    get _hostId(): string {\n        return this._componentId || this._uniqueInputId;\n    }\n\n    @HostBinding('readonly')\n    get _hostReadOnly(): boolean {\n        return this.readonly;\n    }\n\n    @HostBinding('disabled')\n    get _hostDisabled(): boolean {\n        return this.disabled;\n    }\n\n    @HostBinding('required')\n    get _hostRequired(): boolean {\n        return this._isRequired;\n    }\n\n    @HostListener('blur')\n    _onBlur(): void {\n        if (this._ngControl && this._ngControl.control) {\n            this._ngControl.control.markAsTouched();\n        }\n        this._changeFocus(false);\n        this._updateErrorState();\n    }\n\n    @HostListener('focus')\n    _onFocus(): void {\n        this._changeFocus(true);\n    }\n\n    /** Sets value of the input element */\n    @Input()\n    get value(): string {\n        return this._elementRef.nativeElement.value;\n    }\n\n    set value(value: string) {\n        if (value !== this.value) {\n            this._elementRef.nativeElement.value = value;\n        }\n    }\n\n    @HostListener('input', ['$event'])\n    _inputEvent(event: Event): void {\n        if (this.validationType === 'onChange') {\n            this._ngControl.control?.markAsTouched();\n        }\n\n        this.inputEvent.emit(event);\n    }\n\n    @HostListener('change', ['$event'])\n    _changeEvent(event: Event): void {\n        this.inputEvent.emit(event);\n        if (this.validationType === 'onChange') {\n            this._updateErrorState();\n        }\n    }\n\n    /** Determines when validation checks run. Choose from: `'onBlur' | 'onChange' |`. *Defaults to `onBlur`.* */\n    @Input()\n    get validationType(): string {\n        return this._validationType;\n    }\n\n    set validationType(type: string) {\n        validateValidationType(type);\n        this._validationType = type;\n    }\n\n    /** Sets whether the input should be sized for small screens (if true, overrides the `tight` param on FormField) */\n    @Input()\n    get mobile(): boolean {\n        return this._mobile;\n    }\n\n    set mobile(value: boolean) {\n        if (value !== this._mobile) {\n            this._mobile = value;\n            this.mobileChange.emit(this._mobile);\n        }\n    }\n\n    /** Output for two-way binding on the `mobile` param. Emits when the property is updated */\n    @Output()\n    mobileChange = new EventEmitter<boolean>();\n\n    ngAfterViewInit(): void {\n        if (this._ngControl?.statusChanges) {\n            // delay() is necessary to make sure any form or control state changes have been applied before rechecking error states\n            this._ngControl.statusChanges.pipe(delay(0), takeUntil(this._unsubscribe)).subscribe(() => this._updateErrorState());\n        }\n        if (this._form) {\n            this._form.ngSubmit.pipe(takeUntil(this._unsubscribe)).subscribe(() => this._updateErrorState());\n        }\n\n        /** Monkey patching the markAsTouched function to call error state checking because there is not an event for touched changes */\n        if (this._ngControl && this._ngControl.control) {\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            const self = this;\n            const originalMarkMethod = this._ngControl.control.markAsTouched;\n            this._ngControl.control.markAsTouched = function () {\n                // eslint-disable-next-line prefer-rest-params\n                originalMarkMethod.apply(this, arguments);\n                self._updateErrorState();\n            };\n\n            const originalMarkAllMethod = this._ngControl.control.markAllAsTouched;\n            this._ngControl.control.markAllAsTouched = function () {\n                // eslint-disable-next-line prefer-rest-params\n                originalMarkAllMethod.apply(this, arguments);\n                self._updateErrorState();\n            };\n        }\n    }\n\n    constructor(\n        private _elementRef: ElementRef,\n        @Optional() _parentForm: NgForm,\n        @Optional() _parentFormGroup: FormGroupDirective,\n        @Optional()\n        @Self()\n        public _ngControl: NgControl,\n        private _changeRef: ChangeDetectorRef\n    ) {\n        super();\n\n        this._form = _parentForm || _parentFormGroup;\n    }\n\n    /** Sets the focus on the input element */\n    focus(): void {\n        this._elementRef.nativeElement.focus();\n    }\n\n    private _changeFocus(focused: boolean) {\n        if (this._focused !== focused && !this.readonly) {\n            this._focused = focused;\n            this.focusChanged.emit(focused);\n        }\n    }\n\n    private _isTextArea(): boolean {\n        return this._elementRef.nativeElement.nodeName.toLowerCase() !== 'textarea';\n    }\n\n    private _updateErrorState() {\n        const oldState = this._errorState;\n        const newState = !!(\n            this._ngControl &&\n            this._ngControl.invalid &&\n            (this._ngControl.touched || (this._form && this._form.submitted))\n        );\n\n        if (oldState !== newState) {\n            this._errorState = newState;\n            this._changeRef.detectChanges();\n        }\n    }\n\n    ngOnDestroy(): void {\n        this._unsubscribe.next();\n        this._unsubscribe.complete();\n    }\n}\n","import {Component, HostBinding, ViewEncapsulation} from '@angular/core';\n\n/** Single error to be shown under HcFormFieldComponent */\n@Component({\n    selector: 'hc-error',\n    template: '<ng-content></ng-content>',\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class HcErrorComponent {\n    @HostBinding('class.hc-error')\n    _hostClass = true;\n}\n","import {Directive, HostBinding} from '@angular/core';\n\n/** Position an element at the front of HcFormFieldComponent */\n@Directive({\n    selector: '[hcPrefix]',\n    standalone: false\n})\nexport class HcPrefixDirective {\n    @HostBinding('class.hc-prefix')\n    _hostHcPrefixClass = true;\n}\n","import {Directive, HostBinding} from '@angular/core';\n\n/** Position an element at the end of HcFormFieldComponent */\n@Directive({\n    selector: '[hcSuffix]',\n    standalone: false\n})\nexport class HcSuffixDirective {\n    @HostBinding('class.hc-suffix')\n    _hostHcSuffixClass = true;\n}\n","import {Component, ViewEncapsulation} from '@angular/core';\n\n/** Label for HcFormFieldComponent */\n@Component({\n    selector: 'hc-label',\n    template: '<ng-content></ng-content>',\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class HcLabelComponent {}\n","import {\n    AfterContentInit,\n    Component,\n    ContentChild,\n    ContentChildren,\n    HostBinding,\n    ViewEncapsulation,\n    Input,\n    ElementRef,\n    OnDestroy\n} from '@angular/core';\nimport type {QueryList} from '@angular/core';\nimport {HcFormControlComponent} from './hc-form-control.component';\nimport {HcErrorComponent} from './hc-error.component';\nimport {HcPrefixDirective} from './hc-prefix.directive';\nimport {HcSuffixDirective} from './hc-suffix.directive';\nimport {HcLabelComponent} from './hc-label.component';\nimport {parseBooleanAttribute} from '../util';\nimport {InputDirective} from '../input/input.directive';\nimport {takeUntil} from 'rxjs/operators';\nimport {Subject} from 'rxjs';\n\nexport function getControlMissing(): Error {\n    return new Error(`HcFormField must contain a component that extends HcFormControl`);\n}\n\n/** Container for form fields that applies Cashmere styling and behavior */\n@Component({\n    selector: 'hc-form-field',\n    templateUrl: './hc-form-field.component.html',\n    styleUrls: ['./hc-form-field.component.scss', '../input/input.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class HcFormFieldComponent implements AfterContentInit, OnDestroy {\n    private _inline = false;\n    private _tight = false;\n    private unsubscribe$ = new Subject<void>();\n\n    @ContentChild(HcFormControlComponent)\n    _control: HcFormControlComponent;\n    @ContentChildren(HcFormControlComponent)\n    _controls: QueryList<HcFormControlComponent>;\n    @ContentChildren(HcErrorComponent)\n    _errorChildren: QueryList<HcErrorComponent>;\n    @ContentChildren(HcPrefixDirective)\n    _prefixChildren: QueryList<HcPrefixDirective>;\n    @ContentChildren(HcSuffixDirective)\n    _suffixChildren: QueryList<HcSuffixDirective>;\n    @ContentChildren(InputDirective)\n    _inputChildren: QueryList<InputDirective>;\n    @ContentChildren(HcLabelComponent)\n    _labelChildren: QueryList<HcLabelComponent>;\n\n    @HostBinding('class.hc-form-field')\n    _classHcFormFieldClass = true;\n\n    @HostBinding('class.hc-form-field-disabled')\n    get _disabledClass(): boolean {\n        if (this._inputChildren.length > 0) {\n            return this._inputChildren.first.disabled;\n        } else {\n            return this._control._isDisabled;\n        }\n    }\n\n    /** Read-only boolean value of whether the form field has an associated label element */\n    get hasLabel(): boolean {\n        return !!this._labelChildren.length;\n    }\n\n    /** Read-only boolean value of whether the form field has an input element */\n    get hasInput(): boolean {\n        return !!this._inputChildren.length;\n    }\n\n    public _hasFocusedInput = false;\n\n    /** Whether the form elements should be stacked (default), or inline */\n    @Input()\n    get inline(): boolean {\n        return this._inline;\n    }\n\n    set inline(isInline: boolean) {\n        this._inline = parseBooleanAttribute(isInline);\n    }\n\n    /** If true, condense the default padding on all included elements and reduce the font size. *Defaults to `false`.*  */\n    @Input()\n    get tight(): boolean {\n        return this._tight;\n    }\n    set tight(value: boolean) {\n        this._tight = parseBooleanAttribute(value);\n        this._updateTightControls();\n    }\n\n    public _mobileInput = false;\n\n    constructor(private _elementRef: ElementRef<HTMLInputElement>) {}\n\n    ngAfterContentInit(): void {\n        if (!this._control) {\n            throw getControlMissing();\n        } else {\n            this._updateTightControls();\n            // Pass the current tight setting to controls that are added dynamically to the FormField\n            this._controls.changes.pipe(takeUntil(this.unsubscribe$)).subscribe(() => this._updateTightControls());\n        }\n\n        // wire up focus and mobile listeners for hcInputs\n        if (this.hasInput) {\n            this._inputChildren.first.focusChanged.pipe(takeUntil(this.unsubscribe$)).subscribe(focused => {\n                this._hasFocusedInput = focused;\n            });\n\n            this._mobileInput = this._inputChildren.first.mobile;\n\n            this._inputChildren.first.mobileChange.pipe(takeUntil(this.unsubscribe$)).subscribe(mobileVal => {\n                this._mobileInput = mobileVal;\n            });\n        }\n    }\n\n    iconClicked(): void {\n        if (this.hasInput) {\n            this._inputChildren.first.focus();\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.unsubscribe$.next();\n        this.unsubscribe$.complete();\n    }\n\n    _updateTightControls(): void {\n        if (this._controls) {\n            this._controls.forEach(control => {\n                control._tight = this._tight;\n            });\n        }\n    }\n\n    getConnectedOverlayOrigin(): ElementRef {\n        return this._elementRef;\n    }\n\n    _shouldShowErrorMessages(): boolean {\n        return (\n            this._control._errorState &&\n            ((this._errorChildren && this._errorChildren.length > 0) ||\n                (!!this._control._errorMessage && this._control._errorMessage.length > 0))\n        );\n    }\n}\n","<div\n    [class.hc-form-field-wrapper-inline]=\"inline\"\n    [class.hc-form-field-wrapper]=\"!inline\"\n    [class.hc-form-field-no-label]=\"!hasLabel\"\n    [class.hc-form-field-wrapper-tight]=\"tight\"\n>\n    @if (hasLabel) {\n    <span\n        [ngClass]=\"inline ? 'hc-form-field-label-wrapper-inline' : 'hc-form-field-label-wrapper'\"\n        [class.hc-form-field-label-wrapper-tight]=\"tight && !_mobileInput\"\n    >\n        <label\n            [ngClass]=\"inline ? 'hc-form-field-label-inline' : 'hc-form-field-label'\"\n            [class.hc-form-field-label-tight]=\"tight\"\n            [attr.for]=\"_control._componentId\"\n        >\n            <ng-content select=\"hc-label\"></ng-content>\n            @if (_control._isRequired && !_control._isDisabled) {\n            <span class=\"hc-required-marker\" aria-hidden=\"true\">&nbsp;*</span>\n            }\n        </label>\n    </span>\n    }\n    <div class=\"hc-form-field-content-wrapper\">\n        <ng-content select=\"hc-label-ext\"></ng-content>\n\n        @if (hasInput) {\n        <div\n            [class.hc-form-field-flex]=\"!inline\"\n            [class.hc-form-field-flex-inline]=\"inline\"\n            [class.hc-form-field-invalid]=\"_shouldShowErrorMessages()\"\n            [class.hc-form-field-flex-focused]=\"_hasFocusedInput\"\n        >\n            @if (_prefixChildren.length) {\n            <div class=\"hc-form-field-prefix\" (click)=\"iconClicked()\">\n                <ng-content select=\"[hcPrefix]\"></ng-content>\n            </div>\n            }\n            <div\n                #inputs\n                class=\"hc-form-field-infix\"\n                [class.hc-form-field-infix-tight]=\"tight && !_mobileInput\"\n                [class.hc-form-field-infix-mobile]=\"_mobileInput\"\n            >\n                <ng-content select=\"[hcInput]\"></ng-content>\n            </div>\n            @if (_suffixChildren.length) {\n            <div class=\"hc-form-field-suffix\" (click)=\"iconClicked()\">\n                <ng-content select=\"[hcSuffix]\"></ng-content>\n            </div>\n            }\n        </div>\n        } @if (!hasInput) {\n        <div\n            [class.hc-form-field-non-input]=\"!inline\"\n            [class.hc-form-field-non-input-inline]=\"inline\"\n            [class.hc-form-field-non-input-inline-tight]=\"inline && tight\"\n            [class.hc-form-field-invalid]=\"_shouldShowErrorMessages()\"\n        >\n            <ng-content></ng-content>\n        </div>\n        } @if (_shouldShowErrorMessages()) {\n        <div class=\"hc-form-field-error-wrapper\">\n            @if (_control._errorMessage && _control._errorMessage.length) {\n            <hc-error>{{ _control._errorMessage }}</hc-error>\n            }\n            <ng-content select=\"hc-error\"></ng-content>\n        </div>\n        }\n    </div>\n</div>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {Injectable} from '@angular/core';\n\n/** Builds a value string to help with matching objects */\nexport function _buildValueString(id: string | null, value: any): string {\n    if (id == null) {\n        return `${value}`;\n    }\n    if (value && typeof value === 'object') {\n        value = 'Object';\n    }\n    return `${id}: ${value}`.slice(0, 50);\n}\n\n@Injectable()\n/** @docs-private */\nexport class SelectService {\n    _optionMap: Map<string, any> = new Map<string, any>();\n    _optionIdCounter = 0; // tracks ids for select options\n\n    _registerOption(): string {\n        return (this._optionIdCounter++).toString();\n    }\n}\n","/* eslint-disable @angular-eslint/directive-selector */\nimport {Directive, Input, ElementRef, Optional, Host, Renderer2, OnDestroy} from '@angular/core';\nimport {SelectService, _buildValueString} from './select.service';\n\n/** Utility directive to hold objects used in ngValue */\n@Directive({\n    selector: 'option',\n    standalone: false\n})\nexport class HcOptionDirective implements OnDestroy {\n    /** id of the option element, use in identifying stringifyied values */\n    _id: string;\n\n    constructor(private _element: ElementRef, private _renderer: Renderer2, @Optional() @Host() private _selectService: SelectService) {\n        if (this._selectService) {\n            this._id = this._selectService._registerOption();\n        }\n    }\n\n    /** Tracks the value bound to the option element. Unlike the value binding, ngValue supports binding to objects. */\n    @Input('ngValue')\n    set ngValue(value: unknown) {\n        if (this._selectService == null) {\n            return;\n        }\n        this._selectService._optionMap.set(this._id, value);\n        this._setElementValue(_buildValueString(this._id, value));\n    }\n\n    /** Tracks simple string values bound to the option element. For objects, use the `ngValue` input binding. */\n    @Input('value')\n    set value(value: string) {\n        this._setElementValue(value);\n    }\n\n    _setElementValue(value: string): void {\n        this._renderer.setProperty(this._element.nativeElement, 'value', value);\n    }\n\n    ngOnDestroy(): void {\n        if (this._selectService) {\n            this._selectService._optionMap.delete(this._id);\n        }\n    }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport {\n    Component,\n    forwardRef,\n    HostBinding,\n    Input,\n    ViewEncapsulation,\n    ElementRef,\n    Optional,\n    Self,\n    Output,\n    EventEmitter,\n    ViewChild,\n    Renderer2,\n    AfterViewInit,\n    OnDestroy,\n    ChangeDetectorRef\n} from '@angular/core';\nimport {ControlValueAccessor, NgForm, FormGroupDirective, NgControl} from '@angular/forms';\nimport {Subject} from 'rxjs';\nimport {delay, takeUntil} from 'rxjs/operators';\nimport {HcFormControlComponent} from '../form-field/hc-form-control.component';\nimport {parseBooleanAttribute} from '../util';\nimport {SelectService, _buildValueString} from './select.service';\n\nlet uniqueId = 1;\n\nexport class SelectChangeEvent {\n    constructor(public source: SelectComponent, public value: any) {}\n}\n\n/** Select one of many options from a dropdown */\n@Component({\n    selector: 'hc-select',\n    templateUrl: 'select.component.html',\n    styleUrls: ['select.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    providers: [SelectService, { provide: HcFormControlComponent, useExisting: forwardRef(() => SelectComponent) }],\n    standalone: false\n})\nexport class SelectComponent extends HcFormControlComponent implements ControlValueAccessor, AfterViewInit, OnDestroy {\n    private _uniqueInputId = `hc-select-${uniqueId++}`;\n    private _form: NgForm | FormGroupDirective | null;\n    private _unsubscribe = new Subject<void>();\n    private _value: any = '';\n    private _placeholderValue: any = '';\n    get _optionMap(): Map<string, any> {\n        return this.selectService._optionMap;\n    }\n    _componentId = this._uniqueInputId; // contains id for the hc-select component\n\n    @ViewChild('selectInput')\n    _nativeSelect: ElementRef;\n\n    @ViewChild('selectPlaceholder')\n    _nativePlaceholder: ElementRef;\n\n    /** Optional string of text to appear before selection is made */\n    @Input()\n    placeholder: string;\n\n    /** Optional value for when the placeholder should appear -\n     * defaults to the empty string, but could be set to `null` or `undefined` */\n    @Input()\n    get placeholderValue(): any {\n        return this._placeholderValue;\n    }\n\n    set placeholderValue(val: any) {\n        this._placeholderValue = val;\n        this._applyPlaceholderValueToNativeControl();\n        this._applyValueToNativeControl();\n    }\n\n    /** Enables or disables the component */\n    @Input()\n    get disabled(): boolean {\n        if (this._ngControl && this._ngControl.disabled) {\n            return this._ngControl.disabled;\n        }\n        return this._isDisabled;\n    }\n\n    set disabled(disabledVal) {\n        this._isDisabled = parseBooleanAttribute(disabledVal);\n    }\n\n    /** Sets whether this is a required form element */\n    @Input()\n    get required(): boolean {\n        return this._isRequired;\n    }\n\n    set required(requiredVal) {\n        this._isRequired = parseBooleanAttribute(requiredVal);\n    }\n\n    /** Element id. */\n    @Input()\n    get id(): string {\n        return this._componentId || this._uniqueInputId;\n    }\n\n    set id(idVal: string) {\n        this._componentId = idVal ? idVal : this._uniqueInputId;\n    }\n\n    /** Get or set the value of the select component */\n    @Input()\n    get value() {\n        return this._value;\n    }\n\n    set value(val: any) {\n        if (val !== this._value) {\n            this._value = val;\n            this.onChange(val);\n        }\n    }\n\n    /** If true, condense the default margin and reduce the font size. *Defaults to `false`.*  */\n    @Input()\n    get tight(): boolean {\n        return this._tight;\n    }\n    set tight(value) {\n        this._tight = parseBooleanAttribute(value);\n    }\n\n    @Output()\n    readonly focus: EventEmitter<void> = new EventEmitter<void>();\n    @Output()\n    readonly blur: EventEmitter<void> = new EventEmitter<void>();\n\n    /** Event emitted whenever the state changes */\n    @Output()\n    change = new EventEmitter<SelectChangeEvent>();\n\n    @HostBinding('class.hc-select')\n    _hostClass = true;\n\n    @HostBinding('class.hc-select-disabled')\n    get _disabledClass() {\n        if (this._ngControl && this._ngControl.disabled) {\n            return this._ngControl.disabled;\n        }\n        return this._isDisabled;\n    }\n\n    /** A function to compare the option values with the selected values. The first argument is a value from an option.\n     * The second is a value from the selection(model). A boolean should be returned. */\n    @Input()\n    set compareWith(fn: (o1: any, o2: any) => boolean) {\n        if (typeof fn !== 'function') {\n            throw new Error(`compareWith must be a function, but received ${JSON.stringify(fn)}`);\n        }\n        this._compareWith = fn;\n    }\n\n    private _compareWith: (o1: any, o2: any) => boolean = Object.is;\n\n    constructor(\n        private _renderer: Renderer2,\n        private selectService: SelectService,\n        @Optional() _parentForm: NgForm,\n        @Optional() _parentFormGroup: FormGroupDirective,\n        @Optional()\n        @Self()\n        public _ngControl: NgControl,\n        private _changeRef: ChangeDetectorRef\n    ) {\n        super();\n\n        this._form = _parentForm || _parentFormGroup;\n        if (this._ngControl != null) {\n            this._ngControl.valueAccessor = this;\n        }\n    }\n\n    ngAfterViewInit() {\n        this._applyPlaceholderValueToNativeControl();\n        this._applyValueToNativeControl();\n\n        if (this._ngControl?.statusChanges) {\n            // delay() is necessary to make sure any form or control state changes have been applied before rechecking error states\n            this._ngControl.statusChanges.pipe(delay(0), takeUntil(this._unsubscribe)).subscribe(() => this._updateErrorState());\n        }\n        if (this._form) {\n            this._form.ngSubmit.pipe(takeUntil(this._unsubscribe)).subscribe(() => this._updateErrorState());\n        }\n\n        /** Monkey patching the markAsTouched function to call error state checking because there is not an event for touched changes */\n        if (this._ngControl && this._ngControl.control) {\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            const self = this;\n            const originalMarkMethod = this._ngControl.control.markAsTouched;\n            this._ngControl.control.markAsTouched = function () {\n                // eslint-disable-next-line prefer-rest-params\n                originalMarkMethod.apply(this, arguments);\n                self._updateErrorState();\n            };\n\n            const originalMarkAllMethod = this._ngControl.control.markAllAsTouched;\n            this._ngControl.control.markAllAsTouched = function () {\n                // eslint-disable-next-line prefer-rest-params\n                originalMarkAllMethod.apply(this, arguments);\n                self._updateErrorState();\n            };\n        }\n    }\n\n    _onBlur(): void {\n        this.onTouch();\n        this._updateErrorState();\n        this.blur.next();\n    }\n\n    public onChange: (value: unknown) => void = () => undefined;\n    public onTouch: () => unknown = () => undefined;\n    public registerOnChange(fn: (value: unknown) => void): void {\n        this.onChange = fn;\n    }\n    public registerOnTouched(fn: () => unknown): void {\n        this.onTouch = fn;\n    }\n\n    writeValue(value: any) {\n        // Prevent the form control from trying to write a value when removing the control\n        if (this.onChange.name !== 'noop') {\n            this._value = value;\n            this._applyValueToNativeControl();\n        }\n    }\n\n    _applyValueToNativeControl() {\n        const id: string | null = this._getOptionId(this._value);\n        if (!this._nativeSelect) {\n            return;\n        }\n        if (id == null) {\n            const selectedIndex = this.placeholder ? 0 : -1;\n            this._renderer.setProperty(this._nativeSelect.nativeElement, 'selectedIndex', selectedIndex);\n        }\n        const valueString = _buildValueString(id, this._value);\n        this._renderer.setProperty(this._nativeSelect.nativeElement, 'value', valueString);\n    }\n\n    _applyPlaceholderValueToNativeControl() {\n        if (!this._nativePlaceholder) {\n            return;\n        }\n\n        this._renderer.setProperty(this._nativePlaceholder.nativeElement, 'value', this._placeholderValue);\n    }\n\n    _change(event: Event, value: any) {\n        event.stopPropagation();\n        this._value = this._getOptionValue(value);\n        this.onChange(this._value);\n        this.change.emit(new SelectChangeEvent(this, this._value));\n    }\n\n    _getOptionId(value: any): string | null {\n        for (const id of Array.from(this._optionMap.keys())) {\n            if (this._compareWith(this._optionMap.get(id), value)) {\n                return id;\n            }\n        }\n        return null;\n    }\n\n    _getOptionValue(valueString: string): any {\n        const id: string = this._extractId(valueString);\n        return this._optionMap.has(id) ? this._optionMap.get(id) : valueString;\n    }\n\n    _extractId(valueString: string): string {\n        return valueString.split(':')[0];\n    }\n\n    _onContentUpdated(): void {\n        this._applyValueToNativeControl();\n    }\n\n    private _updateErrorState() {\n        const oldState = this._errorState;\n\n        // TODO: this could be abstracted out as an @Input() if we need this to be configurable\n        const newState = !!(\n            this._ngControl &&\n            this._ngControl.invalid &&\n            (this._ngControl.touched || (this._form && this._form.submitted))\n        );\n\n        if (oldState !== newState) {\n            this._errorState = newState;\n            this._changeRef.detectChanges();\n        }\n    }\n\n    ngOnDestroy(): void {\n        this._unsubscribe.next();\n        this._unsubscribe.complete();\n    }\n}\n","<div class=\"hc-select-container\" [class.hc-select-tight]=\"tight\">\n    <span class=\"hc-select-chevron\"></span>\n    <select\n        #selectInput\n        class=\"hc-select-input\"\n        [disabled]=\"disabled\"\n        (change)=\"_change($event, selectInput.value)\"\n        (focus)=\"focus.next()\"\n        (blur)=\"_onBlur()\"\n        [required]=\"required\"\n        (cdkObserveContent)=\"_onContentUpdated()\"\n    >\n        @if (placeholder) {\n        <option [ngValue]=\"placeholderValue\" selected disabled hidden #selectPlaceholder>{{ placeholder }}</option>\n        }\n        <ng-content></ng-content>\n    </select>\n</div>\n","import {\n    Component,\n    ViewEncapsulation,\n    ChangeDetectionStrategy,\n    forwardRef,\n    Inject,\n    SimpleChanges,\n    Optional,\n    ChangeDetectorRef,\n    EventEmitter,\n    Input,\n    Output,\n    ViewChild,\n    AfterContentInit,\n    AfterViewChecked,\n    OnDestroy,\n    OnChanges,\n    HostBinding\n} from '@angular/core';\nimport {HcDatepickerIntl} from '../datepicker-intl';\nimport {ComponentPortal, Portal, ComponentType} from '@angular/cdk/portal';\nimport {createMissingDateImplError} from '../datetime/datepicker-errors';\nimport {HC_DATE_FORMATS, HcDateFormats, D} from '../datetime/date-formats';\nimport {DateAdapter} from '../datetime/date-adapter';\nimport {Subject, Subscription} from 'rxjs';\nimport {yearsPerPage, MultiYearViewComponent} from '../multi-year-view/multi-year-view.component';\nimport {HcCalendarCellCssClasses} from '../calendar-body/calendar-body.component';\nimport {MonthViewComponent} from '../month-view/month-view.component';\nimport {YearViewComponent} from '../year-view/year-view.component';\nimport {FormControl} from '@angular/forms';\n\n/**\n * Possible views for the calendar.\n * @docs-private\n */\nexport type CalendarViewComponent = 'month' | 'year' | 'multi-year';\n\n/** Default header for hcCalendar */\n@Component({\n    selector: 'hc-calendar-header',\n    templateUrl: 'calendar-header.html',\n    exportAs: 'hcCalendarHeader',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class CalendarHeaderComponent {\n    constructor(\n        private _intl: HcDatepickerIntl,\n        @Inject(forwardRef(() => CalendarComponent)) public calendar: CalendarComponent,\n        @Optional() private _dateAdapter: DateAdapter<D>,\n        @Optional()\n        @Inject(HC_DATE_FORMATS)\n        private _dateFormats: HcDateFormats,\n        changeDetectorRef: ChangeDetectorRef\n    ) {\n        this.calendar.stateChanges.subscribe(() => changeDetectorRef.markForCheck());\n    }\n\n    /** The label for the currently visible month */\n    get monthButtonText(): string {\n        return this._dateAdapter.getMonthNames('short')[this._dateAdapter.getMonth(this.calendar.activeDate)];\n    }\n\n    /** The label for the current calendar view. */\n    get periodButtonText(): string {\n        return this._dateAdapter.getYearName(this.calendar.activeDate);\n    }\n\n    get periodButtonLabel(): string {\n        return this.calendar.currentView === 'month' ? this._intl.switchToMultiYearViewLabel : this._intl.switchToMonthViewLabel;\n    }\n\n    /** The label for the jump to today button */\n    get _todayButtonLabel(): string {\n        return this._intl.switchToTodayLabel;\n    }\n\n    /** The label for the currently displayed month */\n    get monthButtonLabel(): string {\n        return this._intl.currentMonthLabel;\n    }\n\n    /** The label for the the previous button. */\n    get prevButtonLabel(): string {\n        return {\n            month: this._intl.prevMonthLabel,\n            year: this._intl.prevYearLabel,\n            'multi-year': this._intl.prevMultiYearLabel\n        }[this.calendar.currentView];\n    }\n\n    /** The label for the the next button. */\n    get nextButtonLabel(): string {\n        return {\n            month: this._intl.nextMonthLabel,\n            year: this._intl.nextYearLabel,\n            'multi-year': this._intl.nextMultiYearLabel\n        }[this.calendar.currentView];\n    }\n\n    /** Handles user clicks on the period label. */\n    currentPeriodClicked(): void {\n        this.calendar.currentView = this.calendar.currentView === 'month' ? 'multi-year' : 'month';\n    }\n\n    /** Handles user clicks on the previous button. */\n    previousClicked(): void {\n        this.calendar.activeDate =\n            this.calendar.currentView === 'month'\n                ? this._dateAdapter.addCalendarMonths(this.calendar.activeDate, -1)\n                : this._dateAdapter.addCalendarYears(this.calendar.activeDate, this.calendar.currentView === 'year' ? -1 : -yearsPerPage);\n    }\n\n    /** Handles user clicks on the next button. */\n    nextClicked(): void {\n        this.calendar.activeDate =\n            this.calendar.currentView === 'month'\n                ? this._dateAdapter.addCalendarMonths(this.calendar.activeDate, 1)\n                : this._dateAdapter.addCalendarYears(this.calendar.activeDate, this.calendar.currentView === 'year' ? 1 : yearsPerPage);\n    }\n\n    /** Handles clicks on the jump to today button */\n    _todayClicked(): void {\n        const selectedYear = this._dateAdapter.getYear(this._dateAdapter.today());\n        const selectedMonth = this._dateAdapter.getMonth(this._dateAdapter.today());\n        const selectedDate = this._dateAdapter.getDate(this._dateAdapter.today());\n        const todayDate = this._dateAdapter.createDate(selectedYear, selectedMonth, selectedDate);\n\n        if ( this.calendar.mode !== 'date' ) {\n            todayDate.setHours(this._dateAdapter.today().getHours());\n            todayDate.setMinutes(this._dateAdapter.today().getMinutes());\n        }\n\n        this.calendar._dateSelected(todayDate);\n        this.calendar._userSelection.emit(true);\n    }\n\n    /** Whether the previous period button is enabled. */\n    previousEnabled(): boolean {\n        if (!this.calendar.minDate) {\n            return true;\n        }\n        return !this.calendar.minDate || !this._isSameView(this.calendar.activeDate, this.calendar.minDate);\n    }\n\n    /** Whether the next period button is enabled. */\n    nextEnabled(): boolean {\n        return !this.calendar.maxDate || !this._isSameView(this.calendar.activeDate, this.calendar.maxDate);\n    }\n\n    _todayEnabled(): boolean {\n        let minDate;\n        let maxDate;\n        const today = new Date(this._dateAdapter.today().toDateString());\n\n        /** Normalize the compare dates to all be on the first day of the month because we are only concerned\n         * about whether today falls outside of the month than min or max is in */\n        today.setDate(1);\n        if (this.calendar.minDate) {\n            minDate = new Date(this.calendar.minDate.toDateString());\n            minDate.setDate(1);\n        }\n        if (this.calendar.maxDate) {\n            maxDate = new Date(this.calendar.maxDate.toDateString());\n            maxDate.setDate(1);\n        }\n        return (\n            (!minDate || this._dateAdapter.compareDate(minDate, today) < 1) &&\n            (!maxDate || this._dateAdapter.compareDate(maxDate, today) > -1)\n        );\n    }\n\n    /** Whether the two dates represent the same view in the current view mode (month or year). */\n    private _isSameView(date1: D, date2: D): boolean {\n        if (this.calendar.currentView === 'month') {\n            return (\n                this._dateAdapter.getYear(date1) === this._dateAdapter.getYear(date2) &&\n                this._dateAdapter.getMonth(date1) === this._dateAdapter.getMonth(date2)\n            );\n        }\n        if (this.calendar.currentView === 'year') {\n            return this._dateAdapter.getYear(date1) === this._dateAdapter.getYear(date2);\n        }\n        // Otherwise we are in 'multi-year' view.\n        return Math.floor(this._dateAdapter.getYear(date1) / yearsPerPage) === Math.floor(this._dateAdapter.getYear(date2) / yearsPerPage);\n    }\n}\n\n/**\n * A calendar that is used as part of the datepicker.\n * @docs-private\n */\n@Component({\n    selector: 'hc-calendar',\n    templateUrl: './calendar.component.html',\n    styleUrls: ['calendar.component.scss'],\n    exportAs: 'hcCalendar',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class CalendarComponent implements AfterContentInit, AfterViewChecked, OnDestroy, OnChanges {\n    @HostBinding('class.hc-calendar') _hostClass = true;\n\n    /** An input indicating the type of the header component, if set. */\n    @Input()\n    headerComponent: ComponentType<unknown>;\n\n    /** A portal containing the header component type for this calendar. */\n    _calendarHeaderPortal: Portal<unknown>;\n\n    /** Stores the current am/pm value */\n    _period: FormControl = new FormControl('am');\n\n    private _intlChanges: Subscription;\n\n    /**\n     * Used for scheduling that focus should be moved to the active cell on the next tick.\n     * We need to schedule it, rather than do it immediately, because we have to wait\n     * for Angular to re-evaluate the view children.\n     */\n    private _moveFocusOnNextTick = false;\n\n    /** A date representing the period (month or year) to start the calendar in. */\n    @Input()\n    get startAt(): D | null {\n        return this._startAt;\n    }\n    set startAt(value: D | null) {\n        this._startAt = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n    }\n    private _startAt: D | null;\n\n    /** Whether the calendar should be started in month or year view. */\n    @Input()\n    startView: CalendarViewComponent = 'month';\n\n    /** Whether the calendar should show calendar, time-picker, or both */\n    @Input()\n    mode: 'date' | 'time' | 'date-time' = 'date';\n\n    /** Whether the time picker should display a 12-hour or 24-clock. Accepts 12 or 24. Defaults to 12. */\n    @Input()\n    get hourCycle(): string | number {\n        return this._hourCycle;\n    }\n    set hourCycle(value: string | number) {\n        if (+value === 12 || +value === 24) {\n            this._hourCycle = +value;\n        } else if (value) {\n            throw Error('Unsupported hourCycle value: ' + value + '. Accepted values are 12 or 24.');\n        }\n    }\n    _hourCycle = 12;\n\n    /** The currently selected date. */\n    @Input()\n    get selected(): D | null {\n        return this._selected;\n    }\n    set selected(value: D | null) {\n        this._selected = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n        if (this._selected) {\n            this._period.setValue(this._selected.getHours() > 11 ? 'pm' : 'am');\n        }\n    }\n    private _selected: D | null;\n\n    /** The minimum selectable date. */\n    @Input()\n    get minDate(): D | null {\n        return this._minDate;\n    }\n    set minDate(value: D | null) {\n        this._minDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n    }\n    private _minDate: D | null;\n\n    /** The maximum selectable date. */\n    @Input()\n    get maxDate(): D | null {\n        return this._maxDate;\n    }\n    set maxDate(value: D | null) {\n        this._maxDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n    }\n    private _maxDate: D | null;\n\n    /** Function used to filter which dates are selectable. */\n    @Input()\n    dateFilter: (date: D) => boolean;\n\n    /** Function that can be used to add custom CSS classes to dates. */\n    @Input()\n    dateClass: (date: D) => HcCalendarCellCssClasses;\n\n    /** Emits when the currently selected date changes. */\n    @Output()\n    readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n    /**\n     * Emits the year chosen in multiyear view.\n     * This doesn't imply a change on the selected date.\n     */\n    @Output()\n    readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n    /**\n     * Emits the month chosen in year view.\n     * This doesn't imply a change on the selected date.\n     */\n    @Output()\n    readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n    /** Emits when any date is selected; boolean indicates if Today button was clicked */\n    @Output()\n    readonly _userSelection: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n    /** Reference to the current month view component. */\n    @ViewChild(MonthViewComponent)\n    monthView: MonthViewComponent;\n\n    /** Reference to the current year view component. */\n    @ViewChild(YearViewComponent)\n    yearView: YearViewComponent;\n\n    /** Reference to the current multi-year view component. */\n    @ViewChild(MultiYearViewComponent)\n    multiYearView: MultiYearViewComponent;\n\n    /**\n     * The current active date. This determines which time period is shown and which date is\n     * highlighted when using keyboard navigation.\n     */\n    get activeDate(): D {\n        return this._clampedActiveDate;\n    }\n    set activeDate(value: D) {\n        this._clampedActiveDate = this._dateAdapter.clampDate(value, this.minDate, this.maxDate);\n        this.stateChanges.next();\n    }\n    private _clampedActiveDate: D;\n\n    /** Whether the calendar is in month view. */\n    get currentView(): CalendarViewComponent {\n        return this._currentView;\n    }\n    set currentView(value: CalendarViewComponent) {\n        this._currentView = value;\n        this._moveFocusOnNextTick = true;\n    }\n    private _currentView: CalendarViewComponent;\n\n    /**\n     * Emits whenever there is a state change that the header may need to respond to.\n     */\n    stateChanges = new Subject<void>();\n\n    /** A string containing the value of minutes for the current date */\n    get minutes(): string | null {\n        if (this.selected) {\n            const minVal = this.selected.getMinutes();\n            return minVal < 10 ? '0' + minVal : minVal.toString();\n        } else {\n            return this.selected;\n        }\n    }\n    set minutes(value: string | null) {\n        if (value && !isNaN(+value)) {\n            const tempDate = this.selected ? new Date(this.selected.getTime()) : new Date();\n            tempDate.setMinutes(+value);\n            this.selectedChange.emit(tempDate);\n            this._userSelected();\n        }\n    }\n\n    /** A string containing the hour for the current date */\n    get hours(): string | null {\n        if (this.selected) {\n            const hourVal = this.selected.getHours();\n            if (this._hourCycle === 12) {\n                if (hourVal > 11) {\n                    return hourVal === 12 ? hourVal.toString() : (hourVal - 12).toString();\n                } else {\n                    return hourVal === 0 ? '12' : hourVal.toString();\n                }\n            } else {\n                return hourVal.toString();\n            }\n        } else {\n            return this.selected;\n        }\n    }\n    set hours(value: string | null) {\n        if (value && !isNaN(+value)) {\n            let hourVal: number = +value;\n            if (this._hourCycle === 12) {\n                if (this._period.value === 'pm' && hourVal !== 12) {\n                    hourVal += 12;\n                } else if (this._period.value === 'am' && hourVal === 12) {\n                    hourVal = 0;\n                }\n            }\n            const tempDate = this.selected ? new Date(this.selected.getTime()) : new Date();\n            tempDate.setHours(hourVal);\n            this.selectedChange.emit(tempDate);\n            this._userSelected();\n        }\n    }\n\n    _periodChange(): void {\n        if (this.selected) {\n            const tempDate = new Date(this.selected.getTime());\n            const curHours = tempDate.getHours();\n            if (this._period.value === 'pm') {\n                tempDate.setHours(curHours + 12);\n            } else {\n                tempDate.setHours(curHours - 12);\n            }\n            this.selectedChange.emit(tempDate);\n            this._userSelected();\n        }\n    }\n\n    constructor(\n        private _intl: HcDatepickerIntl,\n        @Optional() private _dateAdapter: DateAdapter<D>,\n        @Optional()\n        @Inject(HC_DATE_FORMATS)\n        private _dateFormats: HcDateFormats,\n        private _changeDetectorRef: ChangeDetectorRef\n    ) {\n        if (!this._dateAdapter) {\n            throw createMissingDateImplError('DateAdapter');\n        }\n\n        if (!this._dateFormats) {\n            throw createMissingDateImplError('HC_DATE_FORMATS');\n        }\n\n        this._intlChanges = _intl.changes.subscribe(() => {\n            _changeDetectorRef.markForCheck();\n            this.stateChanges.next();\n        });\n    }\n\n    ngAfterContentInit(): void {\n        this._calendarHeaderPortal = new ComponentPortal(this.headerComponent || CalendarHeaderComponent);\n        this.activeDate = this.startAt || this._dateAdapter.today();\n\n        // Assign to the private property since we don't want to move focus on init.\n        this._currentView = this.startView;\n    }\n\n    ngAfterViewChecked(): void {\n        if (this._moveFocusOnNextTick) {\n            this._moveFocusOnNextTick = false;\n            this.focusActiveCell();\n        }\n    }\n\n    ngOnDestroy(): void {\n        this._intlChanges.unsubscribe();\n        this.stateChanges.complete();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        const change = changes.minDate || changes.maxDate || changes.dateFilter;\n\n        if (change && !change.firstChange) {\n            const view = this._getCurrentViewComponent();\n\n            if (view) {\n                // We need to `detectChanges` manually here, because the `minDate`, `maxDate` etc. are\n                // passed down to the view via data bindings which won't be up-to-date when we call `_init`.\n                this._changeDetectorRef.detectChanges();\n                view._init();\n            }\n        }\n\n        this.stateChanges.next();\n    }\n\n    focusActiveCell(): void {\n        if (this.mode !== 'time') {\n            this._getCurrentViewComponent()._focusActiveCell();\n        }\n    }\n\n    /** Updates today's date after an update of the active date */\n    updateTodaysDate(): void {\n        const view = this.currentView === 'month' ? this.monthView : this.currentView === 'year' ? this.yearView : this.multiYearView;\n\n        view.ngAfterContentInit();\n    }\n\n    /** Handles date selection in the month view. */\n    _dateSelected(date: D): void {\n        if (!this._dateAdapter.sameDate(date, this.selected)) {\n            this.selectedChange.emit(date);\n        }\n    }\n\n    /** Handles year selection in the multiyear view. */\n    _yearSelectedInMultiYearView(normalizedYear: D): void {\n        this.yearSelected.emit(normalizedYear);\n    }\n\n    /** Handles month selection in the year view. */\n    _monthSelectedInYearView(normalizedMonth: D): void {\n        this.monthSelected.emit(normalizedMonth);\n    }\n\n    _userSelected(): void {\n        this._userSelection.emit(false);\n    }\n\n    /** Handles year/month selection in the multi-year/year views. */\n    _goToDateInView(date: D, view: 'month' | 'year' | 'multi-year'): void {\n        this.activeDate = date;\n        this.currentView = view;\n    }\n\n    /**\n     * @param obj The object to check.\n     * @returns The given object if it is both a date instance and valid, otherwise null.\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    private _getValidDateOrNull(obj: any): D | null {\n        return this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj) ? obj : null;\n    }\n\n    /** Returns the component instance that corresponds to the current calendar view. */\n    private _getCurrentViewComponent() {\n        return this.monthView || this.yearView || this.multiYearView;\n    }\n\n    _hoursUp(): void {\n        if (!this.hours) {\n            this.hours = this._hourCycle > 12 ? '0' : '1';\n        } else {\n            let curHour = +this.hours;\n            curHour++;\n            const tempCycle = this._hourCycle > 12 ? 24 : 12;\n            if (curHour > tempCycle) {\n                curHour = this._hourCycle > 12 ? 0 : 1;\n            }\n            this._changeMeridiem(curHour, 12);\n            this.hours = curHour.toString();\n        }\n    }\n\n    _hoursDown(): void {\n        if (!this.hours) {\n            this.hours = this._hourCycle > 12 ? '23' : '12';\n        } else {\n            let curHour = +this.hours;\n            curHour--;\n            const tempCycle = this._hourCycle > 12 ? 0 : 1;\n            if (curHour < tempCycle) {\n                curHour = this._hourCycle > 12 ? 23 : 12;\n            }\n            this._changeMeridiem(curHour, 11);\n            this.hours = curHour.toString();\n        }\n    }\n\n    _changeMeridiem(curHour: number, hourChange: number): void {\n        if (curHour === hourChange) {\n            this._period.setValue(this._period.value > 'am' ? 'am' : 'pm');\n        }\n    }\n\n    _minutesUp(): void {\n        if (!this.minutes) {\n            this.minutes = '00';\n        } else {\n            let curMin = +this.minutes;\n            curMin++;\n            if (curMin > 59) {\n                curMin = 0;\n            }\n            this.minutes = curMin.toString();\n        }\n    }\n\n    _minutesDown(): void {\n        if (!this.minutes) {\n            this.minutes = '59';\n        } else {\n            let curMin = +this.minutes;\n            curMin--;\n            if (curMin < 0) {\n                curMin = 59;\n            }\n            this.minutes = curMin.toString();\n        }\n    }\n}\n","@if (calendar.mode!=='time') {\n<div class=\"hc-calendar-header\">\n    <div class=\"hc-calendar-controls\">\n        <button\n            hc-button\n            buttonStyle=\"link\"\n            type=\"button\"\n            class=\"hc-calendar-today-button hc-calendar-control-button\"\n            (click)=\"_todayClicked()\"\n            [disabled]=\"!_todayEnabled()\"\n            [attr.aria-label]=\"_todayButtonLabel\"\n            [title]=\"_todayButtonLabel\"\n        >\n            Today\n        </button>\n        <span>\n            <button\n                hc-button\n                buttonStyle=\"link\"\n                type=\"button\"\n                class=\"hc-calendar-previous-button hc-calendar-control-button\"\n                [disabled]=\"!previousEnabled()\"\n                (click)=\"previousClicked()\"\n                [attr.aria-label]=\"prevButtonLabel\"\n                [title]=\"prevButtonLabel\"\n            ></button>\n            <span class=\"hc-calendar-month-label\">{{ monthButtonText }}</span>\n            <button\n                hc-button\n                buttonStyle=\"link\"\n                type=\"button\"\n                class=\"hc-calendar-next-button hc-calendar-control-button\"\n                [disabled]=\"!nextEnabled()\"\n                (click)=\"nextClicked()\"\n                [attr.aria-label]=\"nextButtonLabel\"\n                [title]=\"nextButtonLabel\"\n            ></button>\n        </span>\n        <ng-content></ng-content>\n        <button\n            hc-button\n            buttonStyle=\"link\"\n            type=\"button\"\n            class=\"hc-calendar-period-button hc-calendar-control-button\"\n            (click)=\"currentPeriodClicked()\"\n            [attr.aria-label]=\"periodButtonLabel\"\n            [title]=\"periodButtonLabel\"\n        >\n            {{ periodButtonText }}\n            <div class=\"hc-calendar-dropdown-caret\" [class.hc-calendar-dropdown-caret-invert]=\"calendar.currentView != 'month'\"></div>\n        </button>\n    </div>\n</div>\n}\n","<ng-template [cdkPortalOutlet]=\"_calendarHeaderPortal\"></ng-template>\n\n@if (mode !== 'time') {\n<div class=\"hc-calendar-content\" cdkMonitorSubtreeFocus tabindex=\"-1\">\n    @switch (currentView) { @case ('month') {\n    <hc-month-view\n        [(activeDate)]=\"activeDate\"\n        [selected]=\"selected\"\n        [dateFilter]=\"dateFilter\"\n        [maxDate]=\"maxDate\"\n        [minDate]=\"minDate\"\n        [dateClass]=\"dateClass\"\n        (selectedChange)=\"_dateSelected($event)\"\n        (_userSelection)=\"_userSelected()\"\n    ></hc-month-view>\n    } @case ('year') {\n    <hc-year-view\n        [(activeDate)]=\"activeDate\"\n        [selected]=\"selected\"\n        [dateFilter]=\"dateFilter\"\n        [maxDate]=\"maxDate\"\n        [minDate]=\"minDate\"\n        (monthSelected)=\"_monthSelectedInYearView($event)\"\n        (selectedChange)=\"_goToDateInView($event, 'month')\"\n    ></hc-year-view>\n    } @case ('multi-year') {\n    <hc-multi-year-view\n        [(activeDate)]=\"activeDate\"\n        [selected]=\"selected\"\n        [dateFilter]=\"dateFilter\"\n        [maxDate]=\"maxDate\"\n        [minDate]=\"minDate\"\n        (yearSelected)=\"_yearSelectedInMultiYearView($event)\"\n        (selectedChange)=\"_goToDateInView($event, 'year')\"\n    ></hc-multi-year-view>\n    } }\n</div>\n} @if (mode !== 'date') {\n<div class=\"hc-calendar-time-picker\">\n    <hc-icon class=\"hc-calendar-time-picker-icon\" fontIcon=\"hc-calendar-ico-clock\"></hc-icon>\n    <hc-form-field inline=\"true\" class=\"hc-calendar-time-picker-field\">\n        <input\n            hcInput\n            class=\"hc-calendar-time-picker-input\"\n            placeholder=\"hh\"\n            [(ngModel)]=\"hours\"\n            (keydown.arrowup)=\"_hoursUp()\"\n            (keydown.arrowdown)=\"_hoursDown()\"\n        />\n        <span hcSuffix class=\"hc-calendar-time-controls\">\n            <button hc-button buttonStyle=\"minimal\" size=\"sm\" (click)=\"_hoursUp()\" class=\"hc-calendar-time-controls-button\">\n                <hc-icon fontIcon=\"hc-calendar-ico-caret-up\" hcIconSm class=\"hc-calendar-controls-icon\"></hc-icon>\n            </button>\n            <button hc-button buttonStyle=\"minimal\" size=\"sm\" (click)=\"_hoursDown()\" class=\"hc-calendar-time-controls-button\">\n                <hc-icon fontIcon=\"hc-calendar-ico-caret-down\" hcIconSm class=\"hc-calendar-controls-icon\"></hc-icon>\n            </button>\n        </span>\n    </hc-form-field>\n    <hc-form-field inline=\"true\" class=\"hc-calendar-time-picker-field\">\n        <input\n            hcInput\n            class=\"hc-calendar-time-picker-input\"\n            placeholder=\"mm\"\n            [(ngModel)]=\"minutes\"\n            (keydown.arrowup)=\"_minutesUp()\"\n            (keydown.arrowdown)=\"_minutesDown()\"\n        />\n        <span hcSuffix class=\"hc-calendar-time-controls\">\n            <button hc-button buttonStyle=\"minimal\" size=\"sm\" (click)=\"_minutesUp()\" class=\"hc-calendar-time-controls-button\">\n                <hc-icon fontIcon=\"hc-calendar-ico-caret-up\" hcIconSm class=\"hc-calendar-controls-icon\"></hc-icon>\n            </button>\n            <button hc-button buttonStyle=\"minimal\" size=\"sm\" (click)=\"_minutesDown()\" class=\"hc-calendar-time-controls-button\">\n                <hc-icon fontIcon=\"hc-calendar-ico-caret-down\" hcIconSm class=\"hc-calendar-controls-icon\"></hc-icon>\n            </button>\n        </span>\n    </hc-form-field>\n    @if (_hourCycle === 12) {\n    <hc-form-field inline=\"true\" class=\"hc-calendar-time-picker-field\">\n        <hc-select class=\"hc-calendar-time-picker-select\" [formControl]=\"_period\" (change)=\"_periodChange()\">\n            <option value=\"am\">AM</option>\n            <option value=\"pm\">PM</option>\n        </hc-select>\n    </hc-form-field>\n    }\n</div>\n}\n","/**\n * @license\n * Copyright Health Catalyst All Rights Reserved.\n *\n * Use of this source code is governed by an Apache-2.0 license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/HealthCatalyst/Fabric.Cashmere/dev/LICENSE\n */\nimport {animate, state, style, transition, trigger, AnimationTriggerMetadata} from '@angular/animations';\n\n/**\n * Animations used by the Material datepicker.\n * @docs-private\n */\nexport const HcDatepickerAnimations: {\n    readonly transformPanel: AnimationTriggerMetadata;\n    readonly fadeInCalendar: AnimationTriggerMetadata;\n} = {\n    /** Transforms the height of the datepicker's calendar. */\n    transformPanel: trigger('transformPanel', [\n        state(\n            'void',\n            style({\n                opacity: 0,\n                transform: 'scale(1, 0.8)'\n            })\n        ),\n        transition(\n            'void => enter',\n            animate(\n                '120ms cubic-bezier(0, 0, 0.2, 1)',\n                style({\n                    opacity: 1,\n                    transform: 'scale(1, 1)'\n                })\n            )\n        ),\n        transition('* => void', animate('100ms linear', style({opacity: 0})))\n    ]),\n\n    /** Fades in the content of the calendar. */\n    fadeInCalendar: trigger('fadeInCalendar', [\n        state('void', style({opacity: 0})),\n        state('enter', style({opacity: 1})),\n\n        // TODO(crisbeto): this animation should be removed since it isn't quite on spec, but we\n        // need to keep it until #12440 gets in, otherwise the exit animation will look glitchy.\n        transition('void => *', animate('120ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)'))\n    ])\n};\n","import {Component, ViewEncapsulation, ChangeDetectionStrategy, AfterViewInit, ViewChild} from '@angular/core';\nimport {HcDatepickerAnimations} from '../datepicker-animations';\nimport {CalendarComponent} from '../calendar/calendar.component';\nimport {DatepickerComponent} from '../datepicker.component';\n\n/**\n * Component used as the content for the datepicker popup. We use this instead of using\n * hcCalendar directly as the content so we can control the initial focus. This also gives us a\n * place to put additional features of the popup that are not part of the calendar itself in the\n * future. (e.g. confirmation buttons).\n * @docs-private\n */\n@Component({\n    selector: 'hc-datepicker-content',\n    templateUrl: './datepicker-content.component.html',\n    host: {\n        class: 'hc-datepicker-content',\n        '[@transformPanel]': '\"enter\"'\n    },\n    animations: [HcDatepickerAnimations.transformPanel, HcDatepickerAnimations.fadeInCalendar],\n    exportAs: 'hcDatepickerContent',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class DatepickerContentComponent implements AfterViewInit {\n    /** Reference to the internal calendar component. */\n    @ViewChild(CalendarComponent)\n    _calendar: CalendarComponent;\n\n    /** Reference to the datepicker that created the overlay. */\n    datepicker: DatepickerComponent;\n\n    /** Whether the datepicker is above or below the input. */\n    _isAbove: boolean;\n\n    ngAfterViewInit(): void {\n        this._calendar.focusActiveCell();\n    }\n\n    /** Close the datepicker automatically on selection only if in date mode */\n    autoClose( todayClicked: boolean ): void {\n        if (this.datepicker.mode === 'date' || todayClicked ) {\n            this.datepicker.close();\n        }\n    }\n}\n","<hc-calendar cdkTrapFocus\n    [id]=\"datepicker.id\"\n    [ngClass]=\"datepicker.panelClass\"\n    [mode]=\"datepicker.mode\"\n    [hourCycle]=\"datepicker.hourCycle\"\n    [startAt]=\"datepicker.startAt\"\n    [startView]=\"datepicker.startView\"\n    [minDate]=\"datepicker._minDate\"\n    [maxDate]=\"datepicker._maxDate\"\n    [dateFilter]=\"datepicker._dateFilter\"\n    [headerComponent]=\"datepicker.calendarHeaderComponent\"\n    [selected]=\"datepicker._selected\"\n    [dateClass]=\"datepicker.dateClass\"\n    [@fadeInCalendar]=\"'enter'\"\n    (selectedChange)=\"datepicker.select($event)\"\n    (yearSelected)=\"datepicker._selectYear($event)\"\n    (monthSelected)=\"datepicker._selectMonth($event)\"\n    (_userSelection)=\"autoClose($event)\">\n</hc-calendar>\n","import {forwardRef, Directive, ElementRef, Optional, Inject, Input, EventEmitter, Output, OnDestroy} from '@angular/core';\nimport {\n    NG_VALUE_ACCESSOR,\n    NG_VALIDATORS,\n    Validator,\n    ValidatorFn,\n    ValidationErrors,\n    AbstractControl,\n    ControlValueAccessor,\n    Validators\n} from '@angular/forms';\nimport {createMissingDateImplError} from '../datetime/datepicker-errors';\nimport {DatepickerComponent} from '../datepicker.component';\nimport {parseBooleanAttribute} from '../../util';\nimport {Subscription} from 'rxjs';\nimport {D, HC_DATE_FORMATS, HcDateFormats} from '../datetime/date-formats';\nimport {DateAdapter} from '../datetime/date-adapter';\nimport {HcFormControlComponent} from '../../form-field/hc-form-control.component';\nimport {HcFormFieldComponent} from '../../form-field/hc-form-field.component';\n\n/** @docs-private */\nexport const HC_DATEPICKER_VALUE_ACCESSOR = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => DatepickerInputDirective),\n    multi: true\n};\n\n/** @docs-private */\nexport const HC_DATEPICKER_VALIDATORS = {\n    provide: NG_VALIDATORS,\n    useExisting: forwardRef(() => DatepickerInputDirective),\n    multi: true\n};\n\n/**\n * An event used for datepicker input and change events. We don't always have access to a native\n * input or change event because the event may have been triggered by the user clicking on the\n * calendar popup. For consistency, we always use hcDatepickerInputEvent instead.\n */\nexport class HcDatepickerInputEvent {\n    /** The new value for the target datepicker input. */\n    value: D | null;\n\n    constructor(\n        /** Reference to the datepicker input component that emitted the event. */\n        public target: DatepickerInputDirective,\n        /** Reference to the native input element associated with the datepicker input. */\n        public targetElement: HTMLElement\n    ) {\n        this.value = this.target.value;\n    }\n}\n\n@Directive({\n    selector: 'input[hcDatepicker]',\n    host: {\n        '[attr.aria-haspopup]': 'true',\n        '[attr.aria-owns]': '(_datepicker?.opened && _datepicker.id) || null',\n        '[attr.min]': 'min ? _dateAdapter.toIso8601(min) : null',\n        '[attr.max]': 'max ? _dateAdapter.toIso8601(max) : null',\n        '[disabled]': 'disabled',\n        '(input)': '_onInput($event.target.value)',\n        '(change)': '_onChange()',\n        '(blur)': '_onBlur()',\n        '(keydown)': '_onKeydown($event)'\n    },\n    providers: [\n        HC_DATEPICKER_VALUE_ACCESSOR,\n        HC_DATEPICKER_VALIDATORS,\n        { provide: HcFormControlComponent, useExisting: forwardRef(() => DatepickerInputDirective) }\n    ],\n    standalone: false\n})\nexport class DatepickerInputDirective implements ControlValueAccessor, OnDestroy, Validator {\n    /** The datepicker that this input is associated with. */\n    @Input()\n    set hcDatepicker(value: DatepickerComponent) {\n        if (!value) {\n            return;\n        }\n\n        this._datepicker = value;\n        this._datepicker._registerInput(this);\n        this._datepickerSubscription.unsubscribe();\n\n        this._datepickerSubscription = this._datepicker._selectedChanged.subscribe((selected: D) => {\n            this.setDate(selected);\n        });\n    }\n    _datepicker: DatepickerComponent;\n\n    /** Function that can be used to filter out dates within the datepicker. */\n    @Input()\n    set hcDatepickerFilter(value: (date: D | null) => boolean) {\n        this._dateFilter = value;\n        this._validatorOnChange();\n    }\n    _dateFilter: (date: D | null) => boolean;\n\n    /** The value of the input. */\n    @Input()\n    get value(): D | null {\n        return this._value;\n    }\n    set value(value: D | null) {\n        value = this._dateAdapter.deserialize(value);\n        this._lastValueValid = !value || this._dateAdapter.isValid(value);\n        value = this._getValidDateOrNull(value);\n        const oldDate = this.value;\n        this._value = value;\n        this._formatValue(value);\n\n        if ( value ) {\n            this._timeDate = value;\n        }\n        if (!this._dateAdapter.sameDate(oldDate, value)) {\n            this._valueChange.emit(value);\n        }\n    }\n    private _value: D | null;\n\n    /** The minimum valid date. */\n    @Input()\n    get min(): D | null {\n        return this._min;\n    }\n    set min(value: D | null) {\n        this._min = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n        this._validatorOnChange();\n    }\n    private _min: D | null;\n\n    /** The maximum valid date. */\n    @Input()\n    get max(): D | null {\n        return this._max;\n    }\n    set max(value: D | null) {\n        this._max = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n        this._validatorOnChange();\n    }\n    private _max: D | null;\n\n    /** Whether the datepicker-input is disabled. */\n    @Input()\n    get disabled(): boolean {\n        return !!this._disabled;\n    }\n    set disabled(value: boolean) {\n        const newValue = parseBooleanAttribute(value);\n        const element = this._elementRef.nativeElement;\n\n        if (this._disabled !== newValue) {\n            this._disabled = newValue;\n            this._disabledChange.emit(newValue);\n        }\n\n        // We need to null check the `blur` method, because it's undefined during SSR.\n        if (newValue && element.blur) {\n            // Normally, native input elements automatically blur if they turn disabled. This behavior\n            // is problematic, because it would mean that it triggers another change detection cycle,\n            // which then causes a changed after checked error if the input element was focused before.\n            element.blur();\n        }\n    }\n    private _disabled: boolean;\n\n    /** Emits when a `change` event is fired on this `<input>`. */\n    @Output()\n    readonly dateChange: EventEmitter<HcDatepickerInputEvent> = new EventEmitter<HcDatepickerInputEvent>();\n\n    /** Emits when an `input` event is fired on this `<input>`. */\n    @Output()\n    readonly dateInput: EventEmitter<HcDatepickerInputEvent> = new EventEmitter<HcDatepickerInputEvent>();\n\n    /** Stores the mode & hourCycle for the inputs of the date range (which don't have a DatePickerComponent) */\n    @Input() _mode: string;\n    @Input() _hourCycle: number;\n\n    /** When true, this allows the date picker to validate with a blank value OR a valid date value. Defaults to false. */\n    @Input()\n    get allowsBlankValues(): boolean {\n        return this._allowsBlankValues;\n    }\n    set allowsBlankValues(value: boolean) {\n        this._allowsBlankValues = parseBooleanAttribute(value);\n    }\n    private _allowsBlankValues: boolean;\n\n    /** Emits when the value changes (either due to user input or programmatic change). */\n    _valueChange = new EventEmitter<D | null>();\n\n    /** Emits when the disabled state has changed */\n    _disabledChange = new EventEmitter<boolean>();\n\n    _onTouched = (): void => {\n        // do nothing\n    };\n\n    private _cvaOnChange: (value: unknown) => void = () => {\n        // do nothing\n    };\n\n    private _validatorOnChange = () => {\n        // do nothing\n    };\n\n    private _datepickerSubscription = Subscription.EMPTY;\n\n    private _localeSubscription = Subscription.EMPTY;\n\n    // Stores a placeholder date value to be used for parsing when in time-only mode\n    private _timeDate: Date = new Date();\n\n    /** The form control validator for whether the input parses. */\n    private _parseValidator: ValidatorFn = (): ValidationErrors | null => {\n        return this._lastValueValid ? null : {hcDatepickerParse: {text: this._elementRef.nativeElement.value}};\n    };\n\n    /** The form control validator for the min date. */\n    private _minValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n        const controlValue = this._getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n        return !this.min || control.pristine || !controlValue || this._dateAdapter.compareDate(this.min, controlValue) <= 0\n            ? null\n            : {hcDatepickerMin: {min: this.min, actual: controlValue}};\n    };\n\n    /** The form control validator for the max date. */\n    private _maxValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n        const controlValue = this._getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n        return !this.max || control.pristine || !controlValue || this._dateAdapter.compareDate(this.max, controlValue) >= 0\n            ? null\n            : {hcDatepickerMax: {max: this.max, actual: controlValue}};\n    };\n\n    /** The form control validator for the date filter. */\n    private _filterValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n        const controlValue = this._getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n        return !this._dateFilter || !controlValue || this._dateFilter(controlValue) ? null : {hcDatepickerFilter: true};\n    };\n\n    /** The combined form control validator for this input. */\n    private _validator: ValidatorFn | null = Validators.compose([\n        this._parseValidator,\n        this._minValidator,\n        this._maxValidator,\n        this._filterValidator\n    ]);\n\n    /** Whether the last value set on the input was valid. */\n    private _lastValueValid = false;\n\n    constructor(\n        private _elementRef: ElementRef<HTMLInputElement>,\n        @Optional() public _dateAdapter: DateAdapter<D>,\n        @Optional()\n        @Inject(HC_DATE_FORMATS)\n        private _dateFormats: HcDateFormats,\n        @Optional() private _formField: HcFormFieldComponent\n    ) {\n        if (!this._dateAdapter) {\n            throw createMissingDateImplError('DateAdapter');\n        }\n        if (!this._dateFormats) {\n            throw createMissingDateImplError('HC_DATE_FORMATS');\n        }\n\n        // Update the displayed date when the locale changes.\n        this._localeSubscription = _dateAdapter.localeChanges.subscribe(() => {\n            // eslint-disable-next-line no-self-assign\n            this.value = this.value;\n        });\n\n        this._allowsBlankValues = false;\n    }\n\n    ngOnDestroy(): void {\n        this._datepickerSubscription.unsubscribe();\n        this._localeSubscription.unsubscribe();\n        this._valueChange.complete();\n        this._disabledChange.complete();\n    }\n\n    /** @docs-private */\n    registerOnValidatorChange(fn: () => void): void {\n        this._validatorOnChange = fn;\n    }\n\n    /** @docs-private */\n    validate(c: AbstractControl): ValidationErrors | null {\n        return this._validator ? this._validator(c) : null;\n    }\n\n    /**\n     * Gets the element that the datepicker popup should be connected to.\n     * @return The element to connect the popup to.\n     */\n    getConnectedOverlayOrigin(): ElementRef {\n        return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\n    }\n\n    /** Sets the focus on the input element */\n    focus(): void {\n        this._elementRef.nativeElement.focus();\n    }\n\n    // Implemented as part of ControlValueAccessor.\n    writeValue(value: D): void {\n        this.value = value;\n    }\n\n    // Implemented as part of ControlValueAccessor.\n    registerOnChange(fn: (value: unknown) => void): void {\n        this._cvaOnChange = fn;\n    }\n\n    // Implemented as part of ControlValueAccessor.\n    registerOnTouched(fn: () => void): void {\n        this._onTouched = fn;\n    }\n\n    // Implemented as part of ControlValueAccessor.\n    setDisabledState(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n    }\n\n    // Set the date programmatically\n    setDate(selected: D): void {\n        this.value = selected;\n        this._cvaOnChange(selected);\n        this._onTouched();\n        this.dateInput.emit(new HcDatepickerInputEvent(this, this._elementRef.nativeElement));\n        this.dateChange.emit(new HcDatepickerInputEvent(this, this._elementRef.nativeElement));\n    }\n\n    _onKeydown(event: KeyboardEvent): void {\n        const isAltDownArrow = event.altKey && event.key === 'ArrowDown';\n\n        if (this._datepicker && isAltDownArrow && !this._elementRef.nativeElement.readOnly) {\n            this._datepicker.open();\n            event.preventDefault();\n        }\n    }\n\n    _onInput(value: string): void {\n        // Add stored date value to a time-only input for javascript date object parsing\n        const pickerMode = this._datepicker ? this._datepicker.mode : this._mode;\n        if ( pickerMode === 'time' ) {\n            value = this._timeDate.getDate()  + '/' + (this._timeDate.getMonth() + 1) + '/' + this._timeDate.getFullYear() + ' ' + value;\n        }\n\n        let date = this._dateAdapter.parse(value, this._dateFormats.parse.dateInput);\n\n        /** Two-digit year input conversion method for IE\n         * Based on the current year, assume that the four-digit year date should be in\n         * either the next 30 years, or the preceding 70 years */\n        if (date) {\n            const inputString: string = this._elementRef.nativeElement.value;\n            /** Skip this check if the input string contains any 3+ digit numerical values - assumed to be a year */\n            if (!inputString.match(/[1-9][0-9][0-9]/g)) {\n                const currentDate = new Date();\n                if (date.getFullYear() >= currentDate.getFullYear() + 30) {\n                    date.setFullYear(date.getFullYear() - 100);\n                } else if (date.getFullYear() < currentDate.getFullYear() - 70) {\n                    date.setFullYear(date.getFullYear() + 100);\n                }\n            }\n        }\n\n        if (this._allowsBlankValues && value.trim() == '') {\n            this._lastValueValid = true;\n        } else {\n            this._lastValueValid = !date || this._dateAdapter.isValid(date);\n        }\n\n        date = this._getValidDateOrNull(date);\n\n        if (!this._dateAdapter.sameDate(date, this._value)) {\n            this._value = date;\n            this._cvaOnChange(date);\n            this._valueChange.emit(date);\n            this.dateInput.emit(new HcDatepickerInputEvent(this, this._elementRef.nativeElement));\n        }\n    }\n\n    _onChange(): void {\n        this.dateChange.emit(new HcDatepickerInputEvent(this, this._elementRef.nativeElement));\n    }\n\n    /** Handles blur events on the input. */\n    _onBlur(): void {\n        // Reformat the input only if we have a valid value.\n        if (this.value || this._elementRef.nativeElement.value) {\n            this._formatValue(this.value);\n        }\n\n        this._onTouched();\n    }\n\n    /** Formats a value and sets it on the input element. */\n    private _formatValue(value: D | null) {\n        let dateFormat = this._dateFormats.display.dateInput;\n        let tempMode = 'date';\n        let tempCycle = 12;\n\n        if (this._datepicker) {\n            tempMode = this._datepicker.mode;\n            tempCycle = +this._datepicker.hourCycle;\n        } else if (this._mode) {\n            tempMode = this._mode;\n            if (this._hourCycle) {\n                tempCycle = this._hourCycle;\n            }\n        }\n\n        if (tempMode === 'time') {\n            const tempFormat = this._dateFormats.display.timeInput;\n            tempFormat['hour12'] = tempCycle === 12;\n            dateFormat = tempFormat;\n        } else if (tempMode === 'date-time') {\n            const tempFormat = this._dateFormats.display.dateTimeInput;\n            tempFormat['hour12'] = tempCycle === 12;\n            dateFormat = tempFormat;\n        }\n        this._elementRef.nativeElement.value = value ? this._dateAdapter.format(value, dateFormat) : '';\n    }\n\n    /**\n     * @param obj The object to check.\n     * @returns The given object if it is both a date instance and valid, otherwise null.\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    private _getValidDateOrNull(obj: any): D | null {\n        return this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj) ? obj : null;\n    }\n}\n","import {\n    Component,\n    Input,\n    ViewEncapsulation,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    ViewChild,\n    OnDestroy,\n    Directive,\n    AfterContentInit,\n    OnChanges,\n    ContentChild,\n    Attribute,\n    SimpleChanges\n} from '@angular/core';\nimport {merge, Subscription, of as observableOf} from 'rxjs';\nimport {parseBooleanAttribute} from '../../util';\nimport {HcDatepickerIntl} from '../datepicker-intl';\nimport {DatepickerComponent} from '../datepicker.component';\nimport {ButtonComponent} from '../../button/button.component';\n\n/** Can be used to override the icon of a `hcDatepickerToggle`. */\n@Directive({\n    selector: '[hcDatepickerToggleIcon]',\n    standalone: false\n})\nexport class DatepickerToggleIconDirective {}\n\n@Component({\n    selector: 'hc-datepicker-toggle',\n    templateUrl: './datepicker-toggle.component.html',\n    styleUrls: ['./datepicker-toggle.component.scss'],\n    host: {\n        class: 'hc-datepicker-toggle',\n        // Always set the tabindex to -1 so that it doesn't overlap with any custom tabindex the\n        // consumer may have provided, while still being able to receive focus.\n        '[attr.tabindex]': '-1',\n        '[class.hc-datepicker-toggle-active]': 'datepicker && datepicker.opened',\n        '(focus)': '_button.focus()'\n    },\n    exportAs: 'hcDatepickerToggle',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class DatepickerToggleComponent implements AfterContentInit, OnChanges, OnDestroy {\n    private _stateChanges = Subscription.EMPTY;\n\n    /** Datepicker instance that the button will toggle. */\n    @Input('for')\n    datepicker: DatepickerComponent;\n\n    /** Tabindex for the toggle. */\n    @Input()\n    tabIndex: number | null;\n\n    /** Whether the toggle button is disabled. */\n    @Input()\n    get disabled(): boolean {\n        return this._disabled === undefined ? this.datepicker.disabled : !!this._disabled;\n    }\n    set disabled(value: boolean) {\n        this._disabled = parseBooleanAttribute(value);\n    }\n    private _disabled: boolean;\n\n    /** Custom icon set by the consumer. */\n    @ContentChild(DatepickerToggleIconDirective)\n    _customIcon: DatepickerToggleIconDirective;\n\n    /** Underlying button element. */\n    @ViewChild('button')\n    _button: ButtonComponent;\n\n    constructor(\n        public _intl: HcDatepickerIntl,\n        private _changeDetectorRef: ChangeDetectorRef,\n        @Attribute('tabindex') defaultTabIndex: string\n    ) {\n        const parsedTabIndex = Number(defaultTabIndex);\n        this.tabIndex = parsedTabIndex || parsedTabIndex === 0 ? parsedTabIndex : null;\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes.datepicker) {\n            this._watchStateChanges();\n        }\n    }\n\n    ngOnDestroy(): void {\n        this._stateChanges.unsubscribe();\n    }\n\n    ngAfterContentInit(): void {\n        this._watchStateChanges();\n    }\n\n    _open(event: Event): void {\n        if (this.datepicker && !this.disabled) {\n            this.datepicker.open();\n            event.stopPropagation();\n        }\n    }\n\n    private _watchStateChanges() {\n        const datepickerDisabled = this.datepicker ? this.datepicker._disabledChange : observableOf();\n        const inputDisabled =\n            this.datepicker && this.datepicker._datepickerInput ? this.datepicker._datepickerInput._disabledChange : observableOf();\n        const datepickerToggled = this.datepicker ? merge(this.datepicker.openedStream, this.datepicker.closedStream) : observableOf();\n\n        this._stateChanges.unsubscribe();\n        this._stateChanges = merge(this._intl.changes, datepickerDisabled, inputDisabled, datepickerToggled).subscribe(() =>\n            this._changeDetectorRef.markForCheck()\n        );\n    }\n}\n","<button\n    hc-icon-button\n    #button\n    class=\"hc-calendar-toggle\"\n    type=\"button\"\n    aria-haspopup=\"true\"\n    [attr.aria-label]=\"_intl.openCalendarLabel\"\n    [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n    [disabled]=\"disabled\"\n    (click)=\"_open($event)\"\n>\n    <ng-content select=\"[hcDatepickerToggleIcon]\"></ng-content>\n    @if (!_customIcon) {\n    <hc-icon hcSuffix [fontIcon]=\"datepicker.mode === 'time' ? 'hc-calendar-ico-clock' : 'hc-calendar-ico-cal'\"></hc-icon>\n    }\n</button>\n","/**\n * @license\n * Copyright Health Catalyst All Rights Reserved.\n *\n * Use of this source code is governed by an Apache-2.0 license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/HealthCatalyst/Fabric.Cashmere/dev/LICENSE\n */\n\nimport {Platform} from '@angular/cdk/platform';\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {DateAdapter, HC_DATE_LOCALE} from './date-adapter';\n\n// TODO(mmalerba): Remove when we no longer support safari 9.\n/** Whether the browser supports the Intl API. */\nconst SUPPORTS_INTL_API = typeof Intl !== 'undefined';\n\n/** The default month names to use if Intl API is not available. */\nconst DEFAULT_MONTH_NAMES = {\n    long: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n    short: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n    narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\n};\n\n/** The default date names to use if Intl API is not available. */\nconst DEFAULT_DATE_NAMES = range(31, i => String(i + 1));\n\n/** The default day of the week names to use if Intl API is not available. */\nconst DEFAULT_DAY_OF_WEEK_NAMES = {\n    long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n    short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n    narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n};\n\n/** First day of week according locale.\n * Taken form moment.js source code https://github.com/moment/moment/tree/develop/src/locale\n */\nconst FIRST_DAY_OF_WEEK = {\n    af: 1,\n    ar: 6,\n    'ar-ly': 6,\n    'ar-ma': 6,\n    'ar-tn': 1,\n    az: 1,\n    be: 1,\n    bg: 1,\n    bm: 1,\n    br: 1,\n    bs: 1,\n    ca: 1,\n    cs: 1,\n    cv: 1,\n    cy: 1,\n    da: 1,\n    de: 1,\n    'de-at': 1,\n    'de-ch': 1,\n    el: 1,\n    'en-au': 1,\n    'en-gb': 1,\n    'en-ie': 1,\n    'en-nz': 1,\n    eo: 1,\n    es: 1,\n    'es-do': 1,\n    et: 1,\n    eu: 1,\n    fa: 6,\n    fi: 1,\n    fo: 1,\n    fr: 1,\n    'fr-ch': 1,\n    fy: 1,\n    gd: 1,\n    gl: 1,\n    'gom-latn': 1,\n    hr: 1,\n    hu: 1,\n    'hy-am': 1,\n    id: 1,\n    is: 1,\n    it: 1,\n    jv: 1,\n    ka: 1,\n    kk: 1,\n    km: 1,\n    ky: 1,\n    lb: 1,\n    lt: 1,\n    lv: 1,\n    me: 1,\n    mi: 1,\n    mk: 1,\n    ms: 1,\n    'ms-my': 1,\n    mt: 1,\n    my: 1,\n    nb: 1,\n    nl: 1,\n    'nl-be': 1,\n    nn: 1,\n    pl: 1,\n    pt: 1,\n    'pt-BR': 0,\n    ro: 1,\n    ru: 1,\n    sd: 1,\n    se: 1,\n    sk: 1,\n    sl: 1,\n    sq: 1,\n    sr: 1,\n    'sr-cyrl': 1,\n    ss: 1,\n    sv: 1,\n    sw: 1,\n    tet: 1,\n    tg: 1,\n    'tl-ph': 1,\n    tlh: 1,\n    tr: 1,\n    tzl: 1,\n    tzm: 6,\n    'tzm-latn': 6,\n    'ug-cn': 1,\n    uk: 1,\n    ur: 1,\n    uz: 1,\n    'uz-latn': 1,\n    vi: 1,\n    'x-pseudo': 1,\n    yo: 1,\n    'zh-cn': 1\n};\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX = /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n    const valuesArray = Array(length);\n    for (let i = 0; i < length; i++) {\n        valuesArray[i] = valueFunction(i);\n    }\n    return valuesArray;\n}\n\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\n@Injectable()\nexport class NativeDateAdapter extends DateAdapter<Date> {\n    /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n    private readonly _clampDate: boolean;\n\n    /**\n     * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n     * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n     * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n     * will produce `'8/13/1800'`.\n     *\n     * TODO(mmalerba): drop this variable. It's not being used in the code right now. We're now\n     * getting the string representation of a Date object from it's utc representation. We're keeping\n     * it here for sometime, just for precaution, in case we decide to revert some of these changes\n     * though.\n     */\n    useUtcForDisplay = true;\n\n    constructor(\n        @Optional()\n        @Inject(HC_DATE_LOCALE)\n        hcDateLocale: string,\n        platform: Platform\n    ) {\n        super();\n        super.setLocale(hcDateLocale);\n\n        // IE does its own time zone correction, so we disable this on IE.\n        this.useUtcForDisplay = !platform.TRIDENT;\n        this._clampDate = platform.TRIDENT || platform.EDGE;\n    }\n\n    getYear(date: Date): number {\n        return date.getFullYear();\n    }\n\n    getMonth(date: Date): number {\n        return date.getMonth();\n    }\n\n    getDate(date: Date): number {\n        return date.getDate();\n    }\n\n    getHours(date: Date): number {\n        return date.getHours();\n    }\n\n    getMinutes(date: Date): number {\n        return date.getMinutes();\n    }\n\n    getDayOfWeek(date: Date): number {\n        return date.getDay();\n    }\n\n    getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n        if (SUPPORTS_INTL_API) {\n            const dtf = new Intl.DateTimeFormat(this.locale, {month: style, timeZone: 'utc'});\n            return range(12, i => this._stripDirectionalityCharacters(this._format(dtf, new Date(2017, i, 1))));\n        }\n        return DEFAULT_MONTH_NAMES[style];\n    }\n\n    getDateNames(): string[] {\n        if (SUPPORTS_INTL_API) {\n            const dtf = new Intl.DateTimeFormat(this.locale, {day: 'numeric', timeZone: 'utc'});\n            return range(31, i => this._stripDirectionalityCharacters(this._format(dtf, new Date(2017, 0, i + 1))));\n        }\n        return DEFAULT_DATE_NAMES;\n    }\n\n    getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n        if (SUPPORTS_INTL_API) {\n            const dtf = new Intl.DateTimeFormat(this.locale, {weekday: style, timeZone: 'utc'});\n            return range(7, i => this._stripDirectionalityCharacters(this._format(dtf, new Date(2017, 0, i + 1))));\n        }\n        return DEFAULT_DAY_OF_WEEK_NAMES[style];\n    }\n\n    getYearName(date: Date): string {\n        if (SUPPORTS_INTL_API) {\n            const dtf = new Intl.DateTimeFormat(this.locale, {year: 'numeric', timeZone: 'utc'});\n            return this._stripDirectionalityCharacters(this._format(dtf, date));\n        }\n        return String(this.getYear(date));\n    }\n\n    getFirstDayOfWeek(): number {\n        // We can't tell using native JS Date what the first day of the week is.\n        // Sometimes people use excess language definition, e.g. ru-RU,\n        // so we use fallback to two-letter language code\n        const locale = this.locale.toLowerCase();\n        return FIRST_DAY_OF_WEEK[locale] || FIRST_DAY_OF_WEEK[locale.substr(0, 2)] || 0;\n    }\n\n    getNumDaysInMonth(date: Date): number {\n        return this.getDate(this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + 1, 0));\n    }\n\n    clone(date: Date): Date {\n        return this.createDate(this.getYear(date), this.getMonth(date), this.getDate(date));\n    }\n\n    createDate(year: number, month: number, date: number): Date {\n        // Check for invalid month and date (except upper bound on date which we have to check after\n        // creating the Date).\n        if (month < 0 || month > 11) {\n            throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n        }\n\n        if (date < 1) {\n            throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n        }\n\n        const result = this._createDateWithOverflow(year, month, date);\n        // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n        if (result.getMonth() !== month) {\n            throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n        }\n\n        return result;\n    }\n\n    today(): Date {\n        return new Date();\n    }\n\n    parse(value: unknown): Date | null {\n        // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n        // parameters.\n        if (typeof value === 'number') {\n            return new Date(value);\n        }\n        return value ? new Date(Date.parse(value as string)) : null;\n    }\n\n    format(date: Date, displayFormat: Record<string, unknown>): string {\n        if (!this.isValid(date)) {\n            throw Error('NativeDateAdapter: Cannot format invalid date.');\n        }\n\n        if (SUPPORTS_INTL_API) {\n            // On IE and Edge the i18n API will throw a hard error that can crash the entire app\n            // if we attempt to format a date whose year is less than 1 or greater than 9999.\n            if (this._clampDate && (date.getFullYear() < 1 || date.getFullYear() > 9999)) {\n                date = this.clone(date);\n                date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));\n            }\n\n            displayFormat = {...displayFormat, timeZone: 'utc'};\n\n            const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n            return this._stripDirectionalityCharacters(this._format(dtf, date));\n        }\n        return this._stripDirectionalityCharacters(date.toDateString());\n    }\n\n    addCalendarYears(date: Date, years: number): Date {\n        return this.addCalendarMonths(date, years * 12);\n    }\n\n    addCalendarMonths(date: Date, months: number): Date {\n        let newDate = this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + months, this.getDate(date));\n\n        // It's possible to wind up in the wrong month if the original month has more days than the new\n        // month. In this case we want to go to the last day of the desired month.\n        // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n        // guarantee this.\n        if (this.getMonth(newDate) !== (((this.getMonth(date) + months) % 12) + 12) % 12) {\n            newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n        }\n\n        return newDate;\n    }\n\n    addCalendarDays(date: Date, days: number): Date {\n        return this._createDateWithOverflow(this.getYear(date), this.getMonth(date), this.getDate(date) + days);\n    }\n\n    toIso8601(date: Date): string {\n        return [date.getUTCFullYear(), this._2digit(date.getUTCMonth() + 1), this._2digit(date.getUTCDate())].join('-');\n    }\n\n    /**\n     * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n     * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n     * invalid date for all other values.\n     */\n    deserialize(value: unknown): Date | null {\n        if (typeof value === 'string') {\n            if (!value) {\n                return null;\n            }\n            // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n            // string is the right format first.\n            if (ISO_8601_REGEX.test(value)) {\n                const date = new Date(value);\n                if (this.isValid(date)) {\n                    return date;\n                }\n            }\n        }\n        return super.deserialize(value);\n    }\n\n    isDateInstance(obj: unknown): boolean {\n        return obj instanceof Date;\n    }\n\n    isValid(date: Date): boolean {\n        return !isNaN(date.getTime());\n    }\n\n    invalid(): Date {\n        return new Date(NaN);\n    }\n\n    /** Creates a date but allows the month and date to overflow. */\n    private _createDateWithOverflow(year: number, month: number, date: number) {\n        const result = new Date(year, month, date);\n\n        // We need to correct for the fact that JS native Date treats years in range [0, 99] as\n        // abbreviations for 19xx.\n        if (year >= 0 && year < 100) {\n            result.setFullYear(this.getYear(result) - 1900);\n        }\n        return result;\n    }\n\n    /**\n     * Pads a number to make it two digits.\n     * @param n The number to pad.\n     * @returns The padded number.\n     */\n    private _2digit(n: number) {\n        return ('00' + n).slice(-2);\n    }\n\n    /**\n     * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n     * other browsers do not. We remove them to make output consistent and because they interfere with\n     * date parsing.\n     * @param str The string to strip direction characters from.\n     * @returns The stripped string.\n     */\n    private _stripDirectionalityCharacters(str: string) {\n        return str.replace(/[\\u200e\\u200f]/g, '');\n    }\n\n    /**\n     * When converting Date object to string, javascript built-in functions may return wrong\n     * results because it applies its internal DST rules. The DST rules around the world change\n     * very frequently, and the current valid rule is not always valid in previous years though.\n     * We work around this problem building a new Date object which has its internal UTC\n     * representation with the local date and time.\n     * @param dtf Intl.DateTimeFormat object, containg the desired string format. It must have\n     *    timeZone set to 'utc' to work fine.\n     * @param date Date from which we want to get the string representation according to dtf\n     * @returns A Date object with its UTC representation based on the passed in date info\n     */\n    private _format(dtf: Intl.DateTimeFormat, date: Date) {\n        const d = new Date(\n            Date.UTC(\n                date.getFullYear(),\n                date.getMonth(),\n                date.getDate(),\n                date.getHours(),\n                date.getMinutes(),\n                date.getSeconds(),\n                date.getMilliseconds()\n            )\n        );\n        return dtf.format(d);\n    }\n}\n","/**\n * @license\n * Copyright Health Catalyst All Rights Reserved.\n *\n * Use of this source code is governed by an Apache-2.0 license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/HealthCatalyst/Fabric.Cashmere/dev/LICENSE\n */\n\nimport {HcDateFormats} from './date-formats';\n\nexport const HC_NATIVE_DATE_FORMATS: HcDateFormats = {\n    parse: {\n        dateInput: null\n    },\n    display: {\n        dateInput: {year: 'numeric', month: 'numeric', day: 'numeric'},\n        timeInput: {hour: 'numeric', minute: '2-digit', hour12: true},\n        dateTimeInput: {year: 'numeric', month: 'numeric', day: 'numeric', hour: 'numeric', minute: '2-digit', hour12: true},\n        monthYearLabel: {year: 'numeric', month: 'short'},\n        dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},\n        monthYearA11yLabel: {year: 'numeric', month: 'long'}\n    }\n};\n","/**\n * @license\n * Copyright Health Catalyst All Rights Reserved.\n *\n * Use of this source code is governed by an Apache-2.0 license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/HealthCatalyst/Fabric.Cashmere/dev/LICENSE\n */\n\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {NgModule} from '@angular/core';\nimport {DateAdapter} from './date-adapter';\nimport {HC_DATE_FORMATS} from './date-formats';\nimport {NativeDateAdapter} from './native-date-adapter';\nimport {HC_NATIVE_DATE_FORMATS} from './native-date-formats';\n\n@NgModule({\n    imports: [PlatformModule],\n    providers: [{provide: DateAdapter, useClass: NativeDateAdapter}]\n})\nexport class NativeDateModule {}\n\n@NgModule({\n    imports: [NativeDateModule],\n    providers: [{provide: HC_DATE_FORMATS, useValue: HC_NATIVE_DATE_FORMATS}]\n})\nexport class HcNativeDateModule {}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n  Component,\n  ViewEncapsulation,\n  Output,\n  EventEmitter,\n  Optional,\n  InjectionToken,\n  ElementRef,\n  ChangeDetectionStrategy,\n  OnDestroy,\n  Input,\n  ComponentRef,\n  NgZone,\n  ViewContainerRef,\n  Inject,\n  DOCUMENT\n} from '@angular/core';\nimport {D} from './datetime/date-formats';\nimport {DateAdapter} from './datetime/date-adapter';\nimport {createMissingDateImplError} from './datetime/datepicker-errors';\nimport {Subject, Subscription, merge} from 'rxjs';\nimport {ScrollStrategy, Overlay, ComponentType, OverlayRef, OverlayConfig, PositionStrategy} from '@angular/cdk/overlay';\nimport {parseBooleanAttribute} from '../util';\nimport {HcCalendarCellCssClasses} from './calendar-body/calendar-body.component';\nimport {DatepickerContentComponent} from './datepicker-content/datepicker-content.component';\nimport {ComponentPortal} from '@angular/cdk/portal';\nimport {DatepickerInputDirective} from './datepicker-input/datepicker-input.directive';\nimport {Directionality} from '@angular/cdk/bidi';\n\nimport {take, filter} from 'rxjs/operators';\n\n/** Used to generate a unique ID for each datepicker instance. */\nlet datepickerUid = 0;\n\n/** Injection token that determines the scroll handling while the calendar is open. */\nexport const HC_DATEPICKER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>('hc-datepicker-scroll-strategy');\n\n/** @docs-private */\nexport function HC_DATEPICKER_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n    return () => overlay.scrollStrategies.reposition();\n}\n\n/** @docs-private */\nexport const HC_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n    provide: HC_DATEPICKER_SCROLL_STRATEGY,\n    deps: [Overlay],\n    useFactory: HC_DATEPICKER_SCROLL_STRATEGY_FACTORY\n};\n\n// Boilerplate for applying mixins to hcDatepickerContent.\n/** @docs-private */\nexport class HcDatepickerContentBase {\n    constructor(public _elementRef: ElementRef) {}\n}\n\n/** Component responsible for managing the datepicker popup */\n@Component({\n    selector: 'hc-datepicker',\n    template: '',\n    exportAs: 'hcDatepicker',\n    styleUrls: ['datepicker.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class DatepickerComponent implements OnDestroy {\n    private _scrollStrategy: () => ScrollStrategy;\n\n    /**\n     * Whether the datepicker can be set to a blank value (by deleting its contents). Defaults to `false`.\n     */\n    @Input('allows-blank-values')\n    get allowsBlankValues() {\n        return this._datepickerInput && this._datepickerInput.allowsBlankValues;\n    }\n    set allowsBlankValues(val: boolean) {\n        if (this._datepickerInput) {\n            this._datepickerInput.allowsBlankValues = parseBooleanAttribute(val);\n        }\n    }\n\n    /**\n     * Whether the datepicker includes the calendar, time selector, or both. Defaults to `date`.\n     */\n    @Input()\n    get mode(): 'date' | 'time' | 'date-time' {\n        return this._mode;\n    }\n    set mode( value: 'date' | 'time' | 'date-time' ) {\n        this._mode = value;\n        if ( this._selected ) {\n            this._selectedChanged.next(this._selected);\n        }\n    }\n    private _mode: 'date' | 'time' | 'date-time' = 'date';\n\n    /**\n     * Whether the time picker uses a 12 or 24 hour clock. Defaults to 12.\n     */\n    @Input()\n    get hourCycle(): string | number {\n        return this._hourCycle;\n    }\n    set hourCycle( value: string | number ) {\n        if ( +value !== this._hourCycle) {\n            this._hourCycle = +value;\n            if ( this._selected ) {\n                this._selectedChanged.next(this._selected);\n            }\n        }\n    }\n    private _hourCycle = 12;\n\n    /** An input indicating the type of the custom header component for the calendar, if set. */\n    @Input()\n    calendarHeaderComponent: ComponentType<unknown>;\n\n    /** The date to open the calendar to initially. */\n    @Input()\n    get startAt(): D | null {\n        // If an explicit startAt is set we start there, otherwise we start at whatever the currently\n        // selected value is.\n        return this._startAt || (this._datepickerInput ? this._datepickerInput.value : null);\n    }\n    set startAt(value: D | null) {\n        this._startAt = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n    }\n    private _startAt: D | null;\n\n    /** The view that the calendar should start in. */\n    @Input()\n    startView: 'month' | 'year' | 'multi-year' = 'month';\n\n    /** Whether the datepicker pop-up should be disabled. */\n    @Input()\n    get disabled(): boolean {\n        return this._disabled === undefined && this._datepickerInput ? this._datepickerInput.disabled : !!this._disabled;\n    }\n    set disabled(value: boolean) {\n        const newValue = parseBooleanAttribute(value);\n\n        if (newValue !== this._disabled) {\n            this._disabled = newValue;\n            this._disabledChange.next(newValue);\n        }\n    }\n    private _disabled: boolean;\n\n    /**\n     * Emits selected year in multiyear view.\n     * This doesn't imply a change on the selected date.\n     */\n    @Output()\n    readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n    /**\n     * Emits selected month in year view.\n     * This doesn't imply a change on the selected date.\n     */\n    @Output()\n    readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n    /** Classes to be passed to the date picker panel. Supports the same syntax as `ngClass`. */\n    @Input()\n    panelClass: string | string[];\n\n    /** Function that can be used to add custom CSS classes to dates. */\n    @Input()\n    dateClass: (date: D) => HcCalendarCellCssClasses;\n\n    /** Emits when the datepicker has been opened. */\n    @Output('opened')\n    openedStream: EventEmitter<void> = new EventEmitter<void>();\n\n    /** Emits when the datepicker has been closed. */\n    @Output('closed')\n    closedStream: EventEmitter<void> = new EventEmitter<void>();\n\n    /** Whether the calendar is open. */\n    @Input()\n    get opened(): boolean {\n        return this._opened;\n    }\n    set opened(value: boolean) {\n        if (value) {\n            this.open();\n        } else {\n            this.close();\n        }\n    }\n    private _opened = false;\n\n    /** The id for the datepicker calendar. */\n    id = `hc-datepicker-${datepickerUid++}`;\n\n    /** The currently selected date. */\n    get _selected(): D | null {\n        return this._validSelected;\n    }\n    set _selected(value: D | null) {\n        this._validSelected = value;\n    }\n    private _validSelected: D | null = null;\n\n    /** The minimum selectable date. */\n    get _minDate(): D | null {\n        return this._datepickerInput && this._datepickerInput.min;\n    }\n\n    /** The maximum selectable date. */\n    get _maxDate(): D | null {\n        return this._datepickerInput && this._datepickerInput.max;\n    }\n\n    get _dateFilter(): (date: D | null) => boolean {\n        return this._datepickerInput && this._datepickerInput._dateFilter;\n    }\n\n    /** A reference to the overlay when the calendar is opened as a popup. */\n    _popupRef: OverlayRef | null;\n\n    /** A portal containing the calendar for this datepicker. */\n    private _calendarPortal: ComponentPortal<DatepickerContentComponent>;\n\n    /** Reference to the component instantiated in popup mode. */\n    private _popupComponentRef: ComponentRef<DatepickerContentComponent> | null;\n\n    /** The element that was focused before the datepicker was opened. */\n    private _focusedElementBeforeOpen: HTMLElement | null = null;\n\n    /** Subscription to value changes in the associated input element. */\n    private _inputSubscription = Subscription.EMPTY;\n\n    /** The input element this datepicker is associated with. */\n    _datepickerInput: DatepickerInputDirective;\n\n    /** Emits when the datepicker is disabled. */\n    readonly _disabledChange = new Subject<boolean>();\n\n    /** Emits new selected date when selected date changes. */\n    readonly _selectedChanged = new Subject<D>();\n\n    constructor(\n        private _overlay: Overlay,\n        private _ngZone: NgZone,\n        private _viewContainerRef: ViewContainerRef,\n        @Inject(HC_DATEPICKER_SCROLL_STRATEGY) scrollStrategy: any,\n        @Optional() private _dateAdapter: DateAdapter<D>,\n        @Optional() private _dir: Directionality,\n        @Optional()\n        @Inject(DOCUMENT)\n        private _document: any\n    ) {\n        if (!this._dateAdapter) {\n            throw createMissingDateImplError('DateAdapter');\n        }\n\n        this._scrollStrategy = scrollStrategy;\n    }\n\n    ngOnDestroy(): void {\n        this.close();\n        this._inputSubscription.unsubscribe();\n        this._disabledChange.complete();\n\n        if (this._popupRef) {\n            this._popupRef.dispose();\n            this._popupComponentRef = null;\n        }\n    }\n\n    /** Selects the given date */\n    select(date: D): void {\n        const oldValue = this._selected;\n        this._selected = date;\n        if (!this._dateAdapter.sameDate(oldValue, this._selected)) {\n            this._selectedChanged.next(date);\n        }\n    }\n\n    /** Emits the selected year in multiyear view */\n    _selectYear(normalizedYear: D): void {\n        this.yearSelected.emit(normalizedYear);\n    }\n\n    /** Emits selected month in year view */\n    _selectMonth(normalizedMonth: D): void {\n        this.monthSelected.emit(normalizedMonth);\n    }\n\n    /**\n     * Register an input with this datepicker.\n     * @param input The datepicker input to register with this datepicker.\n     */\n    _registerInput(input: DatepickerInputDirective): void {\n        if (this._datepickerInput) {\n            throw Error('A hcDatepicker can only be associated with a single input.');\n        }\n        this._datepickerInput = input;\n        this._inputSubscription = this._datepickerInput._valueChange.subscribe((value: D | null) => (this._selected = value));\n    }\n\n    /** Open the calendar. */\n    open(): void {\n        if (this._opened || this.disabled) {\n            return;\n        }\n        if (!this._datepickerInput) {\n            throw Error('Attempted to open an hcDatepicker with no associated input.');\n        }\n        if (this._document) {\n            this._focusedElementBeforeOpen = this._document.activeElement as HTMLElement;\n        }\n\n        this._openAsPopup();\n        this._opened = true;\n        this.openedStream.emit();\n    }\n\n    /** Close the calendar. */\n    close(): void {\n        if (!this._opened) {\n            return;\n        }\n        if (this._popupRef && this._popupRef.hasAttached()) {\n            this._popupRef.detach();\n            this._popupRef.dispose();\n            this._popupRef = null;\n        }\n        if (this._calendarPortal && this._calendarPortal.isAttached) {\n            this._calendarPortal.detach();\n        }\n\n        const completeClose = () => {\n            // The `_opened` could've been reset already if\n            // we got two events in quick succession.\n            if (this._opened) {\n                this._opened = false;\n                this.closedStream.emit();\n                this._focusedElementBeforeOpen = null;\n            }\n        };\n\n        if (this._focusedElementBeforeOpen && typeof this._focusedElementBeforeOpen.focus === 'function') {\n            // Because IE moves focus asynchronously, we can't count on it being restored before we've\n            // marked the datepicker as closed. If the event fires out of sequence and the element that\n            // we're refocusing opens the datepicker on focus, the user could be stuck with not being\n            // able to close the calendar at all. We work around it by making the logic, that marks\n            // the datepicker as closed, async as well.\n            this._focusedElementBeforeOpen.focus();\n            setTimeout(completeClose);\n        } else {\n            completeClose();\n        }\n    }\n\n    /** Open the calendar as a popup. */\n    private _openAsPopup(): void {\n        if (!this._calendarPortal) {\n            this._calendarPortal = new ComponentPortal<DatepickerContentComponent>(DatepickerContentComponent, this._viewContainerRef);\n        }\n\n        if (!this._popupRef) {\n            this._createPopup();\n        }\n\n        if (this._popupRef && !this._popupRef.hasAttached()) {\n            this._popupComponentRef = this._popupRef.attach(this._calendarPortal);\n            this._popupComponentRef.instance.datepicker = this;\n\n            // Update the position once the calendar has rendered.\n            this._ngZone.onStable\n                .asObservable()\n                .pipe(take(1))\n                .subscribe(() => {\n                    if (this._popupRef) { this._popupRef.updatePosition(); }\n                });\n        }\n    }\n\n    /** Create the popup. */\n    private _createPopup(): void {\n        const overlayConfig = new OverlayConfig({\n            positionStrategy: this._createPopupPositionStrategy(),\n            hasBackdrop: true,\n            backdropClass: 'hc-overlay-transparent-backdrop',\n            direction: this._dir,\n            scrollStrategy: this._scrollStrategy(),\n            panelClass: 'hc-datepicker-popup'\n        });\n\n        this._popupRef = this._overlay.create(overlayConfig);\n        this._popupRef.overlayElement.setAttribute('role', 'dialog');\n\n        merge(\n            this._popupRef.backdropClick(),\n            this._popupRef.detachments(),\n            this._popupRef.keydownEvents().pipe(\n                filter(event => {\n                    // Closing on alt + up is only valid when there's an input associated with the datepicker.\n                    return event.key === 'Escape' || (this._datepickerInput && event.altKey && event.key === 'ArrowUp');\n                })\n            )\n        ).subscribe(() => this.close());\n    }\n\n    /** Create the popup PositionStrategy. */\n    private _createPopupPositionStrategy(): PositionStrategy {\n        return this._overlay\n            .position()\n            .flexibleConnectedTo(this._datepickerInput.getConnectedOverlayOrigin())\n            .withTransformOriginOn('.hc-datepicker-content')\n            .withFlexibleDimensions(false)\n            .withViewportMargin(8)\n            .withLockedPosition()\n            .withPositions([\n                {\n                    originX: 'start',\n                    originY: 'bottom',\n                    overlayX: 'start',\n                    overlayY: 'top',\n                    // hc form field wrapper bottom margin\n                    offsetY: -20\n                },\n                {\n                    originX: 'start',\n                    originY: 'top',\n                    overlayX: 'start',\n                    overlayY: 'center'\n                },\n                {\n                    originX: 'end',\n                    originY: 'bottom',\n                    overlayX: 'end',\n                    overlayY: 'top'\n                },\n                {\n                    originX: 'end',\n                    originY: 'top',\n                    overlayX: 'end',\n                    overlayY: 'bottom',\n                    offsetY: 60\n                }\n            ]);\n    }\n\n    /**\n     * @param obj The object to check.\n     * @returns The given object if it is both a date instance and valid, otherwise null.\n     */\n    private _getValidDateOrNull(obj: any): D | null {\n        return this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj) ? obj : null;\n    }\n}\n","import {Component, HostBinding, ViewEncapsulation} from '@angular/core';\n\n/** Container for additional label content for HcFormFieldComponent */\n@Component({\n    selector: 'hc-label-ext',\n    template: '<ng-content></ng-content>',\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class HcLabelExtensionComponent {\n    @HostBinding('class.hc-form-field-label-extension')\n    _hostHcLabelClass = true;\n}\n","import {Directive, Input, ContentChildren, AfterContentInit, OnDestroy} from '@angular/core';\nimport type {QueryList} from '@angular/core';\nimport {parseBooleanAttribute} from '../util';\nimport {HcFormFieldComponent} from './hc-form-field.component';\nimport {takeUntil} from 'rxjs/operators';\nimport {Subject} from 'rxjs';\n\n/** `hcForm` directive that allows settings to be applied to all included HcFormFields */\n@Directive({\n    selector: '[hcForm]',\n    standalone: false\n})\nexport class HcFormDirective implements AfterContentInit, OnDestroy {\n    private _tight = false;\n    private unsubscribe$ = new Subject<void>();\n\n    @ContentChildren(HcFormFieldComponent, {descendants: true})\n    _formFields: QueryList<HcFormFieldComponent>;\n\n    /** Set the tight parameter on all enclosed HcFormFields. *Defaults to `false`.*  */\n    @Input()\n    get tight(): boolean {\n        return this._tight;\n    }\n    set tight(value: boolean) {\n        this._tight = parseBooleanAttribute(value);\n        this._updateTightFields();\n    }\n\n    ngAfterContentInit(): void {\n        this._updateTightFields();\n        // Pass the tight setting to any FormFields added dynamically\n        this._formFields.changes.pipe(takeUntil(this.unsubscribe$)).subscribe(() => this._updateTightFields());\n    }\n\n    ngOnDestroy(): void {\n        this.unsubscribe$.next();\n        this.unsubscribe$.complete();\n    }\n\n    _updateTightFields(): void {\n        if (this._formFields) {\n            this._formFields.forEach(field => {\n                field.tight = this._tight;\n            });\n        }\n    }\n}\n","import {NgModule} from '@angular/core';\nimport {HcFormFieldComponent} from './hc-form-field.component';\nimport {CommonModule} from '@angular/common';\nimport {HcErrorComponent} from './hc-error.component';\nimport {HcSuffixDirective} from './hc-suffix.directive';\nimport {HcPrefixDirective} from './hc-prefix.directive';\nimport {HcLabelComponent} from './hc-label.component';\nimport {HcLabelExtensionComponent} from './hc-label-ext.component';\nimport {HcFormDirective} from './hc-form.directive';\n\n@NgModule({\n    imports: [CommonModule],\n    declarations: [\n        HcFormFieldComponent,\n        HcErrorComponent,\n        HcPrefixDirective,\n        HcSuffixDirective,\n        HcLabelComponent,\n        HcLabelExtensionComponent,\n        HcFormDirective\n    ],\n    exports: [\n        HcFormFieldComponent,\n        HcErrorComponent,\n        HcPrefixDirective,\n        HcSuffixDirective,\n        HcLabelComponent,\n        HcLabelExtensionComponent,\n        HcFormDirective\n    ]\n})\nexport class FormFieldModule {}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n    selector: 'hc-clear-input-btn',\n    template: `\n        <div class=\"hc-clear-input-btn\" [class.hc-clear-input-btn-show]=\"inputEl?.value.length > 0\" title=\"Clear\" (click)=\"clear()\"></div>\n    `,\n    styleUrls: ['clear-input.component.scss'],\n    standalone: false\n})\nexport class ClearInputComponent {\n    /** A reference to the HTML input element */\n    @Input() public inputEl: HTMLInputElement;\n    @Output() public clearClicked = new EventEmitter<void>();\n    public clear(): void {\n        this.inputEl.value = '';\n        this.inputEl.focus();\n        this.inputEl.dispatchEvent(new CustomEvent('input')); // forces update of ngModel (if there is one)\n        this.inputEl.dispatchEvent(new CustomEvent('keyup')); // fire off a keyup (for those inputs functioning as a search that are tied to keyup)\n        this.clearClicked.emit();\n    }\n}\n","import {NgModule} from '@angular/core';\nimport {InputDirective} from './input.directive';\nimport {FormFieldModule} from '../form-field/hc-form-field.module';\nimport {CommonModule} from '@angular/common';\nimport { ClearInputComponent } from './clear-input.component';\n\n@NgModule({\n    imports: [CommonModule, FormFieldModule],\n    declarations: [InputDirective, ClearInputComponent],\n    exports: [InputDirective, ClearInputComponent]\n})\nexport class InputModule {}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {SelectComponent} from './select.component';\nimport {HcOptionDirective} from './hc-option.directive';\nimport {ObserversModule} from '@angular/cdk/observers';\n\n@NgModule({\n    imports: [CommonModule, FormsModule, ObserversModule],\n    exports: [SelectComponent, HcOptionDirective],\n    declarations: [SelectComponent, HcOptionDirective]\n})\nexport class SelectModule {}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {CalendarComponent, CalendarHeaderComponent} from './calendar/calendar.component';\nimport {CalendarBodyComponent} from './calendar-body/calendar-body.component';\nimport {DatepickerComponent, HC_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER} from './datepicker.component';\nimport {DatepickerContentComponent} from './datepicker-content/datepicker-content.component';\nimport {DatepickerToggleComponent, DatepickerToggleIconDirective} from './datepicker-toggle/datepicker-toggle.component';\nimport {MonthViewComponent} from './month-view/month-view.component';\nimport {YearViewComponent} from './year-view/year-view.component';\nimport {MultiYearViewComponent} from './multi-year-view/multi-year-view.component';\nimport {HcDatepickerIntl} from './datepicker-intl';\nimport {DatepickerInputDirective} from './datepicker-input/datepicker-input.directive';\nimport {ButtonModule} from '../button/button.module';\nimport {IconModule} from '../icon/icon.module';\nimport {InputModule} from '../input/input.module';\nimport {SelectModule} from '../select/select.module';\nimport {FormFieldModule} from '../form-field/hc-form-field.module';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        FormsModule,\n        ReactiveFormsModule,\n        ButtonModule,\n        IconModule,\n        InputModule,\n        FormFieldModule,\n        SelectModule,\n        OverlayModule,\n        A11yModule,\n        PortalModule\n    ],\n    exports: [\n        CalendarComponent,\n        CalendarBodyComponent,\n        DatepickerComponent,\n        DatepickerContentComponent,\n        DatepickerInputDirective,\n        DatepickerToggleComponent,\n        DatepickerToggleIconDirective,\n        MonthViewComponent,\n        YearViewComponent,\n        MultiYearViewComponent,\n        CalendarHeaderComponent\n    ],\n    declarations: [\n        CalendarComponent,\n        CalendarBodyComponent,\n        DatepickerComponent,\n        DatepickerContentComponent,\n        DatepickerInputDirective,\n        DatepickerToggleComponent,\n        DatepickerToggleIconDirective,\n        MonthViewComponent,\n        YearViewComponent,\n        MultiYearViewComponent,\n        CalendarHeaderComponent\n    ],\n    providers: [HcDatepickerIntl, HC_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER]\n})\nexport class DatepickerModule {}\n","import {Injectable} from '@angular/core';\nimport {DateRangeOptions, DateRange} from '../model/model';\nimport {Observable, BehaviorSubject} from 'rxjs';\nimport {D} from '../../datepicker';\nimport {map, tap} from 'rxjs/operators';\n\n@Injectable()\nexport class ConfigStoreService {\n    private defaultOptions: DateRangeOptions = {\n        presets: [],\n        format: 'medium',\n        mode: 'date',\n        hourCycle: 12,\n        excludeWeekends: false,\n        locale: 'en-us',\n        applyLabel: 'Apply',\n        cancelLabel: 'Cancel',\n        startDatePrefix: 'Start date:',\n        endDatePrefix: 'End date:',\n        invalidDateLabel: 'Please enter valid date',\n        center: false,\n        startDateIsRequired: true,\n        endDateIsRequired: true\n    };\n\n    private dateRangeOptionsSubject: BehaviorSubject<DateRangeOptions> = new BehaviorSubject<DateRangeOptions>(this.defaultOptions);\n    public dateRangeOptions$: Observable<DateRangeOptions>;\n\n    private rangeUpdateSubject: BehaviorSubject<DateRange> = new BehaviorSubject<DateRange>({fromDate: undefined, toDate: undefined});\n    public rangeUpdate$: Observable<DateRange>;\n\n    private presetUpdateSubject: BehaviorSubject<number | DateRange> = new BehaviorSubject<number | DateRange>({\n        fromDate: undefined,\n        toDate: undefined\n    });\n    public presetUpdate$: Observable<number | DateRange>;\n\n    public weekendFilter: (d: D) => boolean = () => true;\n\n    private readonly emptyWeekendFilter = () => true;\n    private readonly excludeWeekendFilter = (d: Date): boolean => {\n        const day = d.getDay();\n        return day !== 0 && day !== 6;\n    };\n\n    constructor() {\n        this.dateRangeOptions$ = this.dateRangeOptionsSubject.pipe(\n            map((options: DateRangeOptions) => {\n                return {\n                    ...this.defaultOptions,\n                    ...options\n                };\n            }),\n            tap((options: DateRangeOptions) => {\n                if (options.excludeWeekends) {\n                    this.weekendFilter = this.excludeWeekendFilter;\n                } else {\n                    this.weekendFilter = this.emptyWeekendFilter;\n                }\n            })\n        );\n\n        this.rangeUpdate$ = this.rangeUpdateSubject.pipe();\n        this.presetUpdate$ = this.presetUpdateSubject.pipe();\n    }\n\n    updateDateRangeOptions(options: DateRangeOptions): void {\n        this.dateRangeOptionsSubject.next(options);\n    }\n\n    updateRange(dateRange: DateRange): void {\n        this.rangeUpdateSubject.next(dateRange);\n    }\n\n    updatePreset(value: number | DateRange): void {\n        this.presetUpdateSubject.next(value);\n    }\n\n    currentSelection(): DateRange {\n        return this.rangeUpdateSubject.value;\n    }\n}\n","import {\n    Component,\n    ViewChild,\n    Input,\n    ChangeDetectionStrategy,\n    ViewEncapsulation,\n    Output,\n    EventEmitter,\n    OnChanges,\n    SimpleChanges,\n    HostBinding,\n    ChangeDetectorRef\n} from '@angular/core';\nimport {ConfigStoreService} from '../services/config-store.service';\nimport {CalendarComponent} from '../../datepicker/calendar/calendar.component';\nimport {DatepickerInputDirective, HcDatepickerInputEvent} from '../../datepicker/datepicker-input/datepicker-input.directive';\nimport {D} from '../../datepicker/datetime/date-formats';\n\n/** Component combining a calendar and input as a representation of a date  */\n@Component({\n    selector: 'hc-calendar-wrapper',\n    templateUrl: './calendar-wrapper.component.html',\n    styleUrls: ['./calendar-wrapper.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class CalendarWrapperComponent implements OnChanges {\n    @HostBinding('class.hc-calendar-wrapper')\n    _hostClass = true;\n\n    @ViewChild(CalendarComponent, {static: true})\n    hcCalendar: CalendarComponent;\n\n    @ViewChild(DatepickerInputDirective, {static: true})\n    datePickerInput: DatepickerInputDirective;\n\n    /** Emits when selected date has changed. */\n    @Output()\n    readonly selectedDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n    /** Current selected date. */\n    @Input()\n    selectedDate: D | undefined;\n\n    @Input()\n    dateFormat: string;\n\n    /** Whether the pickers include the calendar, time selector, or both. Defaults to `date`. */\n    @Input()\n    mode: 'date' | 'time' | 'date-time' = 'date';\n\n    /** Whether the time picker should use a 12 or 24 hour clock. Defaults to 12. */\n    @Input()\n    hourCycle = 12;\n\n    /** Whether the field is required to contain a value. Defaults to `true`. */\n    @Input()\n    required = true;\n\n    /** Prefix label on top of component. */\n    @Input()\n    prefixLabel: string;\n\n    /** Flag to filter out weekends. */\n    @Input()\n    excludeWeekends: boolean;\n\n    /** The minimum selectable date. */\n    @Input()\n    minDate: D | undefined;\n\n    /** The maximum selectable date. */\n    @Input()\n    maxDate: D | undefined;\n\n    /** Message displayed when a date is invalid. */\n    @Input()\n    invalidDateLabel: string;\n\n    weekendFilter = (): boolean => true;\n\n    constructor(public configStore: ConfigStoreService, private ref: ChangeDetectorRef) {}\n\n    ngOnChanges(changes: SimpleChanges): void {\n        // Necessary to force view refresh\n        if (changes.selectedDate) {\n            const date: D = changes.selectedDate.currentValue;\n            if (date) {\n                this.hcCalendar.activeDate = date;\n                this.datePickerInput.setDate(date);\n                this.selectedDateChange.emit(date);\n            }\n        }\n\n        // eslint-disable-next-line no-prototype-builtins\n        if (changes.hasOwnProperty('required')) {\n            const isRequired = changes.required.currentValue;\n            this.datePickerInput.allowsBlankValues = !isRequired;\n        }\n    }\n\n    _onCalendarChange(date: D): void {\n        this.selectedDateChange.emit(date);\n    }\n\n    _onInputChange(event: HcDatepickerInputEvent): void {\n        if (this.mode === 'time') {\n            const tempVal = event.value ? new Date(1900, 1, 1, event.value.getHours(), event.value.getMinutes()) : new Date(1900, 1, 1);\n            const minVal = this.minDate ? new Date(1900, 1, 1, this.minDate.getHours(), this.minDate.getMinutes()) : new Date(1900, 1, 1);\n            const maxVal = this.maxDate ? new Date(1900, 1, 1, this.maxDate.getHours(), this.maxDate.getMinutes()) : new Date(1900, 1, 2);\n\n            if (tempVal < minVal || tempVal > maxVal) {\n                this.selectedDate = undefined;\n                this.selectedDateChange.emit(undefined);\n            } else {\n                this.selectedDateChange.emit(event.value || undefined);\n            }\n        } else {\n            if (event.value && ((this.minDate && event.value < this.minDate) || (this.maxDate && event.value > this.maxDate))) {\n                this.selectedDate = undefined;\n                this.selectedDateChange.emit(undefined);\n            } else {\n                this.selectedDateChange.emit(event.value || undefined);\n            }\n        }\n    }\n\n    /** Focus inner input */\n    focusInput(): void {\n        this.datePickerInput.focus();\n        this.ref.detectChanges();\n    }\n}\n","<div class=\"form-container\">\n    <hc-form-field class=\"hc-calendar-wrapper-form-field\">\n        <hc-label [innerText]=\"prefixLabel\"></hc-label>\n        <input\n            hcInput\n            hcDatepicker\n            [(ngModel)]=\"selectedDate\"\n            [required]=\"required\"\n            (dateChange)=\"_onInputChange($event)\"\n            [min]=\"minDate\"\n            [max]=\"maxDate\"\n            [_mode]=\"mode\"\n            [_hourCycle]=\"hourCycle\"\n        />\n        <hc-error [innerText]=\"invalidDateLabel\"></hc-error>\n    </hc-form-field>\n</div>\n<hc-calendar\n    [mode]=\"mode\"\n    [hourCycle]=\"hourCycle\"\n    [startAt]=\"selectedDate\"\n    [selected]=\"selectedDate\"\n    [minDate]=\"minDate\"\n    [maxDate]=\"maxDate\"\n    (selectedChange)=\"_onCalendarChange($event)\"\n    [dateFilter]=\"configStore.weekendFilter\"\n>\n</hc-calendar>\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @angular-eslint/directive-selector */\nimport {\n    AfterContentInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChildren,\n    Directive,\n    EventEmitter,\n    forwardRef,\n    HostBinding,\n    Input,\n    OnInit,\n    Optional,\n    Output,\n    Self,\n    ElementRef,\n    ContentChild,\n    OnDestroy\n} from '@angular/core';\nimport type {QueryList} from '@angular/core';\nimport {parseBooleanAttribute} from '../util';\nimport {HcFormControlComponent} from '../form-field/hc-form-control.component';\nimport {ControlValueAccessor, NgForm, FormGroupDirective, NgControl} from '@angular/forms';\nimport { InputDirective } from '../input';\nimport { delay, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nlet nextUniqueId = 0;\n\n/** Groups single radio buttons together into a set for which only one can be selected */\n@Directive({\n    selector: 'hc-radio-group',\n    providers: [{ provide: HcFormControlComponent, useExisting: forwardRef(() => RadioGroupDirective), multi: true }],\n    exportAs: 'hcRadioGroup',\n    standalone: false\n})\nexport class RadioGroupDirective extends HcFormControlComponent implements ControlValueAccessor, AfterContentInit, OnDestroy {\n    @HostBinding('class.hc-radio-group-vertical')\n    _verticalClass = true;\n    @HostBinding('class.hc-radio-group-horizontal')\n    _horizontalClass = false;\n\n    /** Event emitted when the value of a radio button changes inside the group. */\n    @Output()\n    change: EventEmitter<RadioButtonChangeEvent> = new EventEmitter<RadioButtonChangeEvent>();\n    /** A list of all the radio buttons included in the group */\n    @ContentChildren(\n        forwardRef(() => RadioButtonComponent),\n        {descendants: true}\n    )\n    radios: QueryList<RadioButtonComponent>;\n    private _value: any = null;\n    private _uniqueName = `hc-radio-group-${nextUniqueId++}`;\n    private _name = this._uniqueName;\n    private _inline = false;\n    private _align: 'center' | 'top' | 'bottom' = 'center';\n    private _initialized = false; // if value of radio group has been set to initial value\n    private _selected: RadioButtonComponent | null = null; // the currently selected radio\n    private _form: NgForm | FormGroupDirective | null;\n    private _unsubscribe = new Subject<void>();\n\n    _componentId = this._name;\n\n    /** Name of radio group. Auto-generated name will be used if no name is set */\n    @Input()\n    get name(): string {\n        return this._name;\n    }\n\n    set name(value: string) {\n        this._name = value ? value : this._uniqueName;\n        this._updateRadioButtonNames();\n    }\n\n    /** Unique id for the radio group. If none is supplied, defaults to name. */\n    @Input()\n    get id(): string {\n        return this._componentId || this._name;\n    }\n\n    set id(idVal: string) {\n        this._componentId = idVal ? idVal : this._name;\n    }\n\n    /** Value of radio buttons */\n    @Input()\n    get value(): any {\n        return this._value;\n    }\n\n    set value(newValue: any) {\n        if (this._value !== newValue) {\n            this._value = newValue;\n            this._updateSelectedRadio();\n            this._checkSelectedRadio();\n        }\n    }\n\n    /** Boolean value that enables/disables the radio group */\n    @Input()\n    get disabled(): boolean {\n        if (this._ngControl && this._ngControl.disabled) {\n            return this._ngControl.disabled;\n        }\n        return this._isDisabled;\n    }\n\n    set disabled(value: boolean) {\n        this._isDisabled = parseBooleanAttribute(value);\n        this._markRadiosForCheck();\n    }\n\n    /** Boolean value of whether the radio group is required on a form */\n    @Input()\n    get required(): boolean {\n        return this._isRequired;\n    }\n\n    set required(value: boolean) {\n        this._isRequired = parseBooleanAttribute(value);\n        this._markRadiosForCheck();\n    }\n\n    /** Gets and sets the currently selected value of the radio button group */\n    get selected(): RadioButtonComponent | null {\n        return this._selected;\n    }\n\n    set selected(button: RadioButtonComponent | null) {\n        this._selected = button;\n        this.value = button ? button.value : null;\n        this._checkSelectedRadio();\n    }\n\n    /** Sets the layout orientation of the radio button group; defaults to false */\n    @Input()\n    get inline(): boolean {\n        return this._inline;\n    }\n\n    set inline(value: boolean) {\n        this._inline = parseBooleanAttribute(value);\n        this._verticalClass = !this._inline;\n        this._horizontalClass = this._inline;\n    }\n\n    /** If true, condense the default margin and reduce the font size on all contained radios. *Defaults to `false`.*  */\n    @Input()\n    get tight(): boolean {\n        return this._tight;\n    }\n    set tight(value : boolean) {\n        this._tight = parseBooleanAttribute(value);\n    }\n\n    /** Sets the position all radios in the group relative to their associated label. *Defaults to `center`.*  */\n    @Input()\n    get align(): 'center' | 'top' | 'bottom' {\n        return this._align;\n    }\n    set align( value: 'center' | 'top' | 'bottom' ) {\n        this._align = value;\n        this._markRadiosForCheck();\n    }\n\n    constructor(\n        private _cdRef: ChangeDetectorRef,\n        @Optional() _parentForm: NgForm,\n        @Optional() _parentFormGroup: FormGroupDirective,\n        @Optional()\n        @Self()\n        public _ngControl: NgControl\n    ) {\n        super();\n\n        this._form = _parentForm || _parentFormGroup;\n        if (this._ngControl != null) {\n            this._ngControl.valueAccessor = this;\n        }\n    }\n\n    ngAfterContentInit(): void {\n        this._initialized = true;\n        setTimeout(() => this._markRadiosForCheck());\n\n        if ( this._ngControl?.statusChanges ) {\n            // delay() is necessary to make sure any form or control state changes have been applied before rechecking error states\n            this._ngControl.statusChanges.pipe(delay(0), takeUntil(this._unsubscribe)).subscribe(() => this._updateErrorState());\n        }\n        if ( this._form ) {\n            this._form.ngSubmit.pipe(takeUntil(this._unsubscribe)).subscribe(() => this._updateErrorState());\n        }\n\n        /** Monkey patching the markAsTouched function to call error state checking because there is not an event for touched changes */\n        if ( this._ngControl && this._ngControl.control ) {\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            const self = this;\n            const originalMarkMethod = this._ngControl.control.markAsTouched;\n            this._ngControl.control.markAsTouched = function () {\n                // eslint-disable-next-line prefer-rest-params\n                originalMarkMethod.apply(this, arguments);\n                self._updateErrorState();\n            };\n\n            const originalMarkAllMethod = this._ngControl.control.markAllAsTouched;\n            this._ngControl.control.markAllAsTouched = function () {\n                // eslint-disable-next-line prefer-rest-params\n                originalMarkAllMethod.apply(this, arguments);\n                self._updateErrorState();\n            };\n        }\n    }\n\n    writeValue(value: any): void {\n        // Prevent the form control from trying to write a value when removing the control\n        if ( this.onChange.name !== 'noop' ) {\n            this.value = value;\n            this._cdRef.markForCheck();\n        }\n    }\n\n    public onChange: (value: unknown) => void = () => undefined;\n    public onTouch: () => unknown = () => undefined;\n    public registerOnChange(fn: (value: unknown) => void): void {\n        this.onChange = fn;\n    }\n    public registerOnTouched(fn: () => unknown): void {\n        this.onTouch = fn;\n    }\n\n    setDisabledState(disabledVal: boolean): void {\n        this.disabled = disabledVal;\n    }\n\n    _touch(): void {\n        if (this.onTouch) {\n            this.onTouch();\n        }\n        this._updateErrorState();\n    }\n\n    _emitChangeEvent(): void {\n        if (this._initialized) {\n            this.change.emit(new RadioButtonChangeEvent(this._selected, this.value));\n        }\n    }\n\n    private _markRadiosForCheck() {\n        if (this.radios) {\n            this.radios.forEach(radio => radio._markForCheck());\n        }\n    }\n\n    private _updateSelectedRadio() {\n        const isAlreadySelected = this._selected !== null && this._selected.value === this._value;\n        if (this.radios && !isAlreadySelected) {\n            this._selected = null;\n            this.radios.forEach(radio => {\n                radio.checked = this.value === radio.value;\n                if (radio.checked) {\n                    this._selected = radio;\n                }\n            });\n        }\n    }\n\n    private _checkSelectedRadio() {\n        if (this._selected && !this._selected.checked) {\n            this._selected.checked = true;\n        }\n    }\n\n    private _updateRadioButtonNames(): void {\n        if (this.radios) {\n            this.radios.forEach(radio => {\n                radio.name = this.name;\n            });\n        }\n    }\n\n    private _updateErrorState() {\n        const oldState = this._errorState;\n\n        // TODO: this could be abstracted out as an @Input() if we need this to be configurable\n        const newState = !!(\n            this._ngControl &&\n            this._ngControl.invalid &&\n            (this._ngControl.touched || (this._form && this._form.submitted))\n        );\n\n        if (oldState !== newState) {\n            this._errorState = newState;\n            this._cdRef.detectChanges();\n        }\n    }\n\n    ngOnDestroy(): void {\n        this._unsubscribe.next();\n        this._unsubscribe.complete();\n    }\n}\n\n/** Event type that is emitted when a radio button or radio button group changes */\nexport class RadioButtonChangeEvent {\n    /**\n     * @param source the radio button that fired the event\n     * @param value the value of that radio button\n     */\n    constructor(public source: RadioButtonComponent | null, public value: any) {}\n}\n\n/** Radio buttons allow the user to choose only one of a predefined set of mutually exclusive options. */\n@Component({\n    selector: 'hc-radio-button',\n    templateUrl: './radio-button.component.html',\n    styleUrls: ['./radio-button.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class RadioButtonComponent implements OnInit, AfterContentInit, OnDestroy {\n    private _uniqueId = `hc-radio-button-${nextUniqueId++}`;\n    /** Element id for the radio button. Auto-generated id will be used if none is set */\n    @Input()\n    id: string = this._uniqueId;\n    /** Name of radio button */\n    @Input()\n    name: string;\n    /** Event emitted when the value of the radio button changes */\n    @Output()\n    change = new EventEmitter<RadioButtonChangeEvent>();\n    private _checked = false;\n    private _value: any = null;\n    private _required = false;\n    private _disabled = false;\n    private _tight = false;\n    private _align: 'center' | 'top' | 'bottom' = 'center';\n    private readonly radioGroup: RadioGroupDirective | null;\n\n    private unsubscribe$ = new Subject<void>();\n\n    @ContentChild(InputDirective)\n    _inputChild: InputDirective;\n\n    /** Value of radio buttons */\n    @Input()\n    get value() {\n        return this._value;\n    }\n\n    set value(value: any) {\n        if (this._value !== value) {\n            this._value = value;\n            if (this.radioGroup !== null && !this.checked) {\n                this.checked = this.radioGroup.value === value;\n            } else if (this.radioGroup !== null && this.checked) {\n                this.radioGroup.selected = this;\n            }\n        }\n    }\n\n    @HostBinding('attr.id')\n    get _getHostId(): string {\n        return this.id;\n    }\n\n    /** Boolean value of whether the radio button is required */\n    @Input()\n    get required(): boolean {\n        return this._required || (this.radioGroup != null && this.radioGroup.required);\n    }\n\n    set required(required : boolean) {\n        this._required = parseBooleanAttribute(required);\n    }\n\n    /** Boolean value that enables/disables the radio button */\n    @Input()\n    get disabled(): boolean {\n        return this._disabled || (this.radioGroup != null && this.radioGroup.disabled);\n    }\n\n    set disabled(isDisabled: boolean) {\n        this._disabled = parseBooleanAttribute(isDisabled);\n    }\n\n    /** Boolean that returns whether the radio button is selected */\n    @Input()\n    get checked(): boolean {\n        return this._checked;\n    }\n\n    set checked(value: boolean) {\n        const newCheckedState = parseBooleanAttribute(value);\n        if (this._checked !== newCheckedState) {\n            this._checked = newCheckedState;\n            if (newCheckedState && this.radioGroup && this.radioGroup.value !== this.value) {\n                this.radioGroup.selected = this;\n            } else if (!newCheckedState && this.radioGroup && this.radioGroup.value === this.value) {\n                this.radioGroup.selected = null;\n            }\n            this.cdRef.markForCheck();\n        }\n    }\n\n    get _inlineGroup(): boolean {\n        if (this.radioGroup !== null) {\n            return this.radioGroup.inline;\n        } else {\n            return false;\n        }\n    }\n\n    /** If true, condense the default margin, reduce the font size, and decrease the circle size.\n     * Inherits value from parent radio group if part of one. *Defaults to `false`.*  */\n    @Input()\n    get tight(): boolean {\n        if (this.radioGroup !== null) {\n            return this.radioGroup.tight;\n        } else {\n            return this._tight;\n        }\n    }\n    set tight(value: boolean) {\n        this._tight = parseBooleanAttribute(value);\n    }\n\n    /** Sets the position of the radio button relative to its associated label (if not already set in the group). *Defaults to `center`.*  */\n    @Input()\n    get align(): 'center' | 'top' | 'bottom' {\n        if (this.radioGroup !== null) {\n            return this.radioGroup.align;\n        } else {\n            return this._align;\n        }\n    };\n    set align( value: 'center' | 'top' | 'bottom' ) {\n        this._align = value;\n    }\n\n    get _overlayClass(): string {\n        const tightClass = this.tight ? '-tight' : '';\n        return 'hc-radio-overlay hc-radio-align-' + this.align + tightClass;\n    }\n\n    get _inputId(): string {\n        return `${this.id || this._uniqueId}-input`;\n    }\n\n    constructor(@Optional() radioGroup: RadioGroupDirective, private cdRef: ChangeDetectorRef, public _elementRef: ElementRef) {\n        this.radioGroup = radioGroup;\n    }\n\n    ngOnInit(): void {\n        if (this.radioGroup !== null) {\n            this.checked = this.radioGroup.value === this._value;\n            this.name = this.radioGroup.name;\n        }\n    }\n\n    ngAfterContentInit(): void {\n        if ( this._inputChild ) {\n            this._inputChild.focusChanged.pipe(takeUntil(this.unsubscribe$)).subscribe( state => {\n                if ( state ) {\n                    this._onInputChange();\n                }\n            });\n\n            this._inputChild.inputEvent.pipe(takeUntil(this.unsubscribe$)).subscribe( event => {\n                event.stopPropagation();\n                this._onInputChange();\n            });\n        }\n    }\n\n    _onInputClick(event: Event): void {\n        event.stopPropagation();\n    }\n\n    _onInputChange(event?: Event): void {\n        if ( event ) {\n            event.stopPropagation();\n        }\n        const valueChanged = this.radioGroup && this.value !== this.radioGroup.value;\n        this._emitChangeEvent();\n        if (this.radioGroup !== null) {\n            this.radioGroup.onChange(this.value);\n            this.radioGroup._touch();\n            if (valueChanged) {\n                this.radioGroup.value = this.value;\n                this.radioGroup._emitChangeEvent();\n            }\n        } else {\n            this.checked = true;\n        }\n    }\n\n    private _emitChangeEvent(): void {\n        this.change.emit(new RadioButtonChangeEvent(this, this.value));\n    }\n\n    _markForCheck(): void {\n        this.cdRef.markForCheck();\n    }\n\n    ngOnDestroy(): void {\n        this.unsubscribe$.next();\n        this.unsubscribe$.complete();\n    }\n}\n","<label class=\"hc-radio-container\"\n    [class.disabled]=\"disabled\"\n    [class.hc-radio-inline]=\"_inlineGroup\"\n    [class.hc-radio-tight]=\"tight\" >\n    <input class=\"hc-radio-input\"\n           [class.disabled]=\"disabled\"\n           type=\"radio\"\n           [id]=\"_inputId\"\n           [attr.value]=\"value\"\n           [attr.name]=\"name\"\n           [disabled]=\"disabled\"\n           [required]=\"required\"\n           [checked]=\"checked\"\n           (change)=\"_onInputChange($event)\"\n           (click)=\"_onInputClick($event)\"/>\n    <span [class]=\"_overlayClass\" [class.disabled]=\"disabled\"></span>\n    <div class=\"hc-radio-content\">\n        <ng-content></ng-content>\n    </div>\n</label>\n","import {Component, OnInit, ViewEncapsulation, AfterViewInit, ViewChildren, ChangeDetectionStrategy, ChangeDetectorRef, EventEmitter} from '@angular/core';\nimport type {QueryList} from '@angular/core';\nimport {DateRangeOptions, PresetItem} from '../model/model';\nimport {OverlayRef} from '@angular/cdk/overlay';\nimport {ConfigStoreService} from '../services/config-store.service';\nimport {DateRange} from '../model/model';\nimport {D} from '../../datepicker/datetime/date-formats';\nimport {CalendarWrapperComponent} from '../calendar-wrapper/calendar-wrapper.component';\nimport {Observable} from 'rxjs';\n\n// ** Date range wrapper component */\n@Component({\n    selector: 'hc-date-range-picker-overlay',\n    templateUrl: './picker-overlay.component.html',\n    styleUrls: ['./picker-overlay.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class PickerOverlayComponent implements OnInit, AfterViewInit {\n    options$: Observable<DateRangeOptions>;\n    set _fromDate(fd: D | undefined) { this.__fromDate = fd; this.cd.markForCheck(); }\n    get _fromDate(): D | undefined { return this.__fromDate; }\n    set _toDate(td: D | undefined) { this.__toDate = td; this.cd.markForCheck(); }\n    get _toDate(): D | undefined { return this.__toDate; }\n    set _selectedPreset(s: number | null ) { this.__selectedPreset = s; this.cd.markForCheck(); }\n    get _selectedPreset(): number | null { return this.__selectedPreset; }\n    set _rangeIsInvalid(isInvalid: boolean) { this.__rangeIsInvalid = isInvalid; this.cd.markForCheck(); }\n    get _rangeIsInvalid(): boolean { return this.__rangeIsInvalid; }\n    get _invalidRangeErrorMessage(): string | null { return this.__invalidRangeErrorMessage; }\n    _presetValues: PresetItem[] | undefined;\n    _skipRangeCheck = false;\n\n    __fromDate: D | undefined;\n    __toDate: D | undefined;\n    __selectedPreset: number | null;\n    __rangeIsInvalid = false; // if true, the fromDate is after the toDate and save will not be allowed\n    __invalidRangeErrorMessage: string | null;\n    _fromDateIsRequired?: boolean = true;\n    _toDateIsRequired?: boolean = true;\n\n    __startDatePrefix: string | undefined;\n    __endDatePrefix: string | undefined;\n\n    readonly _dismissed: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n    @ViewChildren(CalendarWrapperComponent)\n    calendarWrappers: QueryList<CalendarWrapperComponent>;\n\n    constructor(public configStoreService: ConfigStoreService, private overlayRef: OverlayRef, private cd: ChangeDetectorRef) {\n        this.options$ = configStoreService.dateRangeOptions$;\n    }\n\n    ngOnInit(): void {\n        this.options$.subscribe((options: DateRangeOptions) => {\n            this._fromDateIsRequired = options.startDateIsRequired;\n            this._toDateIsRequired = options.endDateIsRequired;\n            this.__startDatePrefix = options.startDatePrefix;\n            this.__endDatePrefix = options.endDatePrefix;\n            this._presetValues = options.presets;\n            this.cd.markForCheck();\n        });\n        this.configStoreService.rangeUpdate$.subscribe((dateRange: DateRange) => {\n            if (dateRange) {\n                this._fromDate = dateRange.fromDate;\n                this._toDate = dateRange.toDate;\n            } else {\n                this._fromDate = undefined;\n                this._toDate = undefined;\n            }\n            this._validateRange();\n        });\n        this.configStoreService.presetUpdate$.subscribe((presetIndex: number | DateRange) => {\n            if (typeof presetIndex === 'number') {\n                this._selectedPreset = presetIndex;\n                this._updateRangeByPreset( presetIndex );\n            }\n        });\n    }\n\n    ngAfterViewInit(): void {\n        if (this.calendarWrappers.first) {\n            this.calendarWrappers.first.focusInput();\n        }\n    }\n\n    _updateFromDate(date?: D): void {\n        if ( !this._skipRangeCheck ) {\n            this._fromDate = date;\n            this._isRangePreset();\n        }\n\n        if (this._rangeIsInvalid) {\n            this._validateRange();\n        }\n    }\n\n    _updateToDate(date?: D): void {\n        if ( !this._skipRangeCheck ) {\n            this._toDate = date;\n            this._isRangePreset();\n        }\n\n        if (this._rangeIsInvalid) {\n            this._validateRange();\n        }\n    }\n\n    _updateRangeByPreset(index: number): void {\n        if (this._presetValues && index < this._presetValues.length && index >= 0 ) {\n            // Prevent the system from assigning a preset if one has specifically been selected\n            this._skipRangeCheck = true;\n            this._fromDate = this._presetValues[index].range.fromDate;\n            this._toDate = this._presetValues[index].range.toDate;\n\n            setTimeout(() => {\n                if ( this._fromDate ) {\n                    this.calendarWrappers.first.hcCalendar.activeDate = this._fromDate;\n                }\n                if ( this._toDate ) {\n                    this.calendarWrappers.last.hcCalendar.activeDate = this._toDate;\n                }\n                this._skipRangeCheck = false;\n            });\n        }\n    }\n\n    _isRangePreset(): void {\n        this._selectedPreset = null;\n        if (this._presetValues) {\n            for (let i = 0; i < this._presetValues.length; i++) {\n                const radioRange: DateRange = this._presetValues[i].range;\n                if (this._fromDate && radioRange.fromDate && this._toDate && radioRange.toDate) {\n                    if ( this._fromDate.toDateString() === radioRange.fromDate.toDateString() &&\n                        this._toDate.toDateString() === radioRange.toDate.toDateString() ) {\n                            this._selectedPreset = i;\n                    }\n                }\n            }\n        }\n    }\n\n    _applyNewDates(): void {\n        this._validateRange();\n        if (this._rangeIsInvalid) { return; }\n        this.configStoreService.updateRange({fromDate: this._fromDate, toDate: this._toDate});\n        if (this._selectedPreset !== null) {\n            this.configStoreService.updatePreset(this._selectedPreset);\n        } else {\n            this.configStoreService.updatePreset({fromDate: this._fromDate, toDate: this._toDate});\n        }\n        this._dismissed.emit( true );\n        this.overlayRef.dispose();\n    }\n\n    _validateRange(): void {\n        let startLabel = this.__startDatePrefix ?? \"Start date\";\n        if (startLabel.endsWith(\":\")) {\n            startLabel = startLabel.slice(0,-1);\n        }\n\n        let endLabel = this.__endDatePrefix ?? \"End date\";\n        if (endLabel.endsWith(\":\")) {\n            endLabel = endLabel.slice(0,-1);\n        }\n\n        const bothDatesNull = !this._fromDate && !this._toDate;\n        const isDateRequired = !!this._fromDateIsRequired || !!this._toDateIsRequired\n\n        if (bothDatesNull && isDateRequired) {\n            this._rangeIsInvalid = true;\n            this.__invalidRangeErrorMessage = \"You must choose a date.\";\n        } else if (!!this._fromDate && !!this._toDate) {\n            this._rangeIsInvalid = this._fromDate > this._toDate;\n            this.__invalidRangeErrorMessage = `${startLabel} cannot be after ${endLabel}.`;\n        } else if (this._fromDateIsRequired && !this._fromDate) {\n            this._rangeIsInvalid = true;\n            this.__invalidRangeErrorMessage = `${startLabel} cannot be blank.`;\n        } else if (this._toDateIsRequired && !this._toDate) {\n            this._rangeIsInvalid = true;\n            this.__invalidRangeErrorMessage = `${endLabel} cannot be blank.`;\n        } else {\n            this._rangeIsInvalid = false;\n            this.__invalidRangeErrorMessage = null;\n        }        \n    }\n\n    _discardNewDates(): void {\n        this._dismissed.emit( false );\n        this.overlayRef.dispose();\n    }\n}\n","@if (options$ | async; as options) {\n<div class=\"hc-date-range-calendar-container\">\n    <div class=\"hc-date-range-calendar-item hc-date-range-calendar-wrapper\">\n        <hc-calendar-wrapper\n            [prefixLabel]=\"options.startDatePrefix\"\n            [selectedDate]=\"_fromDate\"\n            [minDate]=\"options.fromMinMax?.fromDate\"\n            (selectedDateChange)=\"_updateFromDate($event)\"\n            [maxDate]=\"options.fromMinMax?.toDate\"\n            [excludeWeekends]=\"options.excludeWeekends\"\n            [dateFormat]=\"options.format\"\n            [invalidDateLabel]=\"options.invalidDateLabel\"\n            [mode]=\"options.mode\"\n            [hourCycle]=\"options.hourCycle\"\n            [required]=\"options.startDateIsRequired\"\n        ></hc-calendar-wrapper>\n    </div>\n    <div class=\"hc-date-range-calendar-item hc-date-range-calendar-wrapper\">\n        <hc-calendar-wrapper\n            [prefixLabel]=\"options.endDatePrefix\"\n            [selectedDate]=\"_toDate\"\n            [minDate]=\"options.toMinMax?.fromDate\"\n            [maxDate]=\"options.toMinMax?.toDate\"\n            (selectedDateChange)=\"_updateToDate($event)\"\n            [excludeWeekends]=\"options.excludeWeekends\"\n            [dateFormat]=\"options.format\"\n            [invalidDateLabel]=\"options.invalidDateLabel\"\n            [mode]=\"options.mode\"\n            [hourCycle]=\"options.hourCycle\"\n            [required]=\"options.endDateIsRequired\"\n        ></hc-calendar-wrapper>\n    </div>\n    <div class=\"hc-date-range-calendar-item hc-date-range\">\n        <div class=\"hc-date-range-menu\">\n            <hc-radio-group class=\"presets\" [(ngModel)]=\"_selectedPreset\">\n                @for (p of options.presets; track p; let i = $index) {\n                <hc-radio-button [value]=\"i\" (change)=\"_updateRangeByPreset(i)\">\n                    {{ p.presetLabel }}\n                </hc-radio-button>\n                }\n            </hc-radio-group>\n            <div class=\"hc-date-range-controls\">\n                <button class=\"hc-date-range-control\" hc-button buttonStyle=\"link\" type=\"button\" (click)=\"_discardNewDates()\">\n                    {{ options.cancelLabel }}\n                </button>\n                <button\n                    class=\"hc-date-range-control\"\n                    hc-button\n                    buttonStyle=\"primary\"\n                    type=\"button\"\n                    [disabled]=\"this._rangeIsInvalid\"\n                    (click)=\"_applyNewDates()\"\n                >\n                    {{ options.applyLabel }}\n                </button>\n            </div>\n            @if (_rangeIsInvalid) {\n            <hc-chip color=\"red\">\n                <span class=\"hc-date-range-warning-icon\"></span>\n                {{ _invalidRangeErrorMessage }}\n            </hc-chip>\n            }\n        </div>\n    </div>\n</div>\n}\n","import {Injectable, ElementRef, Injector, EventEmitter, OnDestroy} from '@angular/core';\nimport {Overlay, OverlayConfig, OverlayRef} from '@angular/cdk/overlay';\nimport {ComponentPortal} from '@angular/cdk/portal';\nimport {PickerOverlayComponent} from '../picker-overlay/picker-overlay.component';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\n@Injectable()\nexport class CalendarOverlayService implements OnDestroy {\n    private hostElemRef: ElementRef;\n\n    readonly _dismissed: EventEmitter<boolean> = new EventEmitter<boolean>();\n    private unsubscribe$ = new Subject<void>();\n\n    constructor(private overlay: Overlay, private injector: Injector) {}\n\n    open(hostElemRef: ElementRef, center?: boolean): OverlayRef {\n        this.hostElemRef = hostElemRef;\n        const overlayRef = this._createOverlay(center);\n        const portalInjector = this._createInjector(overlayRef);\n        const calendarPortal = new ComponentPortal(PickerOverlayComponent, null, portalInjector);\n        const compRef = overlayRef.attach(calendarPortal);\n\n        overlayRef.backdropClick().pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n            this._dismissed.emit( false );\n            overlayRef.dispose();\n        });\n\n        compRef.instance._dismissed.pipe(takeUntil(this.unsubscribe$)).subscribe( saved => {\n            this._dismissed.emit( saved );\n        });\n\n        return overlayRef;\n    }\n\n    private _createOverlay(center): OverlayRef {\n        const overlayConfig = this._getOverlayConfig(center);\n        return this.overlay.create(overlayConfig);\n    }\n\n    private _getOverlayConfig(center): OverlayConfig {\n        let positionStrategy;\n\n        if (center) {\n            positionStrategy = this.overlay\n            .position()\n            .global()\n            .centerHorizontally()\n            .centerVertically();\n        } else {\n            positionStrategy = this.overlay\n            .position()\n            .flexibleConnectedTo(this.hostElemRef)\n            .withFlexibleDimensions(false)\n            .withViewportMargin(8)\n            .withDefaultOffsetY(12)\n            .withLockedPosition()\n            .withPositions([\n                {\n                    originX: 'start',\n                    originY: 'bottom',\n                    overlayX: 'start',\n                    overlayY: 'top'\n                },\n                {\n                    originX: 'start',\n                    originY: 'top',\n                    overlayX: 'start',\n                    overlayY: 'bottom'\n                },\n                {\n                    originX: 'end',\n                    originY: 'bottom',\n                    overlayX: 'end',\n                    overlayY: 'top'\n                },\n                {\n                    originX: 'end',\n                    originY: 'top',\n                    overlayX: 'end',\n                    overlayY: 'bottom'\n                }\n            ]);\n        }\n\n        const overlayConfig = new OverlayConfig({\n            hasBackdrop: true,\n            backdropClass: 'hc-overlay-transparent-backdrop',\n            panelClass: 'hc-date-range-overlay',\n            scrollStrategy: this.overlay.scrollStrategies.block(),\n            positionStrategy\n        });\n\n        return overlayConfig;\n    }\n\n    private _createInjector(overlayRef: OverlayRef): Injector {\n        return Injector.create({\n            providers: [\n                { provide: OverlayRef, useValue: overlayRef }\n            ],\n            parent: this.injector\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.unsubscribe$.next();\n        this.unsubscribe$.complete();\n    }\n}\n","import {Output, EventEmitter, Input, OnDestroy, ElementRef, Directive, HostListener, OnChanges, SimpleChanges, forwardRef} from '@angular/core';\nimport {DatePipe} from '@angular/common';\nimport {OverlayRef} from '@angular/cdk/overlay';\nimport {CalendarOverlayService} from '../services/calendar-overlay.service';\nimport {DateRange, DateRangeOptions} from '../model/model';\nimport {ConfigStoreService} from '../services/config-store.service';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\n\n/** Trigger the date range selector using the `hcDateRange` directive on a button or other clickable element  */\n@Directive({\n    selector: '[hcDateRange]',\n    providers: [{\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => DateRangeDirective),\n            multi: true\n        }, CalendarOverlayService, ConfigStoreService, DatePipe],\n    standalone: false\n})\nexport class DateRangeDirective implements OnDestroy, OnChanges, ControlValueAccessor {\n    /** Emits when date range is been changed. */\n    @Output()\n    readonly selectedDateRangeChanged: EventEmitter<DateRange> = new EventEmitter<DateRange>();\n\n    /** Sets the selected date range. Accepts either a `DateRange` or a numerical index for preset. */\n    @Input()\n    selectedDate: number | DateRange;\n\n    /** Emits either a numerical index for the selected preset, or a `DateRange` if the selected value is not a preset */\n    @Output()\n    readonly selectedPresetChanged: EventEmitter<number | DateRange> = new EventEmitter<number | DateRange>();\n\n    /** Emits after the popover is closed; returns `null` on cancel or dismiss and a `DateRange` on apply */\n    @Output()\n    readonly closed: EventEmitter<null | DateRange> = new EventEmitter<null | DateRange>();\n\n    /** Configuration to setup behavior of component. */\n    @Input()\n    options: DateRangeOptions;\n\n    /** If disabled, clicks to the element will not trigger the date range popover. */\n    @Input()\n    disabled = false;\n\n    private _touched = false;\n    private _overlayRef: OverlayRef;\n    private unsubscribe$ = new Subject<void>();\n\n    constructor(\n        private _elementRef: ElementRef<HTMLInputElement>,\n        private calendarOverlayService: CalendarOverlayService,\n        public _configStoreService: ConfigStoreService\n    ) {\n        _configStoreService.rangeUpdate$.pipe(takeUntil(this.unsubscribe$)).subscribe((daterange: DateRange) => {\n            this.selectedDateRangeChanged.emit(daterange);\n            this.onChange( daterange );\n        });\n        _configStoreService.presetUpdate$.pipe(takeUntil(this.unsubscribe$)).subscribe((preset: number | DateRange) => {\n            this.selectedPresetChanged.emit(preset);\n            this.onChange( preset );\n        });\n        calendarOverlayService._dismissed.pipe(takeUntil(this.unsubscribe$)).subscribe( saved => {\n            this.closed.emit( saved ? this._configStoreService.currentSelection() : null );\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.unsubscribe$.next();\n        this.unsubscribe$.complete();\n\n        if (this._overlayRef) {\n            this._overlayRef.detach();\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['options']) {\n            const options: DateRangeOptions = changes['options'].currentValue;\n            this._configStoreService.updateDateRangeOptions(options);\n        }\n        if (changes['selectedDate']) {\n            const selectedDate: number | DateRange = changes['selectedDate'].currentValue;\n            this._updateSelected( selectedDate );\n        }\n    }\n\n    writeValue(value: number | DateRange): void {\n        // Prevent the form control from trying to write a value when removing the control\n        if ( this.onChange.name !== 'noop' ) {\n            this._updateSelected( value );\n        }\n    }\n\n    _updateSelected( selectedDate: number | DateRange ): void {\n        if ( typeof selectedDate === 'number' ) {\n            this._configStoreService.updatePreset(selectedDate);\n        } else {\n            this._configStoreService.updateRange(selectedDate);\n        }\n\n        this.onChange( selectedDate );\n\n        if (!this._touched) {\n            this.onTouch();\n            this._touched = true;\n        }\n    }\n\n    @HostListener('click')\n    _onClick(): void {\n        if ( !this.disabled ) {\n            this._overlayRef = this.calendarOverlayService.open(this._elementRef, this.options.center);\n        }\n    }\n\n    public onChange: (value: number | DateRange) => void = () => undefined;\n    public onTouch: () => unknown = () => undefined;\n    public registerOnChange(fn: (value: unknown) => void): void {\n        this.onChange = fn;\n    }\n    public registerOnTouched(fn: () => unknown): void {\n        this.onTouch = fn;\n    }\n\n    setDisabledState(disabled: boolean): void {\n        this.disabled = disabled;\n    }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {RadioButtonComponent, RadioGroupDirective} from './radio';\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [RadioButtonComponent, RadioGroupDirective],\n    declarations: [RadioButtonComponent, RadioGroupDirective],\n    providers: []\n})\nexport class RadioButtonModule {}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DateRangeDirective} from './date-range/date-range.directive';\nimport {PickerOverlayComponent} from './picker-overlay/picker-overlay.component';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {CalendarWrapperComponent} from './calendar-wrapper/calendar-wrapper.component';\nimport {FormsModule} from '@angular/forms';\nimport {HcNativeDateModule} from '../datepicker/datetime/datetime.module';\nimport {DatepickerModule} from '../datepicker/datepicker.module';\nimport {FormFieldModule} from '../form-field/hc-form-field.module';\nimport {InputModule} from '../input/input.module';\nimport {ButtonModule} from '../button/button.module';\nimport {RadioButtonModule} from '../radio-button/radio-button.module';\nimport {ChipModule} from '../chip/chip.module';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        ChipModule,\n        FormFieldModule,\n        DatepickerModule,\n        HcNativeDateModule,\n        InputModule,\n        ButtonModule,\n        RadioButtonModule,\n        OverlayModule,\n        FormsModule\n    ],\n    declarations: [DateRangeDirective, CalendarWrapperComponent, PickerOverlayComponent],\n    exports: [DateRangeDirective]\n})\nexport class DateRangeModule {}\n","import {\n    AfterContentInit,\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    HostListener,\n    Input,\n    Output,\n    ViewEncapsulation\n} from '@angular/core';\nimport {animate, AnimationEvent, state, style, transition, trigger} from '@angular/animations';\nimport {parseBooleanAttribute} from '../util';\nimport {filter, map} from 'rxjs/operators';\nimport {Observable} from 'rxjs';\n\n/** Result of opening or closing the drawer */\nexport class DrawerPromiseResult {\n    constructor(public type: 'open' | 'close') {}\n}\n\nconst supportedModes = ['over', 'push', 'side'];\n\nexport function validateModeInput(inputStr: string): void {\n    if (supportedModes.indexOf(inputStr) < 0) {\n        throw Error('Unsupported drawer mode value: ' + inputStr);\n    }\n}\n\nconst supportedAligns = ['left', 'right'];\n\nexport function validateAlignInput(inputStr: string): void {\n    if (supportedAligns.indexOf(inputStr) < 0) {\n        throw Error('Unsupported drawer alignment value: ' + inputStr);\n    }\n}\n\nconst openStateAnimation = '0.3s ease';\nconst closeStateAnimation = '0.25s .05s ease';\n\n/** Drawer that can be opened or closed on the drawer container */\n@Component({\n    selector: 'hc-drawer',\n    template: '<ng-content></ng-content>',\n    styleUrls: ['drawer.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    animations: [\n        trigger('openState', [\n            state('open-left, open-right, open-instant', style({\n                visibility: 'visible'\n            })),\n            state('void, close-instant', style({\n                'box-shadow': 'none',\n                // overflow override included to prevent Safari from still showing the scrollbar when the drawer is closed\n                'overflow-y': 'hidden',\n                visibility: 'hidden'\n            })),\n            transition('void => open-instant', animate('0ms')),\n            transition('open-instant => close-instant', animate('0ms')),\n            transition('open-left => close-instant', animate('0ms')),\n            transition('open-right => close-instant', animate('0ms')),\n            transition('open-instant => void', animate(openStateAnimation)),\n            transition('void => open-left', [\n                animate('0ms', style({ transform: 'translate3d(-100%, 0, 0)' })),\n                animate(closeStateAnimation)\n            ]),\n            transition('open-left => void', [\n                animate(openStateAnimation, style({ transform: 'translate3d(-100%, 0, 0)' }))\n            ]),\n            transition('void => open-right', [\n                animate('0ms', style({ transform: 'translate3d(100%, 0, 0)' })),\n                animate(closeStateAnimation)\n            ]),\n            transition('open-right => void', [\n                animate(openStateAnimation, style({ transform: 'translate3d(100%, 0, 0)' }))\n            ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class Drawer implements AfterContentInit {\n    private _mode = 'push';\n    private _align = 'left';\n    _animated = true;\n\n    /** Defaults to false. Set to true to disable the closure of drawer by pressing the escape key. */\n    @Input() ignoreEscapeKey = false;\n\n    /** Mode of the drawer: `over`, `push` or `side` */\n    @Input()\n    get mode(): string {\n        return this._mode;\n    }\n\n    set mode(modeType: string) {\n        validateModeInput(modeType);\n        this._mode = modeType;\n    }\n\n    /** Side the drawer is attached to: `left` or `right` */\n    @Input()\n    get align(): string {\n        return this._align;\n    }\n\n    set align(alignType: string) {\n        validateAlignInput(alignType);\n        this._align = alignType;\n    }\n\n    /** Event emitted when drawer has started to open */\n    @Output()\n    get openStart(): Observable<void> {\n        return this._animationStarted.pipe(\n            filter(event => (event.fromState === 'void' || event.fromState === 'close-instant') && event.toState.startsWith('open-') ),\n            map(() => {\n                // do nothing.\n            })\n        );\n    }\n\n    /** Event emitted when drawer has started to close */\n    @Output()\n    get closeStart(): Observable<void> {\n        return this._animationStarted.pipe(\n            filter(event => event.fromState.startsWith('open-') && (event.toState === 'void' || event.toState === 'close-instant')),\n            map(() => {\n                // do nothing.\n            })\n        );\n    }\n\n    /* Allows for two-way binding of the `opened` property */\n    @Output() openedChange = new EventEmitter<boolean>();\n\n    /** Tabindex of the element */\n    @HostBinding()\n    tabindex = -1;\n    @HostBinding('class.hc-drawer')\n    _drawerClass = true;\n\n    readonly _animationStarted = new EventEmitter<AnimationEvent>();\n\n    private _animationDisabled = true;\n    private _drawerOpened = false;\n    private _animationPromise: Promise<DrawerPromiseResult> | null;\n    private _resolveAnimationPromise: () => void = () => {\n        // do nothing.\n    };\n\n    /** Whether the drawer is opened. */\n    @Input()\n    get opened(): boolean {\n        return this._drawerOpened;\n    }\n\n    set opened(opened: boolean) {\n        if ( opened !== this._drawerOpened ) {\n            this.toggle(parseBooleanAttribute(opened));\n        }\n    }\n\n    get _width(): number {\n        return this.elementRef.nativeElement.offsetWidth;\n    }\n\n    @HostBinding('class.hc-drawer-opened')\n    get _isOpened(): boolean {\n        return this._drawerOpened && !this._animationPromise;\n    }\n\n    @HostBinding('class.hc-drawer-opening')\n    get _isOpening(): boolean {\n        return this._drawerOpened && !!this._animationPromise;\n    }\n\n    @HostBinding('class.hc-drawer-closed')\n    get _isClosed(): boolean {\n        return !this._drawerOpened && !this._animationPromise;\n    }\n\n    @HostBinding('class.hc-drawer-closing')\n    get _isClosing() : boolean{\n        return !this._drawerOpened && !!this._animationPromise;\n    }\n\n    @HostBinding('class.hc-drawer-right')\n    get _isRight(): boolean {\n        return this._align === 'right';\n    }\n\n    @HostBinding('@openState')\n    get _openState(): 'void' | 'open-instant' | 'close-instant'| 'open-left' | 'open-right' {\n        if (this._drawerOpened) {\n            if (this._animationDisabled || !this._animated) {\n                return 'open-instant';\n            }\n\n            return this._align === 'right' ? 'open-right' : 'open-left';\n        }\n        return this._animated ? 'void' : 'close-instant';\n    }\n\n    @HostListener('@openState.start', ['$event'])\n    _onAnimationStart(event: AnimationEvent): void {\n        this._animationStarted.emit(event);\n    }\n\n    @HostListener('@openState.done')\n    _onAnimationEnd(): void {\n        this.openedChange.next(this.opened);\n\n        if (this._animationPromise) {\n            this._resolveAnimationPromise();\n            this._resolveAnimationPromise = () => {\n                // do nothing.\n            };\n            this._animationPromise = null;\n        }\n    }\n\n    @HostListener('keydown', ['$event'])\n    _onKeyDown(event: KeyboardEvent): void {\n        if (event.key === 'Escape' && !this.ignoreEscapeKey) {\n            this.toggleClose();\n            event.stopPropagation();\n        }\n    }\n\n    constructor(protected elementRef: ElementRef) {}\n\n    ngAfterContentInit(): void {\n        if (this._animationPromise) {\n            this._resolveAnimationPromise();\n            this._resolveAnimationPromise = () => {\n                // do nothing.\n            };\n            this._animationPromise = null;\n        }\n        this._animationDisabled = false;\n    }\n\n    /** Toggles the drawer open */\n    toggleOpen(): Promise<DrawerPromiseResult> {\n        return this.toggle(true);\n    }\n\n    /** Toggles the drawer closed */\n    toggleClose(): Promise<DrawerPromiseResult> {\n        return this.toggle(false);\n    }\n\n    /** Toggles the drawer */\n    toggle(isOpen = !this.opened): Promise<DrawerPromiseResult> {\n        // If the current state of the drawer matches the desired state of the drawer,\n        // then return an already-resolved Promise whose result matches the current drawer\n        // state. Ideally, we'd punt and return null here, instead, but that would break the\n        // API contract defined by the Drawer, and that would be bad.\n        if (isOpen === this._drawerOpened) {\n            return Promise.resolve(new DrawerPromiseResult(isOpen ? 'open' : 'close'));\n        }\n\n        if (!this._animationPromise) {\n            this._drawerOpened = isOpen;\n\n            this._animationPromise = new Promise<DrawerPromiseResult>(resolve => {\n                this._resolveAnimationPromise = () => resolve(new DrawerPromiseResult(isOpen ? 'open' : 'close'));\n            });\n        }\n        return this._animationPromise;\n    }\n}\n","import {Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewEncapsulation} from '@angular/core';\nimport {animate, state, style, transition, trigger} from '@angular/animations';\n\n@Component({\n    selector: 'hc-backdrop',\n    template: '',\n    encapsulation: ViewEncapsulation.None,\n    styles: [\n        `\n            .hc-backdrop {\n                background-color: #000;\n                position: absolute;\n                top: 0;\n                left: 0;\n                right: 0;\n                bottom: 0;\n                opacity: 0.5;\n                display: block;\n            }\n        `\n    ],\n    animations: [\n        trigger('fadeInOut', [\n            state('in', style({ opacity: 0.5 })),\n            transition('void <=> *', [\n                style({\n                    opacity: 0\n                }),\n                animate('0.2s ease-in-out')\n            ])\n        ])\n    ],\n    standalone: false\n})\nexport class BackdropComponent {\n    @Input()\n    _ignoreEscapeKey = false;\n\n    @Output() onClose = new EventEmitter<void>();\n\n    @HostBinding('class.hc-backdrop') _hostClass = true;\n    @HostBinding('style.z-index') zIndex = 940;\n\n    @HostBinding('@fadeInOut')\n    _fadeInOut(): string | unknown {\n        return state;\n    }\n\n    @HostListener('click')\n    _onClick() {\n        this.onClose.emit();\n    }\n\n    @HostListener('document:keyup.escape')\n    _escapeKey(): void {\n        if (!this._ignoreEscapeKey) {\n            this.onClose.emit();\n        }\n    }\n}\n","/* eslint-disable @angular-eslint/directive-selector */\nimport { ComponentRef, Directive, EventEmitter, Input, OnDestroy, Output, ViewContainerRef } from \"@angular/core\";\nimport { BackdropComponent } from \"./backdrop.component\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\n@Directive({\n    selector: '[backdropHost]',\n    standalone: false\n})\nexport class BackdropHostDirective implements OnDestroy {\n    private _ignoreEscapeKey = false;\n    private _currentBackdrop: ComponentRef<BackdropComponent> | null = null;\n\n    @Input()\n    get ignoreEscapeKey(): boolean {\n        return this._ignoreEscapeKey;\n    }\n    set ignoreEscapeKey(ignoreEscapeKey: boolean) {\n        this._ignoreEscapeKey = ignoreEscapeKey;\n        if (this._currentBackdrop) {\n            this._currentBackdrop.instance._ignoreEscapeKey = ignoreEscapeKey;\n        }\n    }\n\n    @Output() onClose = new EventEmitter<void>();\n\n    private _destroyed = new Subject<void>();\n\n    constructor(public viewContainerRef: ViewContainerRef) {}\n\n    showBackdrop(): ComponentRef<BackdropComponent> {\n        this.hideBackdrop();\n\n        const backdropRef = this.viewContainerRef.createComponent(BackdropComponent);\n        backdropRef.instance._ignoreEscapeKey = this._ignoreEscapeKey;\n        backdropRef.instance.onClose\n            .pipe(takeUntil(this._destroyed))\n            .subscribe(() => this.onClose.emit());\n\n        this._currentBackdrop = backdropRef;\n        return backdropRef;\n    }\n\n    hideBackdrop(): void {\n        if (!this._currentBackdrop) {\n            return;\n        }\n\n        const overlayNativeElement = this._currentBackdrop.location.nativeElement;\n        overlayNativeElement.parentNode?.removeChild(overlayNativeElement);\n        this._currentBackdrop.destroy();\n        this._currentBackdrop = null;\n    }\n\n    ngOnDestroy(): void {\n        this._destroyed.next();\n        this._destroyed.complete();\n    }\n}\n","import {\n    AfterContentInit,\n    ChangeDetectorRef,\n    Component,\n    ContentChildren,\n    DoCheck,\n    ElementRef,\n    HostBinding,\n    Input,\n    NgZone,\n    OnDestroy,\n    Renderer2,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport type {QueryList} from '@angular/core';\nimport {Drawer, DrawerPromiseResult} from './drawer.component';\nimport {debounceTime, filter, startWith, takeUntil} from 'rxjs/operators';\nimport {AnimationEvent} from '@angular/animations';\nimport {Subject} from 'rxjs';\nimport {parseBooleanAttribute} from '../util';\nimport { BackdropHostDirective } from '../backdrop/backdrop-host.directive';\n\nfunction throwDrawerContainerError(align: string) {\n    throw new Error(`A drawer was already declared for 'align=\"${align}\"'`);\n}\n\n/** Parent component that houses one or two `<hc-drawer>` that applies content styling */\n@Component({\n    selector: 'hc-drawer-container',\n    templateUrl: 'drawer-container.component.html',\n    styleUrls: ['drawer.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class DrawerContainer implements AfterContentInit, DoCheck, OnDestroy {\n    @ContentChildren(Drawer)\n    _drawers: QueryList<Drawer>;\n\n    @ViewChild(BackdropHostDirective, {static: true}) _backdropHost: BackdropHostDirective;\n\n    private _leftDrawer: Drawer;\n    private _rightDrawer: Drawer;\n    private _animated = true;\n    private _useBackdrop = false;\n\n    _contentMargins = {left: 0, right: 0};\n\n    private readonly _doCheckSubject = new Subject<void>();\n    private readonly _destroyed = new Subject<void>();\n\n    @HostBinding('class.hc-drawer-container')\n    _hostClass = true;\n\n    /** Defaults to true. Whether the content and drawers slide or snap open and closed. */\n    @Input()\n    get animated(): boolean {\n        return this._animated;\n    }\n\n    set animated(val: boolean) {\n        this._animated = parseBooleanAttribute(val);\n        if ( this._drawers ) {\n            this._drawers.forEach((drawer: Drawer) => drawer._animated = this._animated);\n        }\n    }\n\n    /** Whether to use a backdrop, which closes the drawer when clicked */\n    @Input()\n    get useBackdrop(): boolean {\n        return this._useBackdrop;\n    }\n\n    set useBackdrop(useBackdrop: boolean) {\n        this._useBackdrop = useBackdrop;\n    }\n\n    constructor(\n        private _elementRef: ElementRef,\n        private _renderer: Renderer2,\n        private _ngZone: NgZone,\n        private _changeDetector: ChangeDetectorRef\n    ) {}\n\n    // If drawer size changes through some async action this will cause it to resize the margins\n    ngDoCheck(): void {\n        // Run outside of angular's scope because debounceTime will cause infinite loop\n        this._ngZone.runOutsideAngular(() => this._doCheckSubject.next());\n    }\n\n    ngAfterContentInit(): void {\n        this._drawers.forEach((drawer: Drawer) => drawer._animated = this.animated);\n\n        // debounceTime allows the component to render before the margins are calculated\n        this._doCheckSubject\n            .pipe(\n                debounceTime(10), // arbitrarily small value is used to quickly render the component so incorrect margins aren't shown\n                takeUntil(this._destroyed)\n            )\n            .subscribe(() => this._calculateContentMargins());\n\n        // startWith used to cause first iteration\n        this._drawers.changes.pipe(startWith(null)).subscribe(() => {\n            this._validateDrawers();\n\n            this._drawers.forEach((drawer: Drawer) => {\n                drawer._animationStarted\n                    .pipe(\n                        takeUntil(this._drawers.changes),\n                        filter((event: AnimationEvent) => event.fromState !== event.toState)\n                    )\n                    .subscribe(() => {\n                        this._calculateContentMargins();\n                    });\n                drawer.openedChange.pipe(takeUntil(this._drawers.changes)).subscribe(isOpen => {\n                    if (isOpen) {\n                        this._setContainerClass(true);\n                    } else {\n                        this._setContainerClass(false);\n                    }\n                });\n                drawer.openStart.pipe(takeUntil(this._drawers.changes)).subscribe(() => this._showBackdrop(drawer));\n                drawer.closeStart.pipe(takeUntil(this._drawers.changes)).subscribe(() => this._hideBackdrop());\n            });\n\n            if (!this._drawers.length || this._isDrawerOpen(this._leftDrawer) || this._isDrawerOpen(this._rightDrawer)) {\n                this._calculateContentMargins();\n            }\n        });\n    }\n\n    private _isDrawerOpen(drawer: Drawer): boolean {\n        return drawer != null && drawer.opened;\n    }\n\n    /** Open all drawers */\n    open(): Promise<DrawerPromiseResult[]> {\n        return Promise.all([this._leftDrawer, this._rightDrawer].map(drawer => drawer && drawer.toggleOpen()));\n    }\n\n    /** Close all drawers */\n    close(): Promise<DrawerPromiseResult[]> {\n        return Promise.all([this._leftDrawer, this._rightDrawer].map(drawer => drawer && drawer.toggleClose()));\n    }\n\n    private _calculateContentMargins(): void {\n        let left = 0;\n        let right = 0;\n\n        if (this._leftDrawer && this._leftDrawer.opened) {\n            if (this._leftDrawer.mode === 'side') {\n                left += this._leftDrawer._width;\n            } else if (this._leftDrawer.mode === 'push') {\n                left += this._leftDrawer._width;\n            }\n        }\n\n        if (this._rightDrawer && this._rightDrawer.opened) {\n            if (this._rightDrawer.mode === 'side') {\n                right += this._rightDrawer._width;\n            } else if (this._rightDrawer.mode === 'push') {\n                right += this._rightDrawer._width;\n            }\n        }\n\n        if (left !== this._contentMargins.left || right !== this._contentMargins.right) {\n            this._contentMargins = {left, right};\n\n            this._ngZone.run(() => this._changeDetector.markForCheck());\n        }\n    }\n\n    _validateDrawers(): void {\n        for (const drawer of this._drawers.toArray()) {\n            if (drawer.align === 'right') {\n                if (this._rightDrawer != null) {\n                    throwDrawerContainerError('right');\n                }\n                this._rightDrawer = drawer;\n            } else {\n                if (this._leftDrawer != null) {\n                    throwDrawerContainerError('left');\n                }\n                this._leftDrawer = drawer;\n            }\n        }\n    }\n\n    private _setContainerClass(isOpen: boolean): void {\n        if (isOpen) {\n            this._renderer.addClass(this._elementRef.nativeElement, 'hc-drawer-opened');\n        } else {\n            this._renderer.removeClass(this._elementRef.nativeElement, 'hc-drawer-opened');\n        }\n    }\n\n    _showBackdrop(drawer: Drawer): void {\n        if (!this._useBackdrop) {\n            return;\n        }\n\n        this._backdropHost.ignoreEscapeKey = drawer.ignoreEscapeKey;\n        this._backdropHost.onClose.pipe(takeUntil(this._destroyed)).subscribe(() => drawer.toggleClose());\n        this._backdropHost.showBackdrop();\n    }\n\n    _hideBackdrop(): void {\n        this._backdropHost.hideBackdrop();\n    }\n\n    ngOnDestroy(): void {\n        this._destroyed.next();\n        this._destroyed.complete();\n        this._doCheckSubject.complete();\n    }\n}\n","<ng-content select=\"hc-drawer,hc-menu-drawer\"></ng-content>\n\n<div\n    class=\"hc-drawer-content\"\n    [style.margin-left.px]=\"_contentMargins.left\"\n    [style.margin-right.px]=\"_contentMargins.right\"\n    [class.hc-drawer-animation]=\"animated\"\n>\n    <ng-template backdropHost></ng-template>\n    <ng-content></ng-content>\n</div>\n","import {Directive, HostBinding} from '@angular/core';\n\n/* MenuDrawer toolbar that is fixed to the top */\n@Directive({\n    selector: '[hcDrawerToolbar]',\n    standalone: false\n})\nexport class DrawerToolbar {\n    @HostBinding('class.hc-drawer-toolbar')\n    _hostClass = true;\n}\n","import {\n    AfterContentInit,\n    ChangeDetectionStrategy,\n    Component,\n    ContentChild,\n    ElementRef,\n    forwardRef,\n    HostBinding,\n    Input,\n    Renderer2,\n    ViewEncapsulation\n} from '@angular/core';\nimport {Drawer} from '../drawer.component';\nimport {animate, state, style, transition, trigger} from '@angular/animations';\nimport {DrawerToolbar} from './drawer-header.directive';\n\nconst drawerThemes = ['dark-theme'];\n\nexport function validateMenuDrawerTheme(menuTheme: string): void {\n    if (!drawerThemes.some(theme => theme === menuTheme)) {\n        throw new Error('Unsupported menuTheme: ' + menuTheme);\n    }\n}\n\nconst openStateAnimation = '0.3s ease';\nconst closeStateAnimation = '0.25s .05s ease';\n\n/** Menu drawer that provides default themes */\n@Component({\n    selector: 'hc-menu-drawer',\n    templateUrl: 'menu-drawer.component.html',\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['../drawer.component.scss', 'menu-drawer.component.scss'],\n    animations: [\n        trigger('openState', [\n            state('open-left, open-right, open-instant', style({\n                transform: 'translate3d(0, 0, 0)',\n                visibility: 'visible'\n            })),\n            state('void, close-instant', style({\n                'box-shadow': 'none',\n                visibility: 'hidden'\n            })),\n            transition('void => open-instant', animate('0ms')),\n            transition('open-instant => void', animate(openStateAnimation)),\n            transition('open-instant => close-instant', animate('0ms')),\n            transition('open-left => close-instant', animate('0ms')),\n            transition('open-right => close-instant', animate('0ms')),\n            transition('void => open-left', [\n                animate('0ms', style({ transform: 'translate3d(-100%, 0, 0)' })),\n                animate(closeStateAnimation)\n            ]),\n            transition('open-left => void', [\n                animate(openStateAnimation, style({ transform: 'translate3d(-100%, 0, 0)' }))\n            ]),\n            transition('void => open-right', [\n                animate('0ms', style({ transform: 'translate3d(100%, 0, 0)' })),\n                animate(closeStateAnimation)\n            ]),\n            transition('open-right => void', [\n                animate(openStateAnimation, style({ transform: 'translate3d(100%, 0, 0)' }))\n            ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [{ provide: Drawer, useExisting: forwardRef(() => MenuDrawer) }],\n    standalone: false\n})\nexport class MenuDrawer extends Drawer implements AfterContentInit {\n    private _previousTheme: string | null = null;\n\n    @ContentChild(DrawerToolbar)\n    toolbar: DrawerToolbar;\n\n    /** Sets menu style of the drawer. Choose from: `'dark-theme'` */\n    @Input()\n    get menuTheme(): string {\n        return this._menuTheme;\n    }\n\n    set menuTheme(menuStyle: string) {\n        validateMenuDrawerTheme(menuStyle);\n\n        this._setThemeClass(this._themeClass(menuStyle));\n        this._previousTheme = this._menuTheme;\n        this._menuTheme = menuStyle;\n    }\n\n    private _menuTheme: string;\n\n    @HostBinding('class.hc-menu-drawer')\n    _hostClass = true;\n\n    constructor(elementRef: ElementRef, private renderer: Renderer2) {\n        super(elementRef);\n        this.menuTheme = 'dark-theme';\n    }\n\n    ngAfterContentInit(): void {\n        super.ngAfterContentInit();\n\n        if (this.toolbar != null) {\n            this.renderer.addClass(this.elementRef.nativeElement, 'hc-drawer-toolbar-visible');\n        } else {\n            this.renderer.removeClass(this.elementRef.nativeElement, 'hc-drawer-toolbar-visible');\n        }\n    }\n\n    private _themeClass(menuStyle: string) {\n        return `hc-menu-drawer-${menuStyle}`;\n    }\n\n    private _setThemeClass(className: string) {\n        if (this._previousTheme !== className) {\n            if (this._previousTheme || this._menuTheme) {\n                this.renderer.removeClass(this.elementRef.nativeElement, this._previousTheme || this.menuTheme);\n            }\n            this.renderer.addClass(this.elementRef.nativeElement, className);\n        }\n    }\n}\n","<div class=\"hc-menu-drawer-toolbar-container\">\n    <ng-content select=\"[hcDrawerToolbar]\"></ng-content>\n</div>\n<div class=\"hc-menu-drawer-item-container\">\n    <div class=\"drawer-menu\">\n        <ng-content select=\"hc-drawer-item\"></ng-content>\n    </div>\n</div>\n","import {Component, ViewEncapsulation} from '@angular/core';\n\n/* Represents a menu item for the MenuDrawer component */\n@Component({\n    selector: 'hc-drawer-item',\n    template: `\n        <div class=\"hc-drawer-item\">\n            <ng-content></ng-content>\n        </div>\n        <hr class=\"hc-drawer-divider\" />\n    `,\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class DrawerItem {}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { BackdropComponent } from \"./backdrop.component\";\nimport { BackdropHostDirective } from \"./backdrop-host.directive\";\n\n@NgModule({\n    imports: [CommonModule],\n    declarations: [BackdropComponent, BackdropHostDirective],\n    exports: [BackdropComponent, BackdropHostDirective]\n})\nexport class BackdropModule {}","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {Drawer} from './drawer.component';\nimport {DrawerContainer} from './drawer-container.component';\nimport {MenuDrawer} from './menu-drawer/menu-drawer.component';\nimport {DrawerItem} from './menu-drawer/drawer-item.component';\nimport {DrawerToolbar} from './menu-drawer/drawer-header.directive';\nimport { BackdropModule } from '../backdrop/backdrop.module';\n\nconst exportedComponents = [Drawer, DrawerContainer, MenuDrawer, DrawerItem, DrawerToolbar];\n\n@NgModule({\n    imports: [CommonModule, BackdropModule],\n    declarations: exportedComponents,\n    exports: exportedComponents\n})\nexport class DrawerModule {}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {Component, Input, OnChanges, SimpleChanges, ViewEncapsulation} from '@angular/core';\n\n/** Interface for making/receiving assignments */\nexport interface DragDropAssignment {\n    /** The target awaiting an option assignment. */\n    target: any;\n\n    /** The assigned option. */\n    assignment: any | null;\n\n    /** When `true` prevents modification. Use this if you have an assignment you want to lock. */\n    locked?: boolean;\n}\n\n/** A control for making assignments with drag-drop functionality */\n@Component({\n    selector: 'hc-drag-list',\n    templateUrl: './drag-list.component.html',\n    host: {\n        class: 'hc-drag-list'\n    },\n    styleUrls: ['./drag-list.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class DragListComponent implements OnChanges {\n    /** Current assignments, refer to the `DragDropAssignment` interface. Pass in your targets and their current assignments with this. */\n    @Input() assignments: DragDropAssignment[] = [];\n\n    /** The `id` or \"key\" property of your targets (`options` are assigned to `targets`). Defaults to `id`. */\n    @Input() targetIdField = 'id';\n\n    /** The display name property of your targets. Defaults to `name`. */\n    @Input() targetDisplayNameField = 'name';\n\n    /** The tooltip or title property of your targets. Defaults to `title`. */\n    @Input() targetHoverTextField = 'title';\n\n    /** The available options to assign to your targets. */\n    @Input() options: any[] = [];\n\n    /** The `id` or \"key\" property of your options (`options` are assigned to `targets`). Defaults to `id`. */\n    @Input() optionIdField = 'id';\n\n    /** The display name property of your options. Defaults to `name`. */\n    @Input() optionDisplayNameField = 'name';\n\n    /** The tooltip or title property of your options. Defaults to `title`. */\n    @Input() optionHoverTextField = 'title';\n\n    /** The placeholder text for unassigned targets. Empty by default. */\n    @Input() targetPlaceholder = '';\n\n    /** The target area label. Defaults to \"Targets\". */\n    @Input() targetHelperText = 'Targets';\n\n    /** The tooltip text for the target area label, if defined an info icon will be displayed to the right. Empty by default. */\n    @Input() targetTooltip = '';\n\n    /** The help text for unassigned options. Defaults to \"Drag values to desired location in the left pane\". */\n    @Input() optionsHelperText = 'Drag values to desired location in the left pane';\n\n    /** The help text for locked options. Defaults to \"This assignment is locked and cannot be changed.\". */\n    @Input() optionLockedText = 'This assignment is locked and cannot be changed.';\n\n    /** When set to `true`, all targets must have an assignment before the `submissionAllowed` property will return `true`. Defaults to `false`. */\n    @Input() requireAllAssignments = false;\n\n    _modifiedAssignments: DragDropAssignment[] = [];\n    _targetsById: {[id: string]: any} = {};\n    _optionsById: {[id: string]: any} = {};\n    _optionIsAssigned: {[id: string]: boolean} = {};\n    _tooltipsByOptionId: {[id: string]: string} = {};\n\n    get _unassignedOptions(): any {\n        return this.options.filter(o => !this._optionIsAssigned[o[this.optionIdField]]);\n    }\n\n    /** Returns `true` is selections are valid. */\n    get submissionAllowed(): boolean {\n        let hasChanges = false;\n\n        for (let i = 0; i < this._modifiedAssignments.length; i++) {\n            const ma = this._modifiedAssignments[i];\n            const oa = this.assignments[i];\n\n            if (((ma || {}).assignment || {})[this.optionIdField] !== ((oa || {}).assignment || {})[this.optionIdField]) {\n                hasChanges = true;\n                break;\n            }\n        }\n\n        if (!hasChanges) {\n            return false;\n        }\n\n        if (this.requireAllAssignments) {\n            return this._modifiedAssignments.every(a => !!a.assignment) || Object.values(this._optionIsAssigned).every(o => o === true);\n        } else {\n            return true;\n        }\n    }\n\n    /** Returns assignments. */\n    get selections(): DragDropAssignment[] {\n        return this._modifiedAssignments;\n    }\n\n    private _dragData: {optionId: string | null; targetId: string | null} = {optionId: null, targetId: null};\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this._modifiedAssignments = (changes.assignments.currentValue || []).map(a => ({...a}));\n        this._tooltipsByOptionId = this._indexByExt(\n            changes.options.currentValue || [],\n            (o: any) => o[this.optionIdField],\n            (o: any) => {\n                if (o[this.optionHoverTextField]) {\n                    return o[this.optionHoverTextField];\n                }\n                return o[this.optionDisplayNameField];\n            }\n        );\n        this._optionsById = this._indexBy(changes.options.currentValue || [], o => o[this.optionIdField]);\n        this._targetsById = this._indexBy(\n            (this._modifiedAssignments || []).map(a => a.target),\n            o => o[this.targetIdField]\n        );\n\n        this._setOptionIsAssigned(this._modifiedAssignments, changes.options.currentValue);\n    }\n\n    private _indexBy<T>(arr: T[], propFn: (item: T) => string): {[id: string]: T} {\n        return (arr || []).reduce((obj, item) => {\n            obj[propFn(item)] = item;\n            return obj;\n        }, {});\n    }\n\n    private _indexByExt<T, V = T>(\n        arr: T[],\n        propFn: (item: T) => string,\n        valFn: (item: T) => V = it => (it as unknown) as V\n    ): {[id: string]: V} {\n        return (arr || []).reduce((obj, item) => {\n            obj[propFn(item)] = valFn(item);\n            return obj;\n        }, {});\n    }\n\n    private _setOptionIsAssigned(assignments: DragDropAssignment[], options: any[]): void {\n        (options || []).forEach(o => {\n            this._optionIsAssigned[o[this.optionIdField]] = false;\n        });\n        (assignments || [])\n            .filter(a => !!a.assignment)\n            .forEach(a => {\n                this._optionIsAssigned[a.assignment[this.optionIdField]] = true;\n            });\n    }\n\n    _makeAssignment(ev: any): void {\n        ev.preventDefault();\n\n        if (!!ev && !!ev.target) {\n            const optionId = this._dragData.optionId === null ? null : parseInt(this._dragData.optionId, 10);\n            const target = this._findNearestWithClass(ev.target, 'hc-drag-list-assignment');\n\n            if (!target || !target.dataset) {\n                return;\n            }\n\n            const targetId =\n                target.dataset.targetId === undefined || target.dataset.targetId === null ? null : parseInt(target.dataset.targetId, 10);\n            const oldOptionId =\n                target.dataset.optionId === undefined || target.dataset.optionId === null ? null : parseInt(target.dataset.optionId, 10);\n\n            if (optionId === null || targetId === null) {\n                return;\n            }\n\n            this._modifiedAssignments.forEach(a => {\n                // If this is the target drop zone\n                if (a.target[this.targetIdField] === targetId) {\n                    // Make assignment\n                    a.assignment = this._optionsById[optionId!];\n                } else if (!!a.assignment && a.assignment[this.optionIdField] === optionId) {\n                    if (oldOptionId !== null) {\n                        // Swap\n                        a.assignment = this._optionsById[oldOptionId];\n                    } else {\n                        // Clear\n                        a.assignment = null;\n                    }\n                }\n            });\n\n            this._setOptionIsAssigned(this._modifiedAssignments, this.options);\n        }\n    }\n\n    _returnToOptionsList(ev: any): void {\n        ev.preventDefault();\n\n        if (!!ev && !!ev.target) {\n            const optionId = this._dragData.optionId === null ? null : parseInt(this._dragData.optionId, 10);\n            const oldTargetId = this._dragData.targetId === null ? null : parseInt(this._dragData.targetId, 10);\n\n            if (optionId !== null && oldTargetId !== null) {\n                this._modifiedAssignments.forEach(a => {\n                    if (a.target[this.targetIdField] === oldTargetId) {\n                        // Clear assignment\n                        a.assignment = null;\n                    }\n                });\n\n                this._setOptionIsAssigned(this._modifiedAssignments, this.options);\n            }\n        }\n    }\n\n    _unassign(assignment: DragDropAssignment): void {\n        assignment.assignment = null;\n        this._setOptionIsAssigned(this._modifiedAssignments, this.options);\n    }\n\n    _findNearestWithClass(e: HTMLElement | null, className: string): HTMLElement | null {\n        if (e === null) {\n            return e;\n        }\n\n        return e.classList.contains(className) ? e : e.parentElement === null ? e : this._findNearestWithClass(e.parentElement, className);\n    }\n\n    _dragover(ev: any): void {\n        ev.preventDefault();\n    }\n\n    _dragstart(ev: any): void {\n        if (!!ev && !!ev.target && !!ev.target.dataset) {\n            this._dragData.optionId = ev.target.dataset.optionId;\n            this._dragData.targetId = ev.target.dataset.targetId;\n        }\n    }\n\n    _dragenter(ev: any): void {\n        ev.target.classList.add('hc-drag-list-target-hover');\n    }\n\n    _dragleave(ev: any): void {\n        ev.target.classList.remove('hc-drag-list-target-hover');\n    }\n\n    /** Marks control as pristine. Typically called after saving modifications. */\n    setPristine(): void {\n        this.assignments = (this._modifiedAssignments || []).map(a => ({...a}));\n    }\n\n    /** Resets assigments to original values. */\n    resetChanges(): void {\n        this._modifiedAssignments = (this.assignments || []).map(a => ({...a}));\n        this._setOptionIsAssigned(this._modifiedAssignments, this.options);\n    }\n}\n","<div class=\"hc-drag-list-container\">\n    <div class=\"hc-drag-list-targets\">\n        <div class=\"hc-drag-list-targets-info\">\n            <span>{{ targetHelperText }}</span>\n            @if (!!targetTooltip) {\n            <hc-icon fontSet=\"hc-icons\" fontIcon=\"hci-info\" [hcPop]=\"productStandardLevelNamesPop\" trigger=\"hover\"></hc-icon>\n            }\n            <hc-pop #productStandardLevelNamesPop>\n                <div class=\"preserve-whitespace\" style=\"white-space: pre\">{{ targetTooltip }}</div>\n            </hc-pop>\n        </div>\n        <div class=\"hc-drag-list-targets-container\">\n            @for (assignment of _modifiedAssignments; track assignment) {\n            <div class=\"hc-drag-list-assignments\">\n                <div class=\"hc-drag-list-target-name\" [title]=\"assignment.target[targetHoverTextField] ?? ''\">\n                    @if (!assignment.locked) {\n                    <hc-icon\n                        fontSet=\"fa-solid\"\n                        fontIcon=\"fa-check\"\n                        [style.visibility]=\"!!assignment.assignment ? 'visible' : 'hidden'\"\n                    ></hc-icon>\n                    } @if (!!assignment.locked) {\n                    <hc-icon fontSet=\"fa-solid\" fontIcon=\"fa-lock\" [hcPop]=\"lockedText\" trigger=\"hover\"></hc-icon>\n                    }\n                    <hc-pop #lockedText>{{ optionLockedText }}</hc-pop>\n                    {{ assignment.target[targetDisplayNameField] }}\n                </div>\n                @if (!assignment.assignment && !assignment.locked) {\n                <div\n                    class=\"hc-drag-list-assignment hc-drag-list-placeholder\"\n                    (dragenter)=\"_dragenter($event)\"\n                    (dragleave)=\"_dragleave($event)\"\n                    [attr.data-target-id]=\"assignment.target[targetIdField]\"\n                    (drop)=\"_makeAssignment($event)\"\n                    (dragover)=\"_dragover($event)\"\n                >\n                    {{ targetPlaceholder }}\n                </div>\n                } @if (!!assignment.assignment && !assignment.locked) {\n                <div\n                    class=\"hc-drag-list-assignment\"\n                    (dragenter)=\"_dragenter($event)\"\n                    (dragleave)=\"_dragleave($event)\"\n                    [attr.data-target-id]=\"assignment.target[targetIdField]\"\n                    [attr.data-option-id]=\"assignment.assignment[optionIdField]\"\n                    (drop)=\"_makeAssignment($event)\"\n                    (dragover)=\"_dragover($event)\"\n                >\n                    <div\n                        class=\"hc-drag-list-option\"\n                        [attr.data-target-id]=\"assignment.target[targetIdField]\"\n                        [attr.data-option-id]=\"assignment.assignment[optionIdField]\"\n                        [title]=\"_tooltipsByOptionId[assignment.assignment[optionIdField]]\"\n                        draggable=\"true\"\n                        (dragstart)=\"_dragstart($event)\"\n                    >\n                        <div class=\"hc-drag-list-option-name\">\n                            {{ assignment.assignment[optionDisplayNameField] }}\n                        </div>\n                        <div class=\"hc-drag-list-option-close\" (click)=\"_unassign(assignment)\">\n                            <svg width=\"10\" height=\"10\" viewBox=\"0 0 8 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                                <path\n                                    d=\"M1 7.03906L4 4.03906L7 7.03906M7 1.03906L3.99943 4.03906L1 1.03906\"\n                                    stroke=\"#C0C5CC\"\n                                    stroke-width=\"1.5\"\n                                    stroke-linecap=\"round\"\n                                    stroke-linejoin=\"round\"\n                                />\n                            </svg>\n                        </div>\n                    </div>\n                </div>\n                } @if (!!assignment.assignment && !!assignment.locked) {\n                <div class=\"hc-drag-list-assignment\">\n                    <div\n                        class=\"hc-drag-list-option hc-drag-list-option-locked\"\n                        [title]=\"_tooltipsByOptionId[assignment.assignment[optionIdField]]\"\n                    >\n                        <div class=\"hc-drag-list-option-name\">\n                            {{ assignment.assignment[optionDisplayNameField] }}\n                        </div>\n                    </div>\n                </div>\n                }\n            </div>\n            }\n        </div>\n    </div>\n    <div class=\"hc-drag-list-options\">\n        <div class=\"hc-drag-list-options-info\">{{ optionsHelperText }}</div>\n        <div class=\"hc-drag-list-options-container\" (drop)=\"_returnToOptionsList($event)\" (dragover)=\"_dragover($event)\">\n            @for (option of _unassignedOptions; track option) {\n            <div\n                class=\"hc-drag-list-option\"\n                [attr.data-option-id]=\"option[optionIdField]\"\n                [title]=\"_tooltipsByOptionId[option[optionIdField]]\"\n                draggable=\"true\"\n                (dragstart)=\"_dragstart($event)\"\n            >\n                <div class=\"hc-drag-list-option-name\">\n                    {{ option[optionDisplayNameField] }}\n                </div>\n                <hc-icon fontSet=\"hc-icons\" fontIcon=\"hci-grip\"></hc-icon>\n            </div>\n            }\n        </div>\n    </div>\n</div>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DragListComponent} from './drag-list.component';\nimport {IconModule} from '../icon/icon.module';\nimport {PopModule} from '../pop/popover.module';\n\n@NgModule({\n    imports: [CommonModule, IconModule, PopModule],\n    exports: [DragListComponent],\n    declarations: [DragListComponent]\n})\nexport class DragListModule {}\n","export interface IMetadataEnvironment {\n    /** A unique identifier for the environment. */\n    id: number;\n    /** An identifier representing a given tenant. (For example, a particular client.) */\n    tenantCode: string;\n    /** The full name of environment. */\n    name: string;\n    /** An abbreviated environment name. Used in environment badge ui element. */\n    shortName: string;\n    /** Describes the environment. */\n    description: string;\n    /** Hex code for the color associated with an environment. Used in the environment badge ui element.\n     * Color options include: `\"#ffffff\", \"#7acb91\", \"#00acac\", \"#00a859\", \"#e7c447\", \"#ebba82\", \"#f89012\", \"#f13c45\", \"#eea2C0\", \"#a94c9d\", \"#3194fe\", \"#ace5ff\"`.\n     * If no color (or an invalid color) is provided, will default to white (#ffffff).*/\n    color: string;\n}\n\n/** Extended version of metadata environment model ready for display in the environment switcher UI */\nexport interface IMetadataEnvironmentVM extends IMetadataEnvironment {\n    badgeColorClass: string;\n}\n\n/** map of color hex codes and their corresponding css classes. Allows UI to restrict which colors are used */\nexport const badgeColorClasses = {\n    ffffff: 'hc-env-color-white',\n    '7acb91': 'hc-env-color-light-green',\n    '00acac': 'hc-env-color-forest-green',\n    '00a859': 'hc-env-color-green',\n    e7c447: 'hc-env-color-gold',\n    ebba82: 'hc-env-color-tan',\n    f89012: 'hc-env-color-orange',\n    f13c45: 'hc-env-color-red',\n    eea2C0: 'hc-env-color-pink',\n    a94c9d: 'hc-env-color-purple',\n    '3194fe': 'hc-env-color-blue',\n    ace5ff: 'hc-env-color-light-blue'\n};\n","import {Component, OnDestroy, Input, ViewEncapsulation, Output, EventEmitter, ViewChild, forwardRef, HostBinding} from '@angular/core';\nimport {Subject} from 'rxjs';\n\nimport {IMetadataEnvironment, IMetadataEnvironmentVM, badgeColorClasses} from './env-switcher-interfaces';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {HcPopComponent} from '../pop/popover.component';\n\n@Component({\n    selector: 'hc-env-switcher',\n    templateUrl: './env-switcher.component.html',\n    styleUrls: ['./env-switcher.component.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => EnvSwitcherComponent),\n            multi: true\n        }\n    ],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class EnvSwitcherComponent implements OnDestroy, ControlValueAccessor {\n    @HostBinding('class.hc-env-switcher-container') _hostClass = true;\n\n    /** The currently active metadata environments.\n     * NgModel/FormValue is bound to just the environment IDs, but you can access this property for an array with the entire environment model. */\n    public get selectedEnvironments(): IMetadataEnvironment[] {\n        const envs = new Array<IMetadataEnvironment>();\n        this._activeEnvIds.forEach(id => {\n            const matchingEnv = this.environmentOptions.find(e => e.id === id);\n            if (matchingEnv) {\n                envs.push(matchingEnv);\n            }\n        });\n        return envs;\n    }\n    /** When disabled, the environment switcher cannot be opened. *Defaults to false.* */\n    public get disabled(): boolean {\n        return this._disabled;\n    }\n    private _disabled = false;\n\n    /** The ids of the selected metadata environments */\n    public _activeEnvIds = new Array<number>();\n    /** In multiselect mode, track the ids of selected environments in this 'staging' model (and then actually apply them when the user is done) */\n    public _stagedActiveEnvIds = new Array<number>();\n    /** Text to show in the badge shown in the navbar. */\n    public _badgeText = 'None';\n    /** Tooltip shown when a user hover over the badge in the navbar. */\n    public _badgeTooltip = 'None selected';\n    /** Color of the badge in the navbar. */\n    public _badgeColor = 'hc-badge-color-white';\n    /** collection of allowed colors mapped to their matching css classes */\n    private readonly _colorClassesMap = badgeColorClasses;\n\n    private _onChange = (_: unknown) => _;\n    private _destroy$ = new Subject();\n\n    /** Reference to the popover containing the environment selection menu. */\n    @ViewChild('envSwitcherPop') pop: HcPopComponent;\n\n    /** Set to true while waiting for environments to load from MDS. *Defaults to false.* */\n    @Input() public loading = false;\n\n    /** Set to true if unable to load environments from MDS. A \"Failed to load\" message will be shown in the switcher. *Defaults to false.* */\n    @Input() public failedToLoad = false;\n\n    /** Header to display above the expanded list of environments. *Defaults to 'Environments'.* */\n    @Input() public listHeader = \"Environments\";\n\n    /** If true, will allow multiple environments to be selected at once. *Defaults to false.* */\n    @Input()\n    get canSelectMultiple(): boolean {\n        return this._canSelectMultiple;\n    }\n\n    set canSelectMultiple(canSelectMultiple: boolean) {\n        // if switching from multiselect to single, make sure just one is selected\n        if (!canSelectMultiple && this._canSelectMultiple && this._activeEnvIds?.length > 1) {\n            this.setActiveEnvironments([this._activeEnvIds[0]]);\n        }\n\n        this._canSelectMultiple = canSelectMultiple;\n    }\n    private _canSelectMultiple = false;\n\n    /** If true, will show an icon that allows user to click to open an environment in a new tab.\n     * When clicking this icon, a `(openInNewTab)` event will be fired that the consuming app will\n     * need to listen for and respond to. *Defaults to false.*\n     */\n    @Input()\n    get canOpenInNewTab(): boolean {\n        return this._canOpenInNewTab;\n    }\n\n    set canOpenInNewTab(canOpenInNewTab: boolean) {\n        this._canOpenInNewTab = canOpenInNewTab;\n    }\n    private _canOpenInNewTab = false;\n\n    /** The metadata environments to show in the switcher. */\n    @Input() public set environmentOptions(envs: IMetadataEnvironment[]) {\n        this._environmentOptionVMs = this._convertEnvsToVMs(envs);\n        this.setActiveEnvironments(this._activeEnvIds);\n    }\n    public get environmentOptions(): IMetadataEnvironment[] {\n        return this._environmentOptionVMs;\n    }\n    public _environmentOptionVMs: IMetadataEnvironmentVM[];\n\n    /** Event that fires when model is updated. Outputs an array of the currently selected environments.\n     * Consuming app will need to set appropriate environment headers refresh elements on page as needed. */\n    @Output() updateEnvironments = new EventEmitter<Array<IMetadataEnvironment>>();\n\n    /** Event that fires when the \"open in new tab\" action is triggered. Outputs the selected environment.\n     * Consuming app will need implement functionality to actually open a new tab with the given environment active. */\n    @Output() openInNewTab = new EventEmitter<IMetadataEnvironment>();\n\n    /** Event that fires when users click a link to reload environments. This link is shown if `failedToLoad` is set to true. */\n    @Output() reloadEnvironments = new EventEmitter<void>();\n\n    writeValue(selectedEnvs: number[]): void {\n        this.setActiveEnvironments(selectedEnvs || []);\n    }\n\n    registerOnChange(fn: () => null): void {\n        this._onChange = fn;\n    }\n\n    registerOnTouched(): void {\n        // do nothing\n    }\n\n    setDisabledState(state: boolean): void {\n        this._disabled = state;\n    }\n\n    ngOnDestroy(): void {\n        this._destroy$.next();\n        this._destroy$.complete();\n    }\n\n    /** Manually open the app switcher menu. */\n    public openMenu(): void {\n        this._stagedActiveEnvIds = this.canSelectMultiple ? this._activeEnvIds.slice() : [];\n        this.pop.open();\n    }\n\n    /** Manually close the app switcher menu. */\n    public closeMenu(): void {\n        this.pop.close();\n    }\n\n    /** Convenience method for setting the current active environment(s) by their Ids. Invalid environment Ids will not be selected. */\n    public setActiveEnvironments(envs: number[]): void {\n        const envsToSet = envs.filter(givenEnvId => {\n            const matchingEnv = this._environmentOptionVMs.find(env => env.id === givenEnvId);\n            if (matchingEnv) {\n                return matchingEnv;\n            } else {\n                console.warn(`Attempted to set an environment as active that is not currently an option. ${givenEnvId}`);\n            }\n        });\n        this._activeEnvIds.length = 0;\n        this._activeEnvIds.push(...envsToSet);\n        this._stagedActiveEnvIds = this.canSelectMultiple ? this._activeEnvIds.slice() : [];\n        this._updateBadgeText();\n        this._updateBadgeColor();\n    }\n\n    public _isEnvSelected(envId: number): boolean {\n        if (this.canSelectMultiple) {\n            return this._stagedActiveEnvIds.findIndex(e => e === envId) > -1;\n        }\n        return this._activeEnvIds.findIndex(e => e === envId) > -1;\n    }\n\n    public _onBadgeClick(): void {\n        if (this._disabled) {\n            return;\n        }\n        this.openMenu();\n    }\n\n    public _envClicked(env: IMetadataEnvironmentVM): void {\n        if (this.canSelectMultiple) {\n            this._envClickedForMulti(env);\n        } else {\n            this._envClickedForSingle(env);\n        }\n    }\n\n    /** Used when `canSelectMultiple` is true. applies the state of the 'staging' model (`_stagedSelectedEnvs`) and closes the menu. */\n    public _applyEnvs(): void {\n        this._activeEnvIds.length = 0;\n        this._activeEnvIds.push(...this._stagedActiveEnvIds);\n        this._onEnvironmentsChanged();\n    }\n\n    /** Used when `canSelectMultiple` is true. toggles the environment as needed in the 'staging' model (`_stagedSelectedEnvs`). */\n    private _envClickedForMulti(env: IMetadataEnvironmentVM): void {\n        const idx = this._stagedActiveEnvIds.findIndex(e => e === env.id);\n        if (idx > -1) {\n            this._stagedActiveEnvIds.splice(idx, 1);\n        } else {\n            this._stagedActiveEnvIds.push(env.id);\n        }\n    }\n\n    /** Used when `canSelectMultiple` is false. selects an environment and closes the menu */\n    private _envClickedForSingle(env: IMetadataEnvironmentVM): void {\n        this._activeEnvIds.length = 0;\n        this._activeEnvIds.push(env.id);\n\n        // go ahead and apply changes, close the dropdown for single select\n        this._onEnvironmentsChanged();\n    }\n\n    private _onEnvironmentsChanged(): void {\n        this._onChange(this._activeEnvIds);\n        this.updateEnvironments.emit(this.selectedEnvironments);\n        this._updateBadgeText();\n        this._updateBadgeColor();\n        this.pop.close();\n    }\n\n    /** Update the text displayed on the environment switcher badge in the navbar */\n    private _updateBadgeText() {\n        if (this._activeEnvIds.length === 0) {\n            this._badgeText = 'None';\n            this._badgeTooltip = 'None selected';\n        } else if (this._activeEnvIds.length === 1) {\n            this._badgeText = this.selectedEnvironments[0].shortName.trim().slice(0, 6);\n            this._badgeTooltip = `Active: ${this._buildActiveEnvList()}`;\n        } else if (this._activeEnvIds.length === this.environmentOptions.length) {\n            this._badgeText = 'All';\n            this._badgeTooltip = `${this._activeEnvIds.length} active: ${this._buildActiveEnvList()}`;\n        } else if (this._activeEnvIds.length > 1) {\n            this._badgeText = `${this._activeEnvIds.length} Selected`;\n            this._badgeTooltip = `${this._activeEnvIds.length} active: ${this._buildActiveEnvList()}`;\n        }\n    }\n\n    /** Returns a list of the active environments */\n    private _buildActiveEnvList(): string {\n        return this.selectedEnvironments.map(e => e.name).join(', ');\n    }\n\n    /** Set the appropriate color for environment switcher badge displayed in the navbar */\n    private _updateBadgeColor(): void {\n        if (this._activeEnvIds.length === 0 || this._activeEnvIds.length > 1) {\n            this._badgeColor = 'hc-badge-color-white';\n        } else {\n            this._badgeColor = this._getBadgeColorClass(this.selectedEnvironments?.[0]);\n        }\n    }\n\n    /** Translate an environment's color code into an appropriate css class */\n    private _getBadgeColorClass(env?: IMetadataEnvironment): string {\n        const defaultColor = 'ffffff';\n        const color = env?.color?.toLowerCase().replace('#', '') || defaultColor;\n        return this._colorClassesMap[color] || this._colorClassesMap[defaultColor];\n    }\n\n    /** Prepares given environment models into view models read for display in the UI. */\n    private _convertEnvsToVMs(envs: IMetadataEnvironment[]): IMetadataEnvironmentVM[] {\n        return envs.map(env => {\n            const envVM = Object.assign({}, env) as IMetadataEnvironmentVM;\n            envVM.badgeColorClass = this._getBadgeColorClass(env);\n            envVM.shortName = env.shortName || this._generateShortName(env.name);\n            return envVM;\n        });\n    }\n\n    public _generateShortName(name: string): string {\n        if (!name) {\n            return 'ENV';\n        }\n        const tokens = name.trim().split(/\\s+/g);\n\n        if (tokens.length > 1) {\n            return tokens\n                .map(e => e.charAt(0).toLocaleUpperCase())\n                .join('')\n                .slice(0, 4);\n        } else {\n            return name.trim().slice(0, 4).toLocaleUpperCase();\n        }\n    }\n}\n","<!-- Navbar element -->\n@if (!loading) {\n<div\n    [tabIndex]=\"disabled ? -1 : 0\"\n    class=\"hc-env-badge-wrapper\"\n    [class.hc-env-badge-disabled]=\"disabled\"\n    (click)=\"_onBadgeClick()\"\n    (keydown.enter)=\"_onBadgeClick()\"\n    title=\"{{ _badgeTooltip }}\"\n    [hcPop]=\"envSwitcherPop\"\n    trigger=\"none\"\n>\n    <span class=\"hc-env-badge hc-env-badge-navbar {{ _badgeColor }}\">{{ _badgeText }}</span>\n</div>\n}\n\n<!-- Navbar element - loading -->\n@if (loading) {\n<div class=\"hc-env-switcher-loading\">\n    <hc-progress-dots color=\"light\" [isMini]=\"true\" [isCentered]=\"true\"></hc-progress-dots>\n</div>\n}\n\n<!-- Dropdown -->\n<hc-pop #envSwitcherPop [autoCloseOnContentClick]=\"false\" [showArrow]=\"false\" yAlign=\"below\" xAlign=\"end\" [autoFocus]=\"true\">\n    <div hcMenu class=\"hc-env-switcher-dropdown\" [class.hc-env-switcher-single-select]=\"!canSelectMultiple\">\n        @if (!loading) { @if (!failedToLoad) { @if (_environmentOptionVMs?.length > 0) {\n        <h2 class=\"hc-env-header\">{{ listHeader }}</h2>\n        @for (env of _environmentOptionVMs; track env) {\n        <div\n            hcMenuItem\n            class=\"hc-env-row\"\n            [class.hc-env-row-checked]=\"_isEnvSelected(env.id)\"\n            tabIndex=\"0\"\n            (click)=\"_envClicked(env)\"\n            (keydown.enter)=\"_envClicked(env)\"\n        >\n            <hc-checkbox tight=\"true\" [isStub]=\"true\" [checked]=\"_isEnvSelected(env.id)\" tabIndex=\"-1\">\n                <span class=\"hc-env-badge hc-env-badge-light-bg {{ env.badgeColorClass }}\">{{ env.shortName }}</span>\n                {{ env.name }}\n            </hc-checkbox>\n            <span class=\"hc-env-row-icons\">\n                @if (env.description) {\n                <span class=\"hc-env-icon-info hc-env-row-icon\" hcTooltip=\"{{ env.description }}\" (click)=\"$event.stopPropagation()\"></span>\n                } @if (canOpenInNewTab) {\n                <span\n                    class=\"hc-env-icon-new-tab-link hc-env-row-icon\"\n                    hcTooltip=\"Open in new tab.\"\n                    (click)=\"openInNewTab.emit(env); $event.stopPropagation()\"\n                ></span>\n                }\n            </span>\n        </div>\n        } @if (canSelectMultiple) {\n        <button hcMenuItem hc-button (click)=\"_applyEnvs()\" size=\"sm\" title=\"Close menu and apply selected\">Apply</button>\n        } }\n        <!-- No Envs Available -->\n        @if (_environmentOptionVMs?.length === 0) {\n        <div class=\"hc-env-switcher-empty\">\n            <span class=\"hc-env-switcher-lg-icon hc-env-switcher-empty-icon\"></span>\n            <em>No options available.</em>\n        </div>\n        } }\n        <!-- Load Failed -->\n        @if (failedToLoad) {\n        <div class=\"hc-env-switcher-empty\">\n            <span class=\"hc-env-switcher-lg-icon hc-env-switcher-warning-icon\"></span>\n            <em>Failed to load.</em>\n            <button class=\"hc-env-switcher-retry\" hc-button buttonStyle=\"primary-alt\" size=\"sm\" (click)=\"reloadEnvironments.emit()\">\n                Reload\n            </button>\n        </div>\n        } }\n\n        <!-- Loading -->\n        @if (loading) {\n        <div class=\"hc-env-switcher-empty hc-env-switcher-spinner-container\">\n            <hc-progress-spinner diameter=\"60\"></hc-progress-spinner>\n        </div>\n        }\n    </div>\n</hc-pop>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\n\nimport {EnvSwitcherComponent} from './env-switcher.component';\nimport {PopModule} from '../pop/popover.module';\nimport {ProgressIndicatorsModule} from '../progress-indicators/progress-indicators.module';\nimport {PipesModule} from '../pipes/pipes.module';\nimport {IconModule} from '../icon/icon.module';\nimport {CheckboxModule} from '../checkbox/checkbox.module';\nimport {ButtonModule} from '../button/button.module';\n\n@NgModule({ declarations: [EnvSwitcherComponent],\n    exports: [EnvSwitcherComponent], imports: [CommonModule, PopModule, PipesModule, IconModule, ProgressIndicatorsModule, CheckboxModule, ButtonModule], providers: [provideHttpClient(withInterceptorsFromDi())] })\nexport class EnvSwitcherModule {}\n","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, HostBinding, Input, OnDestroy, Optional, Output, Self, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { delay, takeUntil } from 'rxjs/operators';\nimport { HcFormControlComponent } from '../form-field/hc-form-control.component';\nimport { parseBooleanAttribute } from '../util';\n\nlet nextUploaderId = 1;\n\n/** Standard front-end for uploading files from the users local environment */\n@Component({\n    selector: 'hc-file-uploader',\n    templateUrl: './file-uploader.component.html',\n    styleUrls: ['./file-uploader.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    providers: [{ provide: HcFormControlComponent, useExisting: forwardRef(() => FileUploaderComponent) }],\n    standalone: false\n})\nexport class FileUploaderComponent extends HcFormControlComponent implements AfterViewInit, OnDestroy {\n    @ViewChild('dropZone') _dropZone!: ElementRef<HTMLElement>;\n    @ViewChild('fileInput') _fileInputElement: ElementRef;\n    private _form: NgForm | FormGroupDirective | null;\n    private _unsubscribe = new Subject<void>();\n    private _uniqueId = `hc-file-uploader-${nextUploaderId++}`;\n    _fileIcon = '';\n    _fileTypes = '*';\n    _fileNames: string[] = [];\n    _multiple = false;\n    _disabled = false;\n    _isRequired = false;\n    _fileList: FileList;\n    _subtext: string;\n\n    @HostBinding('class.hc-file-uploader')\n    _baseClass = true;\n\n    /** Fires a `FileList` when files have been selected by the uploader */\n    @Output() filesAdded = new EventEmitter<FileList>();\n\n    /** Unique id for the file uploader element. If none is supplied, one will be auto-generated. */\n    @Input()\n    get id(): string {\n        return this._componentId || this._uniqueId;\n    }\n\n    set id(idVal: string) {\n        this._componentId = idVal ? idVal : this._uniqueId;\n    }\n\n    /** File types that the uploader will accept (eg. \"image/png, image/jpeg\"). Defaults to \"*\". */\n    @Input()\n    get fileTypes(): string {\n        return this._fileTypes;\n    }\n    set fileTypes(value: string) {\n        this._fileTypes = value;\n    }\n\n    /** Allow for multiple files to be selected. Defaults to false. */\n    @Input()\n    get multiple(): boolean {\n        return this._multiple;\n    }\n    set multiple(value: boolean | string ) {\n        this._multiple = parseBooleanAttribute( value );\n    }\n\n    /** Apply tight styling that condenses the controller to one line. Defaults to false. */\n    @Input()\n    get tight(): boolean {\n        return this._tight;\n    }\n    set tight(value: boolean | string ) {\n        this._tight = parseBooleanAttribute( value );\n    }\n\n    /** Whether the uploader is disabled. */\n    @Input()\n    get disabled(): boolean {\n        return this._disabled;\n    }\n\n    set disabled(val: boolean | string) {\n        this._disabled = parseBooleanAttribute(val);\n    }\n\n    /** Sets whether this is a required form element */\n    @Input()\n    get required(): boolean {\n        return this._isRequired;\n    }\n\n    set required( requiredVal: boolean | string ) {\n        this._isRequired = parseBooleanAttribute(requiredVal);\n    }\n\n    /** Displays an optional string of text below the browse button - typically used for instructions or info about file constraints */\n    @Input()\n    get subtext(): string {\n        return this._subtext;\n    }\n\n    set subtext( val: string ) {\n        this._subtext = val;\n    }\n\n    ngAfterViewInit(): void {\n        if ( this._ngControl?.statusChanges ) {\n            // delay() is necessary to make sure any form or control state changes have been applied before rechecking error states\n            this._ngControl.statusChanges.pipe(delay(0), takeUntil(this._unsubscribe)).subscribe(() => this._updateErrorState());\n        }\n        if ( this._form ) {\n            this._form.ngSubmit.pipe(takeUntil(this._unsubscribe)).subscribe(() => this._updateErrorState());\n        }\n\n        /** Monkey patching the markAsTouched function to call error state checking because there is not an event for touched changes */\n        if ( this._ngControl && this._ngControl.control ) {\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            const self = this;\n            const originalMarkMethod = this._ngControl.control.markAsTouched;\n            this._ngControl.control.markAsTouched = function () {\n                // eslint-disable-next-line prefer-rest-params\n                originalMarkMethod.apply(this, arguments);\n                self._updateErrorState();\n            };\n\n            const originalMarkAllMethod = this._ngControl.control.markAllAsTouched;\n            this._ngControl.control.markAllAsTouched = function () {\n                // eslint-disable-next-line prefer-rest-params\n                originalMarkAllMethod.apply(this, arguments);\n                self._updateErrorState();\n            };\n        }\n    }\n\n    constructor(\n        @Optional() _parentForm: NgForm,\n        @Optional() _parentFormGroup: FormGroupDirective,\n        @Optional() @Self() public _ngControl: NgControl,\n        private _changeRef: ChangeDetectorRef\n    ) {\n        super();\n\n        this._form = _parentForm || _parentFormGroup;\n        if (this._ngControl != null) {\n            this._ngControl.valueAccessor = this;\n        }\n    }\n\n    writeValue(value: FileList): void {\n        // Prevent the form control from trying to write a value on removing the control\n        if ( this.onChange.name !== 'noop' ) {\n            this._fileList = value;\n        }\n    }\n\n    public onChange: (value: FileList) => void = () => undefined;\n    public onTouch: () => unknown = () => undefined;\n    public registerOnChange(fn: (value: FileList) => void): void {\n        this.onChange = fn;\n    }\n    public registerOnTouched(fn: () => FileList): void {\n        this.onTouch = fn;\n    }\n\n    setDisabledState(disabledVal: boolean): void {\n        this.disabled = disabledVal;\n    }\n\n    private _updateErrorState() {\n        const oldState = this._errorState;\n\n        // TODO: this could be abstracted out as an @Input() if we need this to be configurable\n        const newState = !!(\n            this._ngControl &&\n            this._ngControl.invalid &&\n            (this._ngControl.touched || (this._form && this._form.submitted))\n        );\n\n        if (oldState !== newState) {\n            this._errorState = newState;\n            this._changeRef.detectChanges();\n        }\n    }\n\n    /** Triggers the system file selection dialog to open */\n    browseFiles(): void {\n        this._fileInputElement.nativeElement.dispatchEvent(new MouseEvent('click', {bubbles: true}));\n    }\n\n    /** Clears any selected files and returns to the initial state */\n    reset(): void {\n        this._fileInputElement.nativeElement.value = '';\n        this._fileList = this._fileInputElement.nativeElement.files;\n        this._fileNames = [];\n    }\n\n    _fileSelected(): void {\n        const selectedFiles: FileList = this._fileInputElement.nativeElement.files;\n        this._fileNames = [];\n        for (let i = 0; i < selectedFiles.length; i++) {\n            this._fileNames.push( selectedFiles[i].name );\n        }\n\n        this._fileList = selectedFiles;\n        this.onChange( this._fileList );\n        this.onTouch();\n        this.filesAdded.emit( selectedFiles );\n\n        this._determineFileIcon();\n    }\n\n    _onFileDrop(event: DragEvent): void {\n        event.preventDefault();\n        this._unhighlight();\n        let selectedFiles: FileList;\n        const files = event?.dataTransfer?.files;\n        if (!files) {\n            return;\n        }\n\n        // Can't prevent a user from dropping multiple files; if multiple files are not supported, only take the first one\n        if ( !this.multiple && files.length > 1 ) {\n            const dt = new DataTransfer();\n            dt.items.add(files[0]);\n            this._fileInputElement.nativeElement.files = dt.files;\n            const trimmedFiles = this._fileInputElement.nativeElement.files;\n            selectedFiles = trimmedFiles;\n        } else {\n            selectedFiles = files;\n        }\n\n        this._fileNames = [];\n        for (let i = 0; i < selectedFiles.length; i++) {\n            this._fileNames.push( selectedFiles[i].name );\n        }\n\n        this._fileList = selectedFiles;\n        this.onChange( this._fileList );\n        this.filesAdded.emit(selectedFiles);\n\n        this._determineFileIcon();\n    }\n\n    _determineFileIcon(): void {\n        const mimeType = this._fileList[0].type;\n\n        if ( mimeType.includes('image') ) {\n            this._fileIcon = 'hc-image-file-icon';\n        } else if ( mimeType.includes('pdf') ) {\n            this._fileIcon = 'hc-pdf-file-icon';\n        } else if ( mimeType.includes('csv') ) {\n            this._fileIcon = 'hc-csv-file-icon';\n        } else if ( mimeType.includes('msword') ) {\n            this._fileIcon = 'hc-doc-file-icon';\n        } else if ( this._fileList[0].name.includes('.docx') ) {\n            this._fileIcon = 'hc-docx-file-icon';\n        } else if ( this._fileList[0].name.includes('.xls') ) {\n            this._fileIcon = 'hc-xls-file-icon';\n        } else if ( mimeType.includes('xml') ) {\n            this._fileIcon = 'hc-xml-file-icon';\n        } else if ( mimeType === 'text/plain' ) {\n            this._fileIcon = 'hc-text-file-icon';\n        } else if ( mimeType.includes('text/') ) {\n            this._fileIcon = 'hc-text-clipping-file-icon';\n        } else {\n            this._fileIcon = 'hc-generic-file-icon';\n        }\n    }\n\n    _allowDrop(event: Event): void {\n        event.preventDefault();\n        this._highlight();\n    }\n\n    _highlight(): void {\n        this._dropZone?.nativeElement.classList.add('hc-file-uploader-drag-target-over');\n    }\n\n    _unhighlight(): void {\n        this._dropZone?.nativeElement.classList.remove('hc-file-uploader-drag-target-over');\n    }\n\n    ngOnDestroy(): void {\n        this._unsubscribe.next();\n        this._unsubscribe.complete();\n    }\n}\n","<div\n    #dropZone\n    class=\"hc-file-uploader-drag-target\"\n    [class.hc-file-uploader-disabled]=\"disabled\"\n    (drop)=\"_onFileDrop($event)\"\n    (dragover)=\"_allowDrop($event)\"\n    (dragenter)=\"_highlight()\"\n    (dragleave)=\"_unhighlight()\"\n>\n    @if (_fileNames.length === 0 && !tight) {\n    <div>\n        <div class=\"hc-file-uploader-drag-icon\"></div>\n        <div class=\"hc-file-uploader-drag-text\">\n            {{ multiple ? 'Drag files here to select them.' : 'Drag a file here to select it.' }}\n        </div>\n    </div>\n    } @if (_fileNames.length === 0 && tight) {\n    <div class=\"hc-file-uploader-tight-container\">\n        <div class=\"hc-file-uploader-drag-icon hc-file-uploader-tight-icon\"></div>\n        <div class=\"hc-file-uploader-tight-drag-text\">\n            {{ multiple ? 'Drag files here to select them' : 'Drag a file here to select it' }} or\n            <button hc-button buttonStyle=\"link-inline\" (click)=\"browseFiles()\">browse</button>\n            @if (_subtext) {\n            <span>({{ subtext }})</span>\n            }.\n        </div>\n    </div>\n    } @if (_fileNames.length > 0 && tight) {\n    <div class=\"hc-file-uploader-tight-container\">\n        <div [class]=\"'hc-file-uploader-files-selected-tight ' + _fileIcon\"></div>\n        <div class=\"hc-file-uploader-tight-drag-text\">\n            {{\n                _fileNames.length > 1\n                    ? 'Multiple files (' + _fileNames.length + ') selected. Drag files here to replace'\n                    : _fileNames[0] + ' selected. Drag a file here to replace'\n            }}\n            or\n            <button hc-button buttonStyle=\"link-inline\" (click)=\"browseFiles()\">browse</button>\n            @if (_subtext) {\n            <span>({{ subtext }})</span>\n            }.\n        </div>\n    </div>\n    } @if (_fileNames.length === 1 && !tight) {\n    <div>\n        <div [class]=\"'hc-file-uploader-files-selected ' + _fileIcon\">\n            <div class=\"hc-file-icon-checked\"></div>\n        </div>\n        <div class=\"hc-file-uploader-file-name\">\n            {{ _fileNames[0] }}\n        </div>\n        <div class=\"hc-file-uploader-drag-text\">File selected. Drag a file here to replace.</div>\n    </div>\n    } @if (_fileNames.length > 1 && !tight) {\n    <div>\n        <div class=\"hc-file-uploader-files-selected\">\n            <div class=\"hc-file-uploader-multiple-files hc-generic-file-icon\"></div>\n            <div class=\"hc-generic-file-icon\">\n                <div class=\"hc-file-icon-checked\"></div>\n            </div>\n        </div>\n        <div class=\"hc-file-uploader-file-name\">Multiple Files</div>\n        <div class=\"hc-file-uploader-drag-text\">Files ({{ _fileNames.length }}) selected. Drag files here to replace.</div>\n    </div>\n    } @if (!tight) {\n    <div class=\"hc-file-uploader-drag-divider\">OR</div>\n    } @if (!tight) {\n    <div class=\"hc-file-uploader-file-controls\">\n        <button hc-button size=\"lg\" (click)=\"browseFiles()\">Browse Files</button>\n        @if (_subtext) {\n        <div class=\"hc-file-uploader-subtext\">{{ subtext }}</div>\n        }\n    </div>\n    }\n    <input type=\"file\" [accept]=\"fileTypes\" [multiple]=\"multiple\" #fileInput [hidden]=\"true\" (change)=\"_fileSelected()\" />\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FileUploaderComponent } from './file-uploader.component';\nimport { FormFieldModule } from '../form-field';\nimport { InputModule } from '../input';\nimport { ButtonModule } from '../button';\n\n@NgModule({\n    imports: [CommonModule, FormFieldModule, InputModule, ButtonModule, FormsModule, ReactiveFormsModule],\n    exports: [FileUploaderComponent],\n    declarations: [FileUploaderComponent]\n})\nexport class FileUploaderModule {}\n","import { ChangeDetectorRef, Component, ElementRef, Input, ViewChild, ViewEncapsulation } from '@angular/core';\n\n/**\n * Helper component for creating a container which automatically\n * overflows components into a more menu.\n */\n@Component({\n    selector: 'hc-measurable',\n    templateUrl: './measurable.component.html',\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class MeasurableComponent {\n\n    private _width = 0;\n    private _height = 0;\n\n    _isShown = false;\n    _itemKey: string | null;\n\n    @ViewChild('measurableItem')\n    _targetItem: ElementRef;\n\n    /**\n     * The unique key of the item displayed inside this measurable component.\n     */\n    @Input()\n    get itemKey(): string {\n        if (this._itemKey) {\n            return this._itemKey\n        }\n\n        throw new Error('The current item is missing its unique key.');\n    }\n\n    set itemKey(itemKeyVal: string) {\n        this._itemKey = itemKeyVal;\n    }\n\n    /**\n     * Calculates and returns the measured width of this container.\n     * The width is cached for future calls to this property.\n     */\n    get width(): number {\n        if (!this._width) {\n            const shouldShow = this._isShown;\n            this.show();\n\n            this._width = this._targetItem?.nativeElement?.scrollWidth ?? 0;\n\n            if (!shouldShow) {\n                this.hide();\n            }\n        }\n\n        return this._width;\n    }\n\n    /**\n     * Calculates and returns the measured height of this container.\n     * The height is cached for future calls to this property.\n     */\n     get height(): number {\n        if (!this._height) {\n            const shouldShow = this._isShown;\n            this.show();\n\n            this._height = this._targetItem?.nativeElement?.scrollHeight ?? 0;\n\n            if (!shouldShow) {\n                this.hide();\n            }\n        }\n\n        return this._height;\n    }\n\n    constructor(private ref: ChangeDetectorRef) {}\n\n    /**\n     * Shows the contents of this container, forcing a change detection\n     * cycle to run.\n     */\n    show(): void {\n        this._isShown = true;\n        this.ref.detectChanges();\n    }\n\n    /**\n     * Hides the contents of this container, forcing a change detection\n     * cycle to run.\n     */\n     hide(): void {\n        this._isShown = false;\n        this.ref.detectChanges();\n    }\n\n    reset(): void {\n        this._width = 0;\n        this._height = 0;\n    }\n}\n","@if (_isShown) {\n<div #measurableItem class=\"hc-measurable-container\">\n    <ng-content></ng-content>\n</div>\n}\n","import { Injectable } from \"@angular/core\";\nimport { MeasurableComponent } from \".\";\n\n/**\n * This service provides the logic to fill up a container\n * with components contained inside Measurable Components.\n */\n@Injectable()\nexport class MeasurableService {\n\n    /**\n     * Fills a container with as many components as will fit. See usage for more details.\n     *\n     * @param components The array of components to try and fill the container.\n     * @param availableSize The available width or height in the container to fill with the given components.\n     * @param moreSize The width or height of a more control.\n     * @param direction Which way to fill the container, either horizontally or vertically.\n     * @param showFunc Additional actions to take on a component that is shown. *Defaults to a function that does nothing.*\n     * @param hideFunc Additional actions to take on a component that is hidden. *Defaults to a function that does nothing.*\n     * @returns A set containing all of the keys of components that were hidden.\n     */\n    fillContainer(\n        components: MeasurableComponent[],\n        availableSize: number,\n        moreSize: number,\n        direction: 'horizontal' | 'vertical' = 'horizontal',\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        showFunc: (component: MeasurableComponent) => void = (_component) => void(0),\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        hideFunc: (component: MeasurableComponent) => void = (_component) => void(0)\n    ): Set<string> {\n        const moreKeys = new Set<string>();\n        let currentSize = 0;\n\n        const getDirection = direction == 'horizontal'\n            ? (c: MeasurableComponent) => c.width\n            : (c: MeasurableComponent) => c.height;\n\n        const totalComponentSize = components.reduce((prev, curr) => prev + getDirection(curr), 0);\n        const currentMoreSize = totalComponentSize > availableSize ? moreSize : 0;\n\n        components.forEach(component => {\n            currentSize += getDirection(component);\n\n            if (currentSize + currentMoreSize < availableSize) {\n                component.show();\n                showFunc(component);\n            } else {\n                component.hide();\n                moreKeys.add(component.itemKey);\n                hideFunc(component);\n            }\n        })\n\n        return moreKeys;\n    }\n}\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MeasurableComponent } from './measurable.component';\nimport { MeasurableService } from './measurable.service';\n\n\n\n@NgModule({\n  declarations: [\n      MeasurableComponent\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n      MeasurableComponent\n  ],\n  providers: [\n      MeasurableService\n  ]\n})\nexport class MeasurableModule { }\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport {\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    Input,\n    OnDestroy,\n    Output,\n    QueryList,\n    ViewChild,\n    ViewChildren,\n    ViewEncapsulation,\n    AfterViewInit\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\nimport { MeasurableService } from '../measurable';\nimport { MeasurableComponent } from '../measurable/measurable.component';\nimport { HcPopoverAnchorDirective } from '../pop';\nimport { IInstance, IInstanceSwitcherTooltipText } from './instance-switcher-interfaces';\nimport { parseBooleanAttribute } from '../util';\nimport { FormControl } from '@angular/forms';\n\ntype InstanceSwitcherTooltipConfig = IInstanceSwitcherTooltipText & {\n    addTrigger: string;\n    closeTrigger: string;\n};\n\n/**\n * `hc-instance-switcher` is used to manage multiple instances of the same page.\n */\n@Component({\n    selector: 'hc-instance-switcher',\n    templateUrl: './instance-switcher.component.html',\n    styleUrls: ['./instance-switcher.component.scss'],\n    animations: [\n        trigger('openState', [\n            state('open', style({\n                height: '*'\n            })),\n            state('void', style({\n                height: '0px',\n                visibility: 'hidden'\n            })),\n            transition('void <=> open', animate('400ms ease'))\n        ]),\n        trigger('moreOpenState', [\n            state('open', style({\n                transform: 'rotate(180deg)'\n            })),\n            state('closed', style({\n                transform: 'rotate(0deg)'\n            })),\n            transition('open <=> closed', animate('500ms cubic-bezier(0.25, 0.8, 0.25, 1)'))\n        ])\n    ],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class InstanceSwitcherComponent implements OnDestroy, AfterViewInit {\n    _instances: IInstance[] = [];\n    _moreInstances: IInstance[] = [];\n    _selectedKey: string | null = null;\n    _editKey: string | null = null;\n    _previouslySelected: string[] = [];\n    _closable = true;\n    _isOpen = true;\n    _openState: 'void' | 'open' = 'open';\n    _tooltipText: InstanceSwitcherTooltipConfig = {\n        addTrigger: 'none',\n        closeTrigger: 'none'\n    };\n    _renameInstanceControl = new FormControl('');\n    _renameInstanceSize$ = this._renameInstanceControl.valueChanges.pipe(\n        map((instanceName: string) => Math.max(instanceName.length + 2, 4))\n    );\n\n    private _unsubscribe$ = new Subject<void>();\n    private _animationFrameCount = 0;\n    private _blurActive = false;\n    _instanceContextKey: string | null = null;\n    _instanceContextValue: string | null = null\n    private _baseSize: number;\n\n    public _collapse = false;\n    public _moreList: Array<IInstance> = [];\n\n    /**\n     * The instances to display on the Instance Switcher. *Required.*\n     */\n    @Input()\n    get instances(): IInstance[] {\n        return this._instances;\n    }\n\n    set instances(instancesVal: IInstance[]) {\n        this._instances = instancesVal;\n        this._ref.detectChanges();\n        this.refreshInstances();\n    }\n\n    /**\n     * Controls whether or not to display the close button\n     * on the Instance Switcher. *Defaults to true.*\n     */\n    @Input()\n    get closable(): boolean {\n        return this._closable;\n    }\n\n    set closable(closableVal: boolean) {\n        this._closable = parseBooleanAttribute(closableVal);\n        this._ref.detectChanges();\n        this.refreshInstances();\n    }\n\n    /**\n     * Controls whether or not the instance chips are\n     * editable. *Defaults to true.*\n     */\n    @Input()\n    editable = false;\n\n    /**\n     * Sets the Instance Switcher to either open or closed. *Defaults to true. Required if `closable` is also true.*\n     */\n    @Input()\n    get isOpen(): boolean {\n        return this._isOpen;\n    }\n\n    set isOpen(isOpenVal: boolean) {\n        this._isOpen = parseBooleanAttribute(isOpenVal);\n        this._openState = this._isOpen ? 'open' : 'void';\n    }\n\n    /**\n     * Sets which instance is selected.\n     */\n    @Input()\n    get selectedKey(): string | null {\n        return this._selectedKey;\n    }\n\n    set selectedKey(selectedKeyVal: string | null) {\n        if (this._selectedKey !== selectedKeyVal) {\n            this._selectedKey = selectedKeyVal;\n            this._ref.detectChanges();\n            this.refreshInstances();\n        }\n    }\n\n    /**\n     * Configures the tooltip text that shows up on the various\n     * controls.\n     */\n    @Input()\n    get tooltipText(): IInstanceSwitcherTooltipText {\n        return this._tooltipText;\n    }\n\n    set tooltipText(toolTipVal: IInstanceSwitcherTooltipText) {\n        this._tooltipText = {\n            ...toolTipVal,\n            addTrigger: toolTipVal.addText ? 'hover' : 'none',\n            closeTrigger: toolTipVal.closeText ? 'hover' : 'none'\n        };\n    }\n\n    get _moreOpenState(): 'open' | 'closed' {\n        return this._instancesMore?.isPopoverOpen() ? 'open' : 'closed';\n    }\n\n    /** Configure the max width for the instance names. Default to fit content or `none`; use maxWidth to constrain and truncate the content to a fixed width (e.g. `150px`)*/\n    @Input()\n    chipMaxWidth = 'none';\n\n    /**\n     * Value emitted when an instance tab is clicked. The value\n     * is the unique key assigned to the instance.\n     */\n    @Output()\n    selected = new EventEmitter<string | null>();\n\n    /**\n     * Empty event emitted when the add instance button is clicked.\n     */\n    @Output()\n    added = new EventEmitter<never>();\n\n    @Output()\n    edited = new EventEmitter<IInstance>();\n\n    /**\n     * Value emitted when the close button is clicked on an\n     * instance tab. The value is the unique key assigned to the\n     * instance.\n     */\n    @Output()\n    removed = new EventEmitter<string>();\n\n    /**\n     * Empty event emitted when the close button is clicked on the\n     * instance switcher.\n     */\n    @Output()\n    closed = new EventEmitter<never>();\n\n    @ViewChildren(MeasurableComponent)\n    _instanceChips: QueryList<MeasurableComponent>;\n\n    @ViewChild('moreInstances')\n    _instancesMore: HcPopoverAnchorDirective;\n\n    @ViewChildren('instanceTooltip')\n    _instancesTooltips: QueryList<HcPopoverAnchorDirective>;\n\n    @ViewChild('instancesContainer')\n    _instancesContainer: ElementRef;\n\n    @ViewChild('instanceEditInput')\n    _instanceEditInput: ElementRef;\n\n    @ViewChildren('instance')\n    _instancePopovers: QueryList<HcPopoverAnchorDirective>;\n\n    /**\n     * Recalculates which instances should be shown, and which\n     * ones should be moved to the more menu.\n     */\n    refreshInstances(): void {\n        if (this._instancesMore) {\n            this._instancesMore.closePopover();\n        }\n\n        if (!this._instanceChips) {\n            return;\n        }\n\n        const selectedInstance = this._instanceChips\n            .find(instance => instance.itemKey === this._selectedKey);\n\n        selectedInstance?.show();\n\n        const selectedSize = selectedInstance?.width ?? 0;\n\n        const moreKeys = this._measurableService.fillContainer(\n            this._instanceChips.filter(instance => instance.itemKey !== this._selectedKey),\n            this._calculateAvailableSize() - selectedSize,\n            112);\n\n        this._moreInstances = this._instances.filter(instance => moreKeys.has(instance.instanceKey));\n\n        this._ref.detectChanges();\n    }\n\n    constructor(\n        private _measurableService: MeasurableService,\n        private _ref: ChangeDetectorRef\n    ) {}\n\n    ngAfterViewInit(): void {\n        this.checkContainerSize();\n    }\n\n    @HostListener('window:resize')\n    _updateContainerSize(): void {\n        this._baseSize = this._instancesContainer.nativeElement.clientWidth;\n    }\n\n    /**\n     * Checks the container size a few times to see if the instances can be refreshed for the first\n     * time. For more information about this approach, see the Usage tab on the website.\n     */\n    private checkContainerSize(): void {\n        // If the clientWidth is zero, then the container element has not yet been rendered to the DOM.\n        // This will try requesting a new animation frame 60 times, or until the element has been\n        // rendered, whichever comes first.\n        if (this._instancesContainer.nativeElement.clientWidth === 0 && this._animationFrameCount++ < 60) {\n            requestAnimationFrame(() => this.checkContainerSize());\n        } else {\n            this._updateContainerSize();\n            // If the container element is loaded, or we have exceeded the try count, then refresh instances.\n            this.refreshInstances();\n\n            this._instanceChips.changes.pipe(\n                takeUntil(this._unsubscribe$)\n            ).subscribe(() => this.refreshInstances());\n        }\n    }\n\n    ngOnDestroy(): void {\n        this._unsubscribe$.next();\n        this._unsubscribe$.complete();\n    }\n\n    _isSelected(key: string, isMore: boolean, index: number): boolean {\n        return this.selectedKey === key\n            || (!isMore && index === 0 && !this.selectedKey);\n    }\n\n    _contextTrigger(): string {\n        return this._instances.length === 1 && !this.editable ? 'none' : 'rightclick';\n    }\n\n    _isEditable(key: string): boolean {\n        return this.editable && this._editKey === key;\n    }\n\n    _inputWidth(charCount: number): number {\n        return Math.max(charCount, 4);\n    }\n\n    _closeClick(): void {\n        this.isOpen = false;\n        this.closed.emit();\n    }\n\n    _instanceClick(key: string): void {\n        if (key !== this._selectedKey  && this._selectedKey) {\n            this._previouslySelected.push(this._selectedKey);\n        }\n\n        this.selectedKey = key;\n        this.selected.emit(key);\n    }\n\n    _instanceContextOpened(key: string, value: string): void {\n        this._instanceContextKey = key;\n        this._instanceContextValue = value;\n    }\n\n    _instanceEdit(key: string | null, value: string | null, clickEvent?: MouseEvent): void {\n        if (this.editable && key && value) {\n            if (clickEvent) {\n                clickEvent.stopPropagation();\n            }\n\n            const instancePopover = this._instancePopovers.first;\n\n            this._editKey = key;\n\n            setTimeout(() => {\n                this._renameInstanceControl.setValue(value);\n                this._renameInstanceControl.updateValueAndValidity();\n                if (instancePopover) {\n                    instancePopover.closePopover();\n                }\n\n                setTimeout(() => {\n                    this._instanceEditInput.nativeElement.focus();\n                    this._blurActive = true;\n\n                    if (this._instancesTooltips) {\n                        this._instancesTooltips.forEach(tooltip => {\n                            tooltip.closePopover();\n                        });\n                    }\n                }, 0);\n            }, 0);\n        }\n    }\n\n    _cancelEdit(): void {\n        this._editKey = null;\n    }\n\n    _instanceBlur(key: string): void {\n        if (!this._blurActive) {\n            return;\n        }\n\n        this._blurActive = false;\n\n        const value = this._renameInstanceControl.value\n        if(value === '') {\n            this._cancelEdit();\n            return;\n        }\n\n        if (value) {\n            if (key === this._editKey) {\n                this._editKey = null;\n            }\n\n            this.instances = this._instances.map(instance => {\n                if (instance.instanceKey === key) {\n                    return {\n                        ...instance,\n                        displayText: value\n                    };\n                }\n\n                return instance\n            });\n\n            const editedInstance = this.instances.find(instance => instance.instanceKey === key);\n\n            this.edited.emit(\n                editedInstance\n            );\n\n            this._instanceChips\n                .find(instance => instance.itemKey === key)\n                ?.reset();\n\n            this.refreshInstances();\n        }\n    }\n\n    _instanceClose(key: string, event?: MouseEvent): void {\n        event?.stopPropagation();\n\n        this._instances = this._instances.filter(instance => instance.instanceKey !== key);\n        this._previouslySelected = this._previouslySelected.filter(prevKey => prevKey !== key);\n\n        if (this._previouslySelected.length > 0) {\n            this.selectedKey = this._previouslySelected.pop() ?? null;\n        } else if (this._instances.length > 0) {\n            this.selectedKey = this._instances[0].instanceKey;\n        } else {\n            this.selectedKey = null;\n        }\n\n        this.selected.emit(this.selectedKey);\n\n        this.removed.emit(key);\n    }\n\n    _instanceAdd(): void {\n        this.added.emit();\n    }\n\n    _calculateAvailableSize(): number {\n        return this._baseSize - 45;\n    }\n\n    _instanceTrackBy(index: number, instance: IInstance): string {\n        return `${instance.instanceKey}|${instance.displayText}`;\n    }\n}\n","<div class=\"hc-instance-switcher\" [@openState]=\"_openState\">\n    <div #instancesContainer class=\"hc-instance-container\">\n        @for (instance of instances; track _instanceTrackBy(i, instance); let i = $index) {\n        <hc-measurable [itemKey]=\"instance.instanceKey\">\n            <div\n                #instance=\"hcPopAnchor\"\n                hcMeasure\n                class=\"hc-instance-chip\"\n                [hcPop]=\"instanceContext\"\n                [trigger]=\"_contextTrigger()\"\n                [style.max-width]=\"chipMaxWidth\"\n                [context]=\"{key: instance.instanceKey, value: instance.displayText}\"\n                [class.hc-instance-selected]=\"_isSelected(instance.instanceKey, false, i)\"\n                (click)=\"_instanceClick(instance.instanceKey)\"\n                (dblclick)=\"_instanceEdit(instance.instanceKey, instance.displayText)\"\n                (closeClick)=\"_instanceClose(instance.instanceKey, $event)\"\n            >\n                <span\n                    #instanceTooltip=\"hcPopAnchor\"\n                    class=\"hc-text-ellipsis\"\n                    [hcTooltip]=\"instance.tooltipText\"\n                    [trigger]=\"instance.instanceKey === _editKey || !instance.tooltipText ? 'none' : 'hover'\"\n                >\n                    @if (_isEditable(instance.instanceKey)) {\n                    <input\n                        #instanceEditInput\n                        hcInput\n                        type=\"text\"\n                        [style.width.ch]=\"_renameInstanceSize$ | async\"\n                        (blur)=\"_instanceBlur(instance.instanceKey)\"\n                        (keyup.enter)=\"_instanceBlur(instance.instanceKey)\"\n                        (keyup.esc)=\"_cancelEdit()\"\n                        [formControl]=\"_renameInstanceControl\"\n                    />\n                    } @else {\n                    {{ instance.displayText }}\n                    }\n                </span>\n                @if (instances.length > 1) {\n                <hc-icon\n                    hcIconSm\n                    fontSet=\"fa-solid fa\"\n                    fontIcon=\"fa-xmark\"\n                    (click)=\"_instanceClose(instance.instanceKey, $event)\"\n                ></hc-icon>\n                }\n            </div>\n        </hc-measurable>\n        } @if (_moreInstances && _moreInstances.length) {\n        <button hc-button #moreInstances=\"hcPopAnchor\" class=\"hc-instance-switcher-more\" buttonStyle=\"neutral\" [hcPop]=\"popInstances\">\n            More\n            <hc-icon\n                [@moreOpenState]=\"_moreOpenState\"\n                hcIconSm\n                class=\"hc-instance-switcher-more-icon icon-right\"\n                fontSet=\"fa-solid fa\"\n                fontIcon=\"fa-chevron-down\"\n            ></hc-icon>\n        </button>\n        }\n        <button\n            hc-button\n            [hcTooltip]=\"_tooltipText.addText\"\n            [trigger]=\"_tooltipText.addTrigger\"\n            class=\"hc-instance-switcher-add\"\n            buttonStyle=\"neutral\"\n            (click)=\"_instanceAdd()\"\n        >\n            <hc-icon hcIconSm fontSet=\"fa-solid fa\" fontIcon=\"fa-plus\"></hc-icon>\n        </button>\n    </div>\n    @if (_closable) {\n    <button\n        [hcTooltip]=\"_tooltipText.closeText\"\n        [trigger]=\"_tooltipText.closeTrigger\"\n        hc-icon-button\n        class=\"hc-instance-switcher-hide\"\n        (click)=\"_closeClick()\"\n    >\n        <hc-icon fontSet=\"fa-solid fa\" fontIcon=\"fa-times\"></hc-icon>\n    </button>\n    }\n</div>\n\n<hc-pop #popInstances [autoCloseOnContentClick]=\"true\" [showArrow]=\"false\" horizontalAlign=\"start\">\n    <div hcMenu>\n        @for (moreInstance of _moreInstances; track _instanceTrackBy(i, moreInstance); let i = $index) {\n        <button class=\"hc-instance-switcher-more-menu-item\" (click)=\"_instanceClick(moreInstance.instanceKey)\" hcMenuItem>\n            <span hcMenuText>{{ moreInstance.displayText }}</span>\n            <hc-icon\n                hcMenuIcon\n                class=\"hc-instance-switcher-more-close\"\n                (click)=\"_instanceClose(moreInstance.instanceKey, $event)\"\n                fontSet=\"fa-solid fa\"\n                fontIcon=\"fa-times\"\n            ></hc-icon>\n        </button>\n        }\n    </div>\n</hc-pop>\n\n<hc-pop\n    #instanceContext\n    horizontalAlign=\"mouse\"\n    verticalAlign=\"mouse\"\n    (opened)=\"_instanceContextOpened($event.key, $event.value)\"\n    [autoCloseOnContentClick]=\"true\"\n    [showArrow]=\"false\"\n>\n    <div hcMenu>\n        @if (this._instances.length > 1) {\n        <button hcMenuItem (click)=\"_instanceClose(_instanceContextKey ?? '')\">\n            <hc-icon hcMenuIcon fontSet=\"fa-solid fa\" fontIcon=\"fa-times\"></hc-icon>\n            <span hcMenuText>Close</span>\n        </button>\n        } @if (editable) {\n        <button hcMenuItem (click)=\"_instanceEdit(_instanceContextKey, _instanceContextValue, $event)\">\n            <hc-icon hcMenuIcon fontSet=\"hc-icons\" fontIcon=\"hci-text-entry\"></hc-icon>\n            <span hcMenuText>Rename</span>\n        </button>\n        }\n    </div>\n</hc-pop>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { ButtonModule } from \"../button/button.module\";\nimport { ChipModule } from \"../chip/chip.module\";\nimport { IconModule } from \"../icon/icon.module\";\nimport { InputModule } from \"../input\";\nimport { MeasurableModule } from \"../measurable/measurable.module\";\nimport { InstanceSwitcherComponent } from \"./instance-switcher.component\";\n\n@NgModule({\n    declarations: [\n      InstanceSwitcherComponent\n    ],\n    imports: [\n      CommonModule,\n      ChipModule,\n      ButtonModule,\n      IconModule,\n      MeasurableModule,\n      InputModule,\n      ReactiveFormsModule\n    ],\n    exports: [\n        InstanceSwitcherComponent\n    ]\n  })\n  export class InstanceSwitcherModule { }\n","import {Component, HostBinding, ViewEncapsulation} from '@angular/core';\n\n/** Parent component that can house multiple `<hc-list-item>` and applies Cashmere list styling */\n@Component({\n    selector: 'hc-list',\n    templateUrl: './list.component.html',\n    styleUrls: ['./list.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class ListComponent {\n    @HostBinding('class.hc-list')\n    _hostClass = true;\n}\n","<ng-content></ng-content>\n","import {Component, HostBinding, ViewEncapsulation} from '@angular/core';\n\n/**\n * Represents a row within a `<hc-list>`. Multiple `[hcListLine]` can be used\n * per `<hc-list-item>`. You can also prefix a `[hcListAvatar]` or `[hcListIcon]`\n * to the beginning of the `<hc-list-item>`.\n */\n@Component({\n    selector: 'hc-list-item',\n    templateUrl: './list-item.component.html',\n    styleUrls: ['./list-item.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class ListItemComponent {\n    @HostBinding('class.hc-list-item')\n    _hostClass = true;\n}\n","<div class=\"hc-list-content\">\n    <ng-content select=\"[hcListAvatar], [hcListIcon]\"></ng-content>\n    <div class=\"hc-list-text\">\n        <ng-content select=\"[hcListLine]\"></ng-content>\n    </div>\n    <ng-content></ng-content>\n</div>\n\n\n","import {Directive, HostBinding} from '@angular/core';\n\n/** Prepends an avatar styled element to the beginning of a `<hc-list-item>`. */\n@Directive({\n    selector: '[hcListAvatar]',\n    standalone: false\n})\nexport class ListAvatarDirective {\n    @HostBinding('class.hc-list-avatar')\n    get _hostClass(): boolean {\n        return true;\n    }\n}\n","import {Directive, HostBinding} from '@angular/core';\n\n/** Prefixes an icon to the beginning of a `<hc-list-item>`. */\n@Directive({\n    selector: '[hcListIcon]',\n    standalone: false\n})\nexport class ListIconDirective {\n    @HostBinding('class.hc-list-icon')\n    _hostClass = true;\n}\n","import {Directive, HostBinding} from '@angular/core';\n\n/** Represents a line within a `hc-list-item` row. Multiple can be used within `hc-list-item`. */\n@Directive({\n    selector: '[hcListLine]',\n    standalone: false\n})\nexport class ListLineDirective {\n    @HostBinding('class.hc-list-line')\n    _hostClass;\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ListComponent} from './list.component';\nimport {ListItemComponent} from './list-item/list-item.component';\nimport {ListAvatarDirective} from './list-item/directives/list-avatar.directive';\nimport {ListIconDirective} from './list-item/directives/list-icon.directive';\nimport {ListLineDirective} from './list-item/directives/list-line.directive';\n\n@NgModule({\n    imports: [CommonModule],\n    declarations: [ListComponent, ListItemComponent, ListAvatarDirective, ListIconDirective, ListLineDirective],\n    exports: [ListComponent, ListItemComponent, ListAvatarDirective, ListIconDirective, ListLineDirective]\n})\nexport class ListModule {}\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class ActiveModal<T = any, U = any> {\n    /** Data that was passed in through ModalOptions */\n    public data?: T;\n    /** Closes the modal with an optional result.\n     * Use this close method when opening a modal using a component. When doing so,\n     * ActiveModal must be injected in order to get access to the close method.\n     * To dismiss a modal that was created from a TemplateRef, use the dismiss method\n     * on HcModal */\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    public close(_result?: U): void {\n        // do nothing.\n    }\n    /** Dismisses the modal with no result.\n     * Use this dismiss method when opening a modal using a component. When doing so,\n     * ActiveModal must be injected in order to get access to the dismiss method.\n     * To dismiss a modal that was created from a TemplateRef, use the dismiss method\n     * on HcModal */\n    public dismiss(): void {\n        // do nothing.\n    }\n}\n","import {Component, ElementRef, HostBinding, ViewEncapsulation} from '@angular/core';\n\n@Component({\n    selector: 'hc-modal-body',\n    template: `\n        <ng-content></ng-content>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class ModalBodyComponent {\n    @HostBinding('class.hc-modal-body')\n    _modalBodyClass = true;\n\n    constructor(public elementRef: ElementRef) {}\n}\n","import {Component, HostBinding, Input, ViewEncapsulation} from '@angular/core';\n\n@Component({\n    selector: 'hc-modal-footer',\n    template: `\n        <ng-content></ng-content>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class ModalFooterComponent {\n    @HostBinding('class.hc-modal-footer')\n    _modalFooterClass = true;\n\n    /** Removes all padding and displays the footer as a 15px high cap to the bottom of the modal.\n     * Useful when you anticipate scrollable modal content to account for the rounded edges of the modal container.\n     */\n    @Input()\n    @HostBinding('class.hc-modal-footer-minimal')\n    minimal = false;\n}\n","import {Component, HostBinding, ViewEncapsulation} from '@angular/core';\n\n@Component({\n    selector: 'hc-modal-header',\n    template: `\n        <ng-content></ng-content>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class ModalHeaderComponent {\n    @HostBinding('class.hc-modal-header')\n    _modalHeaderClass = true;\n}\n","import {AfterContentInit, Component, ContentChild, HostBinding, ViewEncapsulation} from '@angular/core';\nimport { ModalBodyComponent } from './modal-body.component';\nimport { ModalFooterComponent } from './modal-footer.component';\nimport { ModalHeaderComponent } from './modal-header.component';\n\n@Component({\n    selector: 'hc-modal',\n    template: `\n        <ng-content></ng-content>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class ModalComponent implements AfterContentInit {\n    @HostBinding('class.hc-modal-content')\n    _modalWrapperClass = true;\n\n    /* For resizable modals - dynamically set the min-height based on whether the modal has a header, footer, and/or body */\n    @HostBinding('style.min-height')\n    _modalMinHeight = 'auto';\n\n    /** Checks for header/footer/body */\n    @ContentChild(ModalHeaderComponent)\n    _modalHeader: ModalHeaderComponent;\n\n    @ContentChild(ModalBodyComponent)\n    _modalBody: ModalBodyComponent;\n\n    @ContentChild(ModalFooterComponent)\n    _modalFooter: ModalFooterComponent;\n\n    ngAfterContentInit(): void {\n        let minHeight = 0;\n\n        if ( this._modalHeader ) {\n            minHeight += 55;\n            this._modalMinHeight = minHeight + 'px';\n        }\n        if ( this._modalBody ) {\n            minHeight += 120;\n            this._modalMinHeight = minHeight + 'px';\n        }\n        if ( this._modalFooter ) {\n            minHeight += 55;\n            this._modalMinHeight = minHeight + 'px';\n        }\n    }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport {animate, state, style, transition, trigger} from '@angular/animations';\nimport {ConfigurableFocusTrap, ConfigurableFocusTrapFactory} from '@angular/cdk/a11y';\n\nimport {Component, ElementRef, HostBinding, HostListener, Inject, Optional, ViewChild, ViewEncapsulation, DOCUMENT} from '@angular/core';\nimport {ActiveModal} from './active-modal';\nimport {ButtonComponent} from '../button';\n\n// hcmodal[0].setAttribute('class', options.isResizable ? `hc-modal-resizable hc-modal-${options.size}` : `hc-modal-static hc-modal-${options.size}`);\n\n@Component({\n    selector: 'hc-modal-window',\n    template: `\n        <div\n            #focusTrapElement\n            class=\"hc-modal {{ _disableFullScreen ? '' : 'hc-modal-responsive' }} {{\n                _isResizable ? 'hc-modal-resizable' : 'hc-modal-static'\n            }} hc-modal-{{ _size }}\n            {{ _tight ? 'hc-modal-tight' : '' }} {{ _isDraggable && _tight ? 'hc-modal-drag-header' : '' }}\"\n            cdkDrag\n            [cdkDragDisabled]=\"!_isDraggable\"\n            cdkDragBoundary=\".hc-modal-window\"\n        >\n            @if (_isDraggable) {\n            <div class=\"hc-modal-drag-handle\" cdkDragHandle></div>\n            } @if (_closeIcon) {\n            <button #closeBtn class=\"hc-modal-close-icon\" hc-icon-button (click)=\"_dismiss()\"></button>\n            }\n            <ng-content></ng-content>\n        </div>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./modal-window.component.scss'],\n    animations: [\n        trigger('fadeInOut', [\n            state('in', style({opacity: 1})),\n            transition('void <=> *', [\n                style({\n                    opacity: 0\n                }),\n                animate('0.2s ease-in-out')\n            ])\n        ])\n    ],\n    standalone: false\n})\nexport class ModalWindowComponent {\n    _ignoreOverlayClick = false;\n    _isDraggable = false;\n    _isResizable = false;\n    _size = 'auto';\n    _tight = false;\n    _closeIcon = false;\n    _disableFullScreen = false;\n    _restoreFocus = true;\n    _autoFocus = false;\n    _previouslyFocusedElement: HTMLElement | null;\n    _focusTrap: ConfigurableFocusTrap | undefined;\n\n    @HostBinding('class.hc-modal-window') _hostClass = true;\n\n    constructor(\n        private activeModal: ActiveModal,\n        private el: ElementRef,\n        @Optional() @Inject(DOCUMENT) private _document: any,\n        private _focusTrapFactory: ConfigurableFocusTrapFactory\n    ) {}\n\n    /** Reference to the element to build a focus trap around. */\n    @ViewChild('focusTrapElement')\n    private _focusTrapElement: ElementRef;\n\n    /** Reference to the close button. */\n    @ViewChild('closeBtn')\n    private _closeBtn: ButtonComponent;\n\n    @HostBinding('@fadeInOut')\n    _fadeInOut(): unknown {\n        return state;\n    }\n\n    @HostListener('mousedown', ['$event'])\n    _overlayClick(event: unknown): void {\n        let modalContentNotPresent = true;\n        const path = this._eventPath(event);\n        const modalWindowTargetIncluded = path.findIndex(p => p === this.el.nativeElement) > -1;\n        const classList: (DOMTokenList | undefined)[] = path.map(p => p.classList);\n        for (const cl of classList) {\n            if (cl) {\n                if (cl.contains('hc-modal-content')) {\n                    modalContentNotPresent = false;\n                }\n            }\n        }\n\n        /* The hc-modal has 100% height (although not completely visible).\n            To enable closing the modal while clicking above or below the modal (in\n            addition to the sides) this function will check to see if the click\n            event includes:\n                1. This window element\n                2. Not the hc-modal-content and\n                3. the overlay click option is disabled. */\n        if (!this._ignoreOverlayClick && modalContentNotPresent && modalWindowTargetIncluded) {\n            this.activeModal.dismiss();\n        }\n    }\n\n    // Serves as a polyfill for Event.composedPath() or Event.Path\n    _eventPath(evt: any): typeof globalThis[] {\n        const path = (evt.composedPath && evt.composedPath()) || evt.path,\n            target = evt.target;\n\n        if (path != null) {\n            // Safari doesn't include Window, but it should.\n            return path.indexOf(window) < 0 ? path.concat(window) : path;\n        }\n\n        if (target === window) {\n            return [window];\n        }\n\n        function _getParents(node, memo?) {\n            memo = memo || [];\n            const parentNode = node.parentNode;\n\n            if (!parentNode) {\n                return memo;\n            } else {\n                return _getParents(parentNode, memo.concat(parentNode));\n            }\n        }\n\n        return [target].concat(_getParents(target), window);\n    }\n\n    /** Save a reference to the element focused before the modal was opened. */\n    _savePreviouslyFocusedElement(): void {\n        if (this._document) {\n            this._previouslyFocusedElement = this._document.activeElement as HTMLElement;\n        }\n    }\n\n    /** Move the focus inside the focus trap and remember where to return later. */\n    _trapFocus(): void {\n        if (!this._focusTrapElement) {\n            return;\n        }\n\n        this._savePreviouslyFocusedElement();\n\n        if (!this._focusTrap && this._focusTrapElement) {\n            this._focusTrap = this._focusTrapFactory.create(this._focusTrapElement.nativeElement);\n        }\n\n        if (this._autoFocus && this._focusTrap) {\n            this._focusTrap.focusInitialElementWhenReady().then(() => {\n                this._avoidInitialFocusOnCloseButton();\n            });\n        }\n    }\n\n    _avoidInitialFocusOnCloseButton() {\n        if (this._closeBtn && this._closeBtn.elementRef.nativeElement === document.activeElement) {\n            this._closeBtn.elementRef.nativeElement.blur();\n        }\n    }\n\n    /** Dismiss the modal from a click on the close icon */\n    _dismiss(): void {\n        this.activeModal.dismiss();\n    }\n}\n","import {Component, HostBinding, HostListener, Input, ViewEncapsulation} from '@angular/core';\nimport {ActiveModal} from './active-modal';\nimport {animate, state, style, transition, trigger} from '@angular/animations';\n\n@Component({\n    selector: 'hc-modal-overlay',\n    template: '',\n    encapsulation: ViewEncapsulation.None,\n    styles: [\n        `\n            .hc-modal-overlay {\n                background-color: #000;\n                position: fixed;\n                top: 0;\n                left: 0;\n                right: 0;\n                bottom: 0;\n                opacity: 0.5;\n                display: block;\n            }\n        `\n    ],\n    animations: [\n        trigger('fadeInOut', [\n            state('in', style({ opacity: 0.5 })),\n            transition('void <=> *', [\n                style({\n                    opacity: 0\n                }),\n                animate('0.2s ease-in-out')\n            ])\n        ])\n    ],\n    standalone: false\n})\nexport class ModalOverlayComponent {\n    @Input()\n    _ignoreEscapeKey = false;\n\n    @HostBinding('class.hc-modal-overlay') _hostClass = true;\n\n    constructor(private activeModal: ActiveModal) {}\n\n    @HostBinding('@fadeInOut')\n    _fadeInOut(): string | unknown {\n        return state;\n    }\n\n    @HostListener('document:keyup.escape')\n    _escapeKey(): void {\n        if (!this._ignoreEscapeKey) {\n            this.activeModal.dismiss();\n        }\n    }\n}\n","import {ModalOverlayComponent} from './modal-overlay.component';\nimport {ComponentRef, EventEmitter} from '@angular/core';\nimport {ModalWindowComponent} from './modal-window.component';\nimport {Subject, Observable} from 'rxjs';\n\nexport class HcModal<T> {\n    /** Allows direct access to the component used to create the modal. Null when TemplateRef is used */\n    componentRef: ComponentRef<T> | null;\n\n    /** Allows direct access to overlay component which holds the component/template */\n    overlay: ComponentRef<ModalOverlayComponent> | null;\n\n    /** Allows direct access to window component which holds the component/template */\n    window: ComponentRef<ModalWindowComponent> | null;\n\n    /** Subscribe to result in order to get access to modal result values passed in ActiveModal.close() */\n    get result(): Observable<unknown> {\n        return this._result.asObservable();\n    }\n\n    private _result: Subject<unknown> = new Subject<unknown>();\n\n    _removeOpenClass: (() => void) | null;\n\n    _modalClose = new EventEmitter();\n\n    /** Data that was passed in through ModalOptions */\n    data?: unknown;\n\n    /** Closes the modal with a result.\n     * Use this close method when opening a modal using a TemplateRef.\n     * To close a modal that was created from a Component, inject ActiveModal and use the close method\n     * on ActiveModal */\n    close(result?: unknown): void {\n        this.removeModalElements();\n        this._result.next(result);\n    }\n\n    /** Dismisses the modal with no result.\n     * Use this dismiss method when opening a modal using a TemplateRef.\n     * To dismiss a modal that was created from a Component, inject ActiveModal and use the dismiss method\n     * on ActiveModal */\n    dismiss(): void {\n        this.removeModalElements();\n    }\n\n    private removeModalElements() {\n        if (this.window) {\n            const windowNativeElement = this.window.location.nativeElement;\n            windowNativeElement.parentNode.removeChild(windowNativeElement);\n            this.window.destroy();\n        }\n\n        if (this.overlay) {\n            const overlayNativeElement = this.overlay.location.nativeElement;\n            overlayNativeElement.parentNode.removeChild(overlayNativeElement);\n            this.overlay.destroy();\n        }\n\n        if (this.componentRef) {\n            const componentNativeElement = this.componentRef.location.nativeElement;\n            componentNativeElement.parentNode.removeChild(componentNativeElement);\n            this.componentRef.destroy();\n        }\n\n        if (this._removeOpenClass) {\n            this._removeOpenClass();\n        }\n\n        this._modalClose.emit();\n\n        this.window = null;\n        this.overlay = null;\n        this.componentRef = null;\n        this._removeOpenClass = null;\n    }\n}\n","import { ModalOptions } from \"../modal-options\";\n\n/** Used with ModalService's `alert()`, `confirm()`, and `confirmDestructive()` functions, which generate a\n * quick alert or confirmation modal. */\nexport class SimpleModalOptions {\n    /** Message to show in the body of the modal. */\n    message?: string;\n    /** Message to show in the body of the modal that includes HTML markup.\n     * **WARNING:** You are responsible to sanitize any unsafe user input. */\n    messageHTML?: string;\n    /** Text to show in the header of the modal. */\n    headerText?: string;\n    /** Main icon to show. Appears to the left of the header text, or in the body of the modal if there is no header.*/\n    icon?: string;\n    /** Text to show for the modal's cancel button. Leave empty for no cancel button */\n    cancelButtonText?: string;\n    /** Text to show for the modal's confirm button. */\n    confirmButtonText?: string;\n    /** Icon to show in the button. */\n    confirmButtonIcon?: string;\n    /** True if the modal's button should be colored to designate a destructive action. *Defaults to false.* */\n    confirmButtonIsDestructive? = false;\n    /** Sets style of confirmation button. Overrides confirmButtonIsDestructive.\n     * Choose from: `'primary' | 'primary-alt' | 'destructive' |\n     * 'neutral' | 'secondary' | 'minimal' | link' | 'link-inline'`. If needed, colors from\n     * the primary or secondary palette may be used as well (e.g. 'pink', 'red-orange', etc) */\n    confirmButtonStyle?: string;\n    /** Sets style of cancel button. Choose from: `'primary' | 'primary-alt' | 'destructive' |\n     * 'neutral' | 'secondary' | 'minimal' | link' | 'link-inline'`. If needed, colors from\n     * the primary or secondary palette may be used as well (e.g. 'pink', 'red-orange', etc) */\n    cancelButtonStyle? = false;\n    /** Text for an optional informational tooltip that will be in the footer. */\n    footerTooltipText?: string;\n    /** If true, will preserve white-space in the message of the modal */\n    preserveMessageWhitespace? = false;\n}\n\n// Default options for the content of a confirmation modal\nexport function getDefaultConfirmationOptions(): SimpleModalOptions {\n    return {\n        message: 'Are you sure?',\n        icon: 'hc-ico-question',\n        cancelButtonText: 'Cancel',\n        confirmButtonText: 'Confirm',\n        confirmButtonIsDestructive: false,\n    };\n}\n\n// Default options for the content of a delete confirmation modal\nexport function getDefaultDestructiveOptions(): SimpleModalOptions {\n    return {\n        message: 'Are you sure you want to delete this item?',\n        headerText: 'Delete item?',\n        icon: 'hc-ico-trash',\n        confirmButtonText: 'Delete item',\n        confirmButtonIsDestructive: true,\n    };\n}\n\n// Default options for the content of an alert modal\nexport function getDefaultAlertOptions(): SimpleModalOptions {\n    return {\n        icon: 'hc-ico-warn',\n        cancelButtonText: '',\n        confirmButtonText: 'OK',\n    };\n}\n\n// default options for the modal window itself\nexport function getDefaultModalOptions(): ModalOptions {\n    return {\n        ignoreOverlayClick: true,\n        size: 'md'\n    };\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ActiveModal } from '../active-modal';\nimport { SimpleModalOptions } from './simple-modal-options.model';\n\n@Component({\n    selector: 'hc-simple-modal',\n    templateUrl: './simple-modal.component.html',\n    styleUrls: ['./simple-modal.component.scss'],\n    standalone: false\n})\nexport class SimpleModalComponent implements OnInit {\n    public options: SimpleModalOptions;\n    constructor(private activeModal: ActiveModal) {}\n\n    ngOnInit(): void {\n        this.options = this.activeModal.data;\n    }\n\n    cancel(): void {\n        this.activeModal.close(false);\n    }\n\n    confirm(): void {\n        this.activeModal.close(true);\n    }\n}\n","<hc-modal class=\"hc-confirm-modal\">\n    @if (options.headerText) {\n    <hc-modal-header>\n        <span class=\"hc-confirm-modal-header-inner\">\n            @if (options.icon) {\n            <span [ngClass]=\"[options.icon, 'hc-confirm-modal-header-ico']\"></span>\n            }\n            {{ options.headerText }}\n        </span>\n    </hc-modal-header>\n    }\n    <hc-modal-body\n        [class.hc-confirm-modal-minimal-body]=\"!options.headerText\"\n        [class.hc-confirm-modal-preserve-whitespace]=\"options.preserveMessageWhitespace\"\n        class=\"hc-confirm-modal-body\"\n    >\n        <div class=\"hc-confirm-message-container\">\n            @if (options.icon && !options.headerText) {\n            <span [ngClass]=\"[options.icon, 'hc-confirm-modal-body-ico']\"></span>\n            } @if (options.messageHTML) {\n            <div [innerHtml]=\"options.messageHTML\"></div>\n            } @if (!options.messageHTML) {\n            <div>{{ options.message }}</div>\n            }\n        </div>\n    </hc-modal-body>\n    <hc-modal-footer [class.hc-confirm-modal-minimal-footer]=\"!options.headerText\" class=\"hc-confirm-modal-footer-container\">\n        <div>\n            @if (options.footerTooltipText) {\n            <span class=\"hc-confirm-modal-info-hover\" [hcTooltip]=\"options.footerTooltipText\"></span>\n            }\n        </div>\n        <div>\n            @if (options.cancelButtonText) {\n            <button hc-button class=\"hc-confirm-modal-cancel-btn\" [buttonStyle]=\"options.cancelButtonStyle || 'link'\" (click)=\"cancel()\">\n                {{ options.cancelButtonText }}\n            </button>\n            }\n            <button\n                hc-button\n                [buttonStyle]=\"options.confirmButtonStyle || (options.confirmButtonIsDestructive ? 'destructive' : 'primary')\"\n                (click)=\"confirm()\"\n            >\n                @if (options.confirmButtonIcon) {\n                <span [ngClass]=\"[options.confirmButtonIcon, 'hc-icon-left']\"></span>\n                }\n                {{ options.confirmButtonText }}\n            </button>\n        </div>\n    </hc-modal-footer>\n</hc-modal>\n","import {ModalWindowComponent} from './modal-window.component';\nimport {ModalOverlayComponent} from './modal-overlay.component';\nimport {HcModal} from './modal';\nimport {\n    ApplicationRef,\n    ComponentFactoryResolver,\n    ComponentRef,\n    Injectable,\n    Injector,\n    Renderer2,\n    RendererFactory2,\n    TemplateRef,\n    Type\n} from '@angular/core';\nimport {ModalOptions} from './modal-options';\nimport {ActiveModal} from './active-modal';\nimport { getDefaultAlertOptions, getDefaultConfirmationOptions, getDefaultDestructiveOptions, getDefaultModalOptions, SimpleModalOptions } from './simple-modal/simple-modal-options.model';\nimport { Observable } from 'rxjs';\nimport { SimpleModalComponent } from './simple-modal/simple-modal.component';\nimport { map } from 'rxjs/operators';\n\nexport type ModalContentType = Type<unknown> | TemplateRef<unknown>;\n\n@Injectable()\nexport class ModalService {\n    /** Defaults to false. Restricts multiple modals from being opened on top of each other\n     * (an error will be thrown if attempted). It's generally considered bad practice to open multiple\n     * models at once, so only change this with good reason.\n     */\n    allowMultiple = false;\n\n    // start at 2000 (reserved range for modals, see _variables.scss)\n    private _zIndexBase = 2000;\n    private _zIndexCounter = this._zIndexBase;\n    private _renderer: Renderer2;\n    private _modalsOpen = 0;\n\n    constructor(\n        private _componentFactory: ComponentFactoryResolver,\n        private _injector: Injector,\n        private _applicationRef: ApplicationRef,\n        _rendererFactory: RendererFactory2\n    ) {\n        this._renderer = _rendererFactory.createRenderer(null, null);\n    }\n\n    /** Opens a new modal either from a Component or a TemplateRef with the options specified in ModalOptions\n     * In order to use a component, it must be specified in your module's EntryComponents.\n     */\n    open<T>(modalContent: ModalContentType, modalOptions?: ModalOptions): HcModal<T> {\n        if (!this.allowMultiple && this._modalsOpen !== 0) {\n            throw new Error(`Multiple modals may not be opened at the same time\n                when the allowMultiple property on ModalService is set to false.`);\n        }\n\n        let container = document.querySelector('body') as HTMLElement;\n\n        const defaultOptions = {\n            container,\n            data: {},\n            ignoreEscapeKey: false,\n            size: 'auto',\n            tight: false,\n            ignoreOverlayClick: false,\n            isDraggable: false,\n            isResizable: false,\n            disableFullScreen: false,\n            restoreFocus: true,\n            autoFocus: false,\n            closeIcon: false\n        };\n        const options = {...defaultOptions, ...modalOptions};\n        if (options.container) {\n            container = options.container;\n        }\n\n        if (!container) {\n            throw new Error('Modal requires that a container be set in the modal options');\n        }\n\n        // TODO: HcModal and ActiveModal essentially are the same object with HcModal having refs. Might as well merge them to simplify\n        const modal = new HcModal<T>();\n        const activeModalRef = new ActiveModal();\n        modal.data = options.data;\n        activeModalRef.data = options.data;\n\n        const modalInjector = Injector.create({\n            providers: [{provide: ActiveModal, useValue: activeModalRef}],\n            parent: this._injector\n        });\n\n        // disable scrolling when overlay is present\n        this._renderer.addClass(container, 'hc-modal-open');\n        modal._removeOpenClass = () => this._renderer.removeClass(container, 'hc-modal-open');\n\n        // if multiple modals are allowed, make sure the newest is always on top\n        if ( this.allowMultiple ) {\n            this._zIndexCounter = this._zIndexBase + (this._modalsOpen * 2);\n        }\n\n        // Create, attach, and append overlay to container\n        const overlay = this._componentFactory.resolveComponentFactory(ModalOverlayComponent).create(modalInjector);\n        this._renderer.setStyle(overlay.location.nativeElement, 'z-index', this._zIndexCounter);\n        overlay.instance._ignoreEscapeKey = options.ignoreEscapeKey;\n\n        this._applicationRef.attachView(overlay.hostView);\n        container.appendChild(overlay.location.nativeElement);\n        modal.overlay = overlay;\n\n        // Create and attach content views; prepare nodes to be\n        // transcluded with the window ComponentRef\n        let projectableNodes;\n        if (modalContent instanceof TemplateRef) {\n            const embeddedViewRef = modalContent.createEmbeddedView(activeModalRef);\n            this._applicationRef.attachView(embeddedViewRef);\n            projectableNodes = [embeddedViewRef.rootNodes];\n        } else {\n            const componentRef = this._componentFactory.resolveComponentFactory(modalContent).create(modalInjector);\n\n            // Set host component style to 100% to allow collapsing of body but not header/footer\n            this._renderer.addClass(componentRef.location.nativeElement, 'hc-modal-center-component');\n            this._applicationRef.attachView(componentRef.hostView);\n            modal.componentRef = <ComponentRef<T>>componentRef;\n            projectableNodes = [[componentRef.location.nativeElement]];\n        }\n\n        // Create, attach, and append Window to container\n        // Apply options\n        const window = this._componentFactory.resolveComponentFactory(ModalWindowComponent).create(modalInjector, projectableNodes);\n        this._renderer.setStyle(window.location.nativeElement, 'z-index', this._zIndexCounter + 1);\n        window.instance._ignoreOverlayClick = options.ignoreOverlayClick;\n        window.instance._isDraggable = options.isDraggable;\n        window.instance._isResizable = options.isResizable;\n        window.instance._size = options.size;\n        window.instance._tight = options.tight;\n        window.instance._closeIcon = options.closeIcon;\n        window.instance._disableFullScreen = options.disableFullScreen;\n        window.instance._autoFocus = options.autoFocus;\n        window.instance._restoreFocus = options.restoreFocus;\n\n        this._applicationRef.attachView(window.hostView);\n        container.appendChild(window.location.nativeElement);\n        modal.window = window;\n\n        setTimeout(() => {\n            window.instance._trapFocus();\n        });\n\n        activeModalRef.close = (result: unknown) => {\n            modal.close(result);\n        };\n\n        activeModalRef.dismiss = () => modal.dismiss();\n\n        this._modalsOpen++;\n        modal._modalClose.subscribe(() => {\n            this._modalsOpen--;\n            modal._modalClose.unsubscribe();\n\n            if ( modal.window ) {\n                this._restoreFocusAndDestroyTrap( modal.window.instance );\n            }\n\n        });\n\n        return modal;\n    }\n\n    /**\n     * Opens a confirmation modal pre-populated with default options for a destructive action.\n     * @param contentOptions Options to configure the content of the confirmation modal\n     * @param modalOptions Options to configure the modal window itself\n     * @returns True if the user confirmed the action, false if they cancelled\n     */\n    confirmDestructive(contentOptions: SimpleModalOptions, modalOptions?: ModalOptions): Observable<boolean> {\n        const mergedDeleteContentOptions = Object.assign(getDefaultDestructiveOptions(), contentOptions);\n        return this.confirm(mergedDeleteContentOptions, modalOptions);\n    }\n\n    /**\n     * Opens a simple confirmation modal with a confirm and cancel button.\n     * @param contentOptions Options to configure the content of the confirmation modal\n     * @param modalOptions Options to configure the modal window itself\n     * @returns True if the user confirmed the action, false if they cancelled\n     */\n    confirm(contentOptions: SimpleModalOptions, modalOptions?: ModalOptions): Observable<boolean> {\n        const mergedContentOptions = Object.assign(getDefaultConfirmationOptions(), contentOptions);\n        return this._openSimpleModal(mergedContentOptions, modalOptions);\n    }\n\n    /**\n     * Opens a simple alert modal\n     * @param contentOptions Options to configure the content of the confirmation modal\n     * @param modalOptions Options to configure the modal window itself\n     * @returns True when the user confirms\n     */\n    alert(contentOptions: SimpleModalOptions, modalOptions?: ModalOptions): Observable<boolean> {\n        const mergedContentOptions = Object.assign(getDefaultAlertOptions(), contentOptions);\n        const mergedModalOptions = Object.assign({size: 'sm'}, modalOptions);\n        return this._openSimpleModal(mergedContentOptions, mergedModalOptions);\n    }\n\n    /** Convenience function for opening a simple alert or confirmation modal w/ minimal boilerplate */\n    _openSimpleModal(contentOptions: SimpleModalOptions, modalOptions?: ModalOptions): Observable<boolean> {\n        const mergedContentOptions = Object.assign(getDefaultConfirmationOptions(), contentOptions);\n\n        const mergedModalOptions = Object.assign(getDefaultModalOptions(), modalOptions);\n        mergedModalOptions.data = mergedContentOptions;\n\n        const modalRef = this.open(SimpleModalComponent, mergedModalOptions);\n        return modalRef.result.pipe(map(result => result as boolean));\n    }\n\n    /** Restore focus to the element focused before the popover opened. Also destroy trap. */\n    _restoreFocusAndDestroyTrap( modalWindow: ModalWindowComponent ): void {\n        const toFocus = modalWindow._previouslyFocusedElement;\n\n        // Must check active element is focusable for IE sake\n        if (toFocus && 'focus' in toFocus && modalWindow._restoreFocus) {\n            toFocus.focus();\n        }\n\n        if (modalWindow._focusTrap) {\n            modalWindow._focusTrap.destroy();\n        }\n    }\n}\n","import {ModalFooterComponent} from './modal-footer.component';\nimport {ModalWindowComponent} from './modal-window.component';\nimport {ModalOverlayComponent} from './modal-overlay.component';\nimport {ModalService} from './modal.service';\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ModalHeaderComponent} from './modal-header.component';\nimport {ModalBodyComponent} from './modal-body.component';\nimport {ModalComponent} from './modal.component';\nimport {DragDropModule} from '@angular/cdk/drag-drop';\nimport { SimpleModalComponent } from './simple-modal/simple-modal.component';\nimport { ButtonModule } from '../button/button.module';\n\n@NgModule({\n    imports: [CommonModule, DragDropModule, ButtonModule],\n    declarations: [\n        ModalOverlayComponent,\n        ModalWindowComponent,\n        ModalHeaderComponent,\n        ModalBodyComponent,\n        ModalFooterComponent,\n        ModalComponent,\n        SimpleModalComponent\n    ],\n    exports: [ModalHeaderComponent, ModalBodyComponent, ModalFooterComponent, ModalComponent],\n    providers: [ModalService]\n})\nexport class ModalModule {}\n","import {Component, forwardRef, HostBinding, Input, ViewEncapsulation} from '@angular/core';\nimport {HcFormControlComponent} from '../form-field/hc-form-control.component';\nimport {parseBooleanAttribute} from '../util';\n\nlet uniqueMultiselectId = 1;\n\n/** Cashmere wrapper for the ng-select component */\n@Component({\n    selector: 'hc-multiselect',\n    template: `\n        <ng-content></ng-content>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    providers: [{ provide: HcFormControlComponent, useExisting: forwardRef(() => MultiselectComponent) }],\n    standalone: false\n})\nexport class MultiselectComponent extends HcFormControlComponent {\n    private _uniqueInputId = `hc-multiselect-${uniqueMultiselectId++}`;\n    _componentId = this._uniqueInputId; // contains id for the hc-multiselect component\n\n    @HostBinding('class.hc-multiselect')\n    _hostClass = true;\n\n    /** Element id */\n    @Input()\n    get id(): string {\n        return this._componentId || this._uniqueInputId;\n    }\n\n    set id(idVal: string) {\n        this._componentId = idVal ? idVal : this._uniqueInputId;\n    }\n\n    /** Whether the slider is valid; triggers error messages in `hc-form-field` */\n    @Input()\n    get valid(): boolean {\n        return !this._errorState;\n    }\n\n    set valid( val: boolean | string ) {\n        this._errorState = !parseBooleanAttribute(val);\n    }\n\n    /** Sets whether this is a required form element */\n    @Input()\n    get required(): boolean {\n        return this._isRequired;\n    }\n\n    set required( requiredVal: boolean | string ) {\n        this._isRequired = parseBooleanAttribute(requiredVal);\n    }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MultiselectComponent } from './multiselect.component';\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [MultiselectComponent],\n    declarations: [MultiselectComponent]\n})\nexport class MultiselectModule {}\n","import {ChangeDetectorRef, Component, ElementRef, Input, ViewEncapsulation} from '@angular/core';\nimport {parseBooleanAttribute} from '../../util';\n\n/** Primary navigation links */\n@Component({\n    selector: 'hc-navbar-link',\n    templateUrl: './navbar-link.component.html',\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class NavbarLinkComponent {\n    _active: boolean | null;\n\n    /** Forces active state. Overrides router state when set; to remove the override set to null. *Default is `null`.* */\n    @Input()\n    get active(): boolean | null {\n        return this._active;\n    }\n    set active(value: boolean | null) {\n        this._active = value !== null ? parseBooleanAttribute(value): null;\n    }\n\n    /** RouterLink uri. See https://angular.io/api/router/RouterLink */\n    @Input()\n    uri: string;\n\n    /** The text to display. This can also optionally be the contents within the element */\n    @Input()\n    linkText: string;\n\n    /** Sets the RouterLinkActive options to match the url exactly to set active state. *Default is false.*\n     * See https://angular.io/api/router/RouterLinkActive#description\n     */\n    @Input()\n    exact = false;\n\n    _hidden = false;\n\n    constructor(private el: ElementRef, private ref: ChangeDetectorRef) {}\n\n    /** Disable visibility of component from view */\n    hide(): void {\n        this._hidden = true;\n        this.ref.detectChanges();\n    }\n\n    /** Enable visibility of component from view */\n    show(): void {\n        this._hidden = false;\n        this.ref.detectChanges();\n    }\n\n    _getWidth(): number {\n        return this.el.nativeElement.scrollWidth;\n    }\n}\n","@if (!_hidden) {\n<a\n    title=\"{{ linkText }}\"\n    [routerLink]=\"uri\"\n    routerLinkActive=\"active\"\n    class=\"navbar-link\"\n    [ngClass]=\"{'force-active': this.active === true, 'force-inactive': this.active === false}\"\n    [routerLinkActiveOptions]=\"{exact: this.exact}\"\n>\n    {{ linkText }}\n    <ng-content></ng-content>\n</a>\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Component, ViewEncapsulation } from '@angular/core';\n\n/** Navigation dropdown for small screen sizes */\n@Component({\n    selector: 'hc-navbar-mobile-menu',\n    templateUrl: './navbar-mobile-menu.component.html',\n    styleUrls: ['./navbar-mobile-menu.component.scss'],\n    animations: [\n        trigger('openClose', [\n            state('open', style({\n                top: '0'\n            })),\n            state('closed', style({\n                top: '-100vh'\n            })),\n            transition('open <=> closed', [\n                animate('0.7s ease')\n            ])\n        ])\n    ],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class NavbarMobileMenuComponent {\n    _openState = 'closed';\n\n    /** Slide the mobile menu down from under the navbar */\n    show(): void {\n        this._openState = 'open';\n    }\n\n    /** Slide the mobile menu back up under the navbar */\n    hide(): void {\n        this._openState = 'closed';\n    }\n}\n","<div class=\"hc-navbar-mobile-menu-dropdown\" [@openClose]=\"_openState\">\n    <ng-content></ng-content>\n</div>\n","import {\n    ChangeDetectorRef,\n    Component,\n    ContentChildren,\n    ElementRef,\n    HostListener,\n    Input,\n    ViewChild,\n    ViewEncapsulation,\n    OnDestroy,\n    AfterViewInit\n} from '@angular/core';\nimport type {QueryList} from '@angular/core';\nimport {HcPopoverAnchorDirective} from '../pop/directives/popover-anchor.directive';\nimport {HcPopComponent} from '../pop/popover.component';\nimport {MoreItem} from './more-item';\nimport {NavbarLinkComponent} from './navbar-link/navbar-link.component';\nimport {NavbarMobileMenuComponent} from './navbar-mobile-menu/navbar-mobile-menu.component';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {HcIcon} from '../icon/icon.component';\nimport {NavbarDropdownComponent} from './navbar-dropdown/navbar-dropdown.component';\n\n/** The navbar is a wrapper that positions branding, navigation, and other elements in a concise header. */\n@Component({\n    selector: 'hc-navbar',\n    templateUrl: './navbar.component.html',\n    styleUrls: ['./navbar.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class NavbarComponent implements AfterViewInit, OnDestroy {\n    /** Display name of current user */\n    @Input()\n    user = '';\n\n    /** Url to application logo image file */\n    @Input()\n    appIcon = '';\n\n    /** Either url to brand icon image file or HcIcon object for a font glyph */\n    @Input()\n    brandIcon: string | HcIcon = '';\n\n    /** Router link triggered when home icon is clicked */\n    @Input()\n    homeUri: unknown[] | string = '';\n\n    /** Fixes the position of navbar to the top of the page. *Default is false.* */\n    @Input()\n    fixedTop = false;\n\n    @ContentChildren(NavbarMobileMenuComponent)\n    _mobileMenu: QueryList<NavbarMobileMenuComponent>;\n\n    @ContentChildren(NavbarLinkComponent)\n    _navLinks: QueryList<NavbarLinkComponent | NavbarDropdownComponent>;\n\n    @ViewChild('navbar') _navbarContent: ElementRef;\n    @ViewChild('navlinks') _navContent: ElementRef;\n\n    @ViewChild('moreLink')\n    _navbarMore: HcPopoverAnchorDirective;\n\n    @ViewChild('navbarMore')\n    _morePop: HcPopComponent;\n\n    private unsubscribe$ = new Subject<void>();\n\n    private _menuOpen = false;\n    private _linkWidths: Array<number> = [];\n    private _linksTotalWidth = 0;\n    public _collapse = false;\n    public _moreList: Array<MoreItem> = [];\n\n    /** Runs the initial calculation of navlink widths after the page has fully rendered */\n    @HostListener('window:load')\n    _setupNavLinks(): void {\n        setTimeout(() => {\n            this.refreshNavLinks();\n        });\n    }\n\n    /** Subscribes to the changes to the set of links to refresh the More menu widths */\n    ngAfterViewInit(): void {\n        // If links are added dynamically, recheck the navbar link sizing\n        this._navLinks.changes.pipe(takeUntil(this.unsubscribe$)).subscribe(() => this.refreshNavLinks());\n    }\n\n    /** Forces a recalculation of the navbar links to determine how many should be rolling into a More menu.\n     * Call this if you've updated the contents of any navbar links. */\n    @HostListener('window:resize')\n    refreshNavLinks(): void {\n        if (this._navbarMore) {\n            this._navbarMore.closePopover();\n        }\n        if ( this._linksTotalWidth === 0 || this._linkWidths.length !== this._navLinks.length ) {\n            this._collectNavLinkWidths();\n        }\n\n        this._moreList = [];\n        this._collapse = false;\n\n        // If links is zero the page is smaller than the first responsive breakpoint\n        if (this._navbarContent.nativeElement.clientWidth <= 0) {\n            return;\n        }\n\n        const linksContainerWidth: number = this._navContent.nativeElement.offsetWidth;\n        let curLinks = 0;\n\n        // Step through the links until we hit the end of the container, then collapse the\n        // remaining into a more menu\n        this._navLinks.forEach((t, i) => {\n            curLinks += this._linkWidths[i];\n\n            const moreWidth: number = this._linksTotalWidth > linksContainerWidth ? 116 : 0;\n            if (curLinks + moreWidth < linksContainerWidth) {\n                t.show();\n                // Reset the parent and positioning of any dropdown popovers that aren't in the More menu\n                const tempDrop = t as NavbarDropdownComponent;\n                if ( tempDrop._menuPop ) {\n                    tempDrop._menuPop.horizontalAlign = 'start';\n                    tempDrop._menuPop.verticalAlign = 'below';\n                    tempDrop._menuPop.parent = null;\n                }\n            } else {\n                t.hide();\n                this._collapse = true;\n                const tempDrop = t as NavbarDropdownComponent;\n                // Translate any navbar dropdown menus into secondary menus in the More dropdown\n                if ( tempDrop._menuPop ) {\n                    tempDrop._menuPop.horizontalAlign = 'after';\n                    tempDrop._menuPop.verticalAlign = 'start';\n                    tempDrop._menuPop.parent = this._morePop;\n                    this._moreList.push({name: t.linkText, uri: t.uri, dropdown: tempDrop._menuPop});\n                } else {\n                    this._moreList.push({name: t.linkText, uri: t.uri});\n                }\n            }\n        });\n\n        this.ref.detectChanges();\n    }\n\n    constructor(private ref: ChangeDetectorRef) {}\n\n    private _collectNavLinkWidths() {\n        this._linkWidths = [];\n        this._linksTotalWidth = 0;\n        this._navLinks.forEach(t => {\n            const isHidden = t._hidden;\n            t.show();\n            this._linksTotalWidth += t._getWidth();\n            this._linkWidths.push(t._getWidth());\n            if (isHidden) {\n                t.hide();\n            }\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.unsubscribe$.next();\n        this.unsubscribe$.complete();\n    }\n\n    _toggleMobileMenu(): void {\n        if (this._menuOpen) {\n            this._mobileMenu.first.hide();\n            this._menuOpen = false;\n        } else {\n            this._mobileMenu.first.show();\n            this._menuOpen = true;\n        }\n    }\n\n    _menuClick(event: Event): void {\n        const clickTarget: string = event?.target?.['outerHTML'];\n\n        // Verify that the click in the mobile menu came from a navigation item\n        if (clickTarget.indexOf('hclistline') >= 0 && clickTarget.indexOf('menu-dropdown') === -1) {\n            this._toggleMobileMenu();\n        }\n    }\n\n    get _mobileMenuIcon(): string {\n        return this._menuOpen ? 'hc-navbar-mobile-ico-times' : 'hc-navbar-mobile-ico-bars';\n    }\n\n    _moreClick(): void {\n        if (this._navbarMore) {\n            this._navbarMore.closePopover();\n        }\n    }\n\n    _brandIconType(): string {\n        return typeof this.brandIcon;\n    }\n\n    _brandIconSet(): string {\n        if (this.brandIcon && typeof this.brandIcon !== 'string') {\n            return this.brandIcon.fontSet;\n        } else {\n            return '';\n        }\n    }\n\n    _brandIconGlyph(): string {\n        if (this.brandIcon && typeof this.brandIcon !== 'string') {\n            return this.brandIcon.fontIcon;\n        } else {\n            return '';\n        }\n    }\n\n    _brandIconSize(): string {\n        if (this.brandIcon && typeof this.brandIcon !== 'string' && this.brandIcon.fontSize) {\n            return this.brandIcon.fontSize + 'px';\n        }\n        return '37px';\n    }\n}\n","<nav #navbar class=\"hc-navbar\" [ngClass]=\"{'fixed-top': fixedTop}\">\n    @if (_mobileMenu.first) {\n    <div class=\"hc-navbar-mobile-menu\" (click)=\"_toggleMobileMenu()\">\n        <hc-icon [fontIcon]=\"_mobileMenuIcon\" hcIconMd></hc-icon>\n    </div>\n    }\n    <div class=\"navbar-brand\">\n        <a [routerLink]=\"homeUri\" class=\"brand\" tabIndex=\"-1\">\n            @if (_brandIconType() == 'string') {\n            <img src=\"{{ brandIcon }}\" />\n            } @if (_brandIconType() != 'string') {\n            <hc-icon\n                [fontSet]=\"_brandIconSet()\"\n                [fontIcon]=\"_brandIconGlyph()\"\n                [ngStyle]=\"{height: _brandIconSize(), 'font-size': _brandIconSize()}\"\n                [ngClass]=\"{'hc-navbar-icon-home-uri': homeUri !== ''}\"\n            ></hc-icon>\n            }\n        </a>\n    </div>\n    <div class=\"navbar-app\">\n        @if (appIcon) {\n        <a [routerLink]=\"homeUri\" class=\"app\">\n            <img src=\"{{ appIcon }}\" />\n        </a>\n        }\n    </div>\n    <div #navlinks class=\"hc-navbar-link-container\">\n        <ng-content select=\"hc-navbar-link, hc-navbar-dropdown\"></ng-content>\n        @if (_collapse) {\n        <div class=\"hc-navbar-more-links\" tabindex=\"0\" title=\"More\" [hcPop]=\"navbarMore\" #moreLink=\"hcPopAnchor\">\n            More\n            <hc-icon fontIcon=\"hc-navbar-ico-chevron-down\" hcIconSm></hc-icon>\n        </div>\n        }\n    </div>\n\n    <div #rightcontainer class=\"hc-navbar-right-container\">\n        <ng-content></ng-content>\n    </div>\n    <ng-content select=\"hc-navbar-cobrand\"></ng-content>\n</nav>\n<div (click)=\"_menuClick($event)\">\n    <ng-content select=\"hc-navbar-mobile-menu\"></ng-content>\n</div>\n\n<hc-pop #navbarMore [autoCloseOnContentClick]=\"true\" [showArrow]=\"false\" horizontalAlign=\"end\">\n    <div hcMenu>\n        @for (item of _moreList; track item; let i = $index) { @if (!item.dropdown) {\n        <a hcMenuItem routerLinkActive=\"active\" [routerLink]=\"item.uri\" (click)=\"_moreClick()\">\n            <span hcMenuText>{{ item.name }}</span>\n        </a>\n        } @if (item.dropdown) {\n        <button hcMenuItem [hcPop]=\"item.dropdown\">\n            <span hcMenuText>{{ item.name }}</span>\n        </button>\n        } @if (i != _moreList.length - 1) {\n        <div hcMenuItem hcDivider></div>\n        } }\n    </div>\n</hc-pop>\n","import { Component, ViewEncapsulation, ViewChild, forwardRef, ContentChildren, AfterViewInit } from '@angular/core';\nimport type { QueryList } from '@angular/core';\nimport { NavbarLinkComponent } from '../navbar-link/navbar-link.component';\nimport { HcPopComponent } from '../../pop/popover.component';\nimport { MenuItemDirective } from '../../pop/directives/menu-item.directive';\n\n/** A dropdown menu in a `hc-navbar` */\n@Component({\n    selector: 'hc-navbar-dropdown',\n    templateUrl: './navbar-dropdown.component.html',\n    encapsulation: ViewEncapsulation.None,\n    providers: [{ provide: NavbarLinkComponent, useExisting: forwardRef(() => NavbarDropdownComponent) }],\n    standalone: false\n})\nexport class NavbarDropdownComponent extends NavbarLinkComponent implements AfterViewInit {\n    @ViewChild('menuPop')\n    _menuPop: HcPopComponent;\n\n    /** Reference to hcMenuItems (if the content contains them) */\n    @ContentChildren(MenuItemDirective, {descendants: true}) _menuItems: QueryList<MenuItemDirective>;\n\n    ngAfterViewInit(): void {\n        // Update the popover's reference to menu items included in this component's content\n        this._menuPop._menuItems = this._menuItems;\n    }\n}\n","@if (!_hidden) {\n<a\n    title=\"{{ linkText }}\"\n    routerLinkActive=\"active\"\n    class=\"navbar-dropdown\"\n    [ngClass]=\"{'force-active': this.active === true, 'force-inactive': this.active === false}\"\n    [hcPop]=\"menuPop\"\n    tabindex=\"0\"\n>\n    {{ linkText }}\n    <hc-icon fontIcon=\"hc-navbar-ico-chevron-down\" hcIconSm></hc-icon>\n</a>\n}\n\n<hc-pop #menuPop [autoCloseOnContentClick]=\"true\" [showArrow]=\"false\" horizontalAlign=\"start\">\n    <ng-content></ng-content>\n</hc-pop>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport { Component, ViewEncapsulation, Input, HostBinding } from '@angular/core';\n\n/** Element to add a co-branding image to the right of the navbar */\n@Component({\n    selector: 'hc-navbar-cobrand',\n    template: `<img [src]=\"src\" [ngStyle]=\"{height:_imgHeight, 'width':_imgWidth}\" (load)=\"_checkRatio($event)\">`,\n    styleUrls: ['./navbar-cobrand.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class NavbarCobrandComponent {\n    _color: 'light' | 'dark' = 'light';\n    _imgHeight = '37px';\n    _imgWidth = 'auto';\n\n    @HostBinding('class') _hostClass = 'hc-navbar-cobrand-' + this.color;\n\n    /** Defines the path for the co-branding image.\n     * The image should be in landscape (horizontal) format; it will automatically be scaled to fit the navbar. */\n    @Input()\n    src: string;\n\n    /** Sets the background for co-branding; use `light` for images that require a white background. Defaults to `light` */\n    @Input()\n    get color(): 'light' | 'dark' {\n        return this._color;\n    }\n    set color( val: 'light' | 'dark' ) {\n        this._color = val;\n        this._hostClass = 'hc-navbar-cobrand-' + val;\n    }\n\n    /** Validate that the image will not be wider than 200px when scaled to 37px height; if not, scale the width rather than the height */\n    _checkRatio(evt: any): void {\n        const width = evt.srcElement.width;\n        const height = evt.srcElement.height;\n        const ratio = width / height;\n\n        if ( ratio * 37 > 200 ) {\n            this._imgWidth = '200px';\n            this._imgHeight = 'auto';\n        }\n    }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NavbarComponent} from './navbar.component';\nimport {NavbarDropdownComponent} from './navbar-dropdown/navbar-dropdown.component';\nimport {NavbarLinkComponent} from './navbar-link/navbar-link.component';\nimport {NavbarMobileMenuComponent} from './navbar-mobile-menu/navbar-mobile-menu.component';\nimport {NavbarCobrandComponent} from './navbar-cobrand/navbar-cobrand.component';\nimport {RouterModule} from '@angular/router';\nimport {IconModule} from '../icon/icon.module';\nimport {PopModule} from '../pop/popover.module';\n\n@NgModule({\n    imports: [CommonModule, RouterModule, IconModule, PopModule],\n    declarations: [NavbarComponent, NavbarDropdownComponent, NavbarLinkComponent, NavbarMobileMenuComponent, NavbarCobrandComponent],\n    exports: [NavbarComponent, NavbarDropdownComponent, NavbarLinkComponent, NavbarMobileMenuComponent, NavbarCobrandComponent]\n})\nexport class NavbarModule {}\n","import {Subscriber, Observable} from 'rxjs';\n\n/** Abstract class for common initialization functionality */\nexport abstract class Initializable {\n    /** Whether this directive has been marked as initialized. */\n    _isInitialized = false;\n\n    /**\n     * List of subscribers that subscribed before the directive was initialized. Should be notified\n     * during _markInitialized. Set to null after pending subscribers are notified, and should\n     * not expect to be populated after.\n     */\n    _pendingSubscribers: Subscriber<never>[] | null = [];\n\n    /**\n     * Observable stream that emits when the directive initializes. If already initialized, the\n     * subscriber is stored to be notified once _markInitialized is called.\n     * @docs-private\n     */\n    initialized = new Observable<never>(subscriber => {\n        // If initialized, immediately notify the subscriber. Otherwise store the subscriber to notify\n        // when _markInitialized is called.\n        if (this._isInitialized) {\n            this._notifySubscriber(subscriber);\n        } else {\n            this._pendingSubscribers?.push(subscriber);\n        }\n    });\n\n    /**\n     * Marks the state as initialized and notifies pending subscribers. Should be called at the end\n     * of ngOnInit.\n     * @docs-private\n     */\n    _markInitialized(): void {\n        if (this._isInitialized) {\n            throw Error('This directive has already been marked as initialized and should not be called twice.');\n        }\n\n        this._isInitialized = true;\n\n        this._pendingSubscribers?.forEach(this._notifySubscriber);\n        this._pendingSubscribers = null;\n    }\n\n    /** Emits and completes the subscriber stream (should only emit once). */\n    _notifySubscriber(subscriber: Subscriber<never>): void {\n        subscriber.next();\n        subscriber.complete();\n    }\n}\n","import {EventEmitter, Input, Output, OnInit, Component} from '@angular/core';\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {Initializable} from '../shared/initializable';\nimport {PageEvent} from './page-event';\n\n/**\n * Base Pagination class for shared functionality\n * */\n@Component({\n    template: '',\n    standalone: false\n})\nexport class BasePaginationComponent extends Initializable implements OnInit {\n    public static _DEFAULT_PAGE_SIZE = 20;\n    private _inputCheckTimeoutSet = false;\n\n    /**\n     * The total number of items to be paged through\n     */\n    get length(): number {\n        return this._length;\n    }\n    @Input()\n    set length(value: number) {\n        this._length = coerceNumberProperty(value);\n        this.ensureInputCheckTimeoutSet();\n    }\n    private _length = 0;\n\n    private _prevPageNumber?: number;\n    private _pageNumber = 1;\n    /** The currently displayed page. *Defaults to 1.* */\n    get pageNumber(): number {\n        return this._pageNumber;\n    }\n    @Input()\n    set pageNumber(value: number) {\n        this._pageNumber = coerceNumberProperty(value);\n        this.ensureInputCheckTimeoutSet();\n    }\n\n    /** Number of items to display on a page. *Defaults to 20.* */\n    get pageSize(): number {\n        return this._pageSize;\n    }\n    @Input()\n    set pageSize(value: number) {\n        this._pageSize = coerceNumberProperty(value);\n        this._pageSizeUpdated();\n        this.ensureInputCheckTimeoutSet();\n    }\n    private _prevPageSize?: number;\n    private _pageSize: number = BasePaginationComponent._DEFAULT_PAGE_SIZE;\n\n    /** Event emitted when the paginator changes the page size or page index. */\n    @Output()\n    readonly page: EventEmitter<PageEvent> = new EventEmitter<PageEvent>();\n\n    /** Emits the new page number when the page number changes. */\n    @Output()\n    readonly pageNumberChange: EventEmitter<number> = new EventEmitter<number>();\n    /** Emits the new page size when the page size changes. */\n    @Output()\n    readonly pageSizeChange: EventEmitter<number> = new EventEmitter<number>();\n\n    ngOnInit(): void {\n        this._markInitialized();\n    }\n\n    private ensureInputCheckTimeoutSet(): void {\n        if (this._inputCheckTimeoutSet) {\n            return;\n        }\n\n        this._inputCheckTimeoutSet = true;\n\n        setTimeout(() => {\n            this._pageNumber = this._sanitizePageNumber(this._pageNumber);\n            const hasPageNumberChanges: boolean = this.shouldEmitPageNumberChangeEvent();\n            const hasPageSizeChanges: boolean = this.shouldEmitPageSizeChangeEvent();\n\n            if (hasPageNumberChanges) {\n                this.pageNumberChange.emit(this._pageNumber);\n            }\n\n            if (hasPageSizeChanges) {\n                this.pageSizeChange.emit(this.pageSize);\n            }\n\n            if (hasPageNumberChanges || hasPageSizeChanges) {\n                this._emitPageEvent(<number>this._prevPageNumber);\n            }\n\n            this._prevPageNumber = this._pageNumber;\n            this._prevPageSize = this._pageSize;\n\n            this._inputCheckTimeoutSet = false;\n        });\n    }\n\n    private shouldEmitPageNumberChangeEvent(): boolean {\n        const firstPageNumberToBeSet: boolean = this._prevPageNumber === undefined;\n        const pageNumberHasChanged: boolean = this._prevPageNumber !== this._pageNumber;\n        return !firstPageNumberToBeSet && pageNumberHasChanged;\n    }\n\n    private shouldEmitPageSizeChangeEvent(): boolean {\n        const firstPageSizeToBeSet: boolean = this._prevPageSize === undefined;\n        const pageSizeHasChanged: boolean = this._prevPageSize !== this._pageSize;\n        return !firstPageSizeToBeSet && pageSizeHasChanged;\n    }\n\n    /**\n     * The computed total number of pages\n     */\n    get totalPages(): number {\n        return Math.ceil(this._length / this._pageSize);\n    }\n\n    get _isFirstPage(): boolean {\n        return this._pageNumber === 1;\n    }\n\n    get _isLastPage(): boolean {\n        return !!(this.totalPages && this._pageNumber === this.totalPages);\n    }\n\n    /**\n     * Changes the page size so that the first item displayed on the page will still be\n     * displayed using the new page size.\n     *\n     * For example, if the page size is 10 and on the second page (items indexed 11-20) then\n     * switching so that the page size is 5 will set the third page as the current page so\n     * that the 11th item will still be displayed.\n     */\n    _changePageSize(pageSize: number): void {\n        // Current page needs to be updated to reflect the new page size. Navigate to the page\n        // containing the previous page's first item.\n        const startIndex = (this.pageNumber - 1) * this.pageSize;\n        this.pageSize = pageSize;\n        this.pageNumber = Math.ceil(startIndex / pageSize) + 1;\n    }\n\n    _pageSizeUpdated(): void {\n        // do nothing.\n    }\n\n    private _sanitizePageNumber(pageNumber: number): number {\n        const positivePageNumber = Math.max(pageNumber, 1);\n        const upperBound: number = Math.max(this.totalPages, 1);\n        return positivePageNumber > upperBound ? upperBound : positivePageNumber;\n    }\n\n    private _emitPageEvent(previousPageNumber: number) {\n        this.page.emit({\n            previousPageNumber,\n            pageNumber: this.pageNumber,\n            pageSize: this.pageSize,\n            length: this.length\n        });\n    }\n}\n","import {Component, Input, OnInit, ViewEncapsulation} from '@angular/core';\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {BasePaginationComponent} from './base-pagination';\nimport {FormControl} from '@angular/forms';\n\n/** The pagination control enables the user to navigate across paged content.\n * Although commonly used with tables and data grids, this control may be used any place where paged data is used.\n * */\n@Component({\n    selector: 'hc-pagination',\n    templateUrl: './pagination.component.html',\n    styleUrls: ['./pagination.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class PaginationComponent extends BasePaginationComponent implements OnInit {\n    /** The set of provided page size options to display to the user. *Defaults to [10, 20, 50].* */\n    @Input()\n    get pageSizeOptions(): number[] {\n        return this._pageSizeOptions;\n    }\n    set pageSizeOptions(value: number[]) {\n        this._pageSizeOptions = (value || []).map(p => coerceNumberProperty(p));\n        this._updateDisplayedPageSizeOptions();\n    }\n    private _pageSizeOptions: number[] = [10, 20, 50];\n\n    isFocused = false;\n    _pageSizeControl = new FormControl( this.pageSize, {nonNullable: true} );\n\n    /** Displayed set of page size options. Will be sorted and include current page size. */\n    _displayedPageSizeOptions: number[] = [];\n\n    /** Sets the controller to a specific width type - `lg`, `md`, or `sm`. Typically adjusted in a window\n     * resize listener for responsive layouts. *Defaults to lg.* */\n    @Input()\n    displayWidth: 'lg' | 'md' | 'sm' = 'lg';\n\n    /** Whether to hide the page size selection UI from the user. *Defaults to false.* */\n    @Input()\n    get hidePageSize(): boolean {\n        return this._hidePageSize;\n    }\n    set hidePageSize(value: boolean) {\n        this._hidePageSize = !!value;\n    }\n    private _hidePageSize = false;\n\n    /** If true, remove all default padding and margin. *Defaults to `false`.*  */\n    @Input() tight = false;\n\n    ngOnInit(): void {\n        this._updateDisplayedPageSizeOptions();\n        super.ngOnInit();\n    }\n\n    get _visiblePages(): Array<number | null> {\n        /*\n         * if there aren't any pages, don't display any\n         */\n        if (!this.totalPages) {\n            return [];\n        }\n\n        /*\n         * if there are less than nine pages, display them all\n         */\n        if (this.totalPages <= 9) {\n            const visiblePages: number[] = [];\n            for (let i = 1; i <= this.totalPages; i++) {\n                visiblePages.push(i);\n            }\n            return visiblePages;\n        }\n\n        /*\n         * There should always be exactly nine elements in the paging control.\n         * Let n = total pages, p = current page, ... are non-clickable ellipses\n         * If the current page number is less than 6, display 1, 2, 3, 4, 5, 6, ..., n-1, n\n         * If the current page number within is within 4 of the max, display 1, 2, ..., n-5, n-4, n-3, n-2, n-1, n\n         * Otherwise, display 1, 2, ..., p-1, p, p+1, ..., n-1, n\n         */\n        const n = this.totalPages;\n        const p = this.pageNumber || 1;\n\n        if (p < 6) {\n            return [1, 2, 3, 4, 5, 6, null, n - 1, n];\n        } else if (p >= n - 4) {\n            return [1, 2, null, n - 5, n - 4, n - 3, n - 2, n - 1, n];\n        } else {\n            return [1, 2, null, p - 1, p, p + 1, null, n - 1, n];\n        }\n    }\n\n    get _collapsedVisiblePages(): Array<number | null> {\n        /*\n         * if there aren't any pages, don't display any\n         */\n        if (!this.totalPages) {\n            return [];\n        }\n\n        /*\n         * if there are less than five pages, display them all\n         */\n        if (this.totalPages <= 5) {\n            const visiblePages: number[] = [];\n            for (let i = 1; i <= this.totalPages; i++) {\n                visiblePages.push(i);\n            }\n            return visiblePages;\n        }\n\n        /*\n         * There should always be exactly five elements in the paging control when collapsed.\n         * Let n = total pages, p = current page, ... are non-clickable ellipses\n         * If the current page number is less than 4, display 1, 2, 3, ..., n\n         * If the current page number within is within 2 of the max, display 1, ..., n-2, n-1, n\n         * Otherwise, display 1, ..., p, ..., n\n         */\n        const n = this.totalPages;\n        const p = this.pageNumber || 1;\n\n        if (p < 4) {\n            return [1, 2, 3, null, n];\n        } else if (p >= n - 2) {\n            return [1, null, n - 2, n - 1, n];\n        } else {\n            return [1, null, p, null, n];\n        }\n    }\n\n    _pageSizeUpdated(): void {\n        this._updateDisplayedPageSizeOptions();\n        this._pageSizeControl.setValue( this.pageSize );\n    }\n\n    _previousPage(): void {\n        if (this._isFirstPage) {\n            return;\n        }\n        this._goToPage((this.pageNumber || 1) - 1);\n    }\n\n    _goToPage(pageNum: number): number {\n        this.pageNumber = pageNum;\n        return this.pageNumber;\n    }\n\n    _nextPage(): void {\n        if (this._isLastPage) {\n            return;\n        }\n        this._goToPage((this.pageNumber || 1) + 1);\n    }\n\n    /**\n     * Changes the page size so that the first item displayed on the page will still be\n     * displayed using the new page size.\n     *\n     * For example, if the page size is 10 and on the second page (items indexed 11-20) then\n     * switching so that the page size is 5 will set the third page as the current page so\n     * that the 11th item will still be displayed.\n     */\n    _changePageSize(pageSize: number): void {\n        // Current page needs to be updated to reflect the new page size. Navigate to the page\n        // containing the previous page's first item.\n        const startIndex = (this.pageNumber - 1) * this.pageSize + 1;\n        this.pageSize = pageSize;\n        this.pageNumber = Math.ceil(startIndex / pageSize) || 1;\n    }\n\n    /**\n     * Updates the list of page size options to display to the user. Includes making sure that\n     * the page size is an option and that the list is sorted.\n     */\n    private _updateDisplayedPageSizeOptions() {\n        // If no page size is provided, use the first page size option or the default page size.\n        if (!this.pageSize) {\n            this.pageSize = this.pageSizeOptions.length !== 0 ? this.pageSizeOptions[0] : BasePaginationComponent._DEFAULT_PAGE_SIZE;\n        }\n\n        this._displayedPageSizeOptions = this.pageSizeOptions.slice();\n        if (this._displayedPageSizeOptions.indexOf(this.pageSize) === -1) {\n            this._displayedPageSizeOptions.push(this.pageSize);\n        }\n\n        // Sort the numbers using a number-specific sort function.\n        this._displayedPageSizeOptions.sort((a, b) => a - b);\n    }\n}\n","<div class=\"hc-pagination-container\" [class.hc-pagination-container-tight]=\"tight\">\n    @if (!hidePageSize) {\n    <div class=\"hc-font-sm hc-page-detail-container\">\n        <label class=\"hc-page-detail-label\">Showing:</label>\n        <hc-select\n            class=\"hc-page-detail-select\"\n            [formControl]=\"_pageSizeControl\"\n            (change)=\"_changePageSize($event.value)\"\n            (focus)=\"isFocused = true\"\n            (blur)=\"isFocused = false\"\n        >\n            @for (pageSizeOption of _displayedPageSizeOptions; track pageSizeOption) {\n            <option [value]=\"pageSizeOption\">\n                {{ isFocused ? pageSizeOption : pageSize === pageSizeOption && pageSizeOption > length ? 'all' : pageSizeOption }}\n            </option>\n            }\n        </hc-select>\n        <label class=\"hc-page-detail-entries\">\n            of\n            <strong>{{ length }}</strong>\n            entries\n        </label>\n    </div>\n    }\n\n    <div class=\"hc-page-btns-container\" [class.hc-page-btns-container-tight]=\"tight\">\n        <button\n            hc-button\n            buttonStyle=\"secondary\"\n            class=\"hc-page-button hc-page-left-button\"\n            (click)=\"_previousPage()\"\n            [disabled]=\"!totalPages || _isFirstPage\"\n        >\n            <span class=\"hc-page-button-chevron hc-page-button-chevron-left\"></span>\n            <span>PREV</span>\n        </button>\n        <!-- large width page navigation buttons -->\n        @if (displayWidth === 'lg') { @for (page of _visiblePages; track page) {\n        <button\n            hc-button\n            buttonStyle=\"secondary\"\n            class=\"hc-page-button hc-page-inner-button\"\n            [disabled]=\"!page\"\n            [class.hc-page-button-current]=\"page === pageNumber\"\n            (click)=\"_goToPage(page!)\"\n        >\n            @if (!!page) {\n            <span>{{ page }}</span>\n            } @if (!page) {\n            <span class=\"hc-page-button-ellipsis\"></span>\n            }\n        </button>\n        } }\n        <!-- medium width page navigation buttons -->\n        @if (displayWidth === 'md') { @for (page of _collapsedVisiblePages; track page) {\n        <button\n            hc-button\n            buttonStyle=\"secondary\"\n            class=\"hc-page-button hc-page-inner-button\"\n            [disabled]=\"!page\"\n            [class.hc-page-button-current]=\"page === pageNumber\"\n            (click)=\"_goToPage(page!)\"\n        >\n            @if (!!page) {\n            <span>{{ page }}</span>\n            } @if (!page) {\n            <span class=\"hc-page-button-ellipsis\"></span>\n            }\n        </button>\n        } }\n        <button\n            hc-button\n            buttonStyle=\"secondary\"\n            class=\"hc-page-button hc-page-right-button\"\n            (click)=\"_nextPage()\"\n            [disabled]=\"!totalPages || _isLastPage\"\n        >\n            <span>NEXT</span>\n            <span class=\"hc-page-button-chevron\"></span>\n        </button>\n    </div>\n</div>\n","import {Component, Input, OnInit, ViewEncapsulation} from '@angular/core';\nimport {supportedStyles} from '../button/button.component';\nimport {BasePaginationComponent} from './base-pagination';\nimport { supportedColors } from '../utils/supported-colors';\nimport { validateInput } from '../util';\n\n/** A simple \"load more\" pagination button. */\n@Component({\n    selector: 'hc-load-more-pagination',\n    templateUrl: './load-more-pagination.component.html',\n    styleUrls: ['./load-more-pagination.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class LoadMorePaginationComponent extends BasePaginationComponent implements OnInit {\n    /**\n     * Text to show on the button. *Defaults to 'Load more'.*\n     */\n    @Input()\n    buttonText = 'Load more';\n\n    /** Sets style of button. Choose from: `'primary' | 'primary-alt' | 'destructive' | 'neutral' | 'secondary' | 'link' | 'link-inline'`.\n     * *Defaults to `'secondary'`.*\n     */\n    @Input()\n    get buttonStyle(): string {\n        return this._style;\n    }\n\n    set buttonStyle(btnStyle: string) {\n        validateInput(btnStyle, supportedColors.concat(supportedStyles), 'buttonStyle', 'LoadMorePaginationComponent');\n        this._style = btnStyle;\n    }\n    private _style = 'secondary';\n\n    _loadNextPage(): void {\n        if (this._isLastPage) {\n            return;\n        }\n        this.pageNumber = this.pageNumber + 1;\n    }\n}\n","<button hc-button class=\"hc-page-load-more-button\" [buttonStyle]=\"buttonStyle\" (click)=\"_loadNextPage()\" [disabled]=\"_isLastPage\">\n    {{buttonText}}\n</button>","/**\n * Change event object that is emitted when the user selects a\n * different page size or navigates to another page.\n */\nexport class PageEvent {\n    /** The current page index */\n    pageNumber: number;\n\n    /** Index of the page that was selected previously */\n    previousPageNumber?: number;\n\n    /** The current page size */\n    pageSize: number;\n\n    /** The current total number of items being paged */\n    length: number;\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ButtonModule} from '../button/button.module';\nimport {SelectModule} from '../select/select.module';\nimport {IconModule} from '../icon/icon.module';\nimport {PaginationComponent} from './pagination.component';\nimport {LoadMorePaginationComponent} from './load-more-pagination.component';\nimport {BasePaginationComponent} from './base-pagination';\nimport {ReactiveFormsModule} from '@angular/forms';\n\n@NgModule({\n    imports: [CommonModule, ButtonModule, IconModule, SelectModule, ReactiveFormsModule],\n    declarations: [PaginationComponent, LoadMorePaginationComponent, BasePaginationComponent],\n    exports: [PaginationComponent, LoadMorePaginationComponent, BasePaginationComponent]\n})\nexport class PaginationModule {}\n","import {Observable} from 'rxjs';\n\n/**\n * @type\n * @docs-private\n */\nexport type PicklistValueType = 'values' | 'valuesets' | 'both';\n\n/** Represents a simple picklist option. */\nexport interface IValueOption {\n    /** Any unique string identifier. */\n    code: string;\n    /** The name of the option that will be displayed in the UI. */\n    title: string;\n}\n\n/** Represents a collection or bundle of picklist options. */\nexport interface IValueSetOption extends IValueOption {\n    /** Number of subvalues. Required because of the fact that `subValues` isn't always preloaded. */\n    subValueCount: number;\n    /** Collection of values in this value set. The code and title of each subvalue should match what\n     * is used by the value when used outside of a valueset. Note: The `subValues` array can initially be\n     * empty if the `getValuesForValueset` callback function is provided. */\n    subValues: IValueOption[];\n}\n\nexport interface IPicklistOptions {\n    /** A collection of values. */\n    values: IValueOption[];\n    /** A collection of value sets, which may or may not be pre-seeded with its subvalues. */\n    valueSets: IValueSetOption[];\n}\n\nexport interface IPicklistSettings {\n    /** True if code is considered important. If so, search and sorting will use the code. *Defaults to false.* */\n    codeIsSignificant?: boolean;\n    /** Set to true to use valuesets. *Defaults to false.* */\n    useValuesets?: boolean;\n    /** Set to true to show text in the header. *Defaults to true.* */\n    showHeaderText?: boolean;\n    /** Text for left header. *Defaults to \"Available\".* */\n    leftHeaderText?: string;\n    /** Text for right header. *Defaults to \"Selected\".* */\n    rightHeaderText?: string;\n    /** How to sort options in the pane. Options: `asc` | `desc` | `none`; *Defaults to `none`.* */\n    sort?: string;\n    /** Pre-seed the modal with selected options. */\n    selected?: IPicklistOptions;\n    /** Available options in the picklist. Set with local values or callbacks to retrieve remote values. */\n    options?: IPicklistOptionsSource;\n}\n\nexport interface IPicklistOptionsSource {\n    /** Collection of values to select from. */\n    values?: IValueOption[];\n    /** Collection of value sets to select from. */\n    valueSets?: IValueSetOption[];\n    /** Will the results from the server be paged? *Defaults to false.* Not used without `getOptions` callback. */\n    isPaged?: boolean;\n    /** What size results will be returned from the server? *Defaults to 100.* Not used without `getOptions` callback. */\n    pageSize?: number;\n    /** Callback function retrieve values. */\n    getOptions?: (params: PicklistRemoteQueryOptions) => Observable<IPicklistRemoteQueryResponse>;\n    /** Callback function to retrieve values for a value set. */\n    getValuesForValueset?: (code: string) => Observable<IValueOption[]>;\n}\n\n/**\n * @docs-private\n */\nexport class PicklistOptionsSource implements IPicklistOptionsSource {\n    public values = new Array<IValueOption>();\n    public valueSets = new Array<IValueSetOption>();\n    public isPaged = false;\n    public pageSize = 100;\n    public getOptions?: (params: PicklistRemoteQueryOptions) => Observable<IPicklistRemoteQueryResponse>;\n    public getValuesForValueset?: (code: string) => Observable<IValueOption[]>;\n\n    public optionsAreLocal(): boolean {\n        return !this.getOptions;\n    }\n}\n\n/**\n * @docs-private\n */\nexport class PicklistSettings implements IPicklistSettings {\n    public codeIsSignificant = false;\n    public useValuesets = false;\n    public showHeaderText = true;\n    public leftHeaderText = 'Available';\n    public rightHeaderText = 'Selected';\n    public sort = 'none';\n    public selected = {values: new Array<IValueOption>(), valueSets: new Array<IValueSetOption>()}; // options selected in modal\n    public options = new PicklistOptionsSource(); // options available for choosing\n}\n\n/** Interface to be used as part of the response when loading values over HTTP. */\nexport interface IPagedCollection<IT> {\n    /** Page being returned in the response, and the number of items per page. */\n    pagerSettings: IPageSettings;\n    /** Total number of items, including those already on the client or included in this response. */\n    totalItems: number;\n    /** Total number of pages. */\n    totalPages: number;\n    /** An array of `IValueOption` or `IValuesetOption`. */\n    values: IT[];\n}\n\nexport interface IPageSettings {\n    /** Current page of the request or response. */\n    currentPage: number;\n    /** Total number of items on a page */\n    itemsPerPage: number;\n}\n\n/** Interface to be used for the response when loading values over HTTP. This the type your `getOptions()` callback should return. */\nexport interface IPicklistRemoteQueryResponse {\n    /** Paged collection of `IValueOptions`. Only used if this picklist has `optionSource.isPaged` set to true. */\n    pagedValues?: IPagedCollection<IValueOption>;\n    /** Paged collection of `IValueSetOptions`. Only used if this picklist has `optionSource.isPaged` set to true. */\n    pagedValueSets?: IPagedCollection<IValueSetOption>;\n    /** An array of `{ code: string, title: string}`. Only used if this picklist has `optionSource.isPaged` set to false. */\n    values?: Array<IValueOption>;\n    /** An array of `{ code: string, title: string, subValueCount: number, subValues: IValueOption[]}`.\n     * Only used if this picklist has `optionSource.isPaged` set to false. Note: The `subValues` array can\n     * initially be empty if the `getValuesForValueset` callback function is provided. */\n    valueSets?: Array<IValueSetOption>;\n}\n\n/** An instance of this class will be sent to the `getOptions()` callback if loading values over HTTP. */\nexport class PicklistRemoteQueryOptions {\n    /** Page and number of items per page requested for values. */\n    valuePageSettings?: IPageSettings;\n    /** Page and number of items per page requested for value sets. */\n    valueSetPageSettings?: IPageSettings;\n\n    constructor(\n        /** The settings for this picklist. Particularly, `codeIsSignificant`, `useValuesets`,\n         * and selected values will be useful in obtaining the needed values & value sets. */\n        public picklist: IPicklistSettings,\n        /** Search term entered by the user that triggered the request. */\n        public searchTerm: string,\n        /** Which types of values should we be getting? */\n        public valueTypeToQuery: PicklistValueType\n    ) {}\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport {from, Observable} from 'rxjs';\nimport {IValueOption, IValueSetOption} from '../picklist-old.model';\n\nexport class FilterableSelectList<T extends SelectListOption> {\n    public selectedOptions = new Map<string, T>();\n    public lastClickedOption: T | null = null;\n    public filteredOptions = new Array<T>();\n    public isActive = true;\n\n    public additionalRemoteOptions = 0;\n    public loadingOptions: Observable<boolean> = from([]);\n    public appendingOptions: Observable<boolean> = from([]);\n    public codeIsSignificant = false;\n    public sort: string;\n    constructor(public options = new Map<string, T>()) {}\n}\n\nexport class SubSelectList extends FilterableSelectList<ValueListOption> {\n    constructor(public parentValueSet: ValueSetListOption, public options = new Map<string, ValueListOption>()) {\n        super(options);\n    }\n}\n\nexport function isSubList(model: FilterableSelectList<SelectListOption>): model is SubSelectList {\n    const subList = <SubSelectList>model;\n    return subList && subList.parentValueSet !== undefined;\n}\n\nexport class SelectListOption {\n    public selected: boolean;\n\n    constructor(public option: any, public code: string) {\n        this.selected = false;\n    }\n}\n\nexport class ValueListOption extends SelectListOption {\n    constructor(option: IValueOption, code: string) {\n        super(option, code);\n    }\n}\n\nexport class ValueSetListOption extends SelectListOption {\n    public subValuesSelectList: SubSelectList;\n    public showValues = false;\n    public loadingValues = false;\n\n    constructor(option: IValueSetOption, code: string) {\n        super(option, code);\n        this.subValuesSelectList = new SubSelectList(this);\n    }\n}\n\nexport class PicklistValueOptions {\n    public values = new Map<string, ValueListOption>();\n    public valueSets = new Map<string, ValueSetListOption>();\n}\n","import {Injectable} from '@angular/core';\nimport {FilterableSelectList, SelectListOption} from '../pane/picklist-pane.model';\n\n@Injectable()\nexport class PicklistFilterLocalService {\n    public filter<T extends SelectListOption>(list: FilterableSelectList<T>, searchTokens: string[]): void {\n        list.filteredOptions = [];\n        list.options.forEach(item => {\n            if (this.itemHasSearchTokens(list, item, searchTokens)) {\n                list.filteredOptions.push(item);\n            }\n        });\n        if (list.sort !== \"none\") {\n            list.filteredOptions.sort(this.getSortFunc(list));\n        }\n    }\n\n    public itemHasSearchTokens<T extends SelectListOption>(list: FilterableSelectList<T>, item: T, searchTokens: string[]): boolean {\n        const valuesToSearchIn = [item.option.title, list.codeIsSignificant ? item.option.code : ''];\n        valuesToSearchIn.filter(val => !!val);\n        return searchTokens.every(token => valuesToSearchIn.some(value => value.toLocaleLowerCase().indexOf(token) > -1));\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    private getSortFunc<T extends SelectListOption>(list: FilterableSelectList<T>): (a: any, b: any) => number {\n        const sortField = list.codeIsSignificant ? 'code' : 'title';\n        return (a, b) => a.option[sortField].localeCompare(b.option[sortField]) * (list.sort === \"asc\" ? -1 : 1);\n    }\n}\n","import {Injectable} from '@angular/core';\n\nimport {IValueOption, IValueSetOption, PicklistOptionsSource, PicklistSettings} from '../picklist-old.model';\nimport {FilterableSelectList, SelectListOption, ValueListOption, ValueSetListOption} from '../pane/picklist-pane.model';\nimport {PicklistPaneComponent} from '../pane/picklist-pane.component';\nimport {PicklistFilterLocalService} from './picklist-filter-local.service';\n\n@Injectable()\nexport class PicklistStateService {\n    public pane: PicklistPaneComponent;\n    public picklist = new PicklistSettings();\n    public optionsSource = new PicklistOptionsSource();\n    public valueList = new FilterableSelectList<ValueListOption>();\n    public valueSetList = new FilterableSelectList<ValueSetListOption>();\n\n    public constructor(private localFilterService: PicklistFilterLocalService) {}\n\n    public reset(settings: PicklistSettings, optionsSource: PicklistOptionsSource, pane: PicklistPaneComponent): void {\n        this.picklist = settings;\n        this.pane = pane;\n        this.optionsSource = optionsSource;\n        this.clearList(this.valueList);\n        this.clearList(this.valueSetList);\n    }\n\n    public updateValueList(options: IValueOption[], searchTokens: string[] = []): void {\n        const listOptions = options.map(v => new ValueListOption(v, v.code));\n        const companionList = this.pane.companion ? this.pane.companion.valueList : null;\n        this.valueList.sort = this.picklist.sort;\n        this.updateList(listOptions, this.valueList, companionList, searchTokens);\n    }\n\n    public updateValueSetList(options: IValueSetOption[], searchTokens: string[] = []): void {\n        const listOptions = new Array<ValueSetListOption>();\n        const companionList = this.pane.companion ? this.pane.companion.valueSetList : null;\n        options.forEach(v => {\n            const listOption = new ValueSetListOption(v, v.code);\n            if (v.subValues && v.subValues.length > 0) {\n                const subValueListOptions = v.subValues.map((sv: IValueOption) => new ValueListOption(sv, sv.code));\n                this.updateList(subValueListOptions, listOption.subValuesSelectList, null, searchTokens);\n            }\n            listOptions.push(listOption);\n        });\n        this.updateList(listOptions, this.valueSetList, companionList, searchTokens);\n    }\n\n    public clearList<T extends SelectListOption>(list: FilterableSelectList<T>): void {\n        list.options.clear();\n        list.filteredOptions.length = 0;\n        list.selectedOptions.clear();\n        list.lastClickedOption = null;\n        list.additionalRemoteOptions = 0;\n    }\n\n    private updateList<T extends SelectListOption>(\n        options: T[],\n        list: FilterableSelectList<T>,\n        companionList: FilterableSelectList<T> | null = null,\n        searchTokens: string[] = []\n    ) {\n        if (!this.optionsSource.isPaged && this.pane.shouldExcludeCompanion && companionList) {\n            options = options.filter(o => !companionList.options.get(o.code));\n        }\n        options.forEach(o => {\n            list.options.set(o.code, o);\n            list.filteredOptions.push(o);\n        });\n        this.localFilterService.filter(list, searchTokens);\n    }\n}\n","import {from, Observable, of, Subject, Subscription} from 'rxjs';\n\nimport {takeUntil} from 'rxjs/operators';\nimport {Injectable} from '@angular/core';\n\nimport {PicklistFilterService} from './picklist-filter.service';\nimport {PicklistStateService} from './picklist-state.service';\nimport {FilterableSelectList, ValueListOption, ValueSetListOption} from '../pane/picklist-pane.model';\nimport {\n    IPagedCollection,\n    IPicklistRemoteQueryResponse,\n    IValueOption,\n    IValueSetOption,\n    PicklistRemoteQueryOptions,\n    PicklistValueType\n} from '../picklist-old.model';\n\n@Injectable()\nexport class PicklistFilterRemoteService {\n    public filterService?: PicklistFilterService;\n    public get valueList(): FilterableSelectList<ValueListOption> {\n        return this.stateService.valueList;\n    }\n    public get valueSetList(): FilterableSelectList<ValueSetListOption> {\n        return this.stateService.valueSetList;\n    }\n    public get searchTerm(): string {\n        return this.filterService ? this.filterService.searchTerm : '';\n    }\n    public currentValuePage = 1;\n    public currentValueSetPage = 1;\n    private cancelSearch = new Subject<void>();\n    private get cancelSearch$(): Observable<void> {\n        return this.cancelSearch.asObservable();\n    }\n    private options$: Observable<IPicklistRemoteQueryResponse> = from([]);\n\n    public constructor(private stateService: PicklistStateService) {}\n\n    public reset(filterService: PicklistFilterService): void {\n        this.filterService = filterService;\n        this.currentValuePage = 1;\n        this.currentValueSetPage = 1;\n    }\n\n    public filter(type: PicklistValueType = 'both', shouldAppend = false, selectAllCount: number | null = null): Subscription {\n        if (!this.stateService.optionsSource.getOptions) {\n            console.warn('Remote query callback not provided for this picklist.');\n            return from([]).subscribe();\n        }\n\n        if (this.options$) {\n            this.cancelSearch.next();\n        }\n        const params = this.buildRemoteQueryParams(type, selectAllCount);\n        if (!shouldAppend) {\n            this.clearFilteredOptions(type);\n        }\n        this.resetPagingForSelectAllIfNeeded(selectAllCount);\n        this.options$ = this.stateService.optionsSource.getOptions(params).pipe(takeUntil(this.cancelSearch$));\n\n        return this.options$.subscribe(\n            options => {\n                this.processIncomingRemoteOptions(options, type, shouldAppend);\n            },\n            () => {\n                console.warn('Unable to filter options');\n                this.clearLists('both');\n                return of({});\n            },\n            () => {\n                this.options$ = of({});\n            }\n        );\n    }\n\n    private processIncomingRemoteOptions(options: IPicklistRemoteQueryResponse, type: PicklistValueType = 'both', shouldAppend = false) {\n        if (!shouldAppend) {\n            this.clearLists(type);\n        }\n\n        if (this.stateService.optionsSource.isPaged) {\n            if (options.pagedValues) {\n                this.processPagedValues(options.pagedValues);\n            }\n            if (options.pagedValueSets) {\n                this.processPagedValueSets(options.pagedValueSets);\n            }\n        } else {\n            if (options.values) {\n                this.stateService.updateValueList(options.values);\n            }\n            if (options.valueSets) {\n                this.stateService.updateValueSetList(options.valueSets);\n            }\n            this.valueList.additionalRemoteOptions = 0;\n            this.valueSetList.additionalRemoteOptions = 0;\n        }\n    }\n\n    private processPagedValues(pagedValues: IPagedCollection<IValueOption>) {\n        this.stateService.updateValueList(pagedValues.values);\n        this.valueList.additionalRemoteOptions = pagedValues.totalItems - this.valueList.options.size;\n    }\n\n    private processPagedValueSets(pagedValueSets: IPagedCollection<IValueSetOption>) {\n        this.stateService.updateValueSetList(pagedValueSets.values);\n        this.valueSetList.additionalRemoteOptions = pagedValueSets.totalItems - this.valueSetList.options.size;\n    }\n\n    private buildRemoteQueryParams(type: PicklistValueType, selectAllCount: number | null = null): PicklistRemoteQueryOptions {\n        const params = new PicklistRemoteQueryOptions(this.stateService.picklist, this.searchTerm, type);\n        if (type === 'values' || type === 'both') {\n            params.valuePageSettings = this.buildPageSettings(this.currentValuePage, selectAllCount);\n        }\n\n        if (type === 'valuesets' || type === 'both') {\n            params.valueSetPageSettings = this.buildPageSettings(this.currentValueSetPage, selectAllCount);\n        }\n        return params;\n    }\n\n    private buildPageSettings(currentPage: number, selectAllCount: number | null) {\n        const pagerSettings = {currentPage: 1, itemsPerPage: this.stateService.optionsSource.pageSize};\n        pagerSettings.currentPage = selectAllCount ? 1 : currentPage;\n        pagerSettings.itemsPerPage = selectAllCount || pagerSettings.itemsPerPage;\n        return pagerSettings;\n    }\n\n    private resetPagingForSelectAllIfNeeded(selectAllCount: number | null = null) {\n        if (selectAllCount) {\n            this.currentValuePage = Math.floor(selectAllCount / this.stateService.optionsSource.pageSize);\n        }\n    }\n\n    private clearLists(type: PicklistValueType) {\n        if (type === 'both' || type === 'values') {\n            this.stateService.clearList(this.valueList);\n        }\n        if (type === 'both' || type === 'valuesets') {\n            this.stateService.clearList(this.valueSetList);\n        }\n    }\n\n    private clearFilteredOptions(type: PicklistValueType) {\n        if (type === 'both' || type === 'values') {\n            this.valueList.filteredOptions.length = 0;\n        }\n        if (type === 'both' || type === 'valuesets') {\n            this.valueSetList.filteredOptions.length = 0;\n        }\n    }\n}\n","import {Injectable} from '@angular/core';\nimport {Observable, Subscription} from 'rxjs';\n\nimport {FilterableSelectList, SelectListOption, ValueListOption, ValueSetListOption} from '../pane/picklist-pane.model';\nimport {PicklistValueType} from '../picklist-old.model';\nimport {WorkTrackerService} from '../../shared/work-tracker.service';\nimport {PicklistFilterRemoteService} from './picklist-filter-remote.service';\nimport {PicklistFilterLocalService} from './picklist-filter-local.service';\nimport {PicklistStateService} from './picklist-state.service';\n\n@Injectable()\nexport class PicklistFilterService {\n    public get valueList(): FilterableSelectList<ValueListOption> {\n        return this.stateService.valueList;\n    }\n    public get valueSetList(): FilterableSelectList<ValueSetListOption> {\n        return this.stateService.valueSetList;\n    }\n    public get searchTokens(): string[] {\n        return this.searchTerm\n            .toLocaleLowerCase()\n            .replace(/\\s+/g, ' ')\n            .split(' ');\n    }\n    public searchTerm = '';\n\n    constructor(\n        private workTracker: WorkTrackerService,\n        private stateService: PicklistStateService,\n        private remoteFilterService: PicklistFilterRemoteService,\n        private localFilterService: PicklistFilterLocalService\n    ) {}\n\n    public reset(): void {\n        this.remoteFilterService.reset(this);\n        this.searchTerm = '';\n    }\n\n    public runFilter(searchTerm: string): void {\n        this.searchTerm = searchTerm;\n        if (!this.stateService.optionsSource.isPaged) {\n            this.localFilterService.filter(this.valueList, this.searchTokens);\n            this.localFilterService.filter(this.valueSetList, this.searchTokens);\n        } else {\n            this.remoteFilterService.currentValuePage = 1;\n            this.remoteFilterService.currentValueSetPage = 1;\n            const workTracker = this.workTracker.startObservable(() => this.remoteFilterService.filter());\n            this.showListLoadingIndicators(workTracker, 'both');\n        }\n    }\n\n    public filterOptionsRemote(type: PicklistValueType = 'both', shouldAppend = false, selectAllCount: number | null = null): Subscription {\n        return this.remoteFilterService.filter(type, shouldAppend, selectAllCount);\n    }\n\n    public loadMore(type: PicklistValueType = 'both', autoLoadMore = false): void {\n        if (type === 'both' || type === 'values') {\n            this.remoteFilterService.currentValuePage++;\n        }\n        if (type === 'both' || type === 'valuesets') {\n            this.remoteFilterService.currentValueSetPage++;\n        }\n        const loading$ = this.workTracker.startObservable(() => this.filterOptionsRemote(type, true));\n        this.showListLoadingIndicators(loading$, type, !autoLoadMore);\n    }\n\n    public loadForSelectAll(numberToLoad: number): Observable<boolean> {\n        const loading$ = this.workTracker.startObservable(() => this.filterOptionsRemote('values', false, numberToLoad));\n        this.showListLoadingIndicators(loading$, 'values');\n        return loading$;\n    }\n\n    public reloadIfEmpty(): void {\n        const valuesNeedReload = this.valueList.options.size === 0 && this.valueList.additionalRemoteOptions > 0;\n        const valueSetsNeedReload = this.valueSetList.options.size === 0 && this.valueSetList.additionalRemoteOptions > 0;\n        if (valuesNeedReload || valueSetsNeedReload) {\n            this.runFilter(this.searchTerm);\n        }\n    }\n\n    public preFilterOptionsForRemoteMode(valuesMap: Map<string, SelectListOption>, list: FilterableSelectList<SelectListOption>): void {\n        // if server is handling filtering, but I want to avoid the round trip to the server when moving options\n        // I need to double check that those options belong before adding them, or risk errant option counts\n        valuesMap.forEach(v => {\n            if (!this.localFilterService.itemHasSearchTokens(list, v, this.searchTokens)) {\n                valuesMap.delete(v.code);\n            }\n        });\n    }\n\n    public showListLoadingIndicators(workTracker: Observable<boolean>, type: PicklistValueType = 'both', isAppending = false): void {\n        if (type === 'both' || type === 'values') {\n            this.showLoadingIndicatorForList(this.valueList, workTracker, isAppending);\n        }\n        if (type === 'both' || type === 'valuesets') {\n            this.showLoadingIndicatorForList(this.valueSetList, workTracker, isAppending);\n        }\n    }\n\n    private showLoadingIndicatorForList(list: FilterableSelectList<SelectListOption>, tracker: Observable<boolean>, isAppending = false) {\n        if (isAppending) {\n            list.appendingOptions = tracker;\n        } else {\n            list.loadingOptions = tracker;\n        }\n    }\n}\n","import {Injectable} from '@angular/core';\n\nimport {PicklistFilterService} from './picklist-filter.service';\nimport {PicklistPaneComponent} from '../pane/picklist-pane.component';\nimport {FilterableSelectList, PicklistValueOptions, ValueListOption, ValueSetListOption} from '../pane/picklist-pane.model';\nimport {PicklistStateService} from './picklist-state.service';\nimport {IValueOption} from '../picklist-old.model';\n\n@Injectable()\nexport class PicklistValuesetMovingService {\n    public get valueList(): FilterableSelectList<ValueListOption> {\n        return this.stateService.valueList;\n    }\n    public get valueSetList(): FilterableSelectList<ValueSetListOption> {\n        return this.stateService.valueSetList;\n    }\n\n    public constructor(private filterService: PicklistFilterService, private stateService: PicklistStateService) {}\n\n    public moveOutValuesets(optionsToMove: PicklistValueOptions, pane: PicklistPaneComponent, shouldBreakValuesets = false): void {\n        this.valueSetList.selectedOptions.forEach(v => {\n            v.showValues = false;\n            optionsToMove.valueSets.set(v.code, v);\n            this.valueSetList.options.delete(v.code);\n        });\n\n        this.valueSetList.filteredOptions.forEach(valueset => {\n            if (valueset.selected || valueset.subValuesSelectList.selectedOptions.size < 1) {\n                return;\n            }\n\n            if (shouldBreakValuesets) {\n                this.breakValueset(valueset, optionsToMove, pane.companion);\n            } else {\n                this.moveSubValues(valueset.subValuesSelectList.selectedOptions, pane);\n            }\n        });\n    }\n\n    private breakValueset(valueset: ValueSetListOption, optionsToMove: PicklistValueOptions, companionPane: PicklistPaneComponent | null) {\n        valueset.showValues = false;\n        optionsToMove.valueSets.set(valueset.code, valueset);\n        this.valueSetList.options.delete(valueset.code);\n\n        const unselectedSubValues = new Map<string, ValueListOption>();\n        valueset.subValuesSelectList.filteredOptions\n            .filter(o => !o.selected)\n            .forEach(o => {\n                unselectedSubValues.set(o.code, new ValueListOption(o.option as IValueOption, o.code));\n            });\n\n        if (!companionPane) {\n            return;\n        }\n        this.moveSubValues(unselectedSubValues, companionPane);\n    }\n\n    private moveSubValues(valuesMap: Map<string, ValueListOption>, sourcePane: PicklistPaneComponent) {\n        this.removeValuesFromPane(valuesMap, sourcePane);\n        if (!sourcePane.companion) {\n            return;\n        }\n        valuesMap.forEach(o => {\n            sourcePane.companion?.valueList.options.set(o.code, new ValueListOption(o.option as IValueOption, o.code));\n        });\n    }\n\n    /**\n     * Handles complex logic for when one pane is paged, and we want to keep the \"x of y\" counts accurate without a round trip to the server\n     */\n    private removeValuesFromPane(valuesMap: Map<string, ValueListOption>, pane: PicklistPaneComponent) {\n        if (pane.isPaged) {\n            // don't bother trying to remove values or decrement count for options that are already filtered out\n            this.filterService.preFilterOptionsForRemoteMode(valuesMap, pane.valueList);\n        }\n\n        valuesMap.forEach(v => {\n            const optionDeleted = pane.valueList.options.delete(v.code);\n            const optionAlreadyInCompanionList = pane.companion ? pane.companion.valueList.options.has(v.code) : false;\n            if (!optionDeleted && pane.isPaged && !optionAlreadyInCompanionList) {\n                pane.valueList.additionalRemoteOptions--;\n            }\n        });\n    }\n}\n","import {Injectable} from '@angular/core';\n\nimport {WorkTrackerService} from '../../shared/work-tracker.service';\nimport {PicklistFilterService} from './picklist-filter.service';\nimport {PicklistValuesetMovingService} from './picklist-valueset-moving.service';\nimport {PicklistFilterLocalService} from './picklist-filter-local.service';\nimport {PicklistStateService} from './picklist-state.service';\nimport {PicklistPaneComponent} from '../pane/picklist-pane.component';\nimport {PicklistOptionsSource, PicklistSettings} from '../picklist-old.model';\nimport {FilterableSelectList, PicklistValueOptions, ValueListOption, ValueSetListOption} from '../pane/picklist-pane.model';\n\n/**\n * Handles loading + moving items to/from list\n */\n@Injectable()\nexport class PicklistOldService {\n    public get pane(): PicklistPaneComponent {\n        return this.stateService.pane;\n    }\n    public get picklist(): PicklistSettings {\n        return this.stateService.picklist;\n    }\n    public get optionsSource(): PicklistOptionsSource {\n        return this.stateService.optionsSource;\n    }\n    public get valueList(): FilterableSelectList<ValueListOption> {\n        return this.stateService.valueList;\n    }\n    public get valueSetList(): FilterableSelectList<ValueSetListOption> {\n        return this.stateService.valueSetList;\n    }\n    public get totalValuesCount(): number {\n        return this.valueList.options.size + this.valueList.additionalRemoteOptions;\n    }\n    public get totalValueSetsCount(): number {\n        return this.valueSetList.options.size + this.valueSetList.additionalRemoteOptions;\n    }\n\n    constructor(\n        private workTracker: WorkTrackerService,\n        private filterService: PicklistFilterService,\n        private localFilterService: PicklistFilterLocalService,\n        private valuesetMovingService: PicklistValuesetMovingService,\n        private stateService: PicklistStateService\n    ) {}\n\n    public reset(settings: PicklistSettings, optionsSource: PicklistOptionsSource, pane: PicklistPaneComponent): void {\n        this.stateService.reset(settings, optionsSource, pane);\n        this.filterService.reset();\n\n        if (this.optionsSource.optionsAreLocal()) {\n            this.stateService.updateValueList(this.optionsSource.values);\n            this.stateService.updateValueSetList(this.optionsSource.valueSets);\n            this.localFilterService.filter(this.valueList, this.filterService.searchTokens);\n            this.localFilterService.filter(this.valueSetList, this.filterService.searchTokens);\n        } else {\n            const loading$ = this.workTracker.startObservable(() => this.filterService.filterOptionsRemote());\n            this.valueList.loadingOptions = loading$;\n            this.valueSetList.loadingOptions = loading$;\n        }\n    }\n\n    public addOptions(listOptions: PicklistValueOptions): void {\n        if (!this.optionsSource.optionsAreLocal()) {\n            this.filterService.preFilterOptionsForRemoteMode(listOptions.values, this.valueList);\n            this.filterService.preFilterOptionsForRemoteMode(listOptions.valueSets, this.valueSetList);\n        }\n\n        listOptions.values.forEach(o => {\n            this.valueList.options.set(o.code, o);\n        });\n        listOptions.valueSets.forEach(o => {\n            this.valueSetList.options.set(o.code, o);\n        });\n        this.localFilterService.filter(this.valueList, this.filterService.searchTokens);\n        this.localFilterService.filter(this.valueSetList, this.filterService.searchTokens);\n        this.pane.selectNone();\n    }\n\n    public moveOutSelectedOptions(shouldBreakValuesets = false): PicklistValueOptions {\n        const optionsToMove = new PicklistValueOptions();\n        this.valueList.selectedOptions.forEach(o => {\n            optionsToMove.values.set(o.code, o);\n            this.valueList.options.delete(o.code);\n        });\n\n        this.valuesetMovingService.moveOutValuesets(optionsToMove, this.pane, shouldBreakValuesets);\n\n        this.localFilterService.filter(this.valueList, this.filterService.searchTokens);\n        this.localFilterService.filter(this.valueSetList, this.filterService.searchTokens);\n        this.pane.selectNone();\n        return optionsToMove;\n    }\n\n    public loadValuesForValueset(valueset: ValueSetListOption): void {\n        valueset.loadingValues = true;\n        if (!this.optionsSource.getValuesForValueset) {\n            return;\n        }\n        this.optionsSource.getValuesForValueset(valueset.option.code).subscribe(\n            values => {\n                valueset.subValuesSelectList.filteredOptions.length = 0;\n                values.forEach(v => {\n                    valueset.subValuesSelectList.filteredOptions.push(new ValueListOption(v, v.code));\n                });\n            },\n            () => {\n                console.warn('Unable to load values for valueset');\n                valueset.showValues = false;\n            },\n            () => {\n                valueset.loadingValues = false;\n            }\n        );\n    }\n}\n","import {Injectable} from '@angular/core';\nimport {FilterableSelectList, isSubList, SelectListOption, ValueListOption, ValueSetListOption} from '../pane/picklist-pane.model';\nimport {PicklistOldService} from './picklist-old.service';\n\n@Injectable()\nexport class PicklistActionService {\n    public get valueList(): FilterableSelectList<ValueListOption> {\n        return this.listService.valueList;\n    }\n    public get valueSetList(): FilterableSelectList<ValueSetListOption> {\n        return this.listService.valueSetList;\n    }\n    public constructor(private listService: PicklistOldService) {}\n\n    public onItemClicked<T extends SelectListOption>(event: MouseEvent, index: number, list: FilterableSelectList<T>, item: T): void {\n        if (event.shiftKey && list.lastClickedOption && !(item.code === list.lastClickedOption.code)) {\n            this.shiftClick(index, list, item, list.lastClickedOption);\n        } else if (event.ctrlKey) {\n            this.ctrlClick(list, item);\n        } else {\n            // regular click\n            this.selectNone();\n            this.selectItem(list, item);\n            list.lastClickedOption = item;\n        }\n    }\n\n    public onItemDoubleClicked<T extends SelectListOption>(event: MouseEvent, list: FilterableSelectList<T>, item: T): void {\n        this.selectNone();\n        this.selectItem(list, item);\n    }\n\n    public onValuesetCaretClicked(event: MouseEvent, valueset: ValueSetListOption): void {\n        if (!valueset.showValues && valueset.subValuesSelectList.filteredOptions.length === 0) {\n            this.listService.loadValuesForValueset(valueset);\n        }\n        valueset.showValues = !valueset.showValues;\n    }\n\n    public selectAll(): void {\n        this.valueSetList.filteredOptions.forEach(v => {\n            this.clearListSelection(v.subValuesSelectList);\n        }); // deselect sublist items\n        this.selectAllInList(this.valueList);\n        this.selectAllInList(this.valueSetList);\n    }\n\n    public selectNone(): void {\n        this.valueSetList.filteredOptions.forEach(v => {\n            this.clearListSelection(v.subValuesSelectList);\n        });\n        this.clearListSelection(this.valueList);\n        this.clearListSelection(this.valueSetList);\n    }\n\n    public selectAllInList<T extends SelectListOption>(list: FilterableSelectList<T>): void {\n        if (!list.isActive) {\n            return;\n        }\n\n        list.selectedOptions.clear();\n        list.lastClickedOption = null;\n\n        list.filteredOptions.forEach(item => {\n            item.selected = true;\n            list.selectedOptions.set(item.code, item);\n        });\n    }\n\n    private clearListSelection<T extends SelectListOption>(list: FilterableSelectList<T>) {\n        list.selectedOptions.clear();\n        list.lastClickedOption = null;\n\n        list.filteredOptions.forEach(item => {\n            item.selected = false;\n        });\n    }\n\n    private shiftClick<T extends SelectListOption>(index: number, list: FilterableSelectList<T>, item: T, lastClickedItem: T) {\n        const lastIndex = list.filteredOptions.indexOf(lastClickedItem);\n        const largeIndex = Math.max(index, lastIndex);\n        const smallIndex = Math.min(index, lastIndex);\n\n        const formerLastClicked = list.lastClickedOption;\n        this.selectNone();\n        list.lastClickedOption = formerLastClicked;\n\n        for (let i = smallIndex; i <= largeIndex; i++) {\n            this.selectItem(list, list.filteredOptions[i]);\n        }\n    }\n\n    private ctrlClick<T extends SelectListOption>(list: FilterableSelectList<T>, item: T) {\n        // if ctrl clicking a sub value of a valueset that is selected (such that all subvalues appear selected)\n        if (isSubList(list) && list.parentValueSet.selected) {\n            this.selectAllInList<ValueListOption>(list);\n            this.deselectItem(this.valueSetList, list.parentValueSet);\n            this.deselectItem<ValueListOption>(list, item);\n        } else {\n            this.toggleItemSelection(list, item);\n        }\n\n        list.lastClickedOption = item;\n    }\n\n    private deselectItem<T extends SelectListOption>(list: FilterableSelectList<T>, item: T) {\n        item.selected = false;\n        list.selectedOptions.delete(item.code);\n    }\n\n    private selectItem<T extends SelectListOption>(list: FilterableSelectList<T>, item: T) {\n        item.selected = true;\n        list.selectedOptions.set(item.code, item);\n    }\n\n    private toggleItemSelection<T extends SelectListOption>(list: FilterableSelectList<T>, item: T) {\n        if (item.selected) {\n            this.deselectItem(list, item);\n        } else {\n            this.selectItem(list, item);\n        }\n    }\n}\n","import {debounceTime, distinctUntilChanged} from 'rxjs/operators';\nimport {Component, ElementRef, EventEmitter, Input, Output, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {Subject} from 'rxjs';\n\nimport {PicklistOldService} from '../services/picklist-old.service';\nimport {PicklistActionService} from '../services/picklist-action.service';\nimport {PicklistFilterService} from '../services/picklist-filter.service';\nimport {PicklistFilterRemoteService} from '../services/picklist-filter-remote.service';\nimport {PicklistFilterLocalService} from '../services/picklist-filter-local.service';\nimport {PicklistStateService} from '../services/picklist-state.service';\nimport {PicklistValuesetMovingService} from '../services/picklist-valueset-moving.service';\nimport {WorkTrackerService} from '../../shared/work-tracker.service';\nimport {PicklistOptionsSource, PicklistSettings, PicklistValueType} from '../picklist-old.model';\nimport {FilterableSelectList, SelectListOption, ValueListOption, ValueSetListOption} from './picklist-pane.model';\n\n@Component({\n    selector: 'hc-picklist-pane',\n    templateUrl: 'picklist-pane.component.html',\n    styleUrls: ['picklist-pane.component.scss'],\n    providers: [\n        PicklistOldService,\n        PicklistStateService,\n        PicklistValuesetMovingService,\n        PicklistActionService,\n        PicklistFilterService,\n        PicklistFilterRemoteService,\n        PicklistFilterLocalService,\n        WorkTrackerService\n    ],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class PicklistPaneComponent {\n    @Input()\n    public emptyMsg = 'No options';\n    @Output()\n    public moveSelectedItems = new EventEmitter<PicklistPaneComponent>();\n    @ViewChild('listContainer')\n    public listContainerEl: ElementRef | undefined;\n    @ViewChild('search')\n    public searchInputEl: ElementRef | undefined;\n    public companion: PicklistPaneComponent | null = null;\n    public shouldExcludeCompanion = false;\n    public codeIsSignificant = false;\n    public searchTerm = '';\n    public searchTermStream = new Subject<string>();\n    public selectAllWasLastClicked = false;\n    public selectAllLimit = 2000;\n\n    constructor(\n        public listService: PicklistOldService,\n        public actionService: PicklistActionService,\n        public filterService: PicklistFilterService\n    ) {}\n\n    public reset(source: PicklistOptionsSource, settings: PicklistSettings, companion: PicklistPaneComponent, excludeCompanion = false): void {\n        this.companion = companion;\n        this.shouldExcludeCompanion = excludeCompanion;\n        this.codeIsSignificant = settings.codeIsSignificant;\n        this.selectAllWasLastClicked = false;\n        this.searchTerm = '';\n        this.wireUpSearch();\n        this.listService.reset(settings, source, this);\n    }\n\n    public get valueList(): FilterableSelectList<ValueListOption> {\n        return this.listService.valueList;\n    }\n    public get valueSetList(): FilterableSelectList<ValueSetListOption> {\n        return this.listService.valueSetList;\n    }\n    public get isPaged(): boolean {\n        return this.listService.optionsSource.isPaged;\n    }\n    public get optionsAvailableCount(): number {\n        return this.PicklistValueOptionsTotal + this.valueSetOptionsTotal;\n    }\n    public get PicklistValueOptionsTotal(): number {\n        return this.valueList.isActive ? this.listService.totalValuesCount : 0;\n    }\n    public get valueSetOptionsTotal(): number {\n        return this.valueSetList.isActive ? this.listService.totalValueSetsCount : 0;\n    }\n    public get optionsShowingCount(): number {\n        const valueListShowing = this.valueList.isActive ? this.valueList.filteredOptions.length : 0;\n        const valueSetListShowing = this.valueSetList.isActive ? this.valueSetList.filteredOptions.length : 0;\n        return valueListShowing + valueSetListShowing;\n    }\n\n    public get showTooManyToSelectAllMsg(): boolean {\n        const serverMatches = this.valueList.additionalRemoteOptions;\n        return (\n            this.selectAllWasLastClicked &&\n            Number.isFinite(serverMatches) &&\n            serverMatches + this.valueList.options.size > this.selectAllLimit\n        );\n    }\n\n    public shouldShowList<T extends SelectListOption>(list: FilterableSelectList<T>): boolean {\n        return list.isActive && (list.filteredOptions.length > 0 || list.additionalRemoteOptions > 0);\n    }\n\n    public listIsFilteredToEmpty<T extends SelectListOption>(list: FilterableSelectList<T>): boolean {\n        return list.options.size > 0 && list.filteredOptions.length === 0 && list.isActive;\n    }\n\n    public isAnySelected(): boolean {\n        const topLevelListHasSelection = this.valueList.selectedOptions.size > 0 || this.valueSetList.selectedOptions.size > 0;\n        const subListHasSelection = this.valueSetList.filteredOptions.some(o => o.subValuesSelectList.selectedOptions.size > 0);\n        return topLevelListHasSelection || subListHasSelection;\n    }\n\n    public focusSearch(): void {\n        if (this.searchInputEl) {\n            this.searchInputEl.nativeElement.focus();\n        }\n    }\n\n    public scrollToTop(): void {\n        if (this.listContainerEl) {\n            this.listContainerEl.nativeElement.scrollTop = 0;\n        }\n    }\n\n    public onSearchKeyup(): void {\n        this.selectNone();\n        this.searchTermStream.next(this.searchTerm);\n    }\n\n    public onItemClicked<T extends SelectListOption>(event: MouseEvent, index: number, list: FilterableSelectList<T>, item: T): void {\n        this.selectAllWasLastClicked = false;\n        event.stopPropagation();\n        this.actionService.onItemClicked(event, index, list, item);\n    }\n\n    public preventIEHighlightBug(): void {\n        // for IE: https://stackoverflow.com/questions/1527751/disable-text-selection-while-pressing-shift\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        (document as any).onselectstart = function() {\n            return false;\n        };\n        setTimeout(function() {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            (document as any).onselectstart = () => null;\n        }, 0);\n    }\n\n    public onValuesetCaretClicked(event: MouseEvent, valueset: ValueSetListOption): void {\n        this.selectAllWasLastClicked = false;\n        event.stopPropagation();\n        this.actionService.onValuesetCaretClicked(event, valueset);\n    }\n\n    public triggerLoadMore(type: PicklistValueType): void {\n        this.selectAllWasLastClicked = false;\n        this.filterService.loadMore(type);\n    }\n\n    public onItemDoubleClicked<T extends SelectListOption>(event: MouseEvent, list: FilterableSelectList<T>, item: T): void {\n        this.selectAllWasLastClicked = false;\n        event.stopPropagation();\n        this.actionService.onItemDoubleClicked(event, list, item);\n        this.moveSelectedItems.emit(this);\n    }\n\n    public selectAll(): void {\n        this.selectAllWasLastClicked = true;\n        const shouldLoadMoreBeforeSelectAll = this.valueList.additionalRemoteOptions && this.valueList.options.size < this.selectAllLimit;\n        if (this.pagingValueList() && shouldLoadMoreBeforeSelectAll) {\n            const totalMatches = this.valueList.additionalRemoteOptions + this.valueList.options.size;\n            const numberToLoad = totalMatches > this.selectAllLimit ? this.selectAllLimit : totalMatches;\n            this.loadAndSelectAll(numberToLoad);\n        } else {\n            this.actionService.selectAll();\n        }\n    }\n\n    public selectNone(): void {\n        this.selectAllWasLastClicked = false;\n        this.actionService.selectNone();\n    }\n\n    private loadAndSelectAll(numberToLoad: number) {\n        this.filterService.loadForSelectAll(numberToLoad).subscribe(() => {\n            this.actionService.selectAllInList(this.valueList);\n        });\n    }\n\n    private pagingValueList(): boolean {\n        return this.isPaged && this.shouldShowList(this.valueList) && !this.shouldShowList(this.valueSetList);\n    }\n\n    private wireUpSearch() {\n        this.searchTermStream.pipe(debounceTime(300), distinctUntilChanged()).subscribe(t => {\n            this.filterService.runFilter(t);\n            this.selectNone();\n        });\n    }\n}\n","<div class=\"hc-picklist-pane\">\n    <div class=\"picklist-controls\">\n        <hc-form-field>\n            <input hcInput #searchInput (keyup)=\"onSearchKeyup()\" [(ngModel)]=\"searchTerm\" type=\"text\" placeholder=\"Search\" />\n            <hc-icon hcSuffix fontIcon=\"hc-picklist-old-ico-search\"></hc-icon>\n        </hc-form-field>\n        <div class=\"second-row-controls\">\n            <div class=\"hc-type-em\">Showing {{ optionsShowingCount.toLocaleString() }} of {{ optionsAvailableCount.toLocaleString() }}</div>\n            <div>\n                <button\n                    type=\"button\"\n                    class=\"btn-text-link\"\n                    (click)=\"selectAll()\"\n                    [disabled]=\"valueList.filteredOptions.length === 0 && valueSetList.filteredOptions.length === 0\"\n                >\n                    Select All\n                </button>\n                <button type=\"button\" class=\"btn-text-link\" (click)=\"selectNone()\" [disabled]=\"!isAnySelected()\">Select None</button>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"list-container\" #listContainer>\n        <!-- Valuesets -->\n        @if (valueSetList.isActive && (valueSetList.loadingOptions | async)) {\n        <div class=\"loading-list\"><hc-progress-dots></hc-progress-dots></div>\n        } @if (shouldShowList(valueSetList) && !(valueSetList.loadingOptions | async)) {\n        <table class=\"hc-table hc-table-small valueset-table\">\n            <tbody>\n                <!-- Header, shown when both values and valuesets are sitting in list at same time -->\n                @if (shouldShowList(valueSetList) && shouldShowList(valueList)) {\n                <tr><th colspan=\"2\">Value Sets</th></tr>\n                }\n                <!-- Value set List Items -->\n                @for (item of valueSetList.filteredOptions; track item; let idx = $index) {\n                <tr\n                    (mousedown)=\"preventIEHighlightBug()\"\n                    (click)=\"onItemClicked($event, idx, valueSetList, item)\"\n                    (dblclick)=\"onItemDoubleClicked($event, valueSetList, item)\"\n                    [ngClass]=\"{'hc-row-selected selected': item.selected}\"\n                    class=\"valueset-option value-option-row\"\n                >\n                    <td>\n                        <div>\n                            <span class=\"valueset-value-toggle\" (click)=\"onValuesetCaretClicked($event, item)\">\n                                <hc-icon\n                                    hcIconSm\n                                    class=\"values-caret\"\n                                    [ngClass]=\"{'values-caret-showing-values': item.showValues}\"\n                                    fontIcon=\"hc-picklist-old-toggle-caret\"\n                                ></hc-icon>\n                                <hc-icon\n                                    hcIconSm\n                                    class=\"vs-folder\"\n                                    [fontIcon]=\"item.showValues ? 'hc-picklist-old-toggle-open' : 'hc-picklist-old-toggle-closed'\"\n                                ></hc-icon>\n                            </span>\n                            <!-- TODO: more deets for the valueset -->\n                            <span class=\"vs-title\">{{ item.option.title || 'Untitled' }} ({{ item.option.subValueCount }})</span>\n                        </div>\n                        <div>\n                            <!-- Value set Values List (closed by default) -->\n                            @if (item.showValues) {\n                            <table class=\"valueset-sublist-table hc-table\">\n                                <tbody>\n                                    @if (item.loadingValues) {\n                                    <tr class=\"loading-subvals\"><hc-progress-dots></hc-progress-dots></tr>\n                                    } @for (subItem of item.subValuesSelectList.filteredOptions; track subItem; let idx = $index) {\n                                    <tr\n                                        (mousedown)=\"preventIEHighlightBug()\"\n                                        (click)=\"onItemClicked($event, idx, item.subValuesSelectList, subItem)\"\n                                        (dblclick)=\"onItemDoubleClicked($event, item.subValuesSelectList, subItem)\"\n                                        class=\"value-option-row hc-tr\"\n                                        [ngClass]=\"{'hc-row-selected': subItem.selected}\"\n                                    >\n                                        <td>\n                                            @if (codeIsSignificant) {\n                                            <span class=\"valueset-code\">{{ subItem.option.code }}</span>\n                                            }\n                                            <span>{{ subItem.option.title || 'Untitled' }}</span>\n                                        </td>\n                                    </tr>\n                                    }\n                                </tbody>\n                            </table>\n                            }\n                        </div>\n                    </td>\n                </tr>\n                }\n                <!-- Load More link for value sets, available when paging -->\n                @if (isPaged && optionsShowingCount < optionsAvailableCount) {\n                <tr class=\"text-center value-option-row load-more-row\">\n                    @if (!(valueSetList.appendingOptions | async)) {\n                    <a class=\"load-more-link text-link\" (click)=\"triggerLoadMore('valuesets')\">Load More</a>\n                    } @if (valueSetList.appendingOptions | async) {\n                    <hc-progress-dots></hc-progress-dots>\n                    }\n                </tr>\n                }\n            </tbody>\n        </table>\n        }\n\n        <!-- Values -->\n        @if (valueList.isActive && (valueList.loadingOptions | async)) {\n        <div class=\"loading-list\"><hc-progress-dots></hc-progress-dots></div>\n        } @if (shouldShowList(valueList) && !(valueList.loadingOptions | async)) {\n        <table class=\"hc-table hc-table-small\" [ngClass]=\"{'no-code-column': !codeIsSignificant}\">\n            <tbody>\n                <!-- Header, shown when both values and valuesets are sitting in list at same time -->\n                @if (shouldShowList(valueSetList) && shouldShowList(valueList)) {\n                <tr><th colspan=\"2\">Individual Values</th></tr>\n                }\n                <!-- Show when user clicked \"select all\", and there are more options on server, but too many to load in at once -->\n                @if (showTooManyToSelectAllMsg) {\n                <tr class=\"value-option-row select-all-matches-row\">\n                    <td colspan=\"2\">\n                        <span class=\"hc-type-bold\">{{ valueList.selectedOptions.size }} Selected.</span>\n                        <span>Too many results to select all.</span>\n                    </td>\n                </tr>\n                }\n                <!-- Value List Items -->\n                @for (item of valueList.filteredOptions; track item; let idx = $index) {\n                <tr\n                    (mousedown)=\"preventIEHighlightBug()\"\n                    (click)=\"onItemClicked($event, idx, valueList, item)\"\n                    (dblclick)=\"onItemDoubleClicked($event, valueList, item)\"\n                    class=\"value-option-row\"\n                    [ngClass]=\"{'hc-row-selected': item.selected}\"\n                >\n                    @if (codeIsSignificant) {\n                    <td class=\"col-code\">{{ item.option.code }}</td>\n                    }\n                    <td class=\"col-title\">{{ item.option.title || 'Untitled' }}</td>\n                </tr>\n                }\n                <!-- Load More link for values, available when paging -->\n                @if (isPaged && optionsShowingCount < optionsAvailableCount) {\n                <tr class=\"text-center value-option-row load-more-row\">\n                    @if (!(valueList.appendingOptions | async)) {\n                    <a class=\"load-more-link text-link\" (click)=\"triggerLoadMore('values')\">Load More</a>\n                    } @if (valueList.appendingOptions | async) {\n                    <hc-progress-dots></hc-progress-dots>\n                    }\n                </tr>\n                }\n            </tbody>\n        </table>\n        }\n\n        <!-- Empty table -->\n        @if (!shouldShowList(valueSetList) && !shouldShowList(valueList) && !(valueList.loadingOptions | async) &&\n        !(valueSetList.loadingOptions | async)) {\n        <div class=\"empty-table-msg hc-type-em\">\n            @if (listIsFilteredToEmpty(valueList) || listIsFilteredToEmpty(valueSetList)) {\n            <span>Nothing matches your search.</span>\n            } @else {\n            {{ emptyMsg }}\n            }\n            <span></span>\n        </div>\n        }\n    </div>\n</div>\n","import {Component, EventEmitter, forwardRef, Input, Output, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {PicklistPaneComponent} from './pane/picklist-pane.component';\nimport {IPicklistOptions, IPicklistSettings, IValueOption, PicklistOptionsSource, PicklistSettings} from './picklist-old.model';\n\nconst supportedSortModes = ['asc', 'desc', 'none'];\nexport function validateSortInput(inputStr: string): void {\n    if (supportedSortModes.indexOf(inputStr) < 0) {\n        throw Error('Unsupported sort input value: ' + inputStr);\n    }\n}\n\n@Component({\n    selector: 'hc-picklist-old',\n    templateUrl: 'picklist-old.component.html',\n    styleUrls: ['picklist-old.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => PicklistOldComponent),\n            multi: true\n        }\n    ],\n    standalone: false\n})\nexport class PicklistOldComponent implements ControlValueAccessor {\n    /**\n     * Settings for the picklist. Internally, this will trigger a call to `reset()`.\n     */\n    @Input()\n    public set settings(settings: PicklistSettings) {\n        this.reset(settings);\n    }\n    public get settings(): PicklistSettings {\n        return this.picklistSettings;\n    }\n    /**\n     * An array of unique strings to be used as the picklist options.\n     */\n    @Input()\n    public set simpleOptions(options: Array<string> | null) {\n        this.updateStateFromStringOptions(options);\n    }\n    public get simpleOptions(): Array<string> | null {\n        return this.stringOptions;\n    }\n    /**\n     * Set to true to show text in the header. *Defaults to true.*\n     */\n    @Input()\n    public set showHeaderText(shouldShow: boolean) {\n        this.update({showHeaderText: shouldShow});\n    }\n    public get showHeaderText(): boolean {\n        return this.picklistSettings.showHeaderText;\n    }\n    /**\n     * Text for left header. *Defaults to \"Available\".*\n     */\n    @Input()\n    public set leftHeaderText(text: string) {\n        this.update({leftHeaderText: text});\n    }\n    public get leftHeaderText(): string {\n        return this.picklistSettings.leftHeaderText;\n    }\n    /**\n     * Text for right header. *Defaults to \"Selected\".*\n     */\n    @Input()\n    public set rightHeaderText(text: string) {\n        this.update({rightHeaderText: text});\n    }\n    public get rightHeaderText(): string {\n        return this.picklistSettings.rightHeaderText;\n    }\n\n    /**\n     * How to sort options in the pane. Options: `asc` | `desc` | `none`; *Defaults to `none`.*\n     */\n    @Input()\n    public set sort(sort: string) {\n        validateSortInput(sort);\n        this.update({sort: sort});\n    }\n    public get sort(): string {\n        return this.picklistSettings.sort;\n    }\n\n    @ViewChild('availableList', {static: true})\n    public _available: PicklistPaneComponent | undefined;\n    @ViewChild('confirmedList', {static: true})\n    public _confirmed: PicklistPaneComponent | undefined;\n    /** Fired when a change is made to the picklist selection. */\n    @Output()\n    public changed = new EventEmitter();\n    private picklistSettings = new PicklistSettings();\n    public get _leftToRightMoveBtnIsDisabled(): boolean {\n        return this._available ? !this._available.isAnySelected() : false;\n    }\n    private stringOptions: Array<string> | null = null;\n\n    /**\n     * Current selected value of the picklist. Will be either `IPicklistOptions` or `string[]` depending on the type of options provided.\n     */\n    public set value(model: IPicklistOptions | string[]) {\n        const selectedValues: IPicklistOptions = {values: [], valueSets: []};\n        if (this.picklistModelisArray(model)) {\n            const selected = this.convertStringsToValueOptions(model);\n            selectedValues.values = selected || [];\n        } else {\n            selectedValues.values = model.values || [];\n            selectedValues.valueSets = model.valueSets || [];\n        }\n        this.update({selected: selectedValues});\n    }\n    public get value(): IPicklistOptions | string[] {\n        if (this.stringOptions) {\n            return this.picklistSettings.selected.values.map(v => v.title);\n        } else {\n            return this.picklistSettings.selected;\n        }\n    }\n    public onChange: (value: unknown) => void = () => undefined;\n    public onTouch: () => unknown = () => undefined;\n    public registerOnChange(fn: (value: unknown) => void): void {\n        this.onChange = fn;\n    }\n    public registerOnTouched(fn: () => unknown): void {\n        this.onTouch = fn;\n    }\n    public writeValue(value: IPicklistOptions | string[]): void {\n        if (value) {\n            this.value = value;\n        }\n    }\n\n    /**\n     * Will update the picklist with the given settings, maintaining any previous settings that have not been overridden.\n     */\n    public update(settings: IPicklistSettings): void {\n        const updatedSettings = Object.assign(this.picklistSettings, settings);\n        this.reset(updatedSettings);\n    }\n\n    /**\n     * Will reset the picklist settings with the given settings. (Clears out any previous settings.)\n     */\n    public reset(settings: IPicklistSettings = new PicklistSettings()): void {\n        this.picklistSettings = Object.assign(new PicklistSettings(), settings);\n        this.resetPanes();\n        this.setActiveValueType(this.picklistSettings.useValuesets ? 'valueSets' : 'values');\n        this.applyChangeToModel();\n    }\n\n    /**\n     * Will change the active tab. (Will do nothing if `settings.useValuesets` is false.)\n     */\n    public setActiveValueType(type: 'values' | 'valueSets'): void {\n        if (!this._available) {\n            console.warn('Available picklist pane not available yet.');\n            return;\n        }\n        if (!this.settings.useValuesets) {\n            type = 'values';\n        }\n\n        this._available.valueList.isActive = type === 'values';\n        this._available.valueSetList.isActive = type === 'valueSets';\n        this._available.selectNone();\n        this._available.scrollToTop();\n    }\n\n    /**\n     * Will move all selected items from the given pane into its companion pane. Used internally by the left and right arrow buttons.\n     * @param pane the pane from which we are moving items out of\n     */\n    public moveSelectedItems(pane: PicklistPaneComponent): void {\n        const shouldBreakValuesets = pane === this._confirmed;\n        const selectedOptions = pane.listService.moveOutSelectedOptions(shouldBreakValuesets);\n        if (pane.companion) {\n            pane.companion.listService.addOptions(selectedOptions);\n        } else {\n            console.warn('This pane does not have a companion pane to move the select options in to.');\n        }\n        pane.filterService.reloadIfEmpty();\n        this.applyChangeToModel();\n    }\n\n    private updateStateFromStringOptions(options: Array<string> | null) {\n        const valueOptions = this.convertStringsToValueOptions(options);\n        this.stringOptions = options;\n        this.update({options: {values: valueOptions || []}});\n    }\n\n    private resetPanes() {\n        if (!(this._available && this._confirmed)) {\n            console.warn('Picklist panes not available yet.');\n            return;\n        }\n\n        const confirmedSource = new PicklistOptionsSource();\n        confirmedSource.values = this.picklistSettings.selected.values.slice(0);\n        confirmedSource.valueSets = this.picklistSettings.selected.valueSets.slice(0);\n        confirmedSource.getValuesForValueset = this.picklistSettings.options.getValuesForValueset;\n        this._confirmed.reset(confirmedSource, this.picklistSettings, this._available, false);\n\n        const availableSource = Object.assign(new PicklistOptionsSource(), this.picklistSettings.options);\n        this._available.reset(availableSource, this.picklistSettings, this._confirmed, true);\n    }\n\n    private applyChangeToModel() {\n        if (!(this._available && this._confirmed)) {\n            console.warn('Picklist panes not available yet.');\n            return;\n        }\n\n        this.picklistSettings.selected.values.length = 0;\n        this.picklistSettings.selected.valueSets.length = 0;\n        this._confirmed.valueList.options.forEach(e => this.picklistSettings.selected.values.push(e.option));\n        this._confirmed.valueSetList.options.forEach(e => this.picklistSettings.selected.valueSets.push(e.option));\n\n        this.changed.emit();\n        this.onChange(this.value);\n        this.onTouch();\n    }\n\n    private convertStringsToValueOptions(vals: Array<string> | null): IValueOption[] | null {\n        return vals ? vals.map(o => ({code: `${o}`, title: `${o}`})) : null;\n    }\n\n    private picklistModelisArray(model: IPicklistOptions | Array<string>): model is Array<string> {\n        const array = <Array<string>>model;\n        return array && array.length !== undefined;\n    }\n}\n","<div class=\"hc-picklist-old\">\n    <div class=\"pane-wrap\">\n        <div class=\"pane-header\">\n            @if (settings.showHeaderText) {\n            <h2>{{ settings.leftHeaderText }}</h2>\n            } @if (settings.useValuesets) {\n            <div class=\"pane-tabs hc-tab-bar-horizontal\">\n                <a\n                    title=\"Search for Value Sets\"\n                    (click)=\"setActiveValueType('valueSets')\"\n                    class=\"hc-tab-horizontal\"\n                    [ngClass]=\"{active: _available?.valueSetList.isActive}\"\n                >\n                    Value Sets\n                </a>\n                <a\n                    title=\"Search for Values\"\n                    (click)=\"setActiveValueType('values')\"\n                    class=\"hc-tab-horizontal\"\n                    [ngClass]=\"{active: _available?.valueList.isActive}\"\n                >\n                    Values\n                </a>\n            </div>\n            }\n        </div>\n        <hc-picklist-pane\n            #availableList\n            emptyMsg=\"No options available.\"\n            (moveSelectedItems)=\"moveSelectedItems($event)\"\n        ></hc-picklist-pane>\n    </div>\n\n    <div class=\"move-btns-wrap\">\n        <button\n            hc-button\n            color=\"primary-alt\"\n            type=\"button\"\n            name=\"addBtn\"\n            (click)=\"moveSelectedItems(availableList)\"\n            [disabled]=\"_leftToRightMoveBtnIsDisabled\"\n        >\n            <hc-icon hcIconSm fontIcon=\"hc-picklist-old-ico-arrow-right\"></hc-icon>\n        </button>\n        <button\n            hc-button\n            color=\"primary-alt\"\n            type=\"button\"\n            name=\"removeBtn\"\n            (click)=\"moveSelectedItems(confirmedList)\"\n            [disabled]=\"!_confirmed?.isAnySelected()\"\n        >\n            <hc-icon hcIconSm fontIcon=\"hc-picklist-old-ico-arrow-left\"></hc-icon>\n        </button>\n    </div>\n\n    <div class=\"pane-wrap\">\n        <div class=\"pane-header\">\n            @if (settings.showHeaderText) {\n            <h2>{{ settings.rightHeaderText }}</h2>\n            }\n        </div>\n        <hc-picklist-pane #confirmedList emptyMsg=\"No options selected.\" (moveSelectedItems)=\"moveSelectedItems($event)\"></hc-picklist-pane>\n    </div>\n</div>\n","import {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {CommonModule} from '@angular/common';\nimport {PicklistPaneComponent} from './pane/picklist-pane.component';\nimport {PicklistOldComponent} from './picklist-old.component';\nimport {ButtonModule} from '../button/button.module';\nimport {IconModule} from '../icon/icon.module';\nimport {InputModule} from '../input/input.module';\nimport {FormFieldModule} from '../form-field/hc-form-field.module';\nimport {ProgressIndicatorsModule} from '../progress-indicators/progress-indicators.module';\n\nexport {PicklistPaneComponent} from './pane/picklist-pane.component';\nexport {PicklistOldComponent} from './picklist-old.component';\nexport {\n    IPicklistSettings,\n    IValueOption,\n    IValueSetOption,\n    IPicklistOptions,\n    IPicklistOptionsSource,\n    PicklistRemoteQueryOptions,\n    IPicklistRemoteQueryResponse,\n    IPageSettings,\n    IPagedCollection\n} from './picklist-old.model';\n\n@NgModule({\n    imports: [CommonModule, FormsModule, ButtonModule, IconModule, InputModule, FormFieldModule, ProgressIndicatorsModule],\n    declarations: [PicklistPaneComponent, PicklistOldComponent],\n    exports: [PicklistPaneComponent, PicklistOldComponent]\n})\nexport class PicklistOldModule {}\n","import { Directive, ElementRef, Input, OnChanges, TemplateRef } from '@angular/core';\nimport { escapeHTML } from '../util';\n\n/** @docs-private */\n@Directive({\n    selector: '[hcPickItemLabel]',\n    standalone: false\n})\nexport class PickItemLabelDirective implements OnChanges {\n    @Input() hcPickItemLabel: string;\n    @Input() escape = true;\n\n    constructor(private element: ElementRef<HTMLElement>) { }\n\n    ngOnChanges(): void {\n        this.element.nativeElement.innerHTML = this.escape ?\n            escapeHTML(this.hcPickItemLabel) :\n            this.hcPickItemLabel;\n    }\n}\n\n/** @docs-private */\n@Directive({\n    selector: '[hcPaneHeaderLeftTmp]',\n    standalone: false\n})\nexport class PickPaneHeaderLeftTemplateDirective {\n    constructor(public template: TemplateRef<unknown>) { }\n}\n\n/** @docs-private */\n@Directive({\n    selector: '[hcPaneHeaderRightTmp]',\n    standalone: false\n})\nexport class PickPaneHeaderRightTemplateDirective {\n    constructor(public template: TemplateRef<unknown>) { }\n}\n\n/** @docs-private */\n@Directive({\n    selector: '[hcPickOptionTmp]',\n    standalone: false\n})\nexport class PickOptionTemplateDirective {\n    constructor(public template: TemplateRef<unknown>) { }\n}\n\n/** @docs-private */\n@Directive({\n    selector: '[hcPickOptgroupTmp]',\n    standalone: false\n})\nexport class PickOptgroupTemplateDirective {\n    constructor(public template: TemplateRef<unknown>) { }\n}\n\n/** @docs-private */\n@Directive({\n    selector: '[hcPaneToolbarTmp]',\n    standalone: false\n})\nexport class PickPaneToolbarTemplateDirective {\n    constructor(public template: TemplateRef<unknown>) { }\n}\n\n/** @docs-private */\n@Directive({\n    selector: '[hcPaneFooterTmp]',\n    standalone: false\n})\nexport class PickPaneFooterTemplateDirective {\n    constructor(public template: TemplateRef<unknown>) { }\n}\n\n/** @docs-private */\n@Directive({\n    selector: '[hcPickCustomItemTmp]',\n    standalone: false\n})\nexport class PickCustomItemTemplateDirective {\n    constructor(public template: TemplateRef<unknown>) { }\n}\n","import {\n    AfterViewChecked,\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    Input,\n    OnChanges,\n    OnDestroy,\n    SimpleChanges\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nexport interface PickOptionStateChange { value: boolean; disabled: boolean; label?: string; }\n\n/** Component used to add options to a picklist in declarative way. `<hc-pick-option>` */\n@Component({\n    selector: 'hc-pick-option',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `<ng-content></ng-content>`,\n    standalone: false\n})\nexport class PickOptionComponent implements OnChanges, AfterViewChecked, OnDestroy {\n    /** Value for this option. */\n    @Input() value: boolean;\n    /** If true, the option cannot be selected. */\n    @Input() set disabled(value: boolean) { this._disabled = this._isDisabled(value); }\n    get disabled(): boolean { return this._disabled; }\n\n    readonly _stateChange$ = new Subject<PickOptionStateChange>();\n\n    private _disabled = false;\n    private _previousLabel: string;\n\n    constructor(\n        /** Reference to underlying HTML element. */\n        public elementRef: ElementRef<HTMLElement>) { }\n\n    /** Getter. Returns the text used as the label for this option. */\n    get label(): string { return (this.elementRef.nativeElement.textContent || '').trim(); }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes.disabled) {\n            this._stateChange$.next({\n                value: this.value,\n                disabled: this._disabled\n            });\n        }\n    }\n\n    ngAfterViewChecked(): void {\n        if (this.label !== this._previousLabel) {\n            this._previousLabel = this.label;\n            this._stateChange$.next({\n                value: this.value,\n                disabled: this._disabled,\n                label: this.elementRef.nativeElement.textContent || undefined\n            });\n        }\n    }\n\n    ngOnDestroy(): void {\n        this._stateChange$.complete();\n    }\n\n    private _isDisabled(value) {\n        return value != null && `${value}` !== 'false';\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { PickPaneComponent } from './pane/pick-pane.component';\nimport { isDefined } from '../util';\n\n@Injectable()\n/** @docs-private */\nexport class PicklistService {\n    availablePane: PickPaneComponent;\n    selectedPane: PickPaneComponent;\n    public reset(availablePane: PickPaneComponent, selectedPane: PickPaneComponent): void {\n        this.availablePane = availablePane;\n        this.selectedPane = selectedPane;\n    }\n\n    /** When the option/items are updated, update corresponding selected options in the selected pane.\n     *  Make sure they aren't duplicated in the available pane */\n    public mapIncomingOptionsToSelected(bindValue?: string): void {\n        if (!isDefined(this.availablePane) || !isDefined(this.selectedPane)) { return; }\n        const selectedItems = this.selectedPane.itemsList.items.filter(i => !i.isParent);\n        selectedItems.forEach(selected => {\n            const value = bindValue ?\n                this.selectedPane.itemsList.resolveNested(selected.value, bindValue) : selected.value;\n            const item = isDefined(value) ? this.availablePane.itemsList.findOption(value) : null;\n            if (item) { this.availablePane.itemsList.removeOption(item); }\n            this.selectedPane.itemsList.removeOption(selected);\n            this.selectedPane.itemsList.addOption(item || selected);\n        });\n        this.availablePane.itemsList.reIndex();\n        this.selectedPane.itemsList.reIndex();\n    }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { InjectionToken } from '@angular/core';\nimport { SelectionModelFactory } from './pane/selection-model';\n\n/** @docs-private */\nexport class PickOption {\n    [name: string]: unknown;\n    /** zero-based position in the list */\n    index?: number;\n    /** used as the id for the DOM element representing this option */\n    htmlId?: string;\n    /** true if the option is highlighted in its pane */\n    selected?: boolean;\n    /** true if the option should not be available for interaction */\n    disabled?: boolean;\n    /** true if the option currently has focus in the list */\n    marked?: boolean;\n    /** the display name for the option */\n    label?: string;\n    /** the option given to the form or NgModel for this option */\n    value?: any;\n    /** reference to this option's parent option */\n    parent?: PickOption;\n\n    // for HcOption groups only\n    /** identifier for the group. typically a string, but can be an HcOption if items provided to the\n     * component were grouped before being passed in */\n    groupKey?: string | PickOption;\n    /** collection of nested HcOptions */\n    children?: PickOption[];\n    /** true if this group should be collapsed in the UI*/\n    isClosed = false;\n\n    get isChild(): boolean { return !!this.parent; }\n    get isParent(): boolean { return !!this.children; }\n\n    constructor(config: IPickOption) {\n        Object.assign(this, config);\n    }\n\n    toggleOpenState(event: MouseEvent): void {\n        event.stopPropagation();\n        this.isClosed = !this.isClosed;\n    }\n}\n\nexport type IPickOption = Partial<PickOption>;\n\nexport enum KeyCode {\n    Tab = 9,\n    Enter = 13,\n    Esc = 27,\n    Space = 32,\n    ArrowUp = 38,\n    ArrowDown = 40,\n    Backspace = 8\n}\n\nexport const SELECTION_MODEL_FACTORY = new InjectionToken<SelectionModelFactory>('ng-select-selection-model');\nexport type AddCustomItemFn = ((term: string) => any | Promise<any>);\nexport type CompareWithFn = (a: any, b: any) => boolean;\nexport type GroupValueFn = (key: string | Record<string, any>, children: any[]) => string | Record<string, any>;\nexport type GroupByFn = (item: any) => any;\nexport type SortFn = (a: PickOption, b: PickOption) => number;\nexport type SearchFn = (term: string, item: any) => boolean;\nexport type TrackByFn = <U>(index: number, item: U) => U;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { PickPaneComponent } from './pick-pane.component';\nimport { GroupByFn, PickOption } from '../pick.types';\nimport { PickSelectionModel } from './selection-model';\nimport { isDefined, isFunction, isObject } from '../../util';\n\nexport function newId(): string {\n    // First character is an 'a', it's good practice for unique id to begin with a letter\n    return 'axxxxxxxxxxx'.replace(/[x]/g, function () {\n        const val = Math.random() * 16 | 0;\n        return val.toString(16);\n    });\n}\n\n/** Keys may be a unique string or an HcOption itself. HcOption will be used as a key when the developer provides pregrouped options. */\ntype ChildrenByGroupKeyMap = Map<string | PickOption, Array<PickOption>>;\n\n/** Helps manage the state of the list */\nexport class ItemsList {\n    constructor(private _pickPane: PickPaneComponent, private _selectionModel: PickSelectionModel) {}\n\n    get itemsShownCountStr(): string { return this._itemsShownCountStr; }\n    private _itemsShownCountStr = '';\n\n    get itemsTotalCountStr(): string { return this._itemsTotalCountStr; }\n    private _itemsTotalCountStr = '';\n\n    get itemsTotalCount(): number { return this._itemsTotalCount; }\n    private _itemsTotalCount = 0;\n\n    /** containts all items in the list, including parent items */\n    get items(): Array<PickOption> { return this._items; }\n    private _items = new Array<PickOption>();\n\n    get filteredItems(): Array<PickOption> { return this._filteredItems; }\n    private _filteredItems = new Array<PickOption>();\n\n    private _optionGroups = new Array<PickOption>();\n    private readonly DEFAULT_GROUP_KEY = 'HC_PICK_PANE_DEFAULT_GROUP_KEY';\n    private _markedIndex = -1;\n\n    /** Represents the \"focused\" item */\n    get markedIndex(): number { return this._markedIndex; }\n    /** Return true if some item in the list should have focus. -1 means nothing is focused. */\n    get hasMarkedItem(): boolean { return this._markedIndex !== -1; }\n    /** The highlighted options in this list */\n    get selectedItems(): Array<PickOption> { return this._selectionModel.value; }\n    /** The HcOption that currently has focus */\n    get markedItem(): PickOption { return this._filteredItems[this._markedIndex]; }\n    /** The last option in the list to be highlighted */\n    get lastSelectedItem(): PickOption | null {\n        let i = this.selectedItems.length - 1;\n        for (; i >= 0; i--) {\n            const item = this.selectedItems[i];\n            if (!item.disabled) {\n                return item;\n            }\n        }\n        return null;\n    }\n\n    /** Remove all options from the list */\n    clearList(): void {\n        this._items = [];\n        this._filteredItems = [];\n        this._optionGroups = [];\n    }\n\n    /** Converts an array of raw values into HcOptions and set them on the list */\n    setItems(items: any[]): void {\n        const hcOptionItems = items.map((item, index) => this._createHcOption(item, index));\n        this._optionGroups = this._groupItems(hcOptionItems, this._pickPane.groupBy);\n        this._items = this.sortAndIndex(this._optionGroups);\n        this._filteredItems = [...this._items];\n        this.updateCounts();\n    }\n\n    /** Reset the indexes on each HcOption */\n    reIndex(): void {\n        this._items.forEach((o, index) => o.index = index);\n    }\n\n    /** Highlight a given option in the list */\n    select(item: PickOption): void {\n        if (item.selected) { return; }\n        if (item.children) {\n            const availableChildren = item.children.filter(i => this._filteredItems.some(fi => fi.htmlId === i.htmlId && !i.disabled));\n            availableChildren.forEach(child => this._selectionModel.select(child));\n        } else {\n            this._selectionModel.select(item);\n        }\n    }\n\n    /** Remove highlight from a given option in the list */\n    unselect(item: PickOption): void {\n        if (!item.selected) { return; }\n        this._selectionModel.unselect(item);\n    }\n\n    /**\n     * Find the option in this list for a given value\n     */\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n    findOption(value: any): PickOption | undefined {\n        let findBy: (item: PickOption) => boolean;\n        if (this._pickPane.compareWith) {\n            findBy = item => this._pickPane.compareWith(item.value, value);\n        } else if (this._pickPane.bindValue) {\n            findBy = item => !item.children && this.resolveNested(item.value, this._pickPane.bindValue) === value;\n        } else {\n            findBy = item => item.value === value ||\n                !item.children && !!item.label && item.label === this.resolveNested(value, this._pickPane.bindLabel);\n        }\n        return this._items.filter(i => !i.isParent).find(item => findBy(item));\n    }\n\n    /** Adds an existing HcOption to the list. */\n    addOption(option: PickOption): void {\n        if (option.isParent) { throw new Error(`Trying to add an option that has children: ${option}`); }\n        if (!option.parent) { throw new Error(`Trying to add an option that does not have a parent: ${option}`); }\n        const parentKey = option.parent.groupKey;\n        const parentGroup = this._optionGroups.find(pg => pg.groupKey === parentKey);\n        if (parentGroup) {\n            parentGroup?.children?.push(option);\n            option.parent = parentGroup;\n        } else {\n            const newParentGroup = new PickOption({\n                groupKey: parentKey,\n                label: option.parent.label,\n                children: [option],\n                parent: undefined,\n                disabled: option.parent.disabled,\n                htmlId: newId(),\n                isClosed: option.parent.isClosed,\n                value: option.parent.value\n            });\n            option.parent = newParentGroup;\n            this._optionGroups.push(newParentGroup);\n        }\n\n        this._items = this.sortAndIndex(this._optionGroups);\n    }\n\n    /** Removes an existing HcOption from the list */\n    removeOption(option: PickOption): void {\n        if (!option.parent) { throw new Error(`Trying to remove an option that does not have a parent: ${option}`); }\n        this._deleteItem(option, this._items);\n\n        const parentGroup = this._optionGroups.find(pg => pg.groupKey === option?.parent?.groupKey);\n        this._deleteItem(option, parentGroup?.children || []);\n        if (parentGroup?.children?.length === 0) {\n            this._deleteItem(parentGroup, this._items);\n            this._deleteItem(parentGroup, this._optionGroups);\n        }\n\n        this._items = this.sortAndIndex(this._optionGroups);\n    }\n\n    /** Create a new HcOption and add it to the list from a given raw value. Also returns the newly created option */\n    addNewOption(item: unknown): PickOption {\n        const newOption = this._createHcOption(item);\n        this._groupItems([newOption], this._pickPane.groupBy);\n        this.addOption(newOption);\n        return newOption;\n    }\n\n    /** Maps the given raw value into an HcOption. */\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n    _createHcOption(item: any, index?: number): PickOption {\n        // $hcOptionLabel and $hcOptionValue will be used in the case of <hc-pick-option> components\n        const label = isDefined(item.$hcOptionLabel) ? item.$hcOptionLabel : this.resolveNested(item, this._pickPane.bindLabel);\n        const value = isDefined(item.$hcOptionValue) ? item.$hcOptionValue : item;\n        index = Number.isFinite(index) ? index : this._items.length;\n        return new PickOption({\n            index: index,\n            label: isDefined(label) ? label.toString() : '',\n            value: value,\n            disabled: item.disabled,\n            htmlId: `${this._pickPane.paneId}-${index}`,\n        });\n    }\n\n    private _deleteItem(item: PickOption, list: Array<PickOption>) {\n        const findIndexFunc = (i: PickOption) => i.index === item.index;\n        const indexToRemove = list.findIndex(findIndexFunc);\n        if (indexToRemove === -1) { console.error(`Couldn't find the item to remove: ${item}`); return; }\n        list.splice(indexToRemove, 1);\n    }\n\n    /** Create item groups. If we're not grouping, everything just gets placed in one default group. */\n    private _groupItems(items: Array<PickOption>, groupBy: string | GroupByFn | undefined): Array<PickOption> {\n        const childOptsGroupedByKey = this._groupBy(items, groupBy);\n        return this._createParentHcOptions(childOptsGroupedByKey);\n    }\n\n    /** If a sort function was provided, sort at the child and group level*/\n    private _sortOptions(groups: Array<PickOption>) {\n        if (!this._pickPane.sortFn) { return; }\n        groups.forEach(g => { g.children?.sort(this._pickPane.sortFn); });\n        groups.sort(this._pickPane.sortFn);\n\n        // if default group exists, sort it at the bottom\n        const defaultGroupIndex = groups.findIndex(g => g.groupKey === this.DEFAULT_GROUP_KEY);\n        if (defaultGroupIndex === -1) { return; }\n        const defaultGroup = groups.splice(defaultGroupIndex, 1);\n        groups.push(...defaultGroup);\n    }\n\n    /**\n     * Removed highlight from all items in the list.\n     * @param keepDisabled if true, don't deselect any options that are currently disabled\n    */\n    clearSelected(keepDisabled = false): void {\n        this._selectionModel.clear(keepDisabled);\n        this._items.forEach(item => {\n            item.selected = keepDisabled && item.selected && item.disabled;\n            item.marked = false;\n        });\n    }\n\n    /** Highlight all the items in the list */\n    selectAll(): void {\n        this._selectionModel.selectAll(this._filteredItems, this._pickPane.canSelectGroup);\n    }\n\n    /** Find an item in the list by its label */\n    findByLabel(term: string): PickOption | undefined {\n        term = term.toLocaleLowerCase();\n        return this.filteredItems.find(item => {\n            const label = item.label?.toLocaleLowerCase();\n            return label?.substr(0, term.length) === term;\n        });\n    }\n\n    /** Filter the options in the list with the given search term */\n    filter(term: string): void {\n        if (!term) { this.resetFilteredItems(); return; }\n        this._filteredItems = [];\n        term = this._pickPane.searchFn ? term : term.toLocaleLowerCase();\n        const searchFn = this._pickPane.searchFn || this._defaultSearchFn;\n\n        this._optionGroups.forEach(pg => {\n            const matchedItems = new Array<any>();\n            pg.children?.forEach(item => {\n                const searchItem = this._pickPane.searchFn ? item.value : item;\n                if (searchFn(term, searchItem)) {\n                    matchedItems.push(item);\n                }\n            });\n            if (matchedItems.length > 0) {\n                this._filteredItems.push(...[pg, ...matchedItems]);\n            }\n        });\n        this.updateCounts();\n    }\n\n    resetFilteredItemsForCustomOptionAdded(isRemoteFilter: boolean, searchTerm: string): void {\n        if (isRemoteFilter) {\n            this._filteredItems = [...this._items];\n            this.updateCounts();\n        } else {\n            this.filter(searchTerm);\n        }\n    }\n\n    /** Unfilter the list */\n    resetFilteredItems(): void {\n        if (this._filteredItems.length === this._items.length) { this.updateCounts(); return; }\n        this._filteredItems = [...this._items];\n        this.updateCounts();\n    }\n\n    /** Wipe out selection state and marked state, then mark the first selectable option */\n    resetListSelectionState(): void {\n        this.clearSelected();\n        this.markFirst();\n    }\n\n    /** Remove focus from any of the options */\n    unmark(): void {\n        this._markedIndex = -1;\n    }\n\n    /** Move focus up or down in the list */\n    markNextItem(stepIsDown: boolean): void {\n        this._stepToItem(stepIsDown ? 1 : -1);\n    }\n\n    /** Focus the given item in the list */\n    markItem(item: PickOption): void {\n        this._markedIndex = this._filteredItems.indexOf(item);\n    }\n\n    /** Focus on the last selected item, or the first item in the list */\n    markSelectedOrDefault(): void {\n        if (this._filteredItems.length === 0) { return; }\n        const lastMarkedIndex = this._getLastMarkedIndex();\n        if (lastMarkedIndex > -1) {\n            this._markedIndex = lastMarkedIndex;\n        } else {\n            this.markFirst();\n        }\n    }\n\n    /** Unmarks what ever is currently marked and then marks the first selectable item */\n    markFirst(): void {\n        this.unmark();\n        this.markNextItem(true);\n    }\n\n    /** Obtain a nested value from a given object. It could be a direct property, or a nested property */\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n    resolveNested(option: any, key: string): any {\n        if (!isObject(option)) { return option; }\n        if (!key || key.indexOf('.') === -1) {\n            return option[key];\n        } else {\n            const keys: string[] = key.split('.');\n            let value = option;\n            for (let i = 0, len = keys.length; i < len; ++i) {\n                if (value == null) {\n                    return null;\n                }\n                value = value[keys[i]];\n            }\n            return value;\n        }\n    }\n\n    /** Update the 'Showing x of y' counts */\n    updateCounts(): void {\n        this._itemsShownCountStr = this.filteredItems.filter(i => !i.isParent).length.toLocaleString();\n        this._itemsTotalCount = this.items.filter(i => !i.isParent).length;\n        this._itemsTotalCountStr = this._itemsTotalCount.toLocaleString();\n    }\n\n    /** If picklist is not configured with a search function, use this one. */\n    private _defaultSearchFn(searchTerm: string, opt: PickOption): boolean {\n        const label = opt.label?.toLocaleLowerCase() || \"\";\n        return label.indexOf(searchTerm) > -1;\n    }\n\n    /** Get index of an item a given number of steps above or below the current focus item */\n    private _getNextItemIndex(steps: number): number {\n        if (steps > 0) {\n            return (this._markedIndex === this._filteredItems.length - 1) ? 0 : (this._markedIndex + 1);\n        }\n        return (this._markedIndex <= 0) ? (this._filteredItems.length - 1) : (this._markedIndex - 1);\n    }\n\n    /** Move focus a certain number of steps above or below the current focused item */\n    private _stepToItem(steps: number) {\n        if (this._filteredItems.every(x => x.disabled)) { this.unmark(); return; }\n        this._markedIndex = this._getNextItemIndex(steps);\n        if (this.markedItem.disabled) { this._stepToItem(steps); }\n    }\n\n    /** Find the index of the item in the list was marked most recently */\n    private _getLastMarkedIndex(): number {\n        if (this._markedIndex > -1 && this.markedItem === undefined) { return -1; }\n\n        const selectedIndex = this._filteredItems.indexOf(this.lastSelectedItem as PickOption);\n        if (this.lastSelectedItem && selectedIndex < 0) { return -1; }\n        return Math.max(this.markedIndex, selectedIndex);\n    }\n\n    /** Group the items in the list as configured */\n    private _groupBy(items: Array<PickOption>, groupBy: string | GroupByFn | undefined): ChildrenByGroupKeyMap {\n        const groups: ChildrenByGroupKeyMap = new Map<string | PickOption, Array<PickOption>>();\n        if (items.length === 0) { return groups; }\n\n        // if not asked to group, everything goes into a hidden default group\n        if (!groupBy) { groups.set(this.DEFAULT_GROUP_KEY, items); return groups; }\n\n        // Check if items are already grouped by given key.\n        if (Array.isArray((items[0].value as Record<string, any>)?.[<string>groupBy])) {\n            for (const item of items) {\n                const children = ((item.value as Record<string, any>)?.[<string>groupBy] || []).map((x: unknown, index: number | undefined) => this._createHcOption(x, index));\n                groups.set(item, children);\n            }\n            return groups;\n        }\n\n        // Generate groups by given key or grouper function\n        const isFnKey = isFunction(this._pickPane.groupBy);\n        const keyFn = (item: PickOption) => {\n            const key = isFnKey ? (<GroupByFn>groupBy)(item.value) : (item.value as Record<string, any>)?.[<string>groupBy];\n            return isDefined(key) ? key : this.DEFAULT_GROUP_KEY;\n        };\n\n        // Group items by key.\n        for (const item of items) {\n            const key = keyFn(item);\n            const group = groups.get(key);\n            if (group) {\n                group.push(item);\n            } else {\n                groups.set(key, [item]);\n            }\n        }\n        return groups;\n    }\n\n    /** Creates parent HcOption as needed */\n    private _createParentHcOptions(groups: ChildrenByGroupKeyMap): Array<PickOption> {\n        const isGroupByFn = isFunction(this._pickPane.groupBy);\n        const parentOptions = new Array<PickOption>();\n        for (const key of Array.from(groups.keys())) {\n            const isObjectKey = isObject(key);\n            const parent = this.createOptionGroup(key, isObjectKey);\n            const keyForGroupVal = isGroupByFn ? this._pickPane.bindLabel : <string>this._pickPane.groupBy;\n            const groupValue = this._pickPane.groupValue || (() => {\n                if (isObjectKey) { return (<PickOption>key).value; }\n                return { [keyForGroupVal]: this.getStringForKey(key) };\n            });\n            const children = groups.get(key)?.map(x => {\n                x.parent = parent;\n                x.children = undefined;\n                return x;\n            });\n            parent.children = children;\n            parent.value = groupValue(key, children?.map(x => x.value) || []);\n            parentOptions.push(parent);\n        }\n        return parentOptions;\n    }\n\n    private createOptionGroup(key: string | PickOption, isObjectKey = false): PickOption {\n        return new PickOption({\n            groupKey: key,\n            label: isObjectKey ? '' : this.getStringForKey(key),\n            children: undefined,\n            parent: undefined,\n            disabled: !this._pickPane.canSelectGroup,\n            htmlId: newId(),\n            isClosed: !!this._pickPane.groupBy && this._pickPane.canCloseGroup && this._pickPane.closeGroupsByDefault\n        });\n    }\n\n    private getStringForKey(key: any) {\n        if (key === this.DEFAULT_GROUP_KEY) {\n            return this._pickPane.orphanItemsGroupName;\n        } else {\n            return key.toString();\n        }\n    }\n\n    private sortAndIndex(groups: Array<PickOption>): Array<PickOption> {\n        const flattenedSortedItems = new Array<PickOption>();\n        this._sortOptions(groups);\n\n        groups.forEach(group => {\n            let i = flattenedSortedItems.length;\n            group.index = i++;\n            flattenedSortedItems.push(group);\n            group.children?.forEach(childItem => {\n                childItem.index = i++;\n                flattenedSortedItems.push(childItem);\n            });\n        });\n\n        return flattenedSortedItems;\n    }\n}\n","import { Injectable } from '@angular/core';\nexport interface ItemsRangeResult {\n    scrollHeight: number;\n    topPadding: number;\n    start: number;\n    end: number;\n}\n\nexport interface PanelDimensions {\n    itemHeight: number;\n    panelHeight: number;\n    itemsPerViewport: number;\n}\n\n@Injectable()\n/** Performs calculations for virtual scrolling.\n * @docs-private\n*/\nexport class PickPaneListService {\n\n    private _dimensions: PanelDimensions = {\n        itemHeight: 0,\n        panelHeight: 0,\n        itemsPerViewport: 0\n    };\n\n    get dimensions(): PanelDimensions {\n        return this._dimensions;\n    }\n\n    calculateItems(scrollPos: number, itemsLength: number, buffer: number): ItemsRangeResult {\n        const d = this._dimensions;\n        const scrollHeight = d.itemHeight * itemsLength;\n\n        const scrollTop = Math.max(0, scrollPos);\n        const indexByScrollTop = scrollTop / scrollHeight * itemsLength;\n        let end = Math.min(itemsLength, Math.ceil(indexByScrollTop) + (d.itemsPerViewport + 1));\n\n        const maxStartEnd = end;\n        const maxStart = Math.max(0, maxStartEnd - d.itemsPerViewport);\n        let start = Math.min(maxStart, Math.floor(indexByScrollTop));\n\n        let topPadding = d.itemHeight * Math.ceil(start) - (d.itemHeight * Math.min(start, buffer));\n        topPadding = !isNaN(topPadding) ? topPadding : 0;\n        start = !isNaN(start) ? start : -1;\n        end = !isNaN(end) ? end : -1;\n        start -= buffer;\n        start = Math.max(0, start);\n        end += buffer;\n        end = Math.min(itemsLength, end);\n\n        return {\n            topPadding,\n            scrollHeight,\n            start,\n            end\n        };\n    }\n\n    setDimensions(itemHeight: number, panelHeight: number): void {\n        const itemsPerViewport = Math.max(1, Math.floor(panelHeight / itemHeight));\n        this._dimensions = {\n            itemHeight,\n            panelHeight,\n            itemsPerViewport\n        };\n    }\n\n    getScrollTo(itemTop: number, itemHeight: number, lastScroll: number): number | null {\n        const { panelHeight } = this.dimensions;\n        const itemBottom = itemTop + itemHeight;\n        const top = lastScroll;\n        const bottom = top + panelHeight;\n\n        if (panelHeight >= itemBottom && lastScroll === itemTop) {\n            return null;\n        }\n\n        if (itemBottom > bottom) {\n            return top + itemBottom - bottom;\n        } else if (itemTop <= top) {\n            return itemTop;\n        }\n\n        return null;\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Input,\n    NgZone,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Output,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { animationFrameScheduler, asapScheduler, fromEvent, Subject } from 'rxjs';\nimport { auditTime, takeUntil } from 'rxjs/operators';\nimport { PickPaneListService, PanelDimensions } from './pick-pane-list.service';\nimport { PickOption } from '../pick.types';\nimport { isDefined } from '../../util';\n\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n\n@Component({\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    selector: 'hc-pick-pane-list',\n    template: `\n        <div #scroll class=\"hc-pick-pane-list-items hc-pick-pane-list-scroll-host\">\n            <div #padding [class.hc-pick-pane-list-total-padding]=\"virtualScroll\"></div>\n            <div #content class=\"hc-pick-pane-list-scrollable-content\"\n                [class.hc-pick-pane-list-scrollable-content-virtual]=\"virtualScroll && items.length\">\n                    <ng-content></ng-content>\n            </div>\n        </div>\n    `,\n    standalone: false\n})\n/** Component that contains that displays options list and manages virtual scroll as needed.\n * @docs-private\n*/\nexport class PickPaneListComponent implements OnInit, OnChanges, OnDestroy {\n    @Input() items: PickOption[] = [];\n    @Input() markedItem: PickOption;\n    @Input() bufferAmount: number;\n    @Input() virtualScroll = false;\n    @Input() filterValue: string;\n    @Output() update = new EventEmitter<PickOption[]>();\n    @Output() scroll = new EventEmitter<{ start: number; end: number }>();\n    @Output() scrollToEnd = new EventEmitter<void>();\n    @ViewChild('content', { read: ElementRef, static: true }) contentElementRef: ElementRef;\n    @ViewChild('scroll', { read: ElementRef, static: true }) scrollElementRef: ElementRef;\n    @ViewChild('padding', { read: ElementRef, static: true }) paddingElementRef: ElementRef;\n\n    public readonly _panel: HTMLElement;\n    private readonly _destroy$ = new Subject<void>();\n    private _virtualPadding: HTMLElement;\n    private _scrollablePanel: HTMLElement;\n    private _contentPanel: HTMLElement;\n    private _scrollToEndFired = false;\n    private _updateScrollHeight = false;\n    private _lastScrollPosition = 0;\n\n    constructor(private _zone: NgZone, private _panelService: PickPaneListService, _elementRef: ElementRef) {\n        this._panel = _elementRef.nativeElement;\n    }\n\n    private _itemsLength: number;\n\n    private get itemsLength() {\n        return this._itemsLength;\n    }\n\n    private set itemsLength(value: number) {\n        if (value !== this._itemsLength) {\n            this._itemsLength = value;\n            this._onItemsLengthChanged();\n        }\n    }\n\n    private get _startOffset() {\n        if (this.markedItem) {\n            const { itemHeight, panelHeight } = this._panelService.dimensions;\n            const offset = (this.markedItem.index || 0) * itemHeight;\n            return panelHeight > offset ? 0 : offset;\n        }\n        return 0;\n    }\n\n    ngOnInit(): void {\n        this._virtualPadding = this.paddingElementRef.nativeElement;\n        this._scrollablePanel = this.scrollElementRef.nativeElement;\n        this._contentPanel = this.contentElementRef.nativeElement;\n        this._handleScroll();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes.items) {\n            const change = changes.items;\n            this._onItemsChange(change.currentValue, change.firstChange);\n        }\n    }\n\n    ngOnDestroy(): void {\n        this._destroy$.next();\n        this._destroy$.complete();\n        this._destroy$.unsubscribe();\n    }\n\n    scrollTo(option: PickOption, startFromOption = false): void {\n        if (!option) {\n            return;\n        }\n\n        const index = this.items.indexOf(option);\n        if (index < 0 || index >= this.itemsLength) {\n            return;\n        }\n\n        let scrollTo: number | null;\n        if (this.virtualScroll) {\n            const itemHeight = this._panelService.dimensions.itemHeight;\n            scrollTo = this._panelService.getScrollTo(index * itemHeight, itemHeight, this._lastScrollPosition);\n        } else {\n            const item: HTMLElement | null = this._panel.querySelector(`#${option.htmlId}`);\n            const lastScroll = startFromOption ? item?.offsetTop || 0 : this._lastScrollPosition;\n            scrollTo = this._panelService.getScrollTo(item?.offsetTop || 0, item?.clientHeight || 0, lastScroll);\n        }\n\n        if (scrollTo || scrollTo === 0) {\n            this._scrollablePanel.scrollTop = scrollTo;\n        }\n    }\n\n    scrollToCustomOption(): void {\n        const panel = this._scrollablePanel;\n        panel.scrollTop = panel.scrollHeight - panel.clientHeight;\n    }\n\n    public refreshListLayout(isInitialList: boolean): void {\n        if (this.virtualScroll) {\n            this._updateItemsRange(isInitialList);\n        } else {\n            this._setVirtualHeight();\n            this._updateItems(isInitialList);\n        }\n    }\n\n    private _handleScroll() {\n        this._zone.runOutsideAngular(() => {\n            fromEvent(this.scrollElementRef.nativeElement, 'scroll')\n                .pipe(takeUntil(this._destroy$), auditTime(0, SCROLL_SCHEDULER))\n                .subscribe((e: { path, composedPath, target }) => {\n                    const path = e.path || (e.composedPath && e.composedPath());\n                    const scrollTop = path.length === 0 ? e.target.scrollTop : path[0].scrollTop;\n                    this._onContentScrolled(scrollTop);\n                });\n        });\n    }\n\n    private _onItemsChange(items: PickOption[], firstChange: boolean) {\n        this.items = items || [];\n        this._scrollToEndFired = false;\n        this.itemsLength = items.length;\n\n        this.refreshListLayout(firstChange);\n    }\n\n    private _updateItems(firstChange: boolean) {\n        this.update.emit(this.items);\n        if (firstChange === false) {\n            return;\n        }\n\n        this._zone.runOutsideAngular(() => {\n            Promise.resolve().then(() => {\n                const panelHeight = this._scrollablePanel.clientHeight;\n                this._panelService.setDimensions(0, panelHeight);\n                this.scrollTo(this.markedItem, firstChange);\n            });\n        });\n    }\n\n    private _updateItemsRange(firstChange: boolean) {\n        this._zone.runOutsideAngular(() => {\n            this._measureDimensions().then(() => {\n                if (firstChange) {\n                    this._renderItemsRange(this._startOffset);\n                } else {\n                    this._renderItemsRange();\n                }\n            });\n        });\n    }\n\n    private _onContentScrolled(scrollTop: number) {\n        if (this.virtualScroll) {\n            this._renderItemsRange(scrollTop);\n        }\n        this._lastScrollPosition = scrollTop;\n        this._fireScrollToEnd(scrollTop);\n    }\n\n    private _updateVirtualHeight(height: number) {\n        if (this._updateScrollHeight) {\n            this._virtualPadding.style.height = `${height}px`;\n            this._updateScrollHeight = false;\n        }\n    }\n\n    private _setVirtualHeight() {\n        if (!this._virtualPadding) { return; }\n        this._virtualPadding.style.height = `0px`;\n    }\n\n    private _onItemsLengthChanged() {\n        this._updateScrollHeight = true;\n    }\n\n    private _renderItemsRange(scrollTop: number | null = null) {\n        if (scrollTop && this._lastScrollPosition === scrollTop) { return; }\n\n        scrollTop = scrollTop || this._scrollablePanel.scrollTop;\n        const range = this._panelService.calculateItems(scrollTop, this.itemsLength, this.bufferAmount);\n        this._updateVirtualHeight(range.scrollHeight);\n        this._contentPanel.style.transform = `translateY(${range.topPadding}px)`;\n\n        this._zone.run(() => {\n            this.update.emit(this.items.slice(range.start, range.end));\n            this.scroll.emit({ start: range.start, end: range.end });\n        });\n\n        if (isDefined(scrollTop) && this._lastScrollPosition === 0) {\n            this._scrollablePanel.scrollTop = scrollTop;\n            this._lastScrollPosition = scrollTop;\n        }\n    }\n\n    private _measureDimensions(): Promise<PanelDimensions> {\n        if (this._panelService.dimensions.itemHeight > 0 || this.itemsLength === 0) {\n            return Promise.resolve(this._panelService.dimensions);\n        }\n\n        const [first] = this.items.filter(i => !i.isParent);\n        this.update.emit([first]);\n\n        return Promise.resolve().then(() => {\n            const option = this._panel.querySelector(`#${first.htmlId}`);\n            const optionHeight = option?.clientHeight || 0;\n            this._virtualPadding.style.height = `${optionHeight * this.itemsLength}px`;\n            const panelHeight = this._scrollablePanel.clientHeight;\n            this._panelService.setDimensions(optionHeight, panelHeight);\n\n            return this._panelService.dimensions;\n        });\n    }\n\n    private _fireScrollToEnd(scrollTop: number) {\n        if (this._scrollToEndFired || scrollTop === 0) { return; }\n\n        const padding = this.virtualScroll ?\n            this._virtualPadding :\n            this._contentPanel;\n\n        if (scrollTop + this._panel.clientHeight >= padding.clientHeight) {\n            this._zone.run(() => this.scrollToEnd.emit());\n            this._scrollToEndFired = true;\n        }\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { ItemsList } from './items-list';\nimport { PickPaneComponent } from './pick-pane.component';\nimport { PickOption } from '../pick.types';\n\n@Injectable()\n/** Contains logic for dragging and dropping items between picklist panes.\n * @docs-private\n */\nexport class PickPaneDragService {\n    private pane: PickPaneComponent;\n\n    public reset(pane: PickPaneComponent): void {\n        this.pane = pane;\n    }\n\n    public drag(event: DragEvent, list: ItemsList, item: PickOption): void {\n        event.stopPropagation();\n        if (!item.selected) { list.clearSelected(true); }\n        list.select(item);\n        this.pane._isDragging = true;\n    }\n\n    public allowDrop(event: DragEvent): void {\n        if (!this.pane._isDragging) {\n            event.preventDefault();\n            this.pane._willAcceptDrop = true;\n        }\n    }\n\n    public drop(event: DragEvent): void {\n        if (this.pane._willAcceptDrop) {\n            event.preventDefault();\n            this.pane._companionPane.triggerMove.emit();\n        }\n\n        this.dragLeave();\n        this.dragEnd();\n    }\n\n    public dragEnd(): void {\n        this.pane._isDragging = false;\n        this.pane._companionPane._isDragging = false;\n    }\n\n    public dragLeave(): void {\n        this.pane._willAcceptDrop = false;\n        this.pane._companionPane._willAcceptDrop = false;\n        this.pane.detectChanges();\n        this.pane._companionPane.detectChanges();\n    }\n}\n","import {\n    Component,\n    forwardRef,\n    ChangeDetectorRef,\n    Input,\n    Output,\n    EventEmitter,\n    TemplateRef,\n    ViewEncapsulation,\n    ViewChild,\n    ElementRef,\n    ChangeDetectionStrategy,\n    Inject,\n    OnChanges,\n    SimpleChanges,\n    HostBinding\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { isDefined, isFunction, isPromise, isObject } from '../../util';\nimport { ItemsList, newId } from './items-list';\nimport { PickOption, KeyCode, SearchFn, GroupByFn, TrackByFn } from '../pick.types';\nimport { PickPaneListComponent } from './pick-pane-list.component';\nimport { SelectionModelFactory } from './selection-model';\nimport { PickPaneListService } from './pick-pane-list.service';\nimport { PicklistService } from '../picklist.service';\nimport { PickPaneDragService } from './pick-pane-drag.service';\nimport { SortFn, GroupValueFn, CompareWithFn, AddCustomItemFn, SELECTION_MODEL_FACTORY } from '../pick.types';\n\n/** @docs-private */\n@Component({\n    selector: 'hc-pick-pane',\n    templateUrl: './pick-pane.component.html',\n    providers: [PickPaneListService, PickPaneDragService],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\n/** A single pane containing the searchbar, toolbar, items list, and footer.\n*/\nexport class PickPaneComponent implements OnChanges {\n    @Input() _isLeftPane = false;\n    @Input() bindLabel: string;\n    @Input() bindValue: string;\n    @Input() addCustomItem: boolean | AddCustomItemFn | undefined = false;\n    @Input() addCustomItemText: string;\n    @Input() groupBy: string | GroupByFn | undefined;\n    @Input() groupValue: GroupValueFn | undefined;\n    @Input() canSelectGroup = false;\n    @Input() canCloseGroup = false;\n    @Input() closeGroupsByDefault = true;\n    @Input() orphanItemsGroupName: string;\n    @Input() virtualScroll: boolean;\n    @Input() bufferAmount = 4;\n    @Input() trackByFn: TrackByFn;\n    @Input() sortFn: SortFn | undefined;\n    @Input() readonly = false;\n    @Input() hasSearch = true;\n    @Input() searchPlaceholder: string;\n    @Input() searchFn: SearchFn | undefined;\n    @Input() searchWhileComposing = true;\n    @Input() externalSearchTermMinLength = 0;\n    @Input() externalSearchSubject: Subject<string>;\n    @Input() externalTotalOptionCount: number;\n    @Input() notFoundText: string;\n    @Input() loading = false;\n    @Input() hasToolbar = true;\n    @Input() hasFooter = true;\n    @Input() escapeHTML = true;\n    @Input() get items(): unknown[] { return this._items; }\n    set items(value: unknown[]) { this._items = value; }\n    @Input() get compareWith(): CompareWithFn { return this._compareWith; }\n    set compareWith(fn: CompareWithFn) {\n        if (isDefined(fn) && !isFunction(fn)) { throw Error('`compareWith` must be a function.'); }\n        this._compareWith = fn;\n    }\n\n    // custom templates\n    @Input() optionTemplate: TemplateRef<unknown>;\n    @Input() optgroupTemplate: TemplateRef<unknown>;\n    @Input() toolbarTemplate: TemplateRef<unknown>;\n    @Input() footerTemplate: TemplateRef<unknown>;\n    @Input() customItemTemplate: TemplateRef<unknown>;\n\n    /** Fires when option are being moved via an enter keypress. */\n    @Output() triggerMove = new EventEmitter();\n    /** Fires when search is triggered on the pane. */\n    @Output() search = new EventEmitter<{ term: string, items: unknown[] }>();\n    /** Fires when pane is scrolled. */\n    @Output() scroll = new EventEmitter<{ start: number; end: number }>();\n    /** Fires when pane has been scrolled to the bottom. */\n    @Output() scrollToEnd = new EventEmitter();\n\n    @ViewChild(forwardRef(() => PickPaneListComponent)) dropdownPanel: PickPaneListComponent;\n    @ViewChild('searchInput', { static: true }) searchInput: ElementRef<HTMLInputElement>;\n\n    /** Object that manages the state of the list. */\n    itemsList: ItemsList;\n    /** items displayed in the viewport. important for virtual scrolling */\n    viewPortItems: PickOption[] = [];\n    /** what this pane is being filtered by */\n    searchTerm: string;\n    /** unique identifier used as the HTML id on the list element */\n    paneId = newId();\n    element: HTMLElement;\n    /** true if an item is being dragged from this pane */\n    _isDragging = false;\n    /** true if the pane has an item being dragged over it from another pane */\n    _willAcceptDrop = false;\n    /** true if the item list has focus.\n     * using this property and adding a css class works more smoothly than relying on :focus psuedo selector */\n    _paneHasFocus = false;\n    public get disabled(): boolean { return this.readonly || this._disabled; }\n    public get externalOptionCountStr(): string | null {\n        return Number.isFinite(this.externalTotalOptionCount) ? this.externalTotalOptionCount.toLocaleString() : null; }\n    public get _companionPane(): PickPaneComponent {\n        return this._isLeftPane ? this.picklistService.selectedPane : this.picklistService.availablePane; }\n\n    @HostBinding('class.hc-pick-pane') useDefaultClass = true;\n\n    private _items = new Array<unknown>();\n    private _disabled: boolean;\n    private _defaultLabel = 'label';\n    private _primitive;\n    private _compareWith: CompareWithFn;\n    private _isComposing = false;\n\n    constructor(\n        @Inject(SELECTION_MODEL_FACTORY) newSelectionModel: SelectionModelFactory,\n        _elementRef: ElementRef<HTMLElement>,\n        private picklistService: PicklistService,\n        private _cd: ChangeDetectorRef,\n        public dragService: PickPaneDragService\n    ) {\n        this.itemsList = new ItemsList(this, newSelectionModel());\n        this.element = _elementRef.nativeElement;\n        this.dragService.reset(this);\n    }\n\n    get selectedItems(): PickOption[] { return this.itemsList.selectedItems; }\n    get selectedValues(): unknown { return this.selectedItems.map(x => x.value); }\n    get hasSelectedItems(): boolean { return this.selectedItems.length > 0; }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes.items) {\n            this._setItems(changes.items.currentValue || []);\n            this.picklistService.mapIncomingOptionsToSelected(this.bindValue);\n            this.filter();\n            this.detectChanges();\n        }\n    }\n\n    /** Called when a key is pressed in the search input box */\n    onSearchKeydown($event: KeyboardEvent): void {\n        if ($event.which === KeyCode.ArrowDown || $event.which === KeyCode.Enter) {\n            $event.preventDefault();\n            if (this.addCustomOptionIsMarked) {\n                this.addAndSelectCustomOption();\n            } else {\n                this.panelFocus();\n            }\n        }\n    }\n\n    /** Called when a key is pressed while the list has focus */\n    onPanelKeydown($event: KeyboardEvent): void {\n        switch ($event.which) {\n            case KeyCode.ArrowDown:\n                this._handlePanelArrowKeyPress($event, true);\n                break;\n            case KeyCode.ArrowUp:\n                this._handlePanelArrowKeyPress($event, false);\n                break;\n            case KeyCode.Enter:\n                if (this.addCustomOptionIsMarked) {\n                    this.addAndSelectCustomOption();\n                } else {\n                    this.triggerMove.emit();\n                }\n                break;\n            case KeyCode.Esc:\n                this.itemsList.resetListSelectionState();\n                this.panelBlur();\n                break;\n        }\n    }\n\n    /** Place focus on the list pane */\n    panelFocus(): void {\n        this.dropdownPanel._panel.focus();\n        if (!this.hasSelectedItems) {\n            this._jumpFocusToFirstItem();\n        }\n    }\n\n    /** Remove focus from the list pane */\n    panelBlur(): void {\n        this.dropdownPanel._panel.blur();\n    }\n\n    /** Focus on the first item in the list, scrolling as needed */\n    private _jumpFocusToFirstItem() {\n        if (this.itemsList.filteredItems.length === 0) { return; }\n        this.itemsList.resetListSelectionState();\n        this._selectAndScrollToItem(this.itemsList.markedItem);\n    }\n\n    /** Moves focus, or moves or expands the highlighted options in the list */\n    private _handlePanelArrowKeyPress($event: KeyboardEvent, isDown: boolean) {\n        if (this._nextItemIsCustomItem(isDown)) {\n            this.itemsList.unmark();\n            this.itemsList.clearSelected();\n            this._scrollToCustomItem();\n        } else {\n            this.itemsList.markNextItem(isDown);\n            if (!$event.shiftKey && !$event.ctrlKey) { this.itemsList.clearSelected(); }\n            const nextItem = this.itemsList.markedItem;\n            this._selectAndScrollToItem(nextItem);\n        }\n        $event.preventDefault();\n    }\n\n    /** Selects a given item, scrolling to keep it in the viewport as needed */\n    private _selectAndScrollToItem(item: PickOption) {\n        if (!item) { return; }\n        this.itemsList.select(item);\n        this._scrollToMarked();\n    }\n\n    /** Remove highlight from all items in the list */\n    deselectAll(): void {\n        this.itemsList.resetListSelectionState();\n        this._cd.detectChanges();\n    }\n\n    /** Highlight all items in the list */\n    selectAll(): void {\n        this.itemsList.selectAll();\n        this._cd.detectChanges();\n    }\n\n    /**\n     * Shift + click selects a range\n     * Ctrl + click adds to current selection\n     * Regular click clears current selection and selects anew\n     */\n    onItemClick($event: MouseEvent, item: PickOption): void {\n        if (!item) { return; }\n        const lastMarkedIndex = this.itemsList.markedIndex;\n        if (!$event.ctrlKey) { this.itemsList.clearSelected(); }\n        if (!$event.shiftKey) { this.itemsList.markItem(item); }\n\n        if ($event.shiftKey) {\n            const indexOfItemClicked = this.itemsList.filteredItems.findIndex(i => i === item);\n            const start = Math.min(lastMarkedIndex, indexOfItemClicked);\n            const end = Math.max(lastMarkedIndex, indexOfItemClicked);\n            for (let i = start; i <= end; i++) {\n                // don't shift + click select a group, as it will select all its children, and that's not likely what is wanted\n                if (this.itemsList.filteredItems[i].isParent) { continue; }\n                this.select(this.itemsList.filteredItems[i]);\n            }\n        } else {\n            if ($event.ctrlKey && item.selected) {\n                this.unselect(item);\n            } else {\n                this.select(item);\n            }\n        }\n\n        this._cd.detectChanges();\n    }\n\n    /** Selects items as needed, and moves options to the companion pane */\n    onItemDoubledClicked($event: MouseEvent, item: PickOption): void {\n        if (!$event.shiftKey) { this.itemsList.clearSelected(); }\n        this.select(item);\n        this.triggerMove.emit();\n    }\n\n    /** If not already selected, selects a given item if that option or the entire pane are not disabled */\n    select(item: PickOption): void {\n        if (!item || item.disabled || this.disabled || item.selected) { return; }\n        this.itemsList.select(item);\n    }\n\n    /** If not already unselected, unselects a given item if that option or the entire pane are not disabled */\n    unselect(item: PickOption): void {\n        if (!item || item.disabled || this.disabled || !item.selected) { return; }\n        this.itemsList.unselect(item);\n    }\n\n    /** Place focus in the searchbar, or the list if searchbar is not available */\n    focus(): void {\n        if (this.hasSearch) {\n            this.searchInput.nativeElement.focus();\n        } else {\n            this.panelFocus();\n        }\n    }\n\n    /** Remove focus from searchbar and list */\n    blur(): void {\n        this.searchInput.nativeElement.blur();\n        this.panelBlur();\n    }\n\n    /** Create as custom item from a search term that didn't match available options from either pane */\n    addAndSelectCustomOption(): void {\n        let customItem: unknown;\n        const hasAddCustomItemFunc = isFunction(this.addCustomItem);\n        if (hasAddCustomItemFunc) {\n            customItem = (<AddCustomItemFn>this.addCustomItem)(this.searchTerm);\n        } else if (!hasAddCustomItemFunc && this.bindValue && this.bindValue !== this.bindLabel) {\n            throw new Error(`Attempting to add a custom option, but because the [bindValue] & [bindLabel] Input() params don't match,\n                you'll need to also supply a function to the [addCustomItem] Input() to create an appropriate value for the new option.\n                This function should return an object that matches the shape of the options passed into the [items] array.`);\n        } else {\n            customItem = this._primitive ? this.searchTerm : { [this.bindLabel]: this.searchTerm };\n        }\n\n        if (isPromise(customItem)) {\n            (customItem as Promise<unknown>).then(i => this._selectNewCustomOption(i)).catch((e) => { console.error(e); });\n        } else if (customItem) {\n            this._selectNewCustomOption(customItem);\n        }\n    }\n\n    /** Convert the given custom item into an HcOption, add it to the list, and then highlight it */\n    _selectNewCustomOption(customItem: unknown): void {\n        const newOption = this.itemsList.addNewOption(customItem);\n        this.itemsList.resetFilteredItemsForCustomOptionAdded(this._isUsingSearchSubject, this.searchTerm);\n        this.itemsList.markItem(newOption);\n        this._selectAndScrollToItem(newOption);\n    }\n\n    /** Used in the ngFor of the list to maximize DOM reusage */\n    trackByOption = (_: number, item: PickOption): PickOption => {\n        if (this.trackByFn) { return this.trackByFn<PickOption>(_, item.value as PickOption); }\n        return item;\n    };\n\n    /** If true, the \"add custom\" option should be displayed */\n    get showAddCustomOption(): boolean | AddCustomItemFn | undefined {\n        if (!this._validTerm) { return false; }\n        const term = this.searchTerm.toLowerCase().trim();\n        return this.addCustomItem &&\n            !this.itemsList.items.some(x => x.label?.toLowerCase() === term) &&\n            !this._companionPane.itemsList.items.some(x => x.label?.toLowerCase() === term) &&\n            !this.loading;\n    }\n\n    /** If true, the \"add custom\" option currently has focus */\n    get addCustomOptionIsMarked(): boolean | undefined {\n        return this.showAddCustomOption && !this.itemsList.markedItem;\n    }\n\n    /** If true, the empty pane message should be displayed */\n    get showNoItemsFound(): boolean | string {\n        const empty = this.itemsList.filteredItems.length === 0;\n        return ((empty && !this._isUsingSearchSubject && !this.loading) ||\n            (empty && this._isUsingSearchSubject && this._validTerm && !this.loading)) &&\n            !this.showAddCustomOption;\n    }\n\n    /** Called when user begins typing in the searchbox */\n    _onCompositionStart(): void {\n        this._isComposing = true;\n    }\n\n    /** Called when user finsihes typing in the searchbox */\n    _onCompositionEnd(term: string): void {\n        this._isComposing = false;\n        if (this.searchWhileComposing) { return; }\n        this.filter(term);\n    }\n\n    /** Search the items in the list */\n    filter(term: string = this.searchTerm): void {\n        if (this._isComposing && !this.searchWhileComposing) { return; }\n\n        if (this._isUsingSearchSubject && !term || this.searchTerm === term) { this.itemsList.resetFilteredItems(); }\n        if (this._isUsingSearchSubject && (this._validTerm || this.externalSearchTermMinLength === 0)) {\n            this.externalSearchSubject.next(term);\n            this.itemsList.updateCounts();\n        }\n\n        this.searchTerm = term;\n        if (!this._isUsingSearchSubject) {\n            this.itemsList.filter(this.searchTerm);\n        }\n        this.itemsList.markSelectedOrDefault();\n        this.search.emit({ term, items: this.itemsList.filteredItems.map(x => x.value) });\n    }\n\n    /** Force change detection to refresh the UI */\n    detectChanges(): void {\n        if (!(this._cd)['destroyed']) {\n            this._cd.detectChanges();\n        }\n    }\n\n    /** Refreshes the dimensions of the virtual scroll container and the items displayed within */\n    refreshScrollArea(): void {\n        this.dropdownPanel.refreshListLayout(true);\n    }\n\n    /** Creates HcOptions according to the configured options, sets them on this list, and selects the first option. */\n    _setItems(items: unknown[]): void {\n        const firstItem = items[0];\n        this.bindLabel = this.bindLabel || this._defaultLabel;\n        this._primitive = isDefined(firstItem) ? !isObject(firstItem) : this._primitive || this.bindLabel === this._defaultLabel;\n        this.itemsList.setItems(items);\n        if (isDefined(this.searchTerm) && !this._isUsingSearchSubject) {\n            this.itemsList.filter(this.searchTerm);\n        }\n\n        this.itemsList.markSelectedOrDefault();\n    }\n\n    /** Clear out search term if any and refresh the list */\n    clearSearch(): void {\n        if (!this.searchTerm) { return; }\n        this._changeSearch(\"\");\n        this.itemsList.resetFilteredItems();\n    }\n\n    /** Update search term and notify external search as needed */\n    private _changeSearch(searchTerm: string) {\n        this.searchTerm = searchTerm;\n        if (this._isUsingSearchSubject) {\n            this.externalSearchSubject.next(searchTerm);\n        }\n    }\n\n    /** Scroll the list to he currently \"focused\" item. */\n    private _scrollToMarked() {\n        this.dropdownPanel.scrollTo(this.itemsList.markedItem);\n    }\n\n    /** Scroll the list to the option a user can select to create a custom option */\n    private _scrollToCustomItem() {\n        this.dropdownPanel.scrollToCustomOption();\n    }\n\n    /** Returns true if the next item that would be highlighted is the \"add custom\" option */\n    private _nextItemIsCustomItem(nextStepIsDown: boolean): boolean {\n        const nextStep = nextStepIsDown ? 1 : -1;\n        const nextIndex = this.itemsList.markedIndex + nextStep;\n        return !!this.addCustomItem && !!this.searchTerm\n            && this.itemsList.markedItem\n            && (nextIndex < 0 || nextIndex === this.itemsList.filteredItems.length);\n    }\n\n    /** Returns true if external search is being used */\n    private get _isUsingSearchSubject() {\n        return this.externalSearchSubject && this.externalSearchSubject.observers.length > 0;\n    }\n\n    /** Returns true if the search term is long enough to be considered valid */\n    private get _validTerm() {\n        const term = this.searchTerm && this.searchTerm.trim();\n        return term && term.length >= this.externalSearchTermMinLength;\n    }\n}\n","<div [hidden]=\"!hasSearch\" class=\"hc-pick-search-outer\" [class.hc-pick-pane-search-no-toolbar]=\"!hasToolbar\">\n    <hc-form-field>\n        <input\n            #searchInput\n            class=\"hc-pick-search-input\"\n            hcInput\n            [value]=\"searchTerm ? searchTerm : ''\"\n            (input)=\"filter(searchInput.value)\"\n            (compositionstart)=\"_onCompositionStart()\"\n            (compositionend)=\"_onCompositionEnd(searchInput.value)\"\n            (change)=\"$event.stopPropagation()\"\n            (keydown)=\"onSearchKeydown($event)\"\n            [placeholder]=\"searchPlaceholder\"\n        />\n        @if (searchTerm?.length > 0) {\n        <span hcSuffix class=\"hc-pick-input-search-suffix hc-pick-input-search-clear\" (click)=\"clearSearch()\" title=\"Clear search\"></span>\n        }\n        <span hcSuffix class=\"hc-pick-input-search-suffix hc-pick-input-search\"></span>\n    </hc-form-field>\n</div>\n\n@if (hasToolbar) {\n<div class=\"hc-picklist-pane-tools\">\n    <ng-template #defaultToolbarTemplate>\n        <div class=\"hc-picklist-pane-counts\">\n            @if (!loading) { Showing {{ itemsList.itemsShownCountStr }} of {{ externalOptionCountStr || itemsList.itemsTotalCountStr }}\n            } @if (loading) { Loading... }\n        </div>\n        @if (!disabled) {\n        <div class=\"hc-picklist-pane-quick-links\">\n            <button\n                type=\"button\"\n                hc-button\n                buttonStyle=\"link-inline\"\n                class=\"hc-font-xsm hc-pick-button-link-inline\"\n                (click)=\"selectAll()\"\n                [disabled]=\"itemsList.filteredItems.length === 0\"\n            >\n                Select All\n            </button>\n            <button\n                type=\"button\"\n                hc-button\n                buttonStyle=\"link-inline\"\n                class=\"hc-font-xsm hc-pick-button-link-inline\"\n                (click)=\"deselectAll()\"\n                [disabled]=\"!hasSelectedItems\"\n            >\n                Select None\n            </button>\n        </div>\n        }\n    </ng-template>\n    <ng-template\n        [ngTemplateOutlet]=\"toolbarTemplate || defaultToolbarTemplate\"\n        [ngTemplateOutletContext]=\"{itemsList: itemsList, searchTerm: searchTerm}\"\n    ></ng-template>\n</div>\n}\n\n<hc-pick-pane-list\n    class=\"hc-pick-pane-list\"\n    [ngClass]=\"{'hc-pane-will-accept-drop': _willAcceptDrop, 'pane-is-active': _paneHasFocus}\"\n    [virtualScroll]=\"virtualScroll\"\n    [bufferAmount]=\"bufferAmount\"\n    [filterValue]=\"searchTerm\"\n    [items]=\"itemsList.filteredItems\"\n    [markedItem]=\"itemsList.markedItem\"\n    (update)=\"viewPortItems = $event\"\n    (scroll)=\"scroll.emit($event)\"\n    (scrollToEnd)=\"scrollToEnd.emit($event)\"\n    (keydown)=\"onPanelKeydown($event)\"\n    (focus)=\"_paneHasFocus = true\"\n    (blur)=\"_paneHasFocus = false\"\n    (drop)=\"dragService.drop($event)\"\n    (dragover)=\"dragService.allowDrop($event)\"\n    (dragleave)=\"dragService.dragLeave()\"\n    tabIndex=\"0\"\n>\n    @if (!loading) { @for (item of viewPortItems; track trackByOption($index, item); let first = $first) {\n    <div\n        class=\"hc-pick-option\"\n        [attr.role]=\"item.isParent ? 'group' : 'option'\"\n        (click)=\"onItemClick($event, item)\"\n        (dblclick)=\"onItemDoubledClicked($event, item)\"\n        draggable=\"true\"\n        (dragstart)=\"dragService.drag($event, itemsList, item)\"\n        (dragend)=\"dragService.dragEnd()\"\n        [class.hc-pick-option-disabled]=\"item.disabled\"\n        [class.hc-pick-option-selected]=\"item.selected\"\n        [class.hc-pick-optgroup]=\"item.isParent\"\n        [class.hc-pick-option]=\"item.isChild\"\n        [class.hc-pick-option-child]=\"item.isChild\"\n        [class.hc-pick-option-marked]=\"item === itemsList.markedItem\"\n        [class.hc-pick-option-hide]=\"item.parent?.isClosed || (item.isParent && !groupBy)\"\n        [attr.aria-selected]=\"item.selected\"\n        [attr.id]=\"item?.htmlId\"\n    >\n        <ng-template #defaultOptionTemplate>\n            <span\n                class=\"hc-pick-option-label\"\n                [class.hc-pick-parent-closed]=\"item.parent?.isClosed\"\n                [hcPickItemLabel]=\"item.label\"\n                [escape]=\"escapeHTML\"\n            ></span>\n        </ng-template>\n        <ng-template #defaultOptGroupTemplate>\n            <div class=\"hc-pick-optgroup-inner\">\n                @if (canCloseGroup) {\n                <span\n                    class=\"hc-pick-group-icon\"\n                    [class.hc-pick-group-icon-open]=\"!item.isClosed\"\n                    (dblclick)=\"$event.stopPropagation()\"\n                    (click)=\"item.toggleOpenState($event)\"\n                ></span>\n                }\n                <span class=\"hc-pick-option-label\" [hcPickItemLabel]=\"item.label\" [escape]=\"escapeHTML\"></span>\n            </div>\n        </ng-template>\n        <ng-template\n            [ngTemplateOutlet]=\"item.isParent ? optgroupTemplate || defaultOptGroupTemplate : optionTemplate || defaultOptionTemplate\"\n            [ngTemplateOutletContext]=\"{item: item.value, hcOption: item, index: item.index, searchTerm: searchTerm}\"\n        ></ng-template>\n    </div>\n    } @if (showAddCustomOption) {\n    <div\n        class=\"hc-pick-option hc-pick-custom-option\"\n        [class.hc-pick-option-marked]=\"!itemsList.markedItem\"\n        role=\"option\"\n        (click)=\"addAndSelectCustomOption()\"\n    >\n        <ng-template #defaultCustomItemTemplate>\n            <span>\n                <span class=\"hc-pick-custom-item-label\">{{ addCustomItemText }}</span>\n                \"{{ searchTerm }}\"\n            </span>\n        </ng-template>\n        <ng-template\n            [ngTemplateOutlet]=\"customItemTemplate || defaultCustomItemTemplate\"\n            [ngTemplateOutletContext]=\"{searchTerm: searchTerm}\"\n        ></ng-template>\n    </div>\n    } } @if (!loading && showNoItemsFound) {\n    <div class=\"hc-pick-empty-msg\">\n        <span>{{ notFoundText }}</span>\n    </div>\n    } @if (loading) {\n    <hc-progress-dots></hc-progress-dots>\n    }\n</hc-pick-pane-list>\n\n@if (hasFooter) {\n<div class=\"hc-pick-pane-list-footer\">\n    <ng-template #defaultFooterTemplate>\n        <span>{{ itemsList.selectedItems.length?.toLocaleString() || 0 }} selected</span>\n    </ng-template>\n    <ng-template\n        [ngTemplateOutlet]=\"footerTemplate || defaultFooterTemplate\"\n        [ngTemplateOutletContext]=\"{itemsList: itemsList, searchTerm: searchTerm}\"\n    ></ng-template>\n</div>\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n    Component,\n    OnDestroy,\n    AfterViewInit,\n    forwardRef,\n    ChangeDetectorRef,\n    Input,\n    Output,\n    EventEmitter,\n    ContentChild,\n    TemplateRef,\n    ViewEncapsulation,\n    HostBinding,\n    ViewChild,\n    ElementRef,\n    ChangeDetectionStrategy,\n    ContentChildren,\n    QueryList,\n    Attribute\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { takeUntil, startWith } from 'rxjs/operators';\nimport { Subject, merge } from 'rxjs';\n\nimport {\n    PickOptionTemplateDirective,\n    PickPaneToolbarTemplateDirective,\n    PickPaneFooterTemplateDirective,\n    PickOptgroupTemplateDirective,\n    PickCustomItemTemplateDirective,\n    PickPaneHeaderRightTemplateDirective,\n    PickPaneHeaderLeftTemplateDirective\n} from './pick-templates.directive';\nimport { isDefined, isFunction, isObject } from '../util';\nimport { PickOptionComponent, PickOptionStateChange } from './pick-option.component';\nimport { PickPaneComponent } from './pane/pick-pane.component';\nimport { PicklistService } from './picklist.service';\nimport { SortFn, GroupValueFn, CompareWithFn, AddCustomItemFn, SearchFn, GroupByFn } from './pick.types';\n\n/** Control for selecting multiple items from a very large set of options. `<hc-picklist>` */\n@Component({\n    selector: 'hc-picklist',\n    templateUrl: './picklist.component.html',\n    styleUrls: ['./picklist.component.scss'],\n    providers: [{\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => PicklistComponent),\n            multi: true\n        }, PicklistService],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class PicklistComponent implements OnDestroy, AfterViewInit, ControlValueAccessor {\n    /** If options are objects, this matches the object property to use for display in the list.\n     * Can use nested properties. Example: `'property.nestedProperty'`. *Defaults to `'label'`.* */\n    @Input() bindLabel: string;\n    /** If options are objects, this matches the object property to use for the selected model.\n     * Can use nested properties. Example: `'property.nestedProperty'`. *By default, binds to whole object.* */\n    @Input() bindValue: string;\n    /** When addCustomItem is true, this changes the default message for adding a new item. *Defaults to `\"Add custom option.\"`* */\n    @Input() addCustomItemText = 'Add custom option.';\n    /** True if user should be able to add custom items. The button to add an option will appear when a search term is not exactly\n     * matched. Can optionally provide a function that will generate a value for the custom option based on the given search term.\n     * *Defaults to false.* If a function is provided, must follow this signature: `((term: string) => any | Promise<any>)`. The\n     * function is passed the search term string and returns a value that should match the type of options in the picklist. */\n    @Input() addCustomItem: boolean | AddCustomItemFn = false;\n    /** Group items by property or function expression. If a function is provided, must follow this signature: `((item: any) => any)`. The\n     * function is passed an option and returns a value to represent the identifier for the group that option should belong to.\n     * *Grouping is off by default.* */\n    @Input() groupBy: string | GroupByFn;\n    /** Function expression to provide group value: `(key: string | object, children: any[]) => string | object`. Same as\n     * described in ng-select component. https://ng-select.github.io/ng-select#/grouping */\n    @Input() groupValue: GroupValueFn;\n    /** True if group should be clickable. Clicking the group will select all its children. *Defaults to false.* */\n    @Input() canSelectGroup = false;\n    /** True if group can be closed to hide its child options. *Defaults to false.* */\n    @Input() canCloseGroup = false;\n    /** True if groups should be closed to begin with. Must have `canCloseGroup` set to true to use. *Defaults to true.* */\n    @Input() closeGroupsByDefault = true;\n    /** Items that cannot be grouped are placed in an orphan group.\n     * This property sets a name for that group. *Defaults to `\"Other Items\"`* */\n    @Input() orphanItemsGroupName = 'Other Items';\n    /** True to enable virtual scroll for better performance when rendering a lot of data. *Defaults to false.* */\n    @Input() virtualScroll = false;\n    /** When using virtual scroll, determines how many extra items on top and bottom should be rendered outside the viewport.\n     * *Defaults to 4.* */\n    @Input() bufferAmount = 4;\n    /** Provide custom trackBy function for better DOM reusage by Angular's *ngFor in the items list. */\n    @Input() trackByFn = null;\n    /** Function used to sort the groups and items in the list: `(a: PickOption, b: PickOption) => number`. If the function\n     * result is negative, a is sorted before b. If it's positive, b is sorted before a. If the result is 0, no changes are\n     * done with the sort order of the two values. *By default, options are not sorted.* */\n    @Input() sortFn: SortFn;\n    /** If true, items can be viewed but not highlighted or moved from pane to pane. Same as adding `disabled` attribute.\n     * *Defaults to false.* */\n    @Input() readonly = false;\n    /** True if search bar should be present. *Defaults to true.* */\n    @Input() hasSearch = true;\n    /** Placeholder for the search input. *Defaults to 'Search'.* */\n    @Input() searchPlaceholder = 'Search';\n    /** A custom search function: `(term: string, item: any) => boolean`. *Default function does a simple scan for entire\n     * given term within the options label.* */\n    @Input() searchFn: SearchFn;\n    /** True if items should be filtered while user is still typing. *Defaults to true.* */\n    @Input() searchWhileComposing = true;\n    /** Number of characters required for search to be fired. Only applies when using `externalSearchSubject`.\n     * *Defaults to 0.* */\n    @Input() externalSearchTermMinLength = 0;\n    /** A subject through which an updated search term will be sent. Use for advanced searching functionality,\n     * like searching over http. */\n    @Input() externalSearchSubject: Subject<string>;\n    /** For the left pane, force the 'Showing x of y' message to be the given number. Useful when using external search\n     * and you want to display the total number of items available on the server rather than just those currently\n     * available in the component. */\n    @Input() externalTotalOptionCount: number;\n    /** Message shown in each pane when empty. *Defaults to 'No options to show.'* */\n    @Input() notFoundText = 'No options to show.';\n    /** Text for left pane header. Ignored if `hcPaneHeaderLeftTmp` is used. *Defaults to 'Available'.* */\n    @Input() leftHeaderText = 'Available';\n    /** Text for right pane header. Ignored if `hcPaneHeaderRightTmp` is used. *Defaults to 'Selected'.* */\n    @Input() rightHeaderText = 'Selected';\n    /** True when left pane should show as loading. *Defaults to false.* */\n    @Input() leftPaneLoading = false;\n    /** True when right pane should show as loading. *Defaults to false.* */\n    @Input() rightPaneLoading = false;\n    /** True if each pane should have a header. *Defaults to true.* */\n    @Input() hasHeader = true;\n    /** True if each pane should have a toolbar section. *Defaults to true.* */\n    @Input() hasToolbar = true;\n    /** True if each pane should have a footer section. *Defaults to true.* */\n    @Input() hasFooter = true;\n    /** Set a limit to the number of selected items.\n     * Note: This will not prevent more than limit from being added to the model outside the component.\n     * *No limit by default.* */\n    @Input() maxSelectedItems: number;\n    /** Total height of the picklist control. Should be passed as a string, including the\n     * unit (pixels, percentage, rem, etc). *Defaults to '400px'.* */\n    @Input() height = '400px';\n\n    /** An array of options for the picklist. Options can be of any type, and the array can be an observable stream.\n     * Can alternatively use `<hc-pick-option>` components to pass in options. */\n    @Input() get items(): unknown[] { return this._items; }\n    set items(value: unknown[]) {\n        this._itemsAreUsed = true;\n        this._items = value;\n    }\n    /** A function to compare the option values with the selected values. `(a: any, b: any) => boolean;`\n     * The first argument is a value from an option. The second is a value from the selection (model).\n     * A boolean should be returned.\n     * Same as used by https://angular.io/api/forms/SelectControlValueAccessor */\n    @Input() get compareWith(): CompareWithFn { return this._compareWith; }\n    set compareWith(fn: CompareWithFn) {\n        if (!isFunction(fn)) {\n            throw Error('`compareWith` must be a function.');\n        }\n        this._compareWith = fn;\n    }\n\n    /** Fires when model is updated. Sends an array of the currently selected values. */\n    @Output() change = new EventEmitter<Array<string|Record<string, unknown>|undefined>>();\n    /** Fires when options are added. Sends an array of the values being added. */\n    @Output() add = new EventEmitter<Array<string|Record<string, unknown>|undefined>>();\n    /** Fires when options are removed. Sends an array of the values being removed. */\n    @Output() remove = new EventEmitter<Array<string|Record<string, unknown>|undefined>>();\n\n    // custom templates\n    @ContentChild(PickOptionTemplateDirective, { read: TemplateRef }) _optionTemplate: TemplateRef<unknown>;\n    @ContentChild(PickOptgroupTemplateDirective, { read: TemplateRef }) _optgroupTemplate: TemplateRef<unknown>;\n    @ContentChild(PickPaneToolbarTemplateDirective, { read: TemplateRef }) _toolbarTemplate: TemplateRef<unknown>;\n    @ContentChild(PickPaneFooterTemplateDirective, { read: TemplateRef }) _footerTemplate: TemplateRef<unknown>;\n    @ContentChild(PickCustomItemTemplateDirective, { read: TemplateRef }) _customItemTemplate: TemplateRef<unknown>;\n    @ContentChild(PickPaneHeaderRightTemplateDirective, { read: TemplateRef }) _paneHeaderRightTemplate: TemplateRef<unknown>;\n    @ContentChild(PickPaneHeaderLeftTemplateDirective, { read: TemplateRef }) _paneHeaderLeftTemplate: TemplateRef<unknown>;\n\n    /** A template-based/declarative way to pass options available in the picklist. */\n    @ContentChildren(PickOptionComponent, { descendants: true }) _ngOptions: QueryList<PickOptionComponent>;\n\n    @ViewChild('available', { static: true }) _availablePane: PickPaneComponent;\n    @ViewChild('selected', { static: true }) _selectedPane: PickPaneComponent;\n    /** Getter. Returns true if readonly property is true, or if disabled attribute is present on the control. */\n    @HostBinding('class.hc-picklist-disabled') get disabled(): boolean { return this.readonly || this._disabled; }\n\n    /** whether or not we should escape HTML in default option templates. will be set to false if\n     * using <hc-pick-option> instead of passing in an items array */\n    _escapeHTML = true;\n    _el: HTMLElement;\n    private _items = new Array<unknown>();\n    private _itemsAreUsed: boolean;\n    private _defaultLabel = 'label';\n    private _disabled: boolean;\n    private readonly _destroy$ = new Subject<void>();\n    private _compareWith: CompareWithFn;\n    private _onChange = (_: unknown) => _;\n    private _onTouched = () => null;\n\n    constructor(\n        _elementRef: ElementRef<HTMLElement>,\n        private picklistService: PicklistService,\n        private _cd: ChangeDetectorRef,\n        @Attribute('autofocus') private autoFocus: any) {\n            this._el = _elementRef.nativeElement;\n    }\n\n    ngAfterViewInit(): void {\n        this.picklistService.reset(this._availablePane, this._selectedPane);\n        if (!this._itemsAreUsed) { this._setItemsFromHcPickOptions(); this._escapeHTML = false; }\n        if (isDefined(this.autoFocus)) { this._availablePane.focus(); }\n        this._detectChanges();\n    }\n\n    ngOnDestroy(): void {\n        this._destroy$.next();\n        this._destroy$.complete();\n    }\n\n    writeValue(value: unknown | unknown[]): void {\n        this._selectedPane.itemsList.clearList();\n        this._handleWriteValue(value);\n        this._cd.markForCheck();\n    }\n\n    registerOnChange(fn: () => null): void {\n        this._onChange = fn;\n    }\n\n    registerOnTouched(fn: () => null): void {\n        this._onTouched = fn;\n    }\n\n    setDisabledState(state: boolean): void {\n        this._disabled = state;\n        this._cd.markForCheck();\n    }\n\n    /** Getter. Returns true if any items are selected. */\n    get hasValue(): boolean {\n        return this._selectedPane.itemsList.items.length > 0;\n    }\n\n    /** Getter. Returns true if the number of selected items matches or exceeds the maximum number. Useful if you'd like to show a custom\n     * warning label.\n     */\n    get hasMaxItemsSelected(): boolean {\n        return Number.isFinite(this.maxSelectedItems) && this._selectedPane.itemsList.itemsTotalCount >= this.maxSelectedItems;\n    }\n\n    /** Getter. Returns true if the number of selected items exceeds the maximum number. UI won't normally allow this, but the model can\n     * be manipulated or set outside of the component to cause this. */\n    get hasExceededMaxItemsSelected(): boolean {\n        return Number.isFinite(this.maxSelectedItems) && this._selectedPane.itemsList.itemsTotalCount > this.maxSelectedItems;\n    }\n\n    /** Getter. Returns true if the \"Available\" pane is empty. */\n    get leftPaneIsEmpty(): boolean {\n        return this._availablePane.itemsList.items.length === 0;\n    }\n\n    /** Move highlighted items from the left pane over to the right pane. */\n    moveLeftToRight(): void {\n        this._move(this._availablePane, this._selectedPane, true);\n    }\n\n    /** Move highlighted items from the right pane over to the left pane. */\n    moveRightToLeft(): void {\n        this._move(this._selectedPane, this._availablePane);\n    }\n\n    /** Move selected (highlighted) options from one pane to the other */\n    _move(source: PickPaneComponent, destination: PickPaneComponent, isAdding = false): void {\n        let maxLimitEnforced = false;\n        let overLimitBy = 0;\n        if (isAdding && this.maxSelectedItems) {\n            overLimitBy = this._selectedPane.itemsList.itemsTotalCount + source.selectedItems.length - this.maxSelectedItems;\n            maxLimitEnforced = overLimitBy > 0;\n        }\n        const optionsToMove = maxLimitEnforced ? source.selectedItems.slice(0, source.selectedItems.length - overLimitBy)\n            : source.selectedItems;\n        optionsToMove.filter(i => !i.disabled).slice().forEach(i => {\n            source.itemsList.removeOption(i);\n            destination.itemsList.addOption(i);\n        });\n\n        const eventToFire = isAdding ? this.add : this.remove;\n        eventToFire.emit(optionsToMove.map(x => x.value));\n        source.itemsList.reIndex();\n        this._availablePane.itemsList.clearSelected();\n        this._selectedPane.itemsList.clearSelected();\n        this.refreshPanes();\n        this._updateNgModel();\n        this._onTouched();\n    }\n\n    /** Refreshes the dimensions of the virtual scroll container and the items displayed within. Helpful when using virtual scrolling and\n     * the window changes such that the picklist was resized.\n     */\n    public refreshScrollArea(): void {\n        this._availablePane.refreshScrollArea();\n        this._selectedPane.refreshScrollArea();\n    }\n\n    /** Manually trigger change detection to update the UI. */\n    _detectChanges(): void {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        if (!(<any>this._cd).destroyed) {\n            this._cd.detectChanges();\n        }\n        this._availablePane.detectChanges();\n        this._selectedPane.detectChanges();\n    }\n\n    /** Convert <hc-pick-option> components into HcOptions */\n    private _setItemsFromHcPickOptions() {\n        const mapNgOptions = (options: QueryList<PickOptionComponent>) => {\n            const items = options.map(option => ({\n                $hcOptionValue: option.value,\n                $hcOptionLabel: option.elementRef.nativeElement.innerHTML,\n                disabled: option.disabled\n            }));\n            this._availablePane.itemsList.setItems(items);\n            if (this.hasValue) {\n                this.picklistService.mapIncomingOptionsToSelected(this.bindValue);\n            }\n        };\n\n        const handleOptionChange = () => {\n            const changedOrDestroyed = merge(this._ngOptions.changes, this._destroy$);\n            merge(...this._ngOptions.map(option => option._stateChange$))\n                .pipe(takeUntil(changedOrDestroyed))\n                .subscribe((option: PickOptionStateChange) => {\n                    const item = this._availablePane.itemsList.findOption(option.value);\n                    if (item) {\n                        item.disabled = option.disabled;\n                        item.label = option.label || item.label;\n                    }\n                    this._detectChanges();\n                });\n        };\n\n        this._ngOptions.changes\n            .pipe(startWith(this._ngOptions), takeUntil(this._destroy$))\n            .subscribe(options => {\n                this.bindLabel = this._defaultLabel;\n                mapNgOptions(options);\n                handleOptionChange();\n                this._detectChanges();\n            });\n    }\n\n    /** Apply value passed in from ngModel as the current selection in the component */\n    private _handleWriteValue(ngModel: unknown[] | unknown) {\n        if (!this._isValidWriteValue(ngModel)) { return; }\n\n        const select = (val: unknown) => {\n            const alreadySelected = this._selectedPane.itemsList.findOption(val);\n            if (alreadySelected) { return; }\n\n            const availableItem = this._availablePane.itemsList.findOption(val);\n            if (availableItem) {\n                this._availablePane.itemsList.removeOption(availableItem);\n                this._selectedPane.itemsList.addOption(availableItem);\n                this._availablePane.itemsList.reIndex();\n            } else {\n                // where possible, handle cases where we're adding something to the model that's not an existing option\n                if (this.bindValue) { throw new Error(`Attempting to set a value (${val}) in the model that does not exist in the available options.\n                    This is not allowed when the [bindValue] Input() is used. You'll need to add the option to the [items] Input().`); }\n                this._selectedPane.itemsList.addNewOption(val);\n            }\n        };\n\n        (ngModel as [])?.forEach(item => select(item));\n        this.refreshPanes();\n    }\n\n    /** Rerun filters and grouping logic in each pane, than force UI refresh. */\n    private refreshPanes() {\n        this._availablePane.filter();\n        this._selectedPane.filter();\n        this._detectChanges();\n    }\n\n    private _isValidWriteValue(value: unknown): boolean {\n        if (!isDefined(value) || value === '') {\n            return false;\n        }\n\n        if (!Array.isArray(value)) {\n            console.warn('ngModel should be array.');\n            return false;\n        }\n        return value.every(item => this.validateBinding(item));\n    }\n\n    private validateBinding = (item: unknown): boolean => {\n        if (!isDefined(this.compareWith) && isObject(item) && this.bindValue) {\n            const msg = `Setting object(${JSON.stringify(item)}) as your model with bindValue is not allowed unless [compareWith] is used.`;\n            console.warn(msg);\n            return false;\n        }\n        return true;\n    };\n\n    private _updateNgModel() {\n        const model = new Array<unknown>();\n        const selectedItems = this._selectedPane.itemsList.items.filter(i => !i.children);\n        selectedItems.forEach(i => {\n            const value = this.bindValue ? this._selectedPane.itemsList.resolveNested(i.value, this.bindValue) : i.value;\n            model.push(value);\n        });\n\n        const selected = selectedItems.map(x => x.value);\n        this._onChange(model);\n        this.change.emit(selected);\n        this._cd.markForCheck();\n    }\n}\n","<div class=\"hc-picklist\" [style.height]=\"height\">\n    <div class=\"hc-picklist-pane-container\">\n        @if (hasHeader) {\n        <div class=\"hc-picklist-pane-header\">\n            <ng-template #defaultLeftHeaderTemplate>\n                <h2 class=\"hc-picklist-pane-header-default\">{{ leftHeaderText }}</h2>\n            </ng-template>\n            <ng-template [ngTemplateOutlet]=\"_paneHeaderLeftTemplate || defaultLeftHeaderTemplate\"></ng-template>\n        </div>\n        }\n\n        <hc-pick-pane\n            #available\n            [_isLeftPane]=\"true\"\n            [bindLabel]=\"bindLabel\"\n            [bindValue]=\"bindValue\"\n            [addCustomItem]=\"addCustomItem\"\n            [addCustomItemText]=\"addCustomItemText\"\n            [groupBy]=\"groupBy\"\n            [groupValue]=\"groupValue\"\n            [canSelectGroup]=\"canSelectGroup\"\n            [canCloseGroup]=\"canCloseGroup\"\n            [closeGroupsByDefault]=\"closeGroupsByDefault\"\n            [orphanItemsGroupName]=\"orphanItemsGroupName\"\n            [virtualScroll]=\"virtualScroll\"\n            [bufferAmount]=\"bufferAmount\"\n            [trackByFn]=\"trackByFn\"\n            [sortFn]=\"sortFn\"\n            [readonly]=\"readonly || disabled\"\n            [hasSearch]=\"hasSearch\"\n            [searchPlaceholder]=\"searchPlaceholder\"\n            [searchFn]=\"searchFn\"\n            [searchWhileComposing]=\"searchWhileComposing\"\n            [externalSearchTermMinLength]=\"externalSearchTermMinLength\"\n            [externalSearchSubject]=\"externalSearchSubject\"\n            [externalTotalOptionCount]=\"externalTotalOptionCount\"\n            [notFoundText]=\"notFoundText\"\n            [loading]=\"leftPaneLoading\"\n            [hasToolbar]=\"hasToolbar\"\n            [hasFooter]=\"hasFooter\"\n            [items]=\"items\"\n            [compareWith]=\"compareWith\"\n            [optionTemplate]=\"_optionTemplate\"\n            [optgroupTemplate]=\"_optgroupTemplate\"\n            [toolbarTemplate]=\"_toolbarTemplate\"\n            [footerTemplate]=\"_footerTemplate\"\n            [customItemTemplate]=\"_customItemTemplate\"\n            [escapeHTML]=\"_escapeHTML\"\n            (triggerMove)=\"moveLeftToRight()\"\n        ></hc-pick-pane>\n    </div>\n\n    <div class=\"hc-picklist-move-btns\">\n        <button\n            hc-button\n            buttonStyle=\"primary-alt\"\n            class=\"hc-picklist-move-btn hc-picklist-right-arrow-btn\"\n            [title]=\"\n                maxSelectedItems && hasMaxItemsSelected ? 'Cannot select more than ' + maxSelectedItems.toLocaleString() + ' items.' : ''\n            \"\n            (click)=\"moveLeftToRight()\"\n            [disabled]=\"disabled || _availablePane.selectedItems.length === 0 || hasMaxItemsSelected\"\n        >\n            <span class=\"hc-picklist-right-arrow hc-picklist-arrow\"></span>\n        </button>\n        <button\n            hc-button\n            buttonStyle=\"primary-alt\"\n            class=\"hc-picklist-move-btn\"\n            (click)=\"moveRightToLeft()\"\n            [disabled]=\"disabled || _selectedPane.selectedItems.length === 0\"\n        >\n            <span class=\"hc-picklist-left-arrow hc-picklist-arrow\"></span>\n        </button>\n    </div>\n\n    <div class=\"hc-picklist-pane-container hc-picklist-pane-right\">\n        @if (hasHeader) {\n        <div class=\"hc-picklist-pane-header\">\n            <ng-template #defaultRightHeaderTemplate>\n                <h2 class=\"hc-picklist-pane-header-default\">\n                    {{ rightHeaderText }}\n                    @if (maxSelectedItems) {\n                    <span class=\"hc-picklist-max-limit-msg\" [class.hc-picklist-max-limit-exceeded]=\"hasExceededMaxItemsSelected\">\n                        *Select up to {{ maxSelectedItems }} options.@if (hasExceededMaxItemsSelected) { Limit exceeded. }\n                    </span>\n                    }\n                </h2>\n            </ng-template>\n            <ng-template [ngTemplateOutlet]=\"_paneHeaderRightTemplate || defaultRightHeaderTemplate\"></ng-template>\n        </div>\n        }\n        <hc-pick-pane\n            #selected\n            [bindLabel]=\"bindLabel\"\n            [bindValue]=\"bindValue\"\n            [addCustomItem]=\"addCustomItem\"\n            [addCustomItemText]=\"addCustomItemText\"\n            [groupBy]=\"groupBy\"\n            [groupValue]=\"groupValue\"\n            [canSelectGroup]=\"canSelectGroup\"\n            [canCloseGroup]=\"canCloseGroup\"\n            [closeGroupsByDefault]=\"closeGroupsByDefault\"\n            [orphanItemsGroupName]=\"orphanItemsGroupName\"\n            [virtualScroll]=\"virtualScroll\"\n            [bufferAmount]=\"bufferAmount\"\n            [trackByFn]=\"trackByFn\"\n            [sortFn]=\"sortFn\"\n            [readonly]=\"readonly || disabled\"\n            [hasSearch]=\"hasSearch\"\n            [searchPlaceholder]=\"searchPlaceholder\"\n            [searchFn]=\"searchFn\"\n            [searchWhileComposing]=\"searchWhileComposing\"\n            [notFoundText]=\"notFoundText\"\n            [loading]=\"rightPaneLoading\"\n            [hasToolbar]=\"hasToolbar\"\n            [hasFooter]=\"hasFooter\"\n            [compareWith]=\"compareWith\"\n            [optionTemplate]=\"_optionTemplate\"\n            [optgroupTemplate]=\"_optgroupTemplate\"\n            [toolbarTemplate]=\"_toolbarTemplate\"\n            [footerTemplate]=\"_footerTemplate\"\n            [customItemTemplate]=\"_customItemTemplate\"\n            [escapeHTML]=\"_escapeHTML\"\n            (triggerMove)=\"moveRightToLeft()\"\n        ></hc-pick-pane>\n    </div>\n</div>\n","import { PickOption } from '../pick.types';\n\nexport type SelectionModelFactory = () => PickSelectionModel;\n\nexport function DefaultSelectionModelFactory(): DefaultSelectionModel {\n    return new DefaultSelectionModel();\n}\n\n/** @docs-private */\nexport interface PickSelectionModel {\n    value: PickOption[];\n    select(item: PickOption);\n    unselect(item: PickOption);\n    clear(keepDisabled: boolean);\n    selectAll(items: Array<PickOption>, canSelectGroup: boolean);\n}\n\n/** @docs-private */\nexport class DefaultSelectionModel implements PickSelectionModel {\n    private _selected: PickOption[] = [];\n\n    get value(): PickOption[] { return this._selected; }\n\n    select(item: PickOption): void {\n        item.selected = true;\n        if (!item.isParent) {\n            this._selected.push(item);\n        }\n        if (item.isChild && item.parent) {\n            item.parent.selected = item.parent.children?.every(x => x.selected);\n        } else if (item.isParent && item.children) {\n            this._setChildrenSelectedState(item.children, true);\n            this._removeChildren(item);\n            this._selected = [...this._selected, ...item.children.filter(x => !x.disabled)];\n        }\n    }\n\n    unselect(item: PickOption): void {\n        this._selected = this._selected.filter(x => x !== item);\n        item.selected = false;\n        if (item.isChild && item?.parent?.selected) {\n            const children = item.parent.children || [];\n            this._removeParent(item.parent);\n            this._removeChildren(item.parent);\n            this._selected.push(...children.filter(x => x !== item && !x.disabled));\n            item.parent.selected = false;\n        } else if (item.isParent) {\n            this._setChildrenSelectedState(item.children || [], false);\n            this._removeChildren(item);\n        }\n    }\n\n    clear(keepDisabled: boolean): void {\n        this._selected = keepDisabled ? this._selected.filter(x => x.disabled) : [];\n    }\n\n    selectAll(items: Array<PickOption>, canSelectGroup: boolean): void {\n        this._selected = items.filter(i => !i.disabled && !i.children);\n        items.filter(i => !i.disabled && (canSelectGroup || !i.children)).forEach(i => i.selected = true);\n    }\n\n    private _setChildrenSelectedState(children: PickOption[], selected: boolean) {\n        for (const child of children) {\n            if (child.disabled) {\n                continue;\n            }\n            child.selected = selected;\n        }\n    }\n\n    private _removeChildren(parent: PickOption) {\n        this._selected = [\n            ...this._selected.filter(x => x.parent !== parent),\n            ...parent.children?.filter(x => x.parent === parent && x.disabled && x.selected) || []\n        ];\n    }\n\n    private _removeParent(parent: PickOption) {\n        this._selected = this._selected.filter(x => x !== parent);\n    }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PicklistComponent } from './picklist.component';\nimport { PickOptionComponent } from './pick-option.component';\nimport { PickPaneComponent } from './pane/pick-pane.component';\nimport { SELECTION_MODEL_FACTORY } from './pick.types';\nimport {\n    PickPaneFooterTemplateDirective,\n    PickPaneToolbarTemplateDirective,\n    PickOptgroupTemplateDirective,\n    PickOptionTemplateDirective,\n    PickPaneHeaderLeftTemplateDirective,\n    PickPaneHeaderRightTemplateDirective,\n    PickCustomItemTemplateDirective,\n    PickItemLabelDirective\n} from './pick-templates.directive';\nimport { DefaultSelectionModelFactory } from './pane/selection-model';\nimport { PickPaneListComponent } from './pane/pick-pane-list.component';\nimport {ButtonModule} from '../button/button.module';\nimport {InputModule} from '../input/input.module';\nimport {FormFieldModule} from '../form-field/hc-form-field.module';\nimport {ProgressIndicatorsModule} from '../progress-indicators/progress-indicators.module';\nimport { FormsModule } from '@angular/forms';\n\n@NgModule({\n    declarations: [\n        PickPaneComponent,\n        PicklistComponent,\n        PickOptionComponent,\n        PickOptgroupTemplateDirective,\n        PickOptionTemplateDirective,\n        PickPaneHeaderLeftTemplateDirective,\n        PickPaneHeaderRightTemplateDirective,\n        PickPaneToolbarTemplateDirective,\n        PickPaneFooterTemplateDirective,\n        PickCustomItemTemplateDirective,\n        PickPaneListComponent,\n        PickItemLabelDirective\n    ],\n    imports: [\n        CommonModule,\n        FormsModule,\n        ButtonModule,\n        InputModule,\n        FormFieldModule,\n        ProgressIndicatorsModule\n    ],\n    exports: [\n        PickPaneComponent,\n        PicklistComponent,\n        PickOptionComponent,\n        PickOptgroupTemplateDirective,\n        PickOptionTemplateDirective,\n        PickPaneHeaderLeftTemplateDirective,\n        PickPaneHeaderRightTemplateDirective,\n        PickPaneToolbarTemplateDirective,\n        PickPaneFooterTemplateDirective,\n        PickCustomItemTemplateDirective,\n        PickPaneListComponent,\n        PickItemLabelDirective\n    ],\n    providers: [\n        { provide: SELECTION_MODEL_FACTORY, useValue: DefaultSelectionModelFactory }\n    ]\n})\nexport class PicklistModule {}\n","import { Component, ElementRef, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ActiveModal } from '../modal/active-modal';\nimport { ReleaseNotesModalData } from './release-notes.model';\n\n@Component({\n    selector: 'hc-release-notes-modal',\n    templateUrl: './release-notes-modal.component.html',\n    styleUrls: ['./release-notes-modal.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class ReleaseNotesModalComponent implements OnInit {\n    public _data: ReleaseNotesModalData;\n    constructor(private activeModal: ActiveModal) {}\n\n\n    _onReleaseOpened(releaseIndex: number, modalBody: ElementRef, accordion: ElementRef): void {\n        this._data.releaseNotes.forEach((rn, index) => {\n            rn.isOpen = index === releaseIndex;\n        });\n        // scroll open accordion to the top of the modal body\n        setTimeout(() => {\n            const top = accordion.nativeElement.offsetTop - modalBody.nativeElement.offsetTop;\n            modalBody.nativeElement.scroll({ top: top, behavior: 'smooth' });\n        }, 500);\n    }\n\n    ngOnInit(): void {\n        this._data = this.activeModal.data;\n    }\n\n    /** Close the modal */\n    close(): void {\n        this.activeModal.close(true);\n    }\n}\n","<hc-modal class=\"hc-rn-modal\">\n    <hc-modal-header>\n        <h1>\n            <span class=\"hc-ico-bullhorn hc-icon-left\"></span>\n            What's New {{ _data.appName ? 'in ' + _data.appName : '' }}\n        </h1>\n        @if (_data.headerLinkUrl) {\n        <a [href]=\"_data.headerLinkUrl\" class=\"hc-rn-modal-header-link\">\n            {{ _data.headerLinkText }}\n            <span class=\"hc-ico-external-link hc-icon-right\"></span>\n        </a>\n        }\n    </hc-modal-header>\n    <hc-modal-body #modalBody>\n        @for (release of _data.releaseNotes; track release; let index = $index) {\n        <hc-accordion\n            [disabled]=\"_data.releaseNotes.length < 2\"\n            #accordion\n            [open]=\"release.isOpen\"\n            (openStart)=\"_onReleaseOpened(index, modalBody.elementRef, accordion.elementRef)\"\n            class=\"hc-rn-modal-accordion\"\n        >\n            <hc-accordion-toolbar>\n                <div class=\"hc-accordion-toolbar-inner\">\n                    <span class=\"hc-rn-modal-version\">{{ release.version }} Release</span>\n                    <span class=\"hc-rn-modal-date\">{{ release.releaseDateStr }}</span>\n                </div>\n            </hc-accordion-toolbar>\n            <div [innerHTML]=\"release.notesHTML\"></div>\n        </hc-accordion>\n        }\n    </hc-modal-body>\n    <hc-modal-footer>\n        @if (_data.showNotice) {\n        <span class=\"hc-font-em hc-rn-modal-view-again-notice\">To view these changes again, click “What’s New” in the help menu</span>\n        }\n        <button hc-button (click)=\"close()\">OK</button>\n    </hc-modal-footer>\n</hc-modal>\n","export interface IReleaseNotesModalData {\n    appName: string;\n    headerLinkText?: string;\n    headerLinkUrl?: string;\n    releaseNotes: IReleaseNote[];\n    showNotice?: boolean;\n}\n\nexport interface IReleaseNote {\n    version: string;\n    notesHTML: string;\n    releaseMonth?: number;\n    releaseYear?: number;\n    releaseDay?: number;\n}\n\n/** Configuration data passed to the Release Notes modal */\nexport class ReleaseNotesModalData implements IReleaseNotesModalData {\n    /** Name of the application */\n    appName: string;\n    /** Text shown as a link in the header. Defaults to 'More on HC Community'. We recommend linking to the release notes page on Health Catalyst Community for your web app, but the link text and url can be configured however you would like. */\n    headerLinkText?: string = 'More on HC Community';\n    /** URL for link in the header. We recommend linking to the release notes page on Health Catalyst Community for your web app, but the link text and url can be configured however you would like. */\n    headerLinkUrl?: string = '';\n    /** Collection of release notes by version. UI will be slightly simplified if only one version is given. */\n    releaseNotes: ReleaseNote[];\n    /** True to show notice about where to find this window again. Some apps like to open this window automatically the first time the app is loaded after a new release. In those cases, it's helpful to show a message in the footer explaining how to find this window again later. Default is to show those message. */\n    showNotice?: boolean = true;\n}\n\n/** Notes for a single release */\nexport class ReleaseNote implements IReleaseNote {\n    /** True if this release note accordion should be open */\n    public isOpen = false;\n    /** Merges the release day, month and year into a string: \"DD MMM YYYY\" */\n    public get releaseDateStr(): string { return this._releaseDateStr; }\n    private _releaseDateStr: string;\n    constructor(\n        /** Release version. Semantic versioning recommended. */\n        public version: string,\n        /** Release notes for the given version.\n        * **WARNING:** You are responsible to sanitize any unsafe user input. */\n        public notesHTML: string,\n        /** Optional. What month is the release from? [1-12] */\n        public releaseMonth: number,\n        /** Optional. What year is the release from? [YYYY] */\n        public releaseYear: number,\n        /** Optional. What day is the release from? [1-31] */\n        public releaseDay: number = 0) {\n        // take a number 1-12 and produce a string like 'Jan', 'Feb', etc.\n        const monthStr = new Date(releaseYear, releaseMonth - 1, 1).toLocaleString('en-us', { month: 'short' });\n        this._releaseDateStr = `${releaseDay ? releaseDay : ''} ${monthStr} ${releaseYear}`;\n    }\n}\n","import { HcModal } from '../modal/modal';\nimport { Injectable } from '@angular/core';\nimport { ModalOptions } from '../modal/modal-options';\nimport { ModalService } from '../modal';\nimport { ReleaseNotesModalComponent } from './release-notes-modal.component';\nimport { IReleaseNotesModalData, ReleaseNote, ReleaseNotesModalData } from './release-notes.model';\n\n/** Inject this service and call `open()` to get a Cashmere-standard modal for release notes. */\n@Injectable()\nexport class ReleaseNotesService {\n    constructor(private modalService: ModalService) {}\n\n    /** Open the release notes modal\n     * @param data Configuration data for the modal. See ReleaseNotesModalData class for details.\n     * @param modalOptions Options for the modal. See ModalOptions class for details.\n     * @returns A reference to the opened modal.\n    */\n    open(data: IReleaseNotesModalData, modalOptions?: ModalOptions): HcModal<unknown> {\n        const mergedModalOptions = Object.assign({ size: 'lg'}, modalOptions);\n        const modalData = Object.assign(new ReleaseNotesModalData(), data);\n        modalData.releaseNotes = modalData.releaseNotes.map(rn => new ReleaseNote(rn.version, rn.notesHTML, rn.releaseMonth, rn.releaseYear, rn.releaseDay));\n        modalData.releaseNotes[0].isOpen = true; // open the first release notes by default\n        mergedModalOptions.data = modalData;\n\n        return this.modalService.open(ReleaseNotesModalComponent, mergedModalOptions);\n    }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DragDropModule} from '@angular/cdk/drag-drop';\nimport { ButtonModule } from '../button/button.module';\nimport { ReleaseNotesService } from './release-notes.service';\nimport { ReleaseNotesModalComponent } from './release-notes-modal.component';\nimport { ModalModule } from '../modal';\nimport { AccordionModule } from '../accordion';\n\n@NgModule({\n    imports: [CommonModule, DragDropModule, ButtonModule, ModalModule, AccordionModule],\n    declarations: [\n        ReleaseNotesModalComponent\n    ],\n    exports: [ReleaseNotesModalComponent],\n    providers: [ReleaseNotesService]\n})\nexport class ReleaseNotesModalModule {}\n","export enum ResizablePositionOption {\n    bottom = 'bottom',\n    left = 'left',\n    right = 'right',\n    top = 'top'\n}\n\nexport type ResizablePosition = keyof typeof ResizablePositionOption;\n","export class ResizableMetadata {\n    static readonly classPrefix = 'hc-resizable-handle-';\n    static readonly classSelectorPrefix = 'hc-resizable-handle-selector-';\n    static readonly baseClass = 'hc-resizable-handle';\n    static readonly highlight = 'hc-resizable-border-highlight';\n    static readonly maxHeightClass = 'hc-resizable-max-height';\n    static readonly maxWidthClass = 'hc-resizable-max-width';\n    static readonly regexMaxHeight = new RegExp(ResizableMetadata.maxHeightClass);\n    static readonly regexMaxWidth = new RegExp(ResizableMetadata.maxWidthClass);\n}\n","import { Component, ElementRef, EventEmitter, HostBinding, Input, OnChanges, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { Subscription, fromEvent } from 'rxjs';\nimport { ResizablePosition, ResizablePositionOption } from './resizable.config';\nimport { ResizableMetadata as Meta } from './resizable.meta';\nimport { parseBooleanAttribute, untilDestroyed } from '../util';\n\n/** A container that the user can resize the dimensions of */\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: '[hcResizable]',\n    templateUrl: './resizable.component.html',\n    styleUrls: ['./resizable.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\n\nexport class ResizableComponent implements OnChanges {\n    _className: string;\n    _classNameSelector: string;\n\n    private _mousePos: number;\n    private _startSize: number;\n    private _disabled = false;\n\n    private _dragSubscription: Subscription;\n\n    @HostBinding('class.hc-resizable-container')\n    _hostClass = true;\n\n    /** Removes the resizable handle from the container when set to `true` */\n    @Input()\n    get disabled(): boolean {\n        return this._disabled;\n    }\n    set disabled(value: boolean | string ) {\n        this._disabled = parseBooleanAttribute( value );\n    }\n\n    /** Determines which corner of the container the drag handle will be available on.\n     * Accepts `bottom`, `left`, `right`, or `top`.*/\n    @Input() position: ResizablePosition;\n\n    /** The maximum value (in pixels) that the container may expand to. There is no max by default.*/\n    @Input() max: number;\n\n    /** The minimum value (in pixels) that the container may contract to. There is no min by default.*/\n    @Input() min: number;\n\n    /** Emits a `DOMRect` after a drag event is complete */\n    @Output() resized = new EventEmitter<DOMRect>();\n\n    constructor(public _element: ElementRef<HTMLElement>) {}\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes.disabled?.currentValue || changes.position?.currentValue) {\n            this._setDefaultStyles();\n        }\n        if (changes.position?.currentValue) {\n            this._initClassName(changes.position.currentValue);\n        }\n    }\n\n    _dragStarted(event: MouseEvent): void {\n        this._className = `${this._className} ${Meta.highlight}`;\n        this._startSize = this._isVertical() ? this._element.nativeElement.getBoundingClientRect().height : this._element.nativeElement.getBoundingClientRect().width;\n        this._mousePos = this._isVertical() ? event.screenY : event.screenX;\n\n        event.stopPropagation();\n        event.preventDefault();\n\n        this._dragSubscription = fromEvent<MouseEvent>(window.document, 'mousemove')\n            .pipe(untilDestroyed(this))\n            .subscribe(event => this._dragMoved(event));\n        this._dragSubscription.add(\n            fromEvent(window.document, 'mouseup')\n                .pipe(untilDestroyed(this))\n                .subscribe(() => this._dragEnded())\n        );\n    }\n\n    _dragEnded(): void {\n        if (this._dragSubscription) {\n            this._className = this._className.replace(Meta.highlight, '');\n            this.resized.emit(this._element.nativeElement.getBoundingClientRect());\n            this._dragSubscription.unsubscribe();\n        }\n    }\n\n    _dragMoved(event: MouseEvent): void {\n        if (this._isVertical()) {\n            const delta = event.screenY - this._mousePos;\n            this._element.nativeElement.style.height =\n                this.position === ResizablePositionOption.top\n                    ? `${this._startSize - delta}px`\n                    : `${this._startSize + delta}px`;\n            this._startSize = this._element.nativeElement.getBoundingClientRect().height;\n            if ( this._startSize > this.max ) {\n                this._element.nativeElement.style.height = this.max + 'px';\n                this._startSize = this.max;\n            } else if ( this._startSize < this.min ) {\n                this._element.nativeElement.style.height = this.min + 'px';\n                this._startSize = this.min;\n            }\n            this._mousePos = event.screenY;\n        } else {\n            const delta = event.screenX - this._mousePos;\n            this._element.nativeElement.style.width =\n                this.position === ResizablePositionOption.left\n                    ? `${this._startSize - delta}px`\n                    : `${this._startSize + delta}px`;\n            this._startSize = this._element.nativeElement.getBoundingClientRect().width;\n            if ( this._startSize > this.max ) {\n                this._element.nativeElement.style.width = this.max + 'px';\n                this._startSize = this.max;\n            } else if ( this._startSize < this.min ) {\n                this._element.nativeElement.style.width = this.min + 'px';\n                this._startSize = this.min;\n            }\n            this._mousePos = event.screenX;\n        }\n\n        event.stopPropagation();\n        event.preventDefault();\n    }\n\n    /** Resets the resizeable container to its orginal default size */\n    reset(): void {\n        this._element.nativeElement.style.width = '';\n        this._element.nativeElement.style.height = '';\n    }\n\n    private _initClassName(position: ResizablePosition): void {\n        this._className = `${Meta.baseClass} ${Meta.classPrefix}${position}`;\n        this._classNameSelector = `${Meta.classSelectorPrefix}${position}`;\n    }\n\n    private _isHorizontal(): boolean {\n        return this.position === ResizablePositionOption.left || this.position === ResizablePositionOption.right;\n    }\n\n    private _isVertical(): boolean {\n        return this.position === ResizablePositionOption.bottom || this.position === ResizablePositionOption.top;\n    }\n\n    private _setDefaultStyles(): void {\n        const classes = this._element.nativeElement.className ?? '';\n        if (this._isHorizontal() && !Meta.regexMaxWidth.test(classes)) {\n            this._element.nativeElement.className = `${classes} ${Meta.maxWidthClass}`;\n        } else if (this._isVertical() && !Meta.regexMaxHeight.test(classes)) {\n            this._element.nativeElement.className = `${classes} ${Meta.maxHeightClass}`;\n        }\n    }\n\n    // Must be present for AOT compilation to work, even if empty\n    public ngOnDestroy(): void { return; }\n}\n","@if (!disabled) {\n<div>\n    <div [class]=\"_className\" (mousedown)=\"_dragStarted($event)\"></div>\n    <span class=\"hc-resizable-handle-selector\" [class]=\"_classNameSelector\"></span>\n</div>\n}\n<ng-content></ng-content>\n","import { Directive, HostBinding } from '@angular/core';\n\n/** Can be added to a sibling of a resizable element that does not need a resize handle */\n@Directive({\n    selector: '[hcResizableStatic]',\n    standalone: false\n})\nexport class ResizableStaticDirective {\n    @HostBinding('class.hc-resizable-static')\n    _hostClass = true;\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\nimport { parseBooleanAttribute } from '../util';\n\n/** Can be added to the parent element containing resizable and static elements */\n@Directive({\n    selector: '[hcResizableContainer]',\n    standalone: false\n})\nexport class ResizableContainerDirective {\n    _vertical = true;\n\n    @HostBinding('class.hc-resizable-container-parent-horizontal')\n    _horizontalClass = false;\n\n    @HostBinding('class.hc-resizable-container-parent-vertical')\n    _verticalClass = true;\n\n    /** Orients the container for horizontal or vertical resizing; defaults to `true` */\n    @Input()\n    get vertical(): boolean {\n        return this._vertical;\n    }\n    set vertical(value: boolean | string ) {\n        this._vertical = parseBooleanAttribute( value );\n        this._verticalClass = this._vertical;\n        this._horizontalClass = !this._vertical;\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ResizableComponent } from './resizable.component';\nimport { ResizableStaticDirective } from './resizable-static.directive';\nimport { ResizableContainerDirective } from './resizable-container.directive';\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [ResizableComponent, ResizableStaticDirective, ResizableContainerDirective],\n    declarations: [ResizableComponent, ResizableStaticDirective, ResizableContainerDirective]\n})\nexport class ResizableModule {}\n","import {Directive, HostBinding, ElementRef, Input, HostListener, Renderer2, Output, EventEmitter} from '@angular/core';\n\n/** Marks the host element as a link within an `hc-scroll-nav`. */\n@Directive({\n    selector: '[hcScrollLink]',\n    standalone: false\n})\nexport class ScrollNavLinkDirective {\n    /** The `id` of the corresponding `hcScrollTarget` that you would like to link to. */\n    @Input() public hcScrollLink: string | null;\n\n    /** Emits the associated content element when a nav link is clicked */\n    @Output() navClick = new EventEmitter<HTMLElement>();\n\n    @HostBinding('class.hc-scroll-nav-link')\n    _hostClass = true;\n\n    /** The `nativeElement` of the corresponding `hcScrollTarget` that you would like to link to. */\n    public nativeElement: HTMLElement;\n\n    private readonly CLICKED_SUBSECTION_CLASS = 'hc-scroll-nav-clicked-subsection';\n    private readonly SECTION_TAG_NAME = 'SECTION';\n\n    constructor(element: ElementRef, private renderer: Renderer2) {\n        if (element) {\n            this.nativeElement = element.nativeElement;\n        }\n    }\n\n    public _setDirectiveToNode(node: Node): void {\n        this.nativeElement = node as HTMLElement;\n        this.hcScrollLink = (node as HTMLElement).getAttribute('hcScrollLink');\n        this.renderer.addClass(node, 'hc-scroll-nav-link');\n\n        this.renderer.listen(node, \"click\", () => {\n            if (this.hcScrollLink) {\n                this.navigateToSection(this.hcScrollLink);\n            }\n        });\n\n        this.renderer.listen(node, \"keydown.enter\", () => {\n            if (this.hcScrollLink) {\n                this.navigateToSection(this.hcScrollLink);\n            }\n        });\n    }\n\n    @HostListener('keydown.enter') _onEnter(): void {\n        if (this.hcScrollLink) {\n            this.navigateToSection(this.hcScrollLink);\n        }\n    }\n\n    @HostListener('click') _onClick(): void {\n        if (this.hcScrollLink) {\n            this.navigateToSection(this.hcScrollLink);\n        }\n    }\n\n    private navigateToSection(id: string) {\n        const el = document.getElementById(id);\n        \n        if (!el) {\n            throw new Error(`Failed to navigate. Could not find the element with the id: ${id}.`);\n        } else {\n            this.setSubsectionClass(el);\n\n            if (!this.hasClickedSubsection(el)) {\n                this.navClick.emit( el );\n            }\n        }\n    }\n\n    private setSubsectionClass(el: HTMLElement) {\n        const parentElement = el.parentElement;\n\n        if (parentElement && parentElement.tagName === this.SECTION_TAG_NAME) {\n            el.classList.add(this.CLICKED_SUBSECTION_CLASS);\n        }\n    }\n\n    private hasClickedSubsection(el: HTMLElement) {\n        let subsectionHasBeenClicked = false;\n\n        Array.from(el.children).forEach((childElement) => {\n            if ((childElement.tagName === this.SECTION_TAG_NAME) && (childElement.className.includes(this.CLICKED_SUBSECTION_CLASS))) {\n                subsectionHasBeenClicked = true;\n                childElement.classList.remove(this.CLICKED_SUBSECTION_CLASS);\n            }\n        });\n\n        return subsectionHasBeenClicked;\n    }\n}\n","import { Component, ElementRef, ViewEncapsulation, AfterViewInit, QueryList, ContentChildren, Renderer2, ViewChild, Input, OnDestroy, Output, EventEmitter } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { some, find, map, differenceBy } from 'lodash';\nimport { ScrollNavLinkDirective } from './scroll-nav-link.directive';\nimport { CdkScrollable } from '@angular/cdk/overlay';\n\n/** Container for scroll navigation links. */\n@Component({\n    selector: 'hc-scroll-nav',\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['scroll-nav.component.scss'],\n    templateUrl: 'scroll-nav.component.html',\n    standalone: false\n})\nexport class HcScrollNavComponent implements AfterViewInit, OnDestroy {\n    /** Set to true to enable scrolling the nav link pane as the content pane scrolls */\n    @Input() public scrollNavWithContent = false;\n    /** Set to true to enable the component to change for dynamic content changes that might not be picked up by Angular */\n    @Input() public hasDynamicContent = false;\n    @Output() _scrollEvent = new EventEmitter<HTMLElement>();\n    @ViewChild('scrollContainer', {read: CdkScrollable, static: false}) public _cdkScrollableElement: CdkScrollable;\n    @ContentChildren(ScrollNavLinkDirective, { descendants: true }) private linkList: QueryList<ScrollNavLinkDirective>;\n    public get _links(): Array<HTMLElement> {\n        return this.linkList.toArray().map(e => e.nativeElement);\n    }\n\n    public isScrolling = false;\n    private unsubscribe$ = new Subject<void>();\n    private previousElementPosition = 0;\n    private previousList: ScrollNavLinkDirective[] = [];\n    private tryRefresh = false;\n    private dynamicInterval;\n\n    private readonly SCROLL_LINK_ATTRIBUTE = 'hcScrollLink';\n    private readonly ACTIVE_CLASS = 'hc-scroll-nav-link-active';\n    private readonly INACTIVE_CLASS = 'hc-scroll-nav-link-inactive';\n    private readonly ACTIVE_PARENT_SECTION_CLASS = 'hc-scroll-nav-active-parent-section-link';\n    private readonly INACTIVE_PARENT_SECTION_CLASS = 'hc-scroll-nav-inactive-parent-section-link';\n    private readonly SUBSECTION_CLASS = 'hc-scroll-nav-subsection-link';\n    private readonly PARENT_SECTION_CLASS = 'hc-scroll-nav-parent-section-link';\n    private readonly PARENT_SECTION_CONTENT_CLASS = 'hc-scroll-nav-parent-section-link-content';\n    private readonly LINKS_CONTAINER_CLASS = 'hc-scroll-nav-links-container';\n    private readonly UNORDERED_LIST_TAG_NAME = 'UL';\n    private readonly LIST_TAG_NAME = 'LI';\n\n    constructor(public _elementRef: ElementRef, private renderer: Renderer2) {}\n\n    public ngOnDestroy(): void  {\n        if (this.dynamicInterval) {\n            clearInterval(this.dynamicInterval);\n        }\n        this.unsubscribe$.next();\n        this.unsubscribe$.complete();\n    }\n\n    public ngAfterViewInit(): void {\n        setTimeout(() => {\n            this.initializeLinks(true);\n            this.previousList = this.linkList.toArray();\n        }, 100);\n\n        if (this.hasDynamicContent) {\n            this.refreshScrollNavLinks();\n            this.dynamicInterval = setInterval(() => {\n                this.refreshScrollNavLinks();\n            }, 300);\n        }\n\n        // If links are added dynamically, refresh the scrollNav\n        this.linkList.changes.pipe(takeUntil(this.unsubscribe$)).subscribe((newLinkList: QueryList<ScrollNavLinkDirective>) => {\n            if (this.previousList.length === 0) {\n                this.previousList = newLinkList.toArray();\n                this.initializeLinks(true);\n            } else if (newLinkList.length === 0 && this.previousList.length > 0) {\n                this.refreshScrollNavLinks(this.previousList);\n            } else {\n                this.previousList = newLinkList.toArray();\n                this.initializeLinks();\n            }\n        });\n    }\n\n    /** Refresh the scroll nav links when dynamic changes have been made. updateScrollLinkArray parameter is optional */\n    public refreshScrollNavLinks(updateScrollLinkArray: ScrollNavLinkDirective[] = []): void {\n        if (updateScrollLinkArray.length > 0) {\n            this.linkList.reset(updateScrollLinkArray);\n            this.linkList.notifyOnChanges();\n\n            return;\n        }\n\n        const scrollLinkNodeList: NodeList = this._elementRef.nativeElement.querySelectorAll(`[${this.SCROLL_LINK_ATTRIBUTE}]`);\n\n        // create array to make the difference calculation off of\n        const scrollLinkList: CombinedLinkList[] = [];\n        scrollLinkNodeList.forEach((dynamicLink: HTMLElement) => {\n            const scrollLinkAttributeValue: string | null = dynamicLink.getAttribute(this.SCROLL_LINK_ATTRIBUTE);\n            if (scrollLinkAttributeValue) {\n                scrollLinkList.push({ hcScrollLink: scrollLinkAttributeValue, linkElement: dynamicLink });\n            }\n        });\n\n        if (\n            this.linkList.length !== scrollLinkList.length ||\n            differenceBy(scrollLinkList, this.linkList.toArray(), 'hcScrollLink').length > 0\n        ) {\n            const newLinkList: ScrollNavLinkDirective[] =\n                map(scrollLinkList, (dynamicLink: CombinedLinkList) => {\n                    let rtnLink: ScrollNavLinkDirective = <ScrollNavLinkDirective>{};\n\n                    if (some(this.linkList.toArray(), ['hcScrollLink', dynamicLink.hcScrollLink])) {\n                        const queryDirective: ScrollNavLinkDirective | undefined =\n                            find(this.linkList.toArray(), [\"hcScrollLink\", dynamicLink.hcScrollLink]);\n                        if (queryDirective) {\n                            rtnLink = queryDirective;\n                        }\n                    } else {\n                        const scrollNavLinkDirective: ScrollNavLinkDirective =\n                            new ScrollNavLinkDirective(<ElementRef>{}, this.renderer);\n                        scrollNavLinkDirective._setDirectiveToNode(dynamicLink.linkElement);\n                        rtnLink = scrollNavLinkDirective;\n                    }\n\n                    rtnLink.navClick.pipe(takeUntil(this.unsubscribe$)).subscribe( element => {\n                        this._scrollEvent.emit( element );\n                    })\n\n                    return rtnLink;\n                }\n            );\n\n            this.linkList.reset(newLinkList);\n            this.linkList.notifyOnChanges();\n\n            return;\n        }\n    }\n\n    public _setActiveSectionById(id: string): void {\n        const link = this.linkList.find(e => e.hcScrollLink === id);\n        if (!link) {\n            if (!this.tryRefresh) {\n                this.tryRefresh = true;\n                this.refreshScrollNavLinks();\n                this._setActiveSectionById(id);\n            } else {\n                this.tryRefresh = false;\n                throw new Error(`Failed to mark active section. Could not find the element with the data target for id: ${id}.`);\n            }\n        } else {\n            this.setActiveSection(link.nativeElement);\n        }\n    }\n\n    private initializeLinks(isInit = false): void {\n        this._links.forEach((link) => {\n            this.setClassesForSubsection(link);\n        });\n\n        if (this.linkList?.length > 0) {\n            const firstScrollLink = this.linkList.first?.hcScrollLink;\n            if (!firstScrollLink) {\n                throw new Error(\n                    `Failed to mark active section. Could not find the element with the data target for id: ${firstScrollLink}.`\n                );\n            }\n\n            this.linkList.forEach( link => {\n                link.navClick.pipe(takeUntil(this.unsubscribe$)).subscribe( element => {\n                    this._scrollEvent.emit( element );\n                });\n            });\n\n            if (isInit) {\n                this._setActiveSectionById(firstScrollLink);\n            }\n        }\n    }\n\n    private setActiveSection(element: HTMLElement): void {\n        const focusedEl = document.activeElement;\n\n        // inactivate all elements before activating the passed in element\n        this._links.forEach(e => {\n            // remove active styles and set inactive styles\n            e.classList.remove(this.ACTIVE_CLASS);\n            e.classList.add(this.INACTIVE_CLASS);\n            this.handleActiveParentSections(e, false);\n\n            // If a nav item on the scroll list currently has focus, remove it so a highlight border doesn't persist on scroll\n            if ( focusedEl === e ) {\n                e.blur();\n            }\n        });\n\n        element.classList.remove(this.INACTIVE_CLASS);\n        element.classList.add(this.ACTIVE_CLASS);\n        this.handleActiveParentSections(element, true);\n\n        if (this.scrollNavWithContent) {\n            this.scrollToElement(element);\n        }\n    }\n\n    private scrollToElement(element: HTMLElement): void {\n        let currentElementPosition = 0;\n        this._links.forEach((link, index) => {\n            if (link.getAttribute(this.SCROLL_LINK_ATTRIBUTE) === element.getAttribute(this.SCROLL_LINK_ATTRIBUTE)) {\n                currentElementPosition = index;\n            }\n        });\n\n        const container: HTMLElement = this._elementRef.nativeElement.querySelector(`.${this.LINKS_CONTAINER_CLASS}`);\n        const offsetTop: number = element.offsetTop;\n        const elementClientHeight: number = element.clientHeight;\n        const scrollHeight: number = container.scrollHeight;\n        const scrollTop: number = this._cdkScrollableElement.measureScrollOffset(\"top\");\n        const clientHeight: number = container.clientHeight;\n\n        if (!this.isScrolling) {\n            if (this.previousElementPosition < currentElementPosition) { // scroll down\n                if (offsetTop > clientHeight && scrollTop <= offsetTop) {\n                    this._cdkScrollableElement.scrollTo({ bottom: scrollHeight - offsetTop - elementClientHeight });\n                }\n            } else if (this.previousElementPosition > currentElementPosition) { // scroll up\n                this._cdkScrollableElement.scrollTo({ bottom: scrollHeight - offsetTop - elementClientHeight });\n            }\n        }\n\n        this.previousElementPosition = currentElementPosition;\n    }\n\n    private handleActiveParentSections(element: HTMLElement, isActive: boolean): void {\n        if (element.parentElement) {\n            if (element.className.includes(this.PARENT_SECTION_CLASS)) {\n                this.setActiveParentSection(element, isActive);\n            } else {\n                this.setActiveParentSection(element.parentElement, isActive);\n            }\n        } else if (element.className.includes(this.PARENT_SECTION_CLASS)) {\n            this.setActiveParentSection(element, isActive);\n        }\n    }\n\n    private setActiveParentSection(element: HTMLElement, isActive: boolean) {\n        if (element.hasAttribute(this.SCROLL_LINK_ATTRIBUTE)) {\n            if (isActive && !element.className.includes(this.ACTIVE_PARENT_SECTION_CLASS)) {\n                element.classList.remove(this.INACTIVE_PARENT_SECTION_CLASS);\n                element.classList.add(this.ACTIVE_PARENT_SECTION_CLASS);\n            } else if (!isActive && !element.className.includes(this.INACTIVE_PARENT_SECTION_CLASS)) {\n                element.classList.remove(this.ACTIVE_PARENT_SECTION_CLASS);\n                element.classList.add(this.INACTIVE_PARENT_SECTION_CLASS);\n            }\n        }\n\n        if (element.parentElement && !element.parentElement.className.includes(this.LINKS_CONTAINER_CLASS)) {\n            this.setActiveParentSection(element.parentElement, isActive);\n        }\n    }\n\n    private setClassesForSubsection(element: HTMLElement): void {\n        const parentElement = element.parentElement ? element.parentElement.parentElement : undefined;\n\n        if (parentElement && parentElement.tagName === this.LIST_TAG_NAME && parentElement.hasAttribute(this.SCROLL_LINK_ATTRIBUTE)) {\n            element.classList.add(this.SUBSECTION_CLASS);\n\n            if (!parentElement.className.includes(this.PARENT_SECTION_CLASS)) {\n                parentElement.classList.add(this.PARENT_SECTION_CLASS);\n                parentElement.classList.add(this.INACTIVE_PARENT_SECTION_CLASS);\n\n                let parentHasContent = (parentElement.childNodes[0] && parentElement.childNodes[0].nodeValue) ? true : false;\n\n                Array.from(parentElement.children).forEach((child) => {\n                    if (!(child.tagName === this.UNORDERED_LIST_TAG_NAME &&\n                          child.children[0] && child.children[0].hasAttribute(this.SCROLL_LINK_ATTRIBUTE))) {\n                        parentHasContent = true;\n                    }\n                });\n\n                if (parentHasContent && !parentElement.className.includes(this.PARENT_SECTION_CONTENT_CLASS)) {\n                    parentElement.classList.add(this.PARENT_SECTION_CONTENT_CLASS);\n                } else {\n                    parentElement.classList.remove(this.PARENT_SECTION_CONTENT_CLASS);\n                }\n            }\n        }\n    }\n}\n\nexport interface CombinedLinkList {\n    hcScrollLink: string;\n    linkElement: HTMLElement;\n}\n","<div #scrollContainer class=\"hc-scroll-nav-links-container\" cdk-scrollable>\n  <ng-content></ng-content>\n</div>","import {Directive, HostBinding, ElementRef} from '@angular/core';\n\n/** Marks the host element as a linkable section within an `hc-scroll-nav-content`.\n * Must set the `id` and link to it via an `hcScrollLink`. */\n@Directive({\n    selector: '[hcScrollTarget]',\n    standalone: false\n})\nexport class ScrollNavTargetDirective {\n    @HostBinding('class.hc-scroll-nav-target')\n    _hostClass = true;\n\n    /** The `nativeElement` of the corresponding `hcScrollTarget` that you would like to link to. */\n    public nativeElement: HTMLElement;\n\n    constructor(element: ElementRef) {\n        if (element) {\n            this.nativeElement = element.nativeElement;\n        }\n    }\n\n    public _setDirectiveToNode(node: Node): void {\n        this.nativeElement = node as HTMLElement;\n        this.nativeElement.classList.add('hc-scroll-nav-target');\n    }\n}\n","import {\n    Component,\n    ViewEncapsulation,\n    Input,\n    AfterViewInit,\n    ViewChild,\n    OnDestroy,\n    EventEmitter,\n    Output,\n    ContentChildren,\n    HostListener,\n    AfterViewChecked,\n    ElementRef,\n    Renderer2\n} from '@angular/core';\nimport type {QueryList} from '@angular/core';\nimport {CdkScrollable} from '@angular/cdk/scrolling';\nimport {Subject} from 'rxjs';\nimport {HcScrollNavComponent} from '../nav/scroll-nav.component';\nimport {takeUntil} from 'rxjs/operators';\nimport {differenceBy} from 'lodash';\nimport {ScrollNavTargetDirective} from './scroll-nav-target.directive';\n\n/** Contains scrollable content that is navigable via `hc-scroll-nav` links. */\n@Component({\n    selector: 'hc-scroll-nav-content',\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['scroll-nav-content.component.scss'],\n    templateUrl: 'scroll-nav-content.component.html',\n    standalone: false\n})\nexport class HcScrollNavContentComponent implements AfterViewInit, AfterViewChecked, OnDestroy {\n    private readonly DEFAULT_BUFFER = 0;\n    /** Reference to the scroll nav component. */\n    @Input() public nav: HcScrollNavComponent;\n    /** If true, will force the height of the final scroll target area to be the height of the scrollable container.\n     * This is helpful if you want the last target in the content area to be able to scroll to the top. You can alternatively\n     * target the last item with css. *Defaults to true.* */\n    @Input() public makeLastTargetFullHeight = true;\n    /** Adjust the min height of the last target */\n    @Input() public lastTargetMinHeightAdjustment = 0;\n    /** Number in pixels, used to give a little leeway in the shifting of the active nav when scrolling. *Defaults to 0.*\n     * Example: If set to 40, if showing just the bottom 40 pixels of the section before, count the next section as active. */\n    @Input() public bufferSpace = this.DEFAULT_BUFFER;\n    /** If true, applies smooth scrolling via css. *Defaults to true.* */\n    @Input() public shouldAnimateScroll = true;\n    /** Set to true to enable the component to change for dynamic content changes that might not be picked up by Angular */\n    @Input() public hasDynamicContent = false;\n    /** Fires when a new section is scrolled into view. Broadcasts the id of that section. */\n    @Output() public newSectionInView: EventEmitter<string> = new EventEmitter<string>();\n    @ViewChild('scrollContainer', {read: CdkScrollable, static: false}) public _cdkScrollableElement: CdkScrollable;\n    @ContentChildren(ScrollNavTargetDirective, { descendants: true }) private targets: QueryList<ScrollNavTargetDirective>;\n    /** Id of the current section scrolled into view. */\n    public sectionInView: string;\n    public get _scrollTargets(): Array<HTMLElement> {\n        return this.targets.toArray().map(e => e.nativeElement);\n    }\n\n    private unsubscribe$ = new Subject<void>();\n    private minHeightForLastTargetSet = false;\n    private systemScrollToElementId: string | undefined;\n    private lastElementScrolledTo: HTMLElement;\n    private systemScrollCount = 0;\n    private dynamicInterval;\n\n    private readonly SCROLL_TARGET_ATTRIBUTE = 'hcScrollTarget';\n\n    constructor(private _elementRef: ElementRef, private renderer: Renderer2) {}\n\n    public ngOnDestroy(): void {\n        this.unsubscribe$.next();\n        this.unsubscribe$.complete();\n\n        if (this.dynamicInterval) {\n            clearInterval(this.dynamicInterval);\n        }\n    }\n\n    public ngAfterViewInit(): void {\n        setTimeout(() => {\n            this.initializeTargets();\n        }, 100);\n\n        if (this.hasDynamicContent) {\n            this.refreshScrollNavTargets();\n            this.dynamicInterval = setInterval(() => {\n                this.refreshScrollNavTargets();\n            }, 300);\n        }\n\n        // If targets are added dynamically, refresh the scrollNav\n        this.targets.changes.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n            this.initializeTargets();\n        });\n\n        document.onclick = (event: MouseEvent) => {\n            const element: HTMLElement | null = (event.target as HTMLElement).closest('li[hcscrolllink]');\n            const scrollLinkAttribute: string | null | undefined = element?.getAttribute('hcscrolllink');\n            if (scrollLinkAttribute) {\n                this.systemScrollToElementId = scrollLinkAttribute;\n            }\n        };\n    }\n\n    public ngAfterViewChecked(): void {\n        if (this.makeLastTargetFullHeight && !this.minHeightForLastTargetSet) {\n            this.insureMinHeightForLastTarget();\n        }\n    }\n\n    @HostListener('window:resize') _onWindowResize(): void {\n        if (this.makeLastTargetFullHeight) {\n            this.minHeightForLastTargetSet = false;\n        }\n    }\n\n    /** Refresh the scroll nav targets when dynamic changes have been made. updateScrollTargetArray parameter is optional */\n    public refreshScrollNavTargets(updateScrollTargetArray: ScrollNavTargetDirective[] = []): void {\n        if (updateScrollTargetArray.length > 0) {\n            this.targets.reset(updateScrollTargetArray);\n            this.targets.notifyOnChanges();\n\n            return;\n        }\n\n        const scrollTargetNodeList: NodeList = this._elementRef.nativeElement.querySelectorAll(`[${this.SCROLL_TARGET_ATTRIBUTE}]`);\n\n        // create array to make the difference calculation off of\n        const scrollTargetList: CombinedTargetList[] = [];\n        scrollTargetNodeList.forEach((dynamicTarget: HTMLElement) => {\n            scrollTargetList.push({ id: dynamicTarget.id, targetElement: dynamicTarget });\n        });\n\n        if (this.targets.length !== scrollTargetList.length || differenceBy(scrollTargetList, this._scrollTargets, 'id').length > 0) {\n            const scrollTargetDirectiveArray: ScrollNavTargetDirective[] = [];\n            scrollTargetList.forEach((dynamicTarget) => {\n                const scrollNavTargetDirective: ScrollNavTargetDirective = new ScrollNavTargetDirective(<ElementRef>{});\n                scrollNavTargetDirective._setDirectiveToNode(dynamicTarget.targetElement);\n                scrollTargetDirectiveArray.push(scrollNavTargetDirective);\n            });\n\n            this.targets.reset(scrollTargetDirectiveArray);\n            this.targets.notifyOnChanges();\n        }\n    }\n\n    /** Scroll to top and reset the 'automatic full height for the last item' setting. */\n    public refresh(): void {\n        this.scrollToTop();\n        this.minHeightForLastTargetSet = false;\n    }\n\n    /** Helper function to scroll to the top of the content area. */\n    public scrollToTop(): void {\n        this._cdkScrollableElement.scrollTo({top: 0});\n    }\n\n    /** Will update the navigation state. */\n    public checkActiveSection(): void {\n        if (this._scrollTargets.length > 0) {\n            const offset: number = this._cdkScrollableElement.measureScrollOffset('top') + this._scrollTargets[0].offsetTop;\n\n            this._scrollTargets.forEach((target, index) => {\n                const el = target;\n                let initialOffset = 0;\n                let nextOffset = 0;\n\n                if (index > 0) {\n                    initialOffset = (el as HTMLElement).offsetTop - this.bufferSpace;\n                }\n                if (index + 1 < this._scrollTargets.length) {\n                    const nextEl = this._scrollTargets[index + 1];\n                    nextOffset = (nextEl as HTMLElement).offsetTop;\n                }\n\n                if (\n                    (initialOffset && nextOffset && offset >= initialOffset && offset < nextOffset) ||\n                    (initialOffset && !nextOffset && offset >= initialOffset) ||\n                    (!initialOffset && nextOffset && offset < nextOffset)\n                ) {\n                    this.lastElementScrolledTo = el as HTMLElement;\n                    this.setActiveSection((el as HTMLElement).getAttribute('id') || '');\n\n                }\n            });\n        }\n    }\n\n    /** Sets the active section to passed in scrollTarget */\n    public setActiveSection(scrollTarget: string): void {\n        if (this.sectionInView !== scrollTarget) {\n            this.sectionInView = scrollTarget;\n            this.nav._setActiveSectionById(scrollTarget);\n            this.newSectionInView.next(scrollTarget);\n        }\n    }\n\n    private initializeTargets(): void  {\n        if (this._cdkScrollableElement) {\n            this._cdkScrollableElement\n                .elementScrolled()\n                .pipe(takeUntil(this.unsubscribe$))\n                .subscribe(() => {\n                    if (this.systemScrollToElementId) {\n                        this.nav.isScrolling = true;\n                        this.systemScrollCount++;\n\n                        setTimeout(() => {\n                            if (this.systemScrollCount > 1) {\n                                this.systemScrollCount--;\n                            } else {\n                                this.nav.isScrolling = false;\n                                this.systemScrollToElementId = undefined;\n                                this.setActiveSection(this.lastElementScrolledTo.id);\n                                this.systemScrollCount = 0;\n                            }\n                        }, 1500);\n                    }\n\n                    this.checkActiveSection();\n                });\n        }\n\n        this._scrollTargets.forEach((target) => {\n            if (!target.id) {\n                throw Error('hcScrollTarget element needs an id.');\n            }\n        });\n\n        this.nav._scrollEvent.pipe(takeUntil(this.unsubscribe$)).subscribe( element => {\n            this._cdkScrollableElement.scrollTo({top: element.offsetTop});\n        });\n\n        this.insureMinHeightForLastTarget();\n    }\n\n    private getTargets(targets: HTMLElement[]): HTMLElement[] {\n        let rtnTargets: HTMLElement[] = [];\n\n        targets.forEach((target) => {\n            if (target.hasAttribute('hcScrollTarget')) {\n                rtnTargets.push(target);\n            }\n\n            if (target.children.length > 0) {\n                rtnTargets = rtnTargets.concat(this.getTargets(<Array<HTMLElement>>Array.from(target.children)));\n            }\n        });\n\n        return rtnTargets;\n    }\n\n    private insureMinHeightForLastTarget() {\n        if (this.makeLastTargetFullHeight) {\n            const containerHeight: number = this._cdkScrollableElement.getElementRef().nativeElement.offsetHeight;\n            if (containerHeight && this._scrollTargets.length > 0) {\n                this._scrollTargets.forEach((target) => {\n                    target.style.minHeight = 'unset';\n                });\n\n                const targetEl = this._scrollTargets[this._scrollTargets.length - 1];\n                targetEl.style.minHeight = `${containerHeight + this.lastTargetMinHeightAdjustment}px`;\n                this.minHeightForLastTargetSet = true;\n            }\n        }\n    }\n}\n\nexport interface CombinedTargetList {\n    id: string;\n    targetElement: HTMLElement;\n}\n","<div #scrollContainer class=\"hc-scroll-nav-content-container\" [ngClass]=\"{'hc-scroll-nav-smooth': shouldAnimateScroll}\" cdk-scrollable>\n  <ng-content></ng-content>\n</div>","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ScrollingModule} from '@angular/cdk/scrolling';\n\nimport {HcScrollNavContentComponent} from './content/scroll-nav-content.component';\nimport {HcScrollNavComponent} from './nav/scroll-nav.component';\nimport {ScrollNavTargetDirective} from './content/scroll-nav-target.directive';\nimport {ScrollNavLinkDirective} from './nav/scroll-nav-link.directive';\n\n@NgModule({\n    declarations: [HcScrollNavContentComponent, HcScrollNavComponent, ScrollNavTargetDirective, ScrollNavLinkDirective],\n    exports: [HcScrollNavContentComponent, HcScrollNavComponent, ScrollNavTargetDirective, ScrollNavLinkDirective],\n    imports: [CommonModule, ScrollingModule],\n    providers: []\n})\nexport class ScrollNavModule {}\n","import {Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {Subject} from 'rxjs';\nimport {debounceTime, distinctUntilChanged, takeUntil} from 'rxjs/operators';\n\n@Component({\n    selector: 'hc-search-bar',\n    templateUrl: 'search-bar.component.html',\n    styleUrls: ['search-bar.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class SearchBarComponent implements OnInit, OnDestroy, OnChanges {\n    /** Placeholder text for the search bar. *Defaults to `Search`.* */\n    @Input() placeholder = 'Search';\n    /** If true, disables the search bar. *Defaults to `false`.* */\n    @Input() disabled = false;\n    /** Preseed the search bar with a particular text value. *Defaults to empty string.* */\n    @Input() initialSearchTerm = '';\n    /** If true, show the search icon in the right side of the search bar. *Defaults to `true`.* */\n    @Input() showSearchIcon = true;\n    /** If true, show a clickable clear icon in the right side of the search bar when there's a search term present. *Defaults to `true`.* */\n    @Input() showClearIcon = true;\n    /** If true, fire triggerSearch event on user keyup (with a built-in 100ms debounce). *Defaults to `true`.* */\n    @Input() autoSearch = true;\n    /** Sets whether the input should be sized for small screens (if true, overrides the `tight` param) *Defaults to `false`.* */\n    @Input() mobile = false;\n    /** If true, condense the default padding and reduce the font size. *Defaults to `false`.*  */\n    @Input() tight = false;\n     /** If true, trigger search when search icon is clicked. *Defaults to `true`.*  */\n     @Input() triggerSearchOnSearchIcoClick = true;\n    /** Sets the time in milliseconds to wait before triggering a search. *Defaults to `100`. */\n    @Input()\n    public debounce = 100;\n    /** Fires when a search should be run. Outputs the search term. */\n    @Output() triggerSearch = new EventEmitter<string>();\n    /** Fires when clear icon is clicked. */\n    @Output() clearClicked = new EventEmitter<void>();\n    /** Fires when search icon is clicked. */\n    @Output() searchIconClicked = new EventEmitter<void>();\n    @ViewChild('searchFilter', {static: true}) private searchBar: ElementRef;\n    /** Returns the current search term. */\n    public get value(): string {\n        return this.searchBar.nativeElement.value;\n    }\n    private searchStream = new Subject<string>();\n    private destroy$ = new Subject<void>();\n\n    public ngOnDestroy(): void {\n        this.destroy$.next();\n        this.destroy$.complete();\n    }\n\n    public ngOnInit(): void {\n        this.setupSearchStream();\n\n        if (this.initialSearchTerm) {\n            this.setValue(this.initialSearchTerm);\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes.debounce) {\n            this.setupSearchStream();\n        }\n    }\n\n    /** Places focus in the search bar. */\n    public focus(): void {\n        this.searchBar.nativeElement.focus();\n    }\n\n    /** Manually set the value of the search bar. */\n    public setValue(val: string): void {\n        this.searchBar.nativeElement.value = val;\n    }\n\n    public _onKeyUp(event: KeyboardEvent, term: string): void {\n        if (event.key !== 'Tab' && this.autoSearch) {\n            this.searchStream.next(term);\n        }\n    }\n\n    /** Clear out search bar and trigger search. */\n    public clear(): void {\n        this.searchBar.nativeElement.value = '';\n        this.searchStream.next('');\n    }\n\n    /** Manually trigger search event. Optionally pass in a value to search for */\n    public search(term = ''): void {\n        term = term || this.searchBar.nativeElement.value;\n        this.setValue(term);\n        this.searchStream.next(term);\n    }\n\n    public _onEnter(term: string): void {\n        this.triggerSearch.emit(term);\n    }\n\n    public _onSearchIconClicked(): void {\n        this.focus();\n        this.searchIconClicked.emit();\n        if (this.triggerSearchOnSearchIcoClick) { this.search(); }\n    }\n\n    private setupSearchStream() {\n        this.destroy$.next();\n\n        this.searchStream\n        .pipe(debounceTime(this.debounce), distinctUntilChanged())\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(t => {\n            this.triggerSearch.emit(t);\n        });\n    }\n}\n","<hc-form-field class=\"hc-search-bar\" [tight]=\"tight\">\n    <input\n        id=\"search-box\"\n        hcInput\n        autocomplete=\"off\"\n        #searchFilter\n        type=\"text\"\n        [disabled]=\"disabled\"\n        [mobile]=\"mobile\"\n        (keyup)=\"_onKeyUp($event, searchFilter.value)\"\n        (keyup.enter)=\"_onEnter(searchFilter.value)\"\n        placeholder=\"{{ placeholder }}\"\n    />\n    @if (showClearIcon) {\n    <hc-clear-input-btn hcSuffix [inputEl]=\"searchFilter\" (clearClicked)=\"clearClicked.emit()\"></hc-clear-input-btn>\n    } @if (showSearchIcon) {\n    <span hcSuffix class=\"hc-search-ico\" (click)=\"_onSearchIconClicked()\"></span>\n    }\n</hc-form-field>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\nimport {SearchBarComponent} from './search-bar.component';\nimport {FormFieldModule} from '../form-field/hc-form-field.module';\nimport {InputModule} from '../input/input.module';\n\n@NgModule({\n    declarations: [SearchBarComponent],\n    exports: [SearchBarComponent],\n    imports: [CommonModule, FormFieldModule, InputModule],\n    providers: []\n})\nexport class SearchBarModule {}\n","import {AfterViewInit, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, OnDestroy, Optional, Output, Self, ViewEncapsulation} from '@angular/core';\nimport {FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {Subject} from 'rxjs';\nimport {delay, takeUntil} from 'rxjs/operators';\nimport {HcFormControlComponent} from '../form-field/hc-form-control.component';\nimport {parseBooleanAttribute} from '../util';\n\nlet nextToggleId = 1;\n\nexport enum buttonSize {\n    small = 'sm',\n    medium = 'md',\n    large = 'lg'\n}\nexport enum buttonStyle {\n    blue = 'blue',\n    purple = 'purple',\n    green = 'green',\n    red = 'red',\n    orange = 'orange',\n    rubyred = 'ruby-red',\n    deepred = 'deep-red',\n    redorange = 'red-orange',\n    magenta = 'magenta',\n    azure = 'azure',\n    teal = 'teal',\n    darkgreen = 'dark-green',\n    yelloworange = 'yellow-orange',\n    darkblue = 'dark-blue',\n}\nexport enum labelPosition {\n    left = 'left',\n    right = 'right'\n}\n\nexport function validateLabelType(inputStr: string): void {\n    if (inputStr !== 'none' && inputStr !== 'on' && inputStr !== 'true' && inputStr !== 'yes' ) {\n        throw Error('Unsupported inside label type: ' + inputStr);\n    }\n}\n\n/** A boolean control that can be toggled via clicking  */\n@Component({\n    selector: 'hc-slide-toggle',\n    templateUrl: 'slide-toggle.component.html',\n    styleUrls: ['slide-toggle.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    providers: [{ provide: HcFormControlComponent, useExisting: forwardRef(() => SlideToggleComponent) }],\n    standalone: false\n})\nexport class SlideToggleComponent extends HcFormControlComponent implements AfterViewInit, OnDestroy {\n    private _uniqueId = `hc-slide-toggle-${nextToggleId++}`;\n    private _form: NgForm | FormGroupDirective | null;\n    private _unsubscribe = new Subject<void>();\n    _buttonState = true;\n    _disabled = false;\n    _insideLabel = 'on';\n    _insideLabelTypes = {\n        'none': [' ',' '],\n        'on': ['ON','OFF'],\n        'true': ['TRUE','FALSE'],\n        'yes': ['YES','NO']\n    };\n\n    /** Unique id for the slide toggle element. If none is supplied, one will be auto-generated. */\n    @Input()\n    get id(): string {\n        return this._componentId || this._uniqueId;\n    }\n\n    set id(idVal: string) {\n        this._componentId = idVal ? idVal : this._uniqueId;\n    }\n\n    /** An optional label positioned outside of the slide toggle. Use `labelPosition` to set which side. */\n    @Input() sideLabel = '';\n\n    /** The text inside the toggle. Choose from: `none`, `on` (ON/OFF), `true` (TRUE/FALSE), `yes` (YES/NO). *Defaults to `on`**/\n    @Input()\n    get insideLabel(): string {\n        return this._insideLabel;\n    }\n\n    set insideLabel(val: string) {\n        validateLabelType(val);\n        this._insideLabel = val;\n    }\n\n    /** Whether the individual toggle is disabled. */\n    @Input()\n    get disabled(): boolean {\n        return this._disabled;\n    }\n\n    set disabled(val: boolean | string) {\n        this._disabled = parseBooleanAttribute(val);\n    }\n\n    /** Sets whether this is a required form element */\n    @Input()\n    get required(): boolean {\n        return this._isRequired;\n    }\n\n    set required( requiredVal: boolean | string ) {\n        this._isRequired = parseBooleanAttribute(requiredVal);\n    }\n\n    /** Sets the size of slide toggle. Choose from: `'sm' | 'md' | 'lg' |`. *Defaults to `sm`.**/\n    @Input() buttonSize: buttonSize = buttonSize.small;\n\n    /** Sets the style of the slide toggle. Choose from: `'blue' | 'purple' | 'green' |` 'red' | 'orange' | 'ruby-red' | 'deep-red' | 'red-orange' | 'magenta' | 'azure' | 'teal' | 'dark-green' | 'yellow-orange' | 'dark-blue'. *Defaults to `blue`.**/\n    @Input() buttonStyle: buttonStyle = buttonStyle.blue;\n\n    /** Sets which side of slide toggle the outside label is positioned on. Choose from: `'left' | 'right' |`. *Defaults to `left`.**/\n    @Input() labelPosition: labelPosition = labelPosition.left;\n\n    /** Sets the on/off state of the toggle. Supports two-way binding. */\n    @Input()\n    get buttonState(): boolean {\n        return this._buttonState;\n    }\n\n    set buttonState( val: boolean | string ) {\n        const tempVal = parseBooleanAttribute(val);\n        if ( tempVal !== this._buttonState ) {\n            this._buttonState = parseBooleanAttribute(val);\n            this.onChange(this._buttonState);\n            this.buttonStateChanged.emit(this._buttonState);\n        }\n    }\n\n    /** Event fired with boolean value when the toggle state is changed. */\n    @Output() buttonStateChanged = new EventEmitter<boolean>();\n\n    ngAfterViewInit(): void {\n        if ( this._ngControl?.statusChanges ) {\n            // delay() is necessary to make sure any form or control state changes have been applied before rechecking error states\n            this._ngControl.statusChanges.pipe(delay(0), takeUntil(this._unsubscribe)).subscribe(() => this._updateErrorState());\n        }\n        if ( this._form ) {\n            this._form.ngSubmit.pipe(takeUntil(this._unsubscribe)).subscribe(() => this._updateErrorState());\n        }\n\n        /** Monkey patching the markAsTouched function to call error state checking because there is not an event for touched changes */\n        if ( this._ngControl && this._ngControl.control ) {\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            const self = this;\n            const originalMarkMethod = this._ngControl.control.markAsTouched;\n            this._ngControl.control.markAsTouched = function () {\n                // eslint-disable-next-line prefer-rest-params\n                originalMarkMethod.apply(this, arguments);\n                self._updateErrorState();\n            };\n\n            const originalMarkAllMethod = this._ngControl.control.markAllAsTouched;\n            this._ngControl.control.markAllAsTouched = function () {\n                // eslint-disable-next-line prefer-rest-params\n                originalMarkAllMethod.apply(this, arguments);\n                self._updateErrorState();\n            };\n        }\n    }\n\n    constructor(\n        @Optional() _parentForm: NgForm,\n        @Optional() _parentFormGroup: FormGroupDirective,\n        @Optional() @Self() public _ngControl: NgControl,\n        private _changeRef: ChangeDetectorRef\n    ) {\n        super();\n\n        this._form = _parentForm || _parentFormGroup;\n        if (this._ngControl != null) {\n            this._ngControl.valueAccessor = this;\n        }\n    }\n\n    writeValue(value: unknown): void {\n        // Prevent the form control from trying to write a value when removing the control\n        if ( this.onChange.name !== 'noop' ) {\n            this.buttonState = !!value;\n        }\n    }\n\n    public onChange: (value: unknown) => void = () => undefined;\n    public onTouch: () => unknown = () => undefined;\n    public registerOnChange(fn: (value: unknown) => void): void {\n        this.onChange = fn;\n    }\n    public registerOnTouched(fn: () => unknown): void {\n        this.onTouch = fn;\n    }\n\n    _onBlur(): void {\n        this.onTouch();\n        this._updateErrorState();\n    }\n\n    setDisabledState(disabledVal: boolean): void {\n        this.disabled = disabledVal;\n    }\n\n    private _updateErrorState() {\n        const oldState = this._errorState;\n\n        // TODO: this could be abstracted out as an @Input() if we need this to be configurable\n        const newState = !!(\n            this._ngControl &&\n            this._ngControl.invalid &&\n            (this._ngControl.touched || (this._form && this._form.submitted))\n        );\n\n        if (oldState !== newState) {\n            this._errorState = newState;\n            this._changeRef.detectChanges();\n        }\n    }\n\n    ngOnDestroy(): void {\n        this._unsubscribe.next();\n        this._unsubscribe.complete();\n    }\n}\n","<div class=\"hc-slide-toggle-container\" [class.hc-slide-toggle-container-reverse]=\"labelPosition === 'right'\">\n    @if (sideLabel) {\n    <span [class]=\"'hc-slide-toggle-label hc-slide-toggle-label-size-' + buttonSize\" [class.hc-slide-toggle-disabled-label]=\"disabled\">\n        {{ sideLabel }}\n    </span>\n    }\n    <div [class]=\"'hc-slide-toggle hc-slide-toggle-' + buttonSize + ' hc-slide-toggle-' + buttonStyle\">\n        <div [class.hc-slide-toggle-disabled]=\"disabled\"></div>\n        <div\n            [class]=\"\n                'hc-slide-toggle-inside-label-container hc-slide-toggle-inside-label-' +\n                insideLabel +\n                ' hc-slide-toggle-inside-label-' +\n                buttonSize\n            \"\n        >\n            <span\n                [class]=\"'hc-slide-toggle-on-text hc-slide-toggle-on-text-padding-' + buttonSize\"\n                [ngClass]=\"!buttonState ? 'hc-slide-toggle-hide-label' : ''\"\n            >\n                {{ _insideLabelTypes[insideLabel][0] }}\n            </span>\n            <span\n                [class]=\"'hc-slide-toggle-off-text hc-slide-toggle-off-text-padding-' + buttonSize\"\n                [ngClass]=\"buttonState ? 'hc-slide-toggle-hide-label' : ''\"\n            >\n                {{ _insideLabelTypes[insideLabel][1] }}\n            </span>\n        </div>\n        <input type=\"checkbox\" class=\"hc-slide-toggle-checkbox\" (blur)=\"_onBlur()\" [(ngModel)]=\"buttonState\" [disabled]=\"disabled\" />\n        <div class=\"hc-slide-toggle-knobs\">\n            <span [class]=\"'hc-slide-toggle-knobs-handle-' + buttonSize\"></span>\n        </div>\n        <div class=\"hc-slide-toggle-background\"></div>\n    </div>\n</div>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {SlideToggleComponent} from './slide-toggle.component';\n\n@NgModule({\n    imports: [CommonModule, FormsModule, ReactiveFormsModule],\n    exports: [SlideToggleComponent],\n    declarations: [SlideToggleComponent]\n})\nexport class SlideToggleModule {}\n","import {Component, forwardRef, HostBinding, Input, ViewEncapsulation} from '@angular/core';\nimport {HcFormControlComponent} from '../form-field/hc-form-control.component';\nimport {parseBooleanAttribute} from '../util';\n\nlet uniqueSliderId = 1;\n\n/** Cashmere wrapper for the ngx-slider component  */\n@Component({\n    selector: 'hc-slider',\n    styleUrls: ['slider.component.scss'],\n    template: `\n        <ng-content></ng-content>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    providers: [{ provide: HcFormControlComponent, useExisting: forwardRef(() => SliderComponent) }],\n    standalone: false\n})\nexport class SliderComponent extends HcFormControlComponent {\n    private _uniqueInputId = `hc-slider-${uniqueSliderId++}`;\n    _componentId = this._uniqueInputId; // contains id for the hc-slider component\n\n    @HostBinding('class.hc-slider')\n    _hostClass = true;\n\n    /** Element id */\n    @Input()\n    get id(): string {\n        return this._componentId || this._uniqueInputId;\n    }\n\n    set id(idVal: string) {\n        this._componentId = idVal ? idVal : this._uniqueInputId;\n    }\n\n    /** Whether the slider is valid; triggers error messages in `hc-form-field` */\n    @Input()\n    get valid(): boolean {\n        return !this._errorState;\n    }\n\n    set valid( val: boolean | string ) {\n        this._errorState = !parseBooleanAttribute(val);\n    }\n\n    /** Sets whether this is a required form element */\n    @Input()\n    get required(): boolean {\n        return this._isRequired;\n    }\n\n    set required( requiredVal: boolean | string ) {\n        this._isRequired = parseBooleanAttribute(requiredVal);\n    }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {SliderComponent} from './slider.component';\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [SliderComponent],\n    declarations: [SliderComponent]\n})\nexport class SliderModule {}\n","import {Component, Input, ViewEncapsulation, EventEmitter, Output} from '@angular/core';\nimport { LinkParent, SidenavLink, SidenavLinkClickEvent, SidenavTabGroup } from './sidenav.models';\nimport { isDefined } from '../util';\n\n/** Component for standard sidebar navigation */\n@Component({\n    selector: 'hc-sidenav',\n    templateUrl: 'sidenav.component.html',\n    styleUrls: ['sidenav.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class SidenavComponent {\n    /** Add a custom css class to the sidebar container. */\n    @Input() containerCssClass = '';\n    /** Set width of the sidebar. Include unit. Can be pixels, rem, em, etc. Default is 260px */\n    @Input() width = '260px';\n    /** True for a darker sidebar navigation. *Defaults to `false`.* */\n    @Input() public darkMode = false;\n    /** If true, collapse the sidebar to a minimal width. Defaults to false. */\n    @Input() collapsed = false;\n    /** Event triggered when the sidebar is expanded or collapsed. */\n    @Output() collapsedChange = new EventEmitter<boolean>();\n    /** If true, sidebar can toggle between collapsed and expanded. Will have an expand/collapse button. Defaults to true. */\n    @Input() canToggle = true;\n    /** True if nested children should be shown by default. *Defaults to `false`.* */\n    @Input() set openChildrenByDefault(openByDefault: boolean) {\n        this.toggleAllNestedLinks(openByDefault);\n        this._openChildrenByDefault = isDefined(openByDefault) ? openByDefault : false;\n    }\n    get openChildrenByDefault(): boolean {\n        return this._openChildrenByDefault;\n    }\n    private _openChildrenByDefault = false;\n    /** True if nested children should be hideable. Overrides `openChildrenByDefault` and `openChildrenWhenActive`. *Defaults to `true`.* */\n    @Input() set collapsibleChildren(collapsible: boolean) {\n        this._collapsibleChildren = isDefined(collapsible) ? collapsible : true;\n        if (!this._collapsibleChildren) {\n            this.openAllNestedLinks();\n        }\n    }\n    get collapsibleChildren(): boolean {\n        return this._collapsibleChildren;\n    }\n    private _collapsibleChildren = true;\n\n    /** True if nested children should be shown if the link is active. Overrides `openChildrenByDefault`. *Defaults to `true`.* */\n    @Input() openChildrenWhenActivated = true;\n    /** True to show lines of tree structure. *Defaults to `true`.* */\n    @Input() showTreeLines = true\n    /** Collection of objects representing the main links in the sidenav. */\n    @Input() set tabs(tabs: SidenavLink[]) {\n        this._tabs = tabs;\n        this.activeTabKey = this.activeTabKey || tabs[0]?.key || '';\n        this.hasNestedLinks = this.tabs.some(tab => tab.children?.length > 0);\n        this.toggleAllNestedLinks(this.openChildrenByDefault);\n    }\n    get tabs(): SidenavLink[] {\n        return this._tabs;\n    }\n    private _tabs: SidenavLink[] = [];\n\n    /** Collection of tabGroups. These are styled like the main tabs, but are grouped together under a separate header. */\n    @Input() set tabGroups(tabGroups: SidenavTabGroup[]) {\n        this._tabGroups = tabGroups;\n    }\n    get tabGroups(): SidenavTabGroup[] {\n        return this._tabGroups;\n    }\n    private _tabGroups: SidenavTabGroup[] = [];\n    /** Event triggered when a tab group header is clicked. */\n    @Output() tabGroupHeaderClicked = new EventEmitter<SidenavLinkClickEvent>();\n\n    /** @docs-private */\n    hasNestedLinks = false;\n\n    /** True to show loading indicator for tabs. Use while data is loading to show tabs */\n    @Input() isLoadingTabs = false;\n    /** Event triggered when a tab is clicked. */\n    @Output() tabClicked = new EventEmitter<SidenavLinkClickEvent>();\n    /** Key of the tab that should be marked as active. */\n    @Input() activeTabKey = '';\n    /** If using routerLinks, routerLinkActiveClass can be used to set appropriate class for the active route.\n     * If used, the `activeTabKey` property will be ignored.\n     * If a class besides `active-tab` is used, you'll need to provide your own css. */\n    @Input() routerLinkActiveClass = '';\n\n    /** True to show scrollable favorites section. */\n    @Input() showFavorites = true;\n    /** Collection of objects representing user favorited items. */\n    @Input() favorites: SidenavLink[] = [];\n    /** True to show loading indicator for favorites. */\n    @Input() isLoadingFavorites = false;\n    /** Event triggered when a favorite is clicked. */\n    @Output() favoriteClicked = new EventEmitter<SidenavLinkClickEvent>();\n    /** Label for the favorites section. */\n    @Input() favoritesTitleLabel = 'Favorites';\n    /** Description of the favorites section for display in the UI as a tooltip */\n    @Input() favoritesDescription = 'Mark favorites to pin them here.';\n    /** An icon to show in the favorites header. */\n    @Input() favoritesTitleIconClass = 'hc-ico-star';\n    /** A clickable action icon to show next to each favorite list item. Default is a filled yellow star.*/\n    @Input() favoritesItemActionIconClass = 'hc-ico-star-filled';\n    /** Tooltip for a favorite's action icon. */\n    @Input() favoritesItemActionIconTooltip = 'Remove from favorites';\n    /** Event triggered when the action icon for a favorite list item is clicked. Typically for \"unfavoriting\" an item. */\n    @Output() favoriteItemIconClicked = new EventEmitter<SidenavLinkClickEvent>();\n\n    /** @docs-private */\n    tabTooltipText = ''\n    /** @docs-private */\n    menuContext: {links?: SidenavLink[], title?: string, titleIco?: string, parent?: LinkParent, isFav: boolean};\n\n    /** Expand the sidebar to full width. */\n    open(): void {\n        this.collapsed = false;\n        this.collapsedChange.emit(this.collapsed);\n    }\n\n    /** Collapse the sidebar to a minimal width. */\n    close(): void {\n        this.collapsed = true;\n        this.collapsedChange.emit(this.collapsed);\n    }\n\n    /** Toggle the sidebar's expand/collapse state. */\n    toggle(): void {\n        this.collapsed = !this.collapsed;\n        this.collapsedChange.emit(this.collapsed);\n    }\n\n    _onRouterLinkActiveChange(isActive: boolean, tab: SidenavLink) {\n        if (isActive) {\n            this.activeTabKey = tab.key;\n        }\n    }\n\n    /** @docs-private */\n    onTabClick(event: MouseEvent, link: SidenavLink, isMenuHeader = false, isFavorite = false): void {\n        const tabTriggersMenu = !isMenuHeader && this.collapsed && link.children?.length > 0 && !link.parent;\n        if (link.disabled || !link.clickable || tabTriggersMenu) { return; }\n        if (isFavorite) { this.onFavoriteClicked(event, link); return; }\n        this.tabClicked.emit({event, link});\n        this.activeTabKey = link.key;\n\n        if (link.children?.length > 0 && this.openChildrenWhenActivated) {\n            link.open = true;\n        }\n\n        if (!link.onClick) { return; }\n        link.onClick(event, link);\n    }\n\n    /** @docs-private */\n    onTabGroupHeaderClick(event: MouseEvent, tabGroup: SidenavTabGroup): void {\n        this.tabGroupHeaderClicked.emit({event, link: tabGroup as unknown as SidenavLink});\n    }\n\n    /** @docs-private */\n    onFavoriteClicked(event: MouseEvent, link: SidenavLink): void {\n        this.favoriteClicked.emit({event, link});\n\n        if (!link.onClick) { return; }\n        link.onClick(event, link);\n    }\n\n    /** @docs-private */\n    onFavoriteItemIconClicked(event: MouseEvent, link: SidenavLink): void {\n        event.stopPropagation();\n        this.favoriteItemIconClicked.emit({event, link});\n    }\n\n    /** @docs-private */\n    public trackContentItem(index: number, item: SidenavLink): string | undefined {\n        return item.key;\n    }\n\n    /** @docs-private */\n    public childrenChevClicked(tab: SidenavLink, event: MouseEvent): void {\n        event.stopPropagation();\n        if (this.collapsibleChildren) {\n            tab.open = !tab.open;\n        }\n    }\n\n    public toggleAllNestedLinks(shouldOpen = true): void {\n        this.tabs.forEach(tab => this.toggleLinkAndChildren(tab, shouldOpen));\n    }\n\n    public collapseAllNestedLinks(): void {\n        if(!this.collapsibleChildren) {\n            return;\n        }\n        this.toggleAllNestedLinks(false);\n    }\n\n    public openAllNestedLinks(): void {\n        this.toggleAllNestedLinks(true);\n    }\n\n    private toggleLinkAndChildren(link: SidenavLink, shouldOpen: boolean): void {\n        link.open = shouldOpen;\n        link.children?.forEach(child => this.toggleLinkAndChildren(child, shouldOpen));\n    }\n}\n","<div\n    class=\"hc-sidenav {{ containerCssClass }} {{ darkMode ? 'hc-sidenav-dark' : '' }}\"\n    [class.hc-sidenav-collapsed]=\"collapsed\"\n    [class.hc-sidenav-has-collapsible-nested-links]\n    [style.width]=\"width\"\n>\n    <div class=\"hc-sidenav-inner\">\n        <!-- #### Projected header -->\n        <ng-content select=\"[hcSidenavHeader]\"></ng-content>\n\n        <!-- #### Tabs -->\n        @if (tabs.length > 0) {\n        <div class=\"hc-sidenav-tabs\" [class.hc-sidenav-tabs-nested]=\"hasNestedLinks\">\n            @if (!isLoadingTabs) { @for (tab of tabs; track tab) {\n            <ng-container *ngTemplateOutlet=\"sidenavTab; context: {tab: tab}\"></ng-container>\n            } } @if (isLoadingTabs) {\n            <div class=\"hc-sidenav-tabs-loading hc-subtle-pulse\">\n                <div class=\"skeleton-tab\"></div>\n                <div class=\"skeleton-tab\"></div>\n                <div class=\"skeleton-tab\"></div>\n            </div>\n            }\n        </div>\n        }\n\n        <!-- #### Projected body -->\n        <ng-content select=\"[hcSidenavBody]\"></ng-content>\n\n        <!-- #### Tab groups -->\n        @for (tabGroup of tabGroups; track tabGroup) {\n        <div class=\"hc-sidenav-tab-group\" [class.hc-sidenav-tab-group-nested]=\"tabGroup.hasNestedLinks\">\n            @if (!collapsed || !tabGroup.hideChildrenOnCollapse) {\n            <div class=\"hc-sidenav-tab-group-container\">\n                <div\n                    class=\"hc-sidenav-tab-group-header {{ tabGroup.tabCSSClass }}\"\n                    title=\"{{ tabGroup.description }}\"\n                    (click)=\"onTabGroupHeaderClick($event, tabGroup)\"\n                >\n                    @if (collapsed && (tabGroup.collapsedTitle || tabGroup.collapsedLabelHTML)) { @if (tabGroup.collapsedLabelHTML) {\n                    <span [innerHTML]=\"tabGroup.collapsedLabelHTML\"></span>\n                    } @if (!tabGroup.collapsedLabelHTML) {\n                    <span class=\"hc-sidenav-tab-group-header-title\">{{ tabGroup.collapsedTitle }}</span>\n                    } } @else { @if (tabGroup.labelHTML) {\n                    <span [innerHTML]=\"tabGroup.labelHTML\"></span>\n                    } @if (!tabGroup.labelHTML) {\n                    <span class=\"hc-sidenav-tab-group-header-title\">{{ tabGroup.title }}</span>\n                    } } @if (tabGroup.iconClass) {\n                    <span class=\"{{ tabGroup.iconClass }} hc-sidenav-tab-group-header-icon\"></span>\n                    }\n                </div>\n                <!-- Tab group items -->\n                @if (!isLoadingTabs) { @for (tab of tabGroup.children; track tab) {\n                <ng-container *ngTemplateOutlet=\"sidenavTab; context: {tab: tab}\"></ng-container>\n                } }\n            </div>\n            <!-- Empty tab group -->\n            @if (tabGroup.children.length === 0) {\n            <div class=\"hc-sidenav-empty-msg\">\n                <span class=\"hc-sidenav-empty-ico\"></span>\n                <span>Nothing to show.</span>\n            </div>\n            } }\n            <!-- Tab group menu button in collapsed sidebar-->\n            @if (collapsed && tabGroup.hideChildrenOnCollapse) {\n            <div\n                [hcPop]=\"tabPop\"\n                [context]=\"tabGroup.title || ''\"\n                [trigger]=\"'hover'\"\n                class=\"hc-sidenav-tab-group-collapsed-menu-btn {{ tabGroup.tabCSSClass }}\"\n            >\n                <span class=\"hc-sidenav-tab-group-collapsed-menu-ico\" [hcPop]=\"tabLinkPop\" [context]=\"{parent: tabGroup}\">\n                    <span [class]=\"tabGroup.iconClass\"></span>\n                </span>\n            </div>\n            }\n        </div>\n        }\n        <!-- #### End tab groups -->\n\n        <!-- #### Favorites -->\n        @if (showFavorites) {\n        <div class=\"hc-sidenav-favs\">\n            @if (!collapsed) { @if (favorites.length > 0 && !isLoadingFavorites) {\n            <div class=\"hc-sidenav-favs-list-container\">\n                <div class=\"hc-sidenav-favs-header\" title=\"{{ favoritesDescription }}\">\n                    <span>\n                        {{ favoritesTitleLabel }}\n                        @if (!isLoadingFavorites) { ({{ favorites.length }}) }\n                    </span>\n                    <span class=\"{{ favoritesTitleIconClass }}\"></span>\n                </div>\n                <!-- Favorites list -->\n                @if (!isLoadingFavorites) {\n                <div class=\"hc-sidenav-favs-list-container-inner\">\n                    @for (fav of favorites; track fav) {\n                    <ng-container *ngTemplateOutlet=\"sidenavTab; context: {tab: fav, isFav: true}\"></ng-container>\n                    }\n                </div>\n                }\n            </div>\n            }\n            <!-- Empty favorites list -->\n            @if (!isLoadingFavorites && favorites.length === 0) {\n            <div class=\"hc-sidenav-empty-msg\">\n                <span class=\"{{ favoritesTitleIconClass }} hc-sidenav-empty-ico\"></span>\n                <span>Nothing to show.</span>\n                <span class=\"hc-sidenav-empty-description\">{{ favoritesDescription }}</span>\n            </div>\n            } }\n            <!-- Fav menu button in collapsed sidebar-->\n            @if (collapsed && !isLoadingFavorites) {\n            <div [hcPop]=\"tabPop\" [context]=\"favoritesTitleLabel\" [trigger]=\"'hover'\" class=\"hc-sidenav-favs-collapsed-menu-btn\">\n                <span\n                    class=\"hc-sidenav-favs-collapsed-menu-ico\"\n                    [hcPop]=\"tabLinkPop\"\n                    [context]=\"{isFav: true, links: favorites, title: favoritesTitleLabel, titleIco: favoritesTitleIconClass}\"\n                >\n                    <span [class]=\"favoritesTitleIconClass\"></span>\n                </span>\n            </div>\n            }\n            <!-- Loading State -->\n            @if (isLoadingFavorites) {\n            <hc-progress-dots color=\"dark\" [isMini]=\"collapsed\"></hc-progress-dots>\n            }\n        </div>\n        }\n        <!-- #### End favorites -->\n\n        <!-- #### Other projected content -->\n        <ng-content></ng-content>\n\n        <!-- #### Projected footer -->\n        <ng-content select=\"[hcSidenavFooter]\"></ng-content>\n\n        <!-- #### Expand/Collapse Button -->\n        @if (canToggle) {\n        <button\n            hc-button\n            class=\"hc-sidenav-state-btn\"\n            buttonStyle=\"minimal\"\n            [class.hc-sidenav-collapsed]=\"collapsed\"\n            title=\"{{ collapsed ? 'Expand' : 'Collapse' }}\"\n            (click)=\"toggle()\"\n        >\n            <span class=\"hc-ico-chev-right-blue\" [class.hc-sidenav-state-btn-expanded]=\"!collapsed\"></span>\n        </button>\n        }\n    </div>\n</div>\n\n<!-- #### Template for tabs -->\n<ng-template #sidenavTab let-tab=\"tab\" let-isFav=\"isFav\">\n    <div\n        class=\"hc-sidenav-tab-tree-line-vert\"\n        [class.hc-sidenav-no-tree-lines]=\"!showTreeLines\"\n        [class.hc-sidenav-no-collapsing-links]=\"!collapsibleChildren\"\n        [hcPop]=\"tabLinkPop\"\n        [context]=\"{parent: tab}\"\n        [trigger]=\"collapsed && tab.children?.length > 0 && !tab.parent ? 'click' : 'none'\"\n    >\n        <a\n            class=\"hc-sidenav-tab {{ tab.tabCSSClass }}\"\n            [class.hc-sidenav-active-tab]=\"!routerLinkActiveClass ? tab.key === activeTabKey && !isFav : false\"\n            [class.hc-sidenav-disabled-tab]=\"tab.disabled\"\n            [class.hc-sidenav-unclickable-tab]=\"!tab.clickable\"\n            [class.last-leaf-node]=\"tab.isLastLeafNode\"\n            [title]=\"tab.description || ''\"\n            [routerLink]=\"(collapsed && tab.children?.length > 0) || !tab.clickable ? null : tab.routerLink\"\n            [routerLinkActive]=\"routerLinkActiveClass || 'active-tab'\"\n            (isActiveChange)=\"_onRouterLinkActiveChange($event, tab)\"\n            tabindex=\"0\"\n            (keydown.enter)=\"onTabClick($event, tab, false, isFav)\"\n            (click)=\"onTabClick($event, tab, false, isFav)\"\n            [hcPop]=\"tabPop\"\n            [trigger]=\"collapsed && !tab.parent && !isFav ? 'hover' : 'none'\"\n            [context]=\"tab.title || ''\"\n        >\n            <span class=\"hc-sidenav-tab-tree-line-horz\"></span>\n            <span class=\"hc-sidenav-tab-inner\">\n                <span class=\"hc-sidenav-tab-ico {{ tab.iconClass }}\"></span>\n                @if (tab.labelHTML) {\n                <span class=\"hc-sidenav-tab-name\" [innerHTML]=\"tab.labelHTML\"></span>\n                } @if (!tab.labelHTML) {\n                <span class=\"hc-sidenav-tab-name\">{{ tab.title }}</span>\n                }\n            </span>\n            @if (tab.subText || tab.badgeHTML) {\n            <div class=\"hc-text-ellipsis hc-sidenav-tab-subtext\">\n                {{ tab.subText }}@if (tab.badgeHTML) {\n                <span [innerHTML]=\"tab.badgeHTML\" class=\"hc-sidenav-badge hc-sidenav-badge-{{ tab.badgeColor }}\"></span>\n                }\n            </div>\n            } @if (isFav) {\n            <span\n                class=\"hc-sidenav-fav-action-ico-btn\"\n                title=\"{{ favoritesItemActionIconTooltip || '' }}\"\n                (click)=\"onFavoriteItemIconClicked($event, tab)\"\n            >\n                <span class=\"hc-sidenav-fav-item-action-ico {{ favoritesItemActionIconClass }}\"></span>\n            </span>\n            } @if (tab.children?.length > 0 && collapsibleChildren) {\n            <div\n                class=\"hc-sidenav-tab-chev-container\"\n                (click)=\"childrenChevClicked(tab, $event)\"\n                tabindex=\"0\"\n                (keydown.enter)=\"childrenChevClicked(tab, $event)\"\n                title=\"{{ tab.open ? 'Collapse' : 'Expand' }} section\"\n            >\n                <span class=\"hc-sidenav-tab-chevron\" [class.hc-sidenav-chev-tab-open]=\"tab.open\"></span>\n            </div>\n            }\n        </a>\n        @if (tab.children?.length > 0 && tab.open) {\n        <div class=\"hc-sidenav-tab-children\" [class.hc-sidenav-tab-open]=\"tab.open\">\n            @for (child of tab.children; track child) {\n            <ng-container *ngTemplateOutlet=\"sidenavTab; context: {tab: child}\"></ng-container>\n            }\n        </div>\n        }\n    </div>\n</ng-template>\n<!-- #### End tab template -->\n\n<!-- #### Tab tooltips for collapsed sidebar-->\n<hc-pop #tabPop xAlign=\"after\" yAlign=\"center\" [disableStyle]=\"true\" (opened)=\"tabTooltipText = $event\">\n    <span class=\"hc-tooltip\">{{ tabTooltipText }}</span>\n</hc-pop>\n\n<!-- #### Menu for collapsed sidebar link/group/favs -->\n<hc-pop #tabLinkPop xAlign=\"after\" yAlign=\"start\" [autoCloseOnContentClick]=\"true\" [showArrow]=\"false\" (opened)=\"menuContext = $event\">\n    <!-- Menu Title -->\n    <div\n        class=\"nested-link-submenu-header\"\n        [class.nest-link-submenu-header-clickable]=\"menuContext?.parent?.clickable && !menuContext?.parent?.disabled\"\n        title=\"{{ menuContext?.parent?.description || menuContext?.title }}\"\n        [routerLink]=\"menuContext?.parent?.routerLink\"\n        tabindex=\"0\"\n        (keydown.enter)=\"menuContext?.parent && onTabClick($event, menuContext?.parent, true, menuContext?.isFav)\"\n        (click)=\"menuContext?.parent && onTabClick($event, menuContext?.parent, true, menuContext?.isFav)\"\n    >\n        @if (menuContext?.parent?.labelHTML) {\n        <span [innerHTML]=\"menuContext?.parent?.labelHTML\"></span>\n        } @if (menuContext?.parent?.iconClass || menuContext?.titleIco) {\n        <span class=\"{{ menuContext?.parent?.iconClass || menuContext?.titleIco }} nested-link-submenu-header-ico\"></span>\n        } @if (!menuContext?.parent?.labelHTML) {\n        <span>{{ menuContext?.parent?.title || menuContext?.title }}</span>\n        }\n    </div>\n    <div class=\"nested-link-submenu nested-link-submenu-embedded\">\n        <!-- Menu links -->\n        @for (tab of menuContext?.links || menuContext?.parent?.children; track tab) {\n        <ng-container *ngTemplateOutlet=\"sidenavTab; context: {tab: tab, isFav: menuContext?.isFav}\"></ng-container>\n        }\n        <!-- Empty list -->\n        @if (!((menuContext?.links || menuContext?.parent?.children)?.length > 0)) {\n        <div class=\"hc-sidenav-empty-msg popover-menu\">\n            <span class=\"hc-sidenav-empty-ico\"></span>\n            <span>Nothing to show.</span>\n        </div>\n        }\n    </div>\n</hc-pop>\n","let nextUniqueId = 0;\n\n/** @docs-private */\nexport interface LinkParent {\n    iconClass?: string;\n    title: string;\n    description: string;\n    labelHTML: string;\n    children: SidenavLink[];\n    parent?: LinkParent;\n    tabCSSClass?: string;\n}\n\nexport class SidenavLink implements LinkParent {\n    /** Name of the link. Used as the primary label in the UI. */\n    public title: string;\n    /** Serves as the primary label in the UI. Will override \"title\". **WARNING:** You are responsible to sanitize any unsafe user input. */\n    public labelHTML: string;\n    /** Unique identifier for this link. If not provided at initialization, will be auto generated. */\n    public key: string;\n    /** Extra detail for this link, preferably less than 10 characters. Shown as a sub label in the UI. */\n    public subText?: string;\n    /** Icon associated with this link */\n    public iconClass?: string;\n    /** Describes the link. Will be used for hover tooltips. */\n    public description: string;\n    /** Passed to routerLink */\n    public routerLink?: string;\n    /** Additional CSS class to apply */\n    public tabCSSClass?: string;\n    /** Instead of a route, can provide a callback function.\n     * Alternative is to listen to SideNav's tabClicked or favoriteClicked `@Output` events. */\n    public onClick?: (e: MouseEvent, link: SidenavLink) => void;\n    /** If true, this link will not respond to clicks and will look disabled. *Defaults to `false`.* */\n    public disabled = false;\n    /** If false, this link will not respond to clicks. Will not look disabled, but will just serve as a non-clickable label. *Defaults to `true`.**/\n    public clickable = true;\n\n    /** Nested sub links. Will be displayed in a tree structure */\n    public children: SidenavLink[];\n    /** True if this parent link is open and children links should be shown. */\n    public open = false;\n\n    /** @docs-private */\n    public parent: LinkParent;\n\n    /** @docs-private */\n    public get isLastLeafNode(): boolean {\n        return this.parent?.children.indexOf(this) === this.parent?.children.length - 1;\n    }\n\n    /** Text or markup to be inserted into a badge.\n     * **WARNING:** You are responsible to sanitize any unsafe user input.\n    */\n    public badgeHTML: string;\n    /** Select a valid cashmere color for the badge background color (from the primary, secondary, or neutral palette. eg 'blue', 'slate-gray-300', or 'light-pink') */\n    public badgeColor = 'slate-gray-200';\n\n    constructor(partial: Partial<SidenavLink>) {\n        Object.assign(this, partial);\n        this.key = this.key || `link${nextUniqueId++}`;\n        this.children?.forEach(child => {\n            child.parent = this;\n        });\n    }\n}\n\nexport class SidenavTabGroup implements LinkParent {\n    /** Icon associated with this link section */\n    iconClass?: string;\n    /** Name of the link section. Used as the primary label in the UI. */\n    public title: string;\n    /** Alternate name of the link section to show when sidenav is collapsed. */\n    public collapsedTitle: string;\n    /** Name of the link section. shown on hover */\n    public description: string;\n    /** Serves as the primary label in the UI. Will override \"title\". **WARNING:** You are responsible to sanitize any unsafe user input. */\n    public labelHTML: string;\n    /** Alternate markup to serve as the primary label in the UI when the sidenav is collapsed. Will override other title or label properties. **WARNING:** You are responsible to sanitize any unsafe user input. */\n    public collapsedLabelHTML: string;\n    /** Nested links for this section*/\n    public children: SidenavLink[];\n    /** If true, will put child links into popover menu when the sidenav is collapsed */\n    public hideChildrenOnCollapse = true;\n    /** Additional CSS class to apply */\n    public tabCSSClass?: string;\n\n    /** @docs-private */\n    public hasNestedLinks: boolean;\n\n    constructor(partial: Partial<SidenavTabGroup>) {\n        Object.assign(this, partial);\n        this.hasNestedLinks = this.children.some(child => child.children?.length > 0);\n        this.children?.forEach(child => child.parent = this);\n    }\n}\n\nexport class SidenavLinkClickEvent {\n    public event: MouseEvent;\n    public link: SidenavLink;\n}\n","import {Directive} from '@angular/core';\n\n/** Apply this attribute directive to any element to have it projected into `hc-sidenav` as a header. */\n@Directive({\n    selector: '[hcSidenavHeader]',\n    standalone: false\n})\nexport class SidenavHeaderDirective {\n}\n","import {Directive} from '@angular/core';\n\n/** Apply this attribute directive to any element to have it projected into `hc-sidenav` as the body. */\n@Directive({\n    selector: '[hcSidenavBody]',\n    standalone: false\n})\nexport class SidenavBodyDirective {\n}\n","import {Directive} from '@angular/core';\n\n/** Apply this attribute directive to any element to have it projected into `hc-sidenav` as the body. */\n@Directive({\n    selector: '[hcSidenavFooter]',\n    standalone: false\n})\nexport class SidenavFooterDirective {\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { SidenavComponent } from './sidenav.component';\nimport { ProgressIndicatorsModule } from '../progress-indicators';\nimport { ButtonModule } from '../button';\nimport { PopModule } from '../pop';\nimport { SidenavHeaderDirective } from './sidenav-header.directive';\nimport { SidenavBodyDirective } from './sidenav-body.directive';\nimport { SidenavFooterDirective } from './sidenav-footer.directive';\n\n@NgModule({\n    imports: [CommonModule, ProgressIndicatorsModule, ButtonModule, PopModule, RouterModule],\n    exports: [SidenavComponent, SidenavHeaderDirective, SidenavBodyDirective, SidenavFooterDirective],\n    declarations: [SidenavComponent, SidenavHeaderDirective, SidenavBodyDirective, SidenavFooterDirective]\n})\nexport class SidenavModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {animate, state, style, transition, trigger, keyframes, AnimationTriggerMetadata, query, animateChild} from '@angular/animations';\n\nconst animationDurationEnter = '225ms';\nconst animationCurveStandard = 'cubic-bezier(0.4,0.0,0.2,1)';\nconst SORT_ANIMATION_TRANSITION = animationDurationEnter + ' ' + animationCurveStandard;\n\n/** Animations used by HcSort. */\nexport const hcSortAnimations: {\n    readonly indicator: AnimationTriggerMetadata;\n    readonly leftPointer: AnimationTriggerMetadata;\n    readonly rightPointer: AnimationTriggerMetadata;\n    readonly arrowOpacity: AnimationTriggerMetadata;\n    readonly arrowPosition: AnimationTriggerMetadata;\n    readonly allowChildren: AnimationTriggerMetadata;\n} = {\n    /** Animation that moves the sort indicator. */\n    indicator: trigger('indicator', [\n        state('active-asc, asc', style({transform: 'translateY(0px)'})),\n        // 10px is the height of the sort indicator, minus the width of the pointers\n        state('active-desc, desc', style({transform: 'translateY(10px)'})),\n        transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION))\n    ]),\n\n    /** Animation that rotates the left pointer of the indicator based on the sorting direction. */\n    leftPointer: trigger('leftPointer', [\n        state('active-asc, asc', style({transform: 'rotate(-45deg)'})),\n        state('active-desc, desc', style({transform: 'rotate(45deg)'})),\n        transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION))\n    ]),\n\n    /** Animation that rotates the right pointer of the indicator based on the sorting direction. */\n    rightPointer: trigger('rightPointer', [\n        state('active-asc, asc', style({transform: 'rotate(45deg)'})),\n        state('active-desc, desc', style({transform: 'rotate(-45deg)'})),\n        transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION))\n    ]),\n\n    /** Animation that controls the arrow opacity. */\n    arrowOpacity: trigger('arrowOpacity', [\n        state('desc-to-active, asc-to-active, active', style({opacity: 1})),\n        state('desc-to-hint, asc-to-hint, hint', style({opacity: 0.54})),\n        state('hint-to-desc, active-to-desc, desc, hint-to-asc, active-to-asc, asc, void', style({opacity: 0})),\n        // Transition between all states except for immediate transitions\n        transition('* => asc, * => desc, * => active, * => hint, * => void', animate('0ms')),\n        transition('* <=> *', animate(SORT_ANIMATION_TRANSITION))\n    ]),\n\n    /**\n     * Animation for the translation of the arrow as a whole. States are separated into two\n     * groups: ones with animations and others that are immediate. Immediate states are asc, desc,\n     * peek, and active. The other states define a specific animation (source-to-destination)\n     * and are determined as a function of their prev user-perceived state and what the next state\n     * should be.\n     */\n    arrowPosition: trigger('arrowPosition', [\n        // Hidden Above => Hint Center\n        transition(\n            '* => desc-to-hint, * => desc-to-active',\n            animate(SORT_ANIMATION_TRANSITION, keyframes([style({transform: 'translateY(-25%)'}), style({transform: 'translateY(0)'})]))\n        ),\n        // Hint Center => Hidden Below\n        transition(\n            '* => hint-to-desc, * => active-to-desc',\n            animate(SORT_ANIMATION_TRANSITION, keyframes([style({transform: 'translateY(0)'}), style({transform: 'translateY(25%)'})]))\n        ),\n        // Hidden Below => Hint Center\n        transition(\n            '* => asc-to-hint, * => asc-to-active',\n            animate(SORT_ANIMATION_TRANSITION, keyframes([style({transform: 'translateY(25%)'}), style({transform: 'translateY(0)'})]))\n        ),\n        // Hint Center => Hidden Above\n        transition(\n            '* => hint-to-asc, * => active-to-asc',\n            animate(SORT_ANIMATION_TRANSITION, keyframes([style({transform: 'translateY(0)'}), style({transform: 'translateY(-25%)'})]))\n        ),\n        state('desc-to-hint, asc-to-hint, hint, desc-to-active, asc-to-active, active', style({transform: 'translateY(0)'})),\n        state('hint-to-desc, active-to-desc, desc', style({transform: 'translateY(-25%)'})),\n        state('hint-to-asc, active-to-asc, asc', style({transform: 'translateY(25%)'}))\n    ]),\n\n    /** Necessary trigger that calls animate on children animations. */\n    allowChildren: trigger('allowChildren', [transition('* <=> *', [query('@*', animateChild(), {optional: true})])])\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** @docs-private */\nexport function getSortDuplicateSortableIdError(id: string): Error {\n    return Error(`Cannot have two HcSortables with the same id (${id}).`);\n}\n\n/** @docs-private */\nexport function getSortHeaderNotContainedWithinSortError(): Error {\n    return Error(`HcSortHeader must be placed within a parent element with the HcSort directive.`);\n}\n\n/** @docs-private */\nexport function getSortHeaderMissingIdError(): Error {\n    return Error(`HcSortHeader must be provided with a unique id.`);\n}\n\n/** @docs-private */\nexport function getSortInvalidDirectionError(direction: string): Error {\n    return Error(`${direction} is not a valid sort direction ('asc' or 'desc').`);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable, SkipSelf, Optional} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/**\n * To modify the labels and text displayed, create a new instance of HcSortHeaderIntl and\n * include it in a custom provider.\n */\n@Injectable({providedIn: 'root'})\nexport class HcSortHeaderIntl {\n    /**\n     * Stream that emits whenever the labels here are changed. Use this to notify\n     * components if the labels have changed after initialization.\n     */\n    readonly changes: Subject<void> = new Subject<void>();\n\n    /** ARIA label for the sorting button. */\n    sortButtonLabel = (id: string): string => {\n        return `Change sorting for ${id}`;\n    };\n}\n/** @docs-private */\nexport function HC_SORT_HEADER_INTL_PROVIDER_FACTORY(parentIntl: HcSortHeaderIntl): HcSortHeaderIntl {\n    return parentIntl || new HcSortHeaderIntl();\n}\n\n/** @docs-private */\nexport const HC_SORT_HEADER_INTL_PROVIDER = {\n    // If there is already an HcSortHeaderIntl available, use that. Otherwise, provide a new one.\n    provide: HcSortHeaderIntl,\n    deps: [[new Optional(), new SkipSelf(), HcSortHeaderIntl]],\n    useFactory: HC_SORT_HEADER_INTL_PROVIDER_FACTORY\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive, EventEmitter, Input, isDevMode, OnChanges, OnDestroy, OnInit, Output} from '@angular/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {SortDirection} from './sort-direction';\nimport {getSortDuplicateSortableIdError, getSortHeaderMissingIdError, getSortInvalidDirectionError} from './sort-errors';\nimport {Subject} from 'rxjs';\nimport {Initializable} from '../shared/initializable';\n\n/** Interface for a directive that holds sorting state consumed by `HcSortHeaderComponent`. */\nexport interface HcSortable {\n    /** The id of the column being sorted. */\n    id: string;\n\n    /** Starting sort direction. */\n    start: 'asc' | 'desc';\n\n    /** Whether to disable clearing the sorting state. */\n    disableClear: boolean;\n}\n\n/** The current sort state. */\nexport interface Sort {\n    /** The id of the column being sorted. */\n    active: string;\n\n    /** The sort direction. */\n    direction: SortDirection;\n\n    /** The priority of this sort when multi-level sorting is enabled. */\n    priority?: number;\n}\n\n/** Container for HcSortables to manage the sort state and provide default sort parameters. */\n@Directive({\n    selector: '[hcSort]',\n    exportAs: 'hcSort',\n    standalone: false\n})\nexport class HcSort extends Initializable implements OnChanges, OnDestroy, OnInit {\n    /** Collection of all registered sortables that this directive manages. */\n    sortables = new Map<string, HcSortable>();\n\n    /** Used to notify any child components listening to state changes. */\n    readonly _stateChanges = new Subject<never>();\n\n    /** The id of the most recently sorted HcSortable. */\n    @Input('hcSortActive')\n    active: string;\n\n    /**\n     * The direction to set when an HcSortable is initially sorted.\n     * May be overriden by the HcSortable's sort start.\n     */\n    @Input('hcSortStart')\n    start: 'asc' | 'desc' = 'asc';\n\n    /** The sort direction of the currently active HcSortable. */\n    @Input('hcSortDirection')\n    get direction(): SortDirection {\n        return this._direction;\n    }\n    set direction(direction: SortDirection) {\n        if (isDevMode() && direction && direction !== 'asc' && direction !== 'desc') {\n            throw getSortInvalidDirectionError(direction);\n        }\n        this._direction = direction;\n    }\n    private _direction: SortDirection = '';\n\n    /**\n     * Whether to disable the user from clearing the sort by finishing the sort direction cycle.\n     * May be overriden by the HcSortable's disable clear input.\n     */\n    @Input('hcSortDisableClear')\n    get disableClear(): boolean {\n        return this._disableClear;\n    }\n    set disableClear(v: boolean) {\n        this._disableClear = coerceBooleanProperty(v);\n    }\n    private _disableClear: boolean;\n\n    @Input('hcSortDisabled')\n    get disabled(): boolean {\n        return this._disabled;\n    }\n    set disabled(value: boolean) {\n        this._disabled = coerceBooleanProperty(value);\n    }\n    private _disabled = false;\n\n    /** Whether this sort manages a primary and secondary sort. *Defaults to false.* */\n    @Input('hcSortMulti')\n    get multiSort(): boolean {\n        return this._multiSort;\n    }\n    set multiSort(value: boolean | string) {\n        const multiSort = coerceBooleanProperty(value);\n        if (multiSort && !this._multiSort && this.active && this.direction) {\n            this._sorts = [{active: this.active, direction: this.direction, priority: 1}];\n        }\n        this._multiSort = multiSort;\n    }\n    private _multiSort = false;\n\n    /** The active sorts ordered from highest to lowest priority. */\n    get sorts(): Sort[] {\n        return this._sorts.map(sort => ({...sort}));\n    }\n    private _sorts: Sort[] = [];\n\n    /** Event emitted when the user changes either the active sort or sort direction. */\n    @Output('hcSortChange')\n    readonly sortChange: EventEmitter<Sort> = new EventEmitter<Sort>();\n\n    /**\n     * Register function to be used by the contained HcSortables. Adds the HcSortable to the\n     * collection of HcSortables.\n     */\n    register(sortable: HcSortable): void {\n        if (!sortable.id) {\n            throw getSortHeaderMissingIdError();\n        }\n\n        if (this.sortables.has(sortable.id)) {\n            throw getSortDuplicateSortableIdError(sortable.id);\n        }\n        this.sortables.set(sortable.id, sortable);\n    }\n\n    /**\n     * Unregister function to be used by the contained HcSortables. Removes the HcSortable from the\n     * collection of contained HcSortables.\n     */\n    deregister(sortable: HcSortable): void {\n        this.sortables.delete(sortable.id);\n    }\n\n    /** Sets the active sort id and determines the new sort direction. */\n    sort(sortable: HcSortable): void {\n        if (this.multiSort) {\n            this._sortMulti(sortable);\n        } else {\n            this._sortSingle(sortable);\n        }\n    }\n\n    /** Adds or replaces a secondary sort and emits the updated primary sort. */\n    addSecondarySort(sortable: HcSortable, direction: SortDirection = sortable.start || this.start): void {\n        if (!this.multiSort || !direction || this._sorts.some(sort => sort.active === sortable.id) || this._sorts.length >= 2) {\n            return;\n        }\n\n        this._sorts = [...this._sorts, {active: sortable.id, direction, priority: this._sorts.length + 1}];\n        this._syncPrimarySort();\n        this._emitSortChange();\n    }\n\n    /** Sets the direction for an active sort or makes the column the primary sort. */\n    setSortDirection(sortable: HcSortable, direction: 'asc' | 'desc'): void {\n        if (this.multiSort) {\n            this._setMultiSortDirection(sortable, direction);\n        } else {\n            this._setSingleSortDirection(sortable, direction);\n        }\n    }\n\n    /** Removes a sort while keeping one active sort in place. */\n    removeSort(id: string): void {\n        if (!this.multiSort || this._sorts.length <= 1) {\n            return;\n        }\n\n        this._sorts = this._sorts.filter(sort => sort.active !== id).map((sort, index) => ({...sort, priority: index + 1}));\n        this._syncPrimarySort();\n        this._emitSortChange();\n    }\n\n    /** Swaps the priority of the selected sort with the other active sort. */\n    setSortPriority(id: string, priority: number): void {\n        if (!this.multiSort || this._sorts.length !== 2 || priority < 1 || priority > 2) {\n            return;\n        }\n\n        const selectedIndex = this._sorts.findIndex(sort => sort.active === id);\n        if (selectedIndex === -1 || selectedIndex === priority - 1) {\n            return;\n        }\n\n        const reordered = [...this._sorts];\n        const [selected] = reordered.splice(selectedIndex, 1);\n        reordered.splice(priority - 1, 0, selected);\n        this._sorts = reordered.map((sort, index) => ({...sort, priority: index + 1}));\n        this._syncPrimarySort();\n        this._emitSortChange();\n    }\n\n    /** Returns the active sort for a column, if one exists. */\n    getSort(id: string): Sort | undefined {\n        return this._sorts.find(sort => sort.active === id);\n    }\n\n    /** Returns the next sort direction of the active sortable, checking for potential overrides. */\n    getNextSortDirection(sortable: HcSortable): SortDirection {\n        if (!sortable) {\n            return '';\n        }\n\n        // Get the sort direction cycle with the potential sortable overrides.\n        const disableClear = sortable.disableClear != null ? sortable.disableClear : this.disableClear;\n        const sortDirectionCycle = getSortDirectionCycle(sortable.start || this.start, disableClear);\n\n        // Get and return the next direction in the cycle\n        let nextDirectionIndex = sortDirectionCycle.indexOf(this.direction) + 1;\n        if (nextDirectionIndex >= sortDirectionCycle.length) {\n            nextDirectionIndex = 0;\n        }\n        return sortDirectionCycle[nextDirectionIndex];\n    }\n\n    private _sortSingle(sortable: HcSortable): void {\n        if (this.active !== sortable.id) {\n            this.active = sortable.id;\n            this.direction = sortable.start ? sortable.start : this.start;\n        } else {\n            this.direction = this.getNextSortDirection(sortable);\n        }\n\n        this._emitSortChange();\n    }\n\n    private _sortMulti(sortable: HcSortable): void {\n        const currentSort = this.getSort(sortable.id);\n        if (!currentSort) {\n            this._sorts = [{active: sortable.id, direction: sortable.start || this.start, priority: 1}];\n        } else {\n            this._sorts = this._sorts.map(sort =>\n                sort.active === sortable.id\n                    ? {...sort, direction: sort.direction === 'asc' ? 'desc' : 'asc'}\n                    : sort\n            );\n        }\n\n        this._syncPrimarySort();\n        this._emitSortChange();\n    }\n\n    private _setSingleSortDirection(sortable: HcSortable, direction: 'asc' | 'desc'): void {\n        this.active = sortable.id;\n        this.direction = direction;\n        this._emitSortChange();\n    }\n\n    private _setMultiSortDirection(sortable: HcSortable, direction: 'asc' | 'desc'): void {\n        const currentSort = this.getSort(sortable.id);\n        this._sorts = currentSort\n            ? this._sorts.map(sort => sort.active === sortable.id ? {...sort, direction} : sort)\n            : [{active: sortable.id, direction, priority: 1}];\n        this._syncPrimarySort();\n        this._emitSortChange();\n    }\n\n    private _syncPrimarySort(): void {\n        const primarySort = this._sorts[0];\n        this.active = primarySort?.active;\n        this.direction = primarySort?.direction || '';\n    }\n\n    private _emitSortChange(): void {\n        this.sortChange.emit(this._sorts[0] || {active: this.active, direction: this.direction});\n    }\n\n    private _syncMultiSortFromInputs(): void {\n        if (this.multiSort && this.active && this.direction) {\n            this._sorts = [{active: this.active, direction: this.direction, priority: 1}];\n        }\n    }\n\n    ngOnInit(): void {\n        this._syncMultiSortFromInputs();\n        this._markInitialized();\n    }\n\n    ngOnChanges(): void {\n        this._syncMultiSortFromInputs();\n        this._stateChanges.next();\n    }\n\n    ngOnDestroy(): void {\n        this._stateChanges.complete();\n    }\n}\n\n/** Returns the sort direction cycle to use given the provided parameters of order and clear. */\nfunction getSortDirectionCycle(start: 'asc' | 'desc', disableClear: boolean): SortDirection[] {\n    const sortOrder: SortDirection[] = ['asc', 'desc'];\n    if (start === 'desc') {\n        sortOrder.reverse();\n    }\n    if (!disableClear) {\n        sortOrder.push('');\n    }\n\n    return sortOrder;\n}\n","/* eslint-disable @angular-eslint/component-selector */\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {CdkColumnDef} from '@angular/cdk/table';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    Input,\n    OnDestroy,\n    OnInit,\n    Optional,\n    ViewEncapsulation,\n    HostBinding,\n    HostListener\n} from '@angular/core';\nimport {merge, Subscription} from 'rxjs';\nimport {HcSort, HcSortable} from './sort';\nimport {hcSortAnimations} from './sort-animations';\nimport {SortDirection} from './sort-direction';\nimport {getSortHeaderNotContainedWithinSortError} from './sort-errors';\nimport {HcSortHeaderIntl} from './sort-header-intl';\n\n/**\n * Valid positions for the arrow to be in for its opacity and translation. If the state is a\n * sort direction, the position of the arrow will be above/below and opacity 0. If the state is\n * hint, the arrow will be in the center with a slight opacity. Active state means the arrow will\n * be fully opaque in the center.\n *\n * @docs-private\n */\nexport type ArrowViewState = SortDirection | 'hint' | 'active';\n\n/**\n * States describing the arrow's animated position (animating fromState to toState).\n * If the fromState is not defined, there will be no animated transition to the toState.\n * @docs-private\n */\nexport interface ArrowViewStateTransition {\n    fromState?: ArrowViewState;\n    toState: ArrowViewState;\n}\n\n/**\n * Applies sorting behavior (click to change sort) and styles to an element, including an\n * arrow to display the current sort direction.\n *\n * Must be provided with an id and contained within a parent HcSort directive.\n *\n * If used on header cells in a CdkTable, it will automatically default its id from its containing\n * column definition.\n */\n@Component({\n    selector: '[hc-sort-header]',\n    exportAs: 'hcSortHeader',\n    templateUrl: 'sort-header.html',\n    styleUrls: ['sort-header.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    animations: [\n        hcSortAnimations.indicator,\n        hcSortAnimations.leftPointer,\n        hcSortAnimations.rightPointer,\n        hcSortAnimations.arrowOpacity,\n        hcSortAnimations.arrowPosition,\n        hcSortAnimations.allowChildren\n    ],\n    standalone: false\n})\nexport class HcSortHeader implements HcSortable, OnDestroy, OnInit {\n    private _rerenderSubscription: Subscription;\n\n    /**\n     * Flag set to true when the indicator should be displayed while the sort is not active. Used to\n     * provide an affordance that the header is sortable by showing on focus and hover.\n     */\n    _showIndicatorHint = false;\n\n    /**\n     * The view transition state of the arrow (translation/ opacity) - indicates its `from` and `to`\n     * position through the animation. If animations are currently disabled, the fromState is removed\n     * so that there is no animation displayed.\n     */\n    _viewState: ArrowViewStateTransition;\n\n    /** The direction the arrow should be facing according to the current state. */\n    _arrowDirection: SortDirection = '';\n\n    /**\n     * Whether the view state animation should show the transition between the `from` and `to` states.\n     */\n    _disableViewStateAnimation = false;\n\n    /**\n     * ID of this sort header. If used within the context of a CdkColumnDef, this will default to\n     * the column's name.\n     */\n    @Input('hc-sort-header')\n    id: string;\n\n    /** Sets the position of the arrow that displays when sorted. */\n    @Input()\n    arrowPosition: 'before' | 'after' = 'after';\n\n    /** Overrides the sort start value of the containing HcSort for this HcSortable. */\n    @Input()\n    start: 'asc' | 'desc';\n\n    /** Overrides the disable clear value of the containing HcSort for this HcSortable. */\n    @Input()\n    get disableClear(): boolean {\n        return this._disableClear;\n    }\n\n    set disableClear(v: boolean) {\n        this._disableClear = coerceBooleanProperty(v);\n    }\n\n    private _disableClear: boolean;\n\n    @Input()\n    get disabled(): boolean {\n        return this._disabled;\n    }\n\n    set disabled(value: boolean) {\n        this._disabled = coerceBooleanProperty(value);\n    }\n\n    @HostBinding('class.hc-sort-header')\n    _hostClass = true;\n\n    private _disabled = false;\n\n    constructor(\n        public _intl: HcSortHeaderIntl,\n        changeDetectorRef: ChangeDetectorRef,\n        @Optional() public _sort: HcSort,\n        @Optional() public _cdkColumnDef: CdkColumnDef\n    ) {\n        if (!_sort) {\n            throw getSortHeaderNotContainedWithinSortError();\n        }\n\n        this._rerenderSubscription = merge(_sort.sortChange, _sort._stateChanges, _intl.changes).subscribe(() => {\n            if (this._isSorted()) {\n                this._updateArrowDirection();\n            }\n\n            // If this header was recently active and now no longer sorted, animate away the arrow.\n            if (!this._isSorted() && this._viewState && this._viewState.toState === 'active') {\n                this._disableViewStateAnimation = false;\n                this._setAnimationTransitionState({fromState: 'active', toState: this._arrowDirection});\n            }\n\n            changeDetectorRef.markForCheck();\n        });\n    }\n\n    ngOnInit(): void {\n        if (!this.id && this._cdkColumnDef) {\n            this.id = this._cdkColumnDef.name;\n        }\n\n        // Initialize the direction of the arrow and set the view state to be immediately that state.\n        this._updateArrowDirection();\n        this._setAnimationTransitionState({toState: this._isSorted() ? 'active' : this._arrowDirection});\n\n        this._sort.register(this);\n    }\n\n    ngOnDestroy(): void {\n        this._sort.deregister(this);\n        this._rerenderSubscription.unsubscribe();\n    }\n\n    /**\n     * Sets the \"hint\" state such that the arrow will be semi-transparently displayed as a hint to the\n     * user showing what the active sort will become. If set to false, the arrow will fade away.\n     */\n    _setIndicatorHintVisible(visible: boolean): void {\n        // No-op if the sort header is disabled - should not make the hint visible.\n        if (this._isDisabled() && visible) {\n            return;\n        }\n\n        this._showIndicatorHint = visible;\n\n        if (!this._isSorted()) {\n            this._updateArrowDirection();\n            if (this._showIndicatorHint) {\n                this._setAnimationTransitionState({fromState: this._arrowDirection, toState: 'hint'});\n            } else {\n                this._setAnimationTransitionState({fromState: 'hint', toState: this._arrowDirection});\n            }\n        }\n    }\n\n    /**\n     * Sets the animation transition view state for the arrow's position and opacity. If the\n     * `disableViewStateAnimation` flag is set to true, the `fromState` will be ignored so that\n     * no animation appears.\n     */\n    _setAnimationTransitionState(viewState: ArrowViewStateTransition): void {\n        this._viewState = viewState;\n\n        // If the animation for arrow position state (opacity/translation) should be disabled,\n        // remove the fromState so that it jumps right to the toState.\n        if (this._disableViewStateAnimation) {\n            this._viewState = {toState: viewState.toState};\n        }\n    }\n\n    /** Triggers the sort on this sort header and removes the indicator hint. */\n    @HostListener('click')\n    _handleClick(): void {\n        if (this._isDisabled()) {\n            return;\n        }\n\n        this._sort.sort(this);\n\n        // Do not show the animation if the header was already shown in the right position.\n        if (this._viewState.toState === 'hint' || this._viewState.toState === 'active') {\n            this._disableViewStateAnimation = true;\n        }\n\n        // If the arrow is now sorted, animate the arrow into place. Otherwise, animate it away into\n        // the direction it is facing.\n        const viewState: ArrowViewStateTransition = this._isSorted()\n            ? {fromState: this._arrowDirection, toState: 'active'}\n            : {fromState: 'active', toState: this._arrowDirection};\n        this._setAnimationTransitionState(viewState);\n\n        this._showIndicatorHint = false;\n    }\n\n    /** Whether this HcSortHeader is currently sorted in either ascending or descending order. */\n    _isSorted(): boolean {\n        const sort = this._sort.getSort(this.id);\n        return this._sort.multiSort\n            ? !!sort && (sort.direction === 'asc' || sort.direction === 'desc')\n            : this._sort.active === this.id && (this._sort.direction === 'asc' || this._sort.direction === 'desc');\n    }\n\n    /** Returns this header's priority when two sorts are active. */\n    _getSortPriority(): number | null {\n        if (!this._sort.multiSort || this._sort.sorts.length < 2) {\n            return null;\n        }\n\n        return this._sort.getSort(this.id)?.priority || null;\n    }\n\n    /** Returns the animation state for the arrow direction (indicator and pointers). */\n    _getArrowDirectionState(): string {\n        return `${this._isSorted() ? 'active-' : ''}${this._arrowDirection}`;\n    }\n\n    /** Returns the arrow position state (opacity, translation). */\n    _getArrowViewState(): string {\n        const fromState = this._viewState.fromState;\n        return (fromState ? `${fromState}-to-` : '') + this._viewState.toState;\n    }\n\n    /**\n     * Updates the direction the arrow should be pointing. If it is not sorted, the arrow should be\n     * facing the start direction. Otherwise if it is sorted, the arrow should point in the currently\n     * active sorted direction. The reason this is updated through a function is because the direction\n     * should only be changed at specific times - when deactivated but the hint is displayed and when\n     * the sort is active and the direction changes. Otherwise the arrow's direction should linger\n     * in cases such as the sort becoming deactivated but we want to animate the arrow away while\n     * preserving its direction, even though the next sort direction is actually different and should\n     * only be changed once the arrow displays again (hint or activation).\n     */\n    _updateArrowDirection(): void {\n        const sort = this._sort.getSort(this.id);\n        this._arrowDirection = this._isSorted() && this._sort.multiSort\n            ? sort?.direction || ''\n            : this._isSorted()\n                ? this._sort.direction\n                : this.start || this._sort.start;\n    }\n\n    @HostBinding('class.hc-sort-header-disabled')\n    _isDisabled(): boolean {\n        return this._sort.disabled || this.disabled;\n    }\n\n    /**\n     * Gets the aria-sort attribute that should be applied to this sort header. If this header\n     * is not sorted, returns null so that the attribute is removed from the host element. Aria spec\n     * says that the aria-sort property should only be present on one header at a time, so removing\n     * ensures this is true.\n     */\n    @HostBinding('attr.aria-sort')\n    get ariaSort(): string | null {\n        const sort = this._sort.getSort(this.id);\n        if (!this._isSorted() || (this._sort.multiSort && sort?.priority !== 1)) {\n            return null;\n        }\n\n        const direction = this._sort.multiSort ? sort?.direction : this._sort.direction;\n        return direction === 'asc' ? 'ascending' : 'descending';\n    }\n}\n","<div class=\"hc-sort-header-container\"\n     [class.hc-sort-header-sorted]=\"_isSorted()\"\n     [class.hc-sort-header-position-before]=\"arrowPosition === 'before'\">\n  <button class=\"hc-sort-header-button\" type=\"button\"\n          [attr.disabled]=\"_isDisabled() || null\"\n          [attr.aria-label]=\"_intl.sortButtonLabel(id)\"\n          (focus)=\"_setIndicatorHintVisible(true)\"\n          (blur)=\"_setIndicatorHintVisible(false)\">\n    <ng-content></ng-content>\n  </button>\n\n  <div class=\"hc-sort-header-indicator\">\n    <ng-container *ngIf=\"_sort.multiSort; else singleSortIcon\">\n      <ng-container *ngIf=\"_sort.getSort(id) as sort; else multiSortIcon\">\n        <div *ngIf=\"_sort.sorts.length > 1 && sort.priority as priority; else multiSortIcon\" class=\"hc-sort-header-priority\">\n          <span class=\"hc-sort-header-priority-icon\" [ngClass]=\"{'hc-sort-header-asc': sort.direction === 'asc', 'hc-sort-header-desc': sort.direction === 'desc'}\"></span>\n          <span class=\"hc-sort-header-priority-number\">{{priority}}</span>\n        </div>\n      </ng-container>\n    </ng-container>\n  </div>\n</div>\n\n<ng-template #singleSortIcon>\n  <div class=\"hc-sort-header-icon\" [ngClass]=\"{'hc-sort-header-asc': _getArrowDirectionState() === 'active-asc', 'hc-sort-header-desc': _getArrowDirectionState() === 'active-desc', 'hc-sort-header-off': !_isSorted() }\"></div>\n</ng-template>\n\n<ng-template #multiSortIcon>\n  <div class=\"hc-sort-header-icon\" [ngClass]=\"{'hc-sort-header-asc': _getArrowDirectionState() === 'active-asc', 'hc-sort-header-desc': _getArrowDirectionState() === 'active-desc', 'hc-sort-header-off': !_isSorted() }\"></div>\n</ng-template>\n\n<ng-content select=\"hc-cell-resizer\"></ng-content>\n","import {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {HcSort, HcSortable} from './sort';\n\n/** Displays standard context-menu actions for a sortable column. */\n@Component({\n    selector: 'hc-sort-menu',\n    templateUrl: './sort-menu.component.html',\n    styleUrls: ['./sort-menu.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class HcSortMenuComponent {\n    /** The sort controller that owns the column state. */\n    @Input() sort?: HcSort;\n\n    /** The column represented by this menu. */\n    @Input() sortable?: HcSortable;\n\n    /** Whether this column currently has an active sort. */\n    get isSorted(): boolean {\n        if (!this.sort || !this.sortable) {\n            return false;\n        }\n\n        return this.sort.multiSort\n            ? !!this.sort.getSort(this.sortable.id)\n            : this.sort.active === this.sortable.id && this.sort.direction !== '';\n    }\n\n    /** Whether this column can be added as the secondary sort. */\n    get canAddSecondarySort(): boolean {\n        return !!this.sort?.multiSort && this.sort.sorts.length === 1 && !this.isSorted;\n    }\n\n    /** Whether this column can be removed without leaving the table unsorted. */\n    get canRemoveSort(): boolean {\n        return !!this.sort?.multiSort && this.sort.sorts.length === 2 && this.isSorted;\n    }\n\n    /** Current priority of this column, if it is sorted. */\n    get priority(): number | null {\n        return this._hasSortContext() ? this.sort.getSort(this.sortable.id)?.priority || null : null;\n    }\n\n    /** Sets ascending order for this column. */\n    sortAscending(): void {\n        if (this._hasSortContext()) {\n            this.sort.setSortDirection(this.sortable, 'asc');\n        }\n    }\n\n    /** Sets descending order for this column. */\n    sortDescending(): void {\n        if (this._hasSortContext()) {\n            this.sort.setSortDirection(this.sortable, 'desc');\n        }\n    }\n\n    /** Adds this column as the secondary sort. */\n    addSecondarySort(): void {\n        if (this._hasSortContext()) {\n            this.sort.addSecondarySort(this.sortable);\n        }\n    }\n\n    /** Removes this column from the active sorts. */\n    removeSort(): void {\n        if (this._hasSortContext()) {\n            this.sort.removeSort(this.sortable.id);\n        }\n    }\n\n    /** Changes this column's sort priority. */\n    setPriority(priority: number): void {\n        if (this._hasSortContext()) {\n            this.sort.setSortPriority(this.sortable.id, priority);\n        }\n    }\n\n    private _hasSortContext(): this is this & { sort: HcSort; sortable: HcSortable } {\n        return !!this.sort && !!this.sortable;\n    }\n}\n","<div hcMenu>\n    <button hcMenuItem type=\"button\" (click)=\"sortAscending()\">\n        <hc-icon hcMenuIcon fontIcon=\"icon-sort-ascend\"></hc-icon>\n        <span hcMenuText>Sort ascending</span>\n    </button>\n    <button hcMenuItem type=\"button\" (click)=\"sortDescending()\">\n        <hc-icon hcMenuIcon fontIcon=\"icon-sort-descend\"></hc-icon>\n        <span hcMenuText>Sort descending</span>\n    </button>\n    <div *ngIf=\"canAddSecondarySort\" hcMenuItem hcDivider></div>\n    <button *ngIf=\"canAddSecondarySort\" hcMenuItem type=\"button\" (click)=\"addSecondarySort()\">\n        <hc-icon hcMenuIcon fontIcon=\"icon-sort-ascend\"></hc-icon>\n        <span hcMenuText>Add as secondary sort</span>\n    </button>\n    <div *ngIf=\"canRemoveSort\" hcMenuItem hcDivider></div>\n    <button *ngIf=\"canRemoveSort\" hcMenuItem type=\"button\" (click)=\"removeSort()\">\n        <hc-icon hcMenuIcon fontIcon=\"icon-ban\"></hc-icon>\n        <span hcMenuText>Remove sort</span>\n    </button>\n    <div *ngIf=\"canRemoveSort\" class=\"hc-sort-menu-priority\">\n        <span>Priority:</span>\n        <button hcMenuItem type=\"button\" [class.hc-sort-menu-priority-active]=\"priority === 1\" (click)=\"setPriority(1)\">1st</button>\n        <button hcMenuItem type=\"button\" [class.hc-sort-menu-priority-active]=\"priority === 2\" (click)=\"setPriority(2)\">2nd</button>\n    </div>\n    <ng-content></ng-content>\n</div>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {HcSortHeader} from './sort-header';\nimport {HcSort} from './sort';\nimport {HC_SORT_HEADER_INTL_PROVIDER} from './sort-header-intl';\nimport {CommonModule} from '@angular/common';\nimport {PopModule} from '../pop/popover.module';\nimport {IconModule} from '../icon/icon.module';\nimport {HcSortMenuComponent} from './sort-menu.component';\n\n@NgModule({\n    imports: [CommonModule, PopModule, IconModule],\n    exports: [HcSort, HcSortHeader, HcSortMenuComponent],\n    declarations: [HcSort, HcSortHeader, HcSortMenuComponent],\n    providers: [HC_SORT_HEADER_INTL_PROVIDER]\n})\nexport class SortModule {}\n","import {Component, Input, AfterContentInit, HostBinding, ViewEncapsulation, Output, EventEmitter} from '@angular/core';\nimport {Router, NavigationEnd, Params, UrlSerializer} from '@angular/router';\nimport {parseBooleanAttribute} from '../util';\n\nexport function throwErrorForMissingRouterLink(stepsWithoutRouterLink: StepInterface[]): void {\n    const stepLabels = stepsWithoutRouterLink.map(step => step.label);\n    throw Error(`Routerlink missing on ${stepLabels.join(',')}`);\n}\n\nexport interface StepInterface {\n    /** The text to be displayed under the step indicator */\n    label?: string;\n    /** If using a router, the route this step should navigate to */\n    routerLink?: string;\n    /** The icon set the step's hc-icon should use. Must be set if using the icon parameter. */\n    iconSet?: string;\n    /** An glyph that should be displayed inside the step's circle.\n     * If not set, the step number will display in the circle instead. */\n    icon?: string;\n    /** If true, the step will not be clickable */\n    disabled?: boolean;\n    /** Apply query params to the routerLink */\n    queryParams?: Params;\n}\n\nexport type StepColor = 'green' | 'blue' | 'purple' | 'orange' | 'red' | 'none';\nexport type StepType = 'arrow' | 'isolated';\n\n/** Convey progress through numbered steps, providing a wizard-like workflow.  */\n@Component({\n    selector: 'hc-stepper',\n    templateUrl: './stepper.component.html',\n    styleUrls: ['./stepper.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class StepperComponent implements AfterContentInit {\n    _routerEnabled = false;\n\n    /** An array defining the steps in the stepper */\n    @Input()\n    public steps: StepInterface[];\n\n    /** Sets the layout of the progress stepper. *Defaults to `arrow`.*  */\n    @Input()\n    public type: StepType = 'arrow';\n\n    /** Sets the highlight color of the progress stepper. *Defaults to `green`.*  */\n    @Input()\n    get color(): StepColor {\n        return this._color;\n    }\n    set color(value: StepColor) {\n        this._color = value;\n        this._hostClass = 'hc-stepper-' + this._color;\n    }\n    private _color: StepColor = 'green';\n\n    /** Determines whether numerals should be displayed on each step indicator for the isolated type.\n     * *Defaults to `false`.*  */\n    @Input()\n    get showStepCount(): boolean {\n        return this._showStepCount;\n    }\n    set showStepCount(value: boolean) {\n        this._showStepCount = parseBooleanAttribute(value);\n    }\n    private _showStepCount = false;\n\n    /** If true, include a router outlet with the component. *Defaults to `true`.*  */\n    @Input()\n    get useRouterOutlet(): boolean {\n        return this._useRouterOutlet;\n    }\n    set useRouterOutlet(value: boolean) {\n        this._useRouterOutlet = parseBooleanAttribute(value);\n    }\n    private _useRouterOutlet = true;\n\n    /** Get or set the currently selected zero-based index of the stepper */\n    @Input()\n    get activeIndex(): number | undefined {\n        return this._activeIndex;\n    }\n    set activeIndex(value: number | undefined) {\n        if (!this.steps) {\n            return;\n        }\n        if (value !== undefined && (value < 0 || value >= this.steps.length)) {\n            throw Error('The hc-stepper activeIndex value of ' + value + ' is out of bounds');\n        }\n        if (this._routerEnabled && value !== undefined) {\n            this.router.navigate([this.steps[value].routerLink]);\n        } else {\n            this._activeIndex = value;\n            this.activeIndexChange.emit(this._activeIndex);\n        }\n    }\n    private _activeIndex: number | undefined = undefined;\n\n    /** Emits the current zero-based index for the active step whenever it changes */\n    @Output()\n    activeIndexChange = new EventEmitter<number>();\n\n    @HostBinding('class') _hostClass = 'hc-stepper-' + this.color;\n\n    constructor(private router: Router, private urlSerializer: UrlSerializer) {\n        this.router.events.forEach(event => {\n            if (event instanceof NavigationEnd) {\n                this.findCurrentStep();\n            }\n        });\n    }\n\n    ngAfterContentInit(): void {\n        this._checkForRouterUse();\n        if (this._routerEnabled) {\n            this.findCurrentStep();\n        }\n    }\n\n    _stepClick(index: number | undefined): void {\n        if (!this._routerEnabled && index !== undefined && this.steps[index].disabled !== true) {\n            this._activeIndex = index;\n            this.activeIndexChange.emit(this._activeIndex);\n        }\n    }\n\n    private _checkForRouterUse() {\n        const countUsingRouter = this.steps.filter(step => step.routerLink !== undefined).length;\n        if (countUsingRouter > 0 && countUsingRouter < this.steps.length) {\n            const stepMissingRouterLink = this.steps.filter(step => step.routerLink === undefined);\n            throwErrorForMissingRouterLink(stepMissingRouterLink);\n        } else {\n            this._routerEnabled = countUsingRouter === this.steps.length;\n        }\n    }\n\n    /** Can be used to activate the current step following @Input() steps routerLink or queryParams updates  */\n    findCurrentStep(): void {\n        const foundActiveRouteIndex = this.steps.findIndex(step => {\n            const urlTree = this.router.createUrlTree([step.routerLink], {queryParams: step.queryParams});\n            const stepURL = this.urlSerializer.serialize(urlTree);\n            return this.router.isActive(stepURL, true);\n        });\n        this._activeIndex = foundActiveRouteIndex > -1 ? foundActiveRouteIndex : undefined;\n        this.activeIndexChange.emit(this._activeIndex);\n    }\n}\n","<div [ngClass]=\"'hc-stepper-' + type\">\n    <div class=\"hc-stepper-track\">\n        <ng-content select=\".before-steps-content\"></ng-content>\n        @for (step of steps; track step; let i = $index; let isLast = $last; let isFirst = $first) {\n        <div\n            class=\"hc-step\"\n            [routerLink]=\"step.routerLink\"\n            [routerLinkActiveOptions]=\"{exact: true}\"\n            routerLinkActive=\"active\"\n            [queryParams]=\"step.queryParams\"\n            [ngClass]=\"{\n                'hc-step-arrow-active': type === 'arrow' && i === activeIndex,\n                'hc-step-arrow-incomplete': type === 'arrow' && (activeIndex === undefined || i > activeIndex),\n                'hc-step-arrow-complete': type === 'arrow' && activeIndex !== undefined && i < activeIndex - 1,\n                'hc-step-arrow-completed': type === 'arrow' && activeIndex !== undefined && i === activeIndex - 1,\n                'hc-step-isolated-active': type === 'isolated' && i === activeIndex,\n                'hc-step-isolated-incomplete': type === 'isolated' && (activeIndex === undefined || i > activeIndex),\n                'hc-step-isolated-complete': type === 'isolated' && activeIndex !== undefined && i < activeIndex - 1,\n                'hc-step-isolated-completed': type === 'isolated' && activeIndex !== undefined && i === activeIndex - 1,\n                'hc-step-last': isLast,\n                'hc-step-first': isFirst,\n                'hc-stepper-clickable': step.disabled !== undefined ? !step.disabled : true,\n                'hc-stepper-disabled': step.disabled !== undefined ? step.disabled : false\n            }\"\n            (click)=\"_stepClick(i)\"\n        >\n            <span class=\"hc-step-disk\">\n                @if (step.iconSet && step.icon) {\n                <hc-icon [fontSet]=\"step.iconSet\" [fontIcon]=\"step.icon\" class=\"hc-step-icon\"></hc-icon>\n                } @else {\n                {{ i + 1 }}\n                }\n            </span>\n            @if (showStepCount) {\n            <span class=\"hc-step-label-count\">{{ i + 1 }}</span>\n            }\n            <span class=\"hc-step-label\">{{ step.label }}</span>\n            <span class=\"hc-step-arrow\"></span>\n        </div>\n        }\n        <ng-content select=\".after-steps-content\"></ng-content>\n    </div>\n    @if (useRouterOutlet) {\n    <div class=\"hc-step-content\">\n        @if (_routerEnabled) {\n        <router-outlet></router-outlet>\n        }\n    </div>\n    }\n</div>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {RouterModule} from '@angular/router';\nimport {StepperComponent} from './stepper.component';\nimport {IconModule} from '../icon/icon.module';\n\nexport {StepInterface} from './stepper.component';\n\n@NgModule({\n    imports: [CommonModule, RouterModule, IconModule],\n    exports: [StepperComponent],\n    declarations: [StepperComponent]\n})\nexport class StepperModule {}\n","import {Component, HostBinding, Input, ViewEncapsulation} from '@angular/core';\n\n/** Secondary navigation bar appearing below the primary navbar  */\n@Component({\n    selector: 'hc-subnav',\n    template: `\n        <ng-content></ng-content>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class SubnavComponent {\n    @HostBinding('class.hc-subnav')\n    _hostClass = true;\n\n    /** **DEPRECATED** Not compatible with notification banners, so you should set\n     * the fixed position of the subnav and other header content within your app instead */\n    @HostBinding('class.hc-subnav-fixed-top')\n    @Input()\n    public fixedTop = false;\n}\n","import {Directive, HostBinding} from '@angular/core';\n\n/** Can be added to a div or individual component to align it to the right side of the subnav  */\n@Directive({\n    selector: '[hcSubnavRight]',\n    standalone: false\n})\nexport class SubnavRightDirective {\n    @HostBinding('class.hc-subnav-right')\n    _hostClass = true;\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {SubnavComponent} from './subnav.component';\nimport {SubnavRightDirective} from './subnav-right.directive';\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [SubnavComponent, SubnavRightDirective],\n    declarations: [SubnavComponent, SubnavRightDirective]\n})\nexport class SubnavModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CDK_TABLE, CdkTable} from '@angular/cdk/table';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation, HostBinding, Input} from '@angular/core';\nimport {parseBooleanAttribute} from '../util';\n\n@Component({\n    selector: 'hc-table, table[hc-table]',\n    exportAs: 'matTable',\n    template: `\n        <ng-content select=\"caption\"></ng-content>\n        <ng-content select=\"colgroup, col\"></ng-content>\n        <thead>\n            <ng-container headerRowOutlet></ng-container>\n        </thead>\n        <tbody>\n            <ng-container rowOutlet></ng-container>\n            <ng-container noDataRowOutlet></ng-container>\n        </tbody>\n        <tfoot>\n            <ng-container footerRowOutlet></ng-container>\n        </tfoot>\n    `,\n    styleUrls: ['table.component.scss'],\n    providers: [\n        { provide: CDK_TABLE, useExisting: HcTable }\n    ],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class HcTable<T> extends CdkTable<T> {\n    /** Overrides the sticky CSS class set by the `CdkTable`. */\n    protected stickyCssClass = 'hc-table-sticky';\n\n    @HostBinding('class.hc-table')\n    _hostHcTableClass = true;\n    @HostBinding('class.hc-table-borders')\n    _hostHcBordersClass = true;\n    @HostBinding('class.hc-table-small')\n    _hostHcTableSmall = false;\n\n    /** Sets whether the table should have a 2px border around each cell (defaults to true) */\n    @Input()\n    get borders(): boolean {\n        return this._hostHcBordersClass;\n    }\n\n    set borders(hasBorders: boolean) {\n        this._hostHcBordersClass = parseBooleanAttribute(hasBorders);\n    }\n\n    /** If true, table has less padding and a smaller font size (defaults to false)  */\n    @Input()\n    get tight(): boolean {\n        return this._hostHcTableSmall;\n    }\n    set tight(value: boolean) {\n        this._hostHcTableSmall = parseBooleanAttribute(value);\n    }\n}\n","/* eslint-disable @angular-eslint/directive-selector */\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive, ElementRef, HostBinding, Input} from '@angular/core';\nimport {CdkCell, CdkCellDef, CdkColumnDef, CdkFooterCell, CdkFooterCellDef, CdkHeaderCell, CdkHeaderCellDef} from '@angular/cdk/table';\n\n/**\n * Cell definition for the hc-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\n@Directive({\n    selector: '[hcCellDef]',\n    providers: [{ provide: CdkCellDef, useExisting: HcCellDef }],\n    standalone: false\n})\nexport class HcCellDef extends CdkCellDef {}\n\n/**\n * Header cell definition for the hc-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\n@Directive({\n    selector: '[hcHeaderCellDef]',\n    providers: [{ provide: CdkHeaderCellDef, useExisting: HcHeaderCellDef }],\n    standalone: false\n})\nexport class HcHeaderCellDef extends CdkHeaderCellDef {}\n\n/**\n * Footer cell definition for the hc-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\n@Directive({\n    selector: '[hcFooterCellDef]',\n    providers: [{ provide: CdkFooterCellDef, useExisting: HcFooterCellDef }],\n    standalone: false\n})\nexport class HcFooterCellDef extends CdkFooterCellDef {}\n\n/**\n * Column definition for the hc-table.\n * Defines a set of cells available for a table column.\n */\n@Directive({\n    selector: '[hcColumnDef]',\n    providers: [{ provide: CdkColumnDef, useExisting: HcColumnDef }],\n    standalone: false\n})\nexport class HcColumnDef extends CdkColumnDef {\n    private _justify = 'left';\n\n    /** Unique name for this column. */\n    @Input('hcColumnDef')\n    get colName(): string {\n        return this.name;\n    }\n    set colName( value: string ) {\n        this.name = value;\n    }\n\n    /** Sets the text alignment for this column: `left` (default), `center` or `right` */\n    @Input()\n    get justify(): string {\n        return this._justify;\n    }\n\n    set justify(justifyVal: string) {\n        if (justifyVal === 'left' || justifyVal === 'center' || justifyVal === 'right') {\n            this._justify = justifyVal;\n        } else {\n            throw Error('Unsupported table column alignment value: ' + justifyVal);\n        }\n    }\n\n    /** Whether this column should be sticky positioned at the start of the row */\n    @Input()\n    public get sticky(): boolean {\n        return super.sticky\n    }\n    public set sticky(value: boolean) {\n        super.sticky = value;\n    }\n\n    /** Whether this column should be sticky positioned on the end of the row */\n    @Input()\n    get stickyEnd(): boolean {\n        return this._stickyEnd;\n    }\n    set stickyEnd( value: boolean ) {\n        this._stickyEnd = value;\n    }\n}\n\n/** Header cell template container that adds the right classes and role. */\n@Directive({\n    selector: 'hc-header-cell, th[hc-header-cell]',\n    standalone: false\n})\nexport class HcHeaderCell extends CdkHeaderCell {\n    @HostBinding('class.hc-header-cell') _hostClass = true;\n    @HostBinding('attr.role') _role = 'columnheader';\n\n    constructor(columnDef: HcColumnDef, elementRef: ElementRef) {\n        super(columnDef, elementRef);\n        elementRef.nativeElement.classList.add(`hc-column-${columnDef.cssClassFriendlyName}`);\n        elementRef.nativeElement.classList.add(`hc-table-justify-` + columnDef.justify);\n    }\n}\n\n/** Footer cell template container that adds the right classes and role. */\n@Directive({\n    selector: 'hc-footer-cell, td[hc-footer-cell]',\n    standalone: false\n})\nexport class HcFooterCell extends CdkFooterCell {\n    @HostBinding('class.hc-footer-cell') _hostClass = true;\n    @HostBinding('attr.role') _role = 'gridcell';\n\n    constructor(columnDef: HcColumnDef, elementRef: ElementRef) {\n        super(columnDef, elementRef);\n        elementRef.nativeElement.classList.add(`hc-column-${columnDef.cssClassFriendlyName}`);\n        elementRef.nativeElement.classList.add(`hc-table-justify-` + columnDef.justify);\n    }\n}\n\n/** Cell template container that adds the right classes and role. */\n@Directive({\n    selector: 'hc-cell, td[hc-cell]',\n    standalone: false\n})\nexport class HcCell extends CdkCell {\n    @HostBinding('class.hc-cell') _hostClass = true;\n    @HostBinding('attr.role') _role = 'gridcell';\n\n    constructor(columnDef: HcColumnDef, elementRef: ElementRef) {\n        super(columnDef, elementRef);\n        elementRef.nativeElement.classList.add(`hc-column-${columnDef.cssClassFriendlyName}`);\n        elementRef.nativeElement.classList.add(`hc-table-justify-` + columnDef.justify);\n    }\n}\n\n/** Row index cell template container that adds the right classes and role. */\n@Directive({\n    selector: 'hc-index-cell, td[hc-index-cell], th[hc-index-cell]',\n    standalone: false\n})\nexport class HcIndexCell extends CdkCell {\n    @HostBinding('class.hc-index-cell') _hostClass = true;\n    @HostBinding('attr.role') _role = 'gridcell';\n\n    constructor(columnDef: HcColumnDef, elementRef: ElementRef) {\n        super(columnDef, elementRef);\n        elementRef.nativeElement.classList.add(`hc-column-${columnDef.cssClassFriendlyName}`);\n    }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ChangeDetectionStrategy, Component, Directive, HostBinding, ViewEncapsulation} from '@angular/core';\nimport {CDK_ROW_TEMPLATE, CdkFooterRow, CdkFooterRowDef, CdkHeaderRow, CdkHeaderRowDef, CdkRow, CdkRowDef} from '@angular/cdk/table';\n\n/**\n * Header row definition for the hc-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\n@Directive({\n    selector: '[hcHeaderRowDef]',\n    providers: [{ provide: CdkHeaderRowDef, useExisting: HcHeaderRowDef }],\n    inputs: ['columns: hcHeaderRowDef', 'sticky: hcHeaderRowDefSticky'],\n    standalone: false\n})\nexport class HcHeaderRowDef extends CdkHeaderRowDef {}\n\n/**\n * Footer row definition for the mat-table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\n@Directive({\n    selector: '[hcFooterRowDef]',\n    providers: [{ provide: CdkFooterRowDef, useExisting: HcFooterRowDef }],\n    inputs: ['columns: hcFooterRowDef', 'sticky: hcFooterRowDefSticky'],\n    standalone: false\n})\nexport class HcFooterRowDef extends CdkFooterRowDef {}\n\n/**\n * Data row definition for the mat-table.\n * Captures the footer row's template and other footer properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\n@Directive({\n    selector: '[hcRowDef]',\n    providers: [{ provide: CdkRowDef, useExisting: HcRowDef }],\n    inputs: ['columns: hcRowDefColumns', 'when: hcRowDefWhen'],\n    standalone: false\n})\nexport class HcRowDef<T> extends CdkRowDef<T> {}\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n    selector: 'hc-header-row, tr[hc-header-row]',\n    template: CDK_ROW_TEMPLATE,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    exportAs: 'hcHeaderRow',\n    providers: [{ provide: CdkHeaderRow, useExisting: HcHeaderRow }],\n    standalone: false\n})\nexport class HcHeaderRow extends CdkHeaderRow {\n    @HostBinding('class.hc-header-row') _hostClass = true;\n    @HostBinding('attr.role') _role = 'row';\n}\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n    selector: 'hc-footer-row, tr[hc-footer-row]',\n    template: CDK_ROW_TEMPLATE,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    exportAs: 'hcFooterRow',\n    providers: [{ provide: CdkFooterRow, useExisting: HcFooterRow }],\n    standalone: false\n})\nexport class HcFooterRow extends CdkFooterRow {\n    @HostBinding('class.hc-footer-row') _hostClass = true;\n    @HostBinding('attr.role') _role = 'row';\n}\n\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n    selector: 'hc-row, tr[hc-row]',\n    template: CDK_ROW_TEMPLATE,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    exportAs: 'hcRow',\n    providers: [{ provide: CdkRow, useExisting: HcRow }],\n    standalone: false\n})\nexport class HcRow extends CdkRow {\n    @HostBinding('class.hc-row') _hostClass = true;\n    @HostBinding('attr.role') _role = 'row';\n}\n","/* Based on an example posted by Paolo Caleffi at: https://github.com/angular/material2/issues/8312 */\n\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    HostBinding,\n    HostListener,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    ViewEncapsulation\n} from '@angular/core';\nimport {untilDestroyed} from '../util';\nimport {fromEvent, ReplaySubject, Subscription} from 'rxjs';\n\nexport class CellResizeEvent {\n    constructor(public width: number, public directionLeft: boolean) {}\n}\n\n@Component({\n    selector: 'hc-cell-resizer',\n    template: '<div class=\"hc-cell-resizer-left\"></div><div class=\"hc-cell-resizer-right\"></div>',\n    styleUrls: [],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class HcCellResizer implements OnInit, OnDestroy {\n    /**\n     * Sets whether the resizer is active or not\n     */\n    @HostBinding('class.disabled') @Input() disabled = false;\n\n    /**\n     * Stores the width value for this resizer;\n     * typically used with two-way binding on the cell's style.width property\n     */\n    @Input()\n    get width(): number {\n        return this._width;\n    }\n    set width(value: number) {\n        if (value > 0) {\n            this._width = value;\n        }\n    }\n    private _width!: number;\n\n    private _directionModifier = 1;\n\n    private _mouseX: number;\n\n    /**\n     * Emits a `CellResizeEvent` when a cell has been resized\n     */\n    @Output() public resized = new EventEmitter<CellResizeEvent>();\n\n    private isResizing = false;\n    private isResizing$ = new ReplaySubject<boolean>(1);\n\n    /**\n     * Emits a boolean value of true while a cell is being resized\n     */\n    @Output() public resizing = new EventEmitter<boolean>();\n\n    private dragSubscription?: Subscription;\n\n    public ngOnInit(): void {\n        this.isResizing$\n            .pipe(\n                // Skip default value\n                untilDestroyed(this)\n            )\n            .subscribe(isResizing => {\n                this.resizing.emit(isResizing);\n\n                if (isResizing) {\n                    // We must use arrow function to avoid losing the context,\n                    //  we cannot pass directly the functions references\n                    this.dragSubscription = fromEvent<MouseEvent>(window.document, 'mousemove')\n                        .pipe(untilDestroyed(this))\n                        .subscribe(event => this._resizeColumn(event));\n                    this.dragSubscription.add(\n                        fromEvent(window.document, 'mouseup')\n                            .pipe(untilDestroyed(this))\n                            .subscribe(() => this._stopResizing())\n                    );\n                } else {\n                    // When resize finishes, we emit one last \"resized\" event for which\n                    //  the corresponding \"isResizing\" value will be false.\n                    // This can be used to detect which is the final resizing event\n                    //  and ignore the others\n                    this.resized.emit(new CellResizeEvent(this.width, this._directionModifier === -1));\n                    if (this.dragSubscription) {\n                        this.dragSubscription.unsubscribe();\n                    }\n                }\n            });\n    }\n\n    private _resizeColumn(event: MouseEvent) {\n        const deltaX = event.screenX - this._mouseX;\n        const newWidth = this.width + deltaX * this._directionModifier;\n\n        this._mouseX = event.screenX;\n\n        if (newWidth >= 0) {\n            this.resized.emit(new CellResizeEvent(newWidth, this._directionModifier === -1));\n        }\n        // Prevent text selection while resizing\n        event.preventDefault();\n        event.stopPropagation();\n    }\n\n    // Same problems that mousemove listener have\n    private _stopResizing() {\n        this.isResizing = false;\n        this.isResizing$.next(this.isResizing);\n    }\n\n    // isResizing can be set to true only when the component is not disabled\n    @HostListener('mousedown', ['$event']) _startResizing(event: MouseEvent): void {\n        this.isResizing = !this.disabled;\n        this.isResizing$.next(this.isResizing);\n\n        this._mouseX = event.screenX;\n\n        if ((<Element>event.target).className === 'hc-cell-resizer-left') {\n            this._directionModifier = -1;\n        } else {\n            this._directionModifier = 1;\n        }\n\n        // Prevent text selection while resizing\n        event.preventDefault();\n        event.stopPropagation();\n    }\n\n    // Must be present for AOT compilation to work, even if empty\n    // Otherwise 'ng build --prod' will optimize away any calls to ngOnDestroy,\n    // even if the method is added by the untilDestroyed operator\n    public ngOnDestroy(): void { return; }\n}\n","import {Directive, ElementRef, HostBinding, Input} from '@angular/core';\n\n/** Use `hcTableContainer` to wrap around tables that have sticky headers/columns or other advanced use cases. */\n@Directive({\n    selector: '[hcTableContainer]',\n    standalone: false\n})\nexport class TableContainerDirective {\n    private readonly onlyNumbersRegex = /^\\d+$/;\n    @HostBinding('class.hc-table-container')\n    _hostClass = true;\n\n    @HostBinding('class.hc-table-container-gray')\n    _hasGrayBg = false;\n\n    @Input() set tableHeight(height: number | string) {\n        this._height = height;\n        const isHeightJustNumbers = this.onlyNumbersRegex.test(height.toString());\n        this.elRef.nativeElement.style.height = isHeightJustNumbers ? `${height}px` : height;\n    }\n    get tableHeight(): string | number{\n        return this._height;\n    }\n    private _height: string | number;\n\n    @Input() set hasGrayBg(hasGrayBg: boolean) {\n        this._hasGrayBg = hasGrayBg;\n    }\n    get hasGrayBg(): boolean {\n        return this._hasGrayBg;\n    }\n\n    constructor(private elRef: ElementRef) {}\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {HcTable} from './table.component';\nimport {HcCell, HcCellDef, HcColumnDef, HcFooterCell, HcFooterCellDef, HcHeaderCell, HcHeaderCellDef, HcIndexCell} from './cell';\nimport {HcFooterRow, HcFooterRowDef, HcHeaderRow, HcHeaderRowDef, HcRow, HcRowDef} from './row';\nimport {HcCellResizer} from './cell-resizer.component';\nimport {CdkTableModule} from '@angular/cdk/table';\nimport {CommonModule} from '@angular/common';\nimport { TableContainerDirective } from './table-container.directive';\n\nconst EXPORTED_DECLARATIONS = [\n    // HcTable\n    HcTable,\n\n    // Template defs\n    HcHeaderCellDef,\n    HcHeaderRowDef,\n    HcColumnDef,\n    HcCellDef,\n    HcRowDef,\n    HcFooterCellDef,\n    HcFooterRowDef,\n\n    // Cell directives\n    HcHeaderCell,\n    HcCell,\n    HcFooterCell,\n    HcIndexCell,\n\n    // Row directions\n    HcHeaderRow,\n    HcRow,\n    HcFooterRow,\n\n    // table directive\n    TableContainerDirective,\n\n    // Cell resizer\n    HcCellResizer\n];\n\n@NgModule({\n    imports: [CdkTableModule, CommonModule],\n    exports: EXPORTED_DECLARATIONS,\n    declarations: EXPORTED_DECLARATIONS\n})\nexport class TableModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {_isNumberValue} from '@angular/cdk/coercion';\nimport {DataSource} from '@angular/cdk/table';\nimport {BehaviorSubject, combineLatest, merge, Observable, of as observableOf, Subscription} from 'rxjs';\nimport {HcSort, Sort} from '../sort/index';\nimport {map} from 'rxjs/operators';\nimport {LoadMorePaginationComponent, PageEvent} from '../pagination/index';\nimport {BasePaginationComponent} from '../pagination/base-pagination';\n\n/**\n * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to\n * flaky browser support and the value not being defined in Closure's typings.\n */\nconst MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Use to see what kind of pager we have\n */\nexport function _isLoadMorePaginator(pager: BasePaginationComponent): pager is LoadMorePaginationComponent {\n    const loadMorePager = <LoadMorePaginationComponent>pager;\n    return loadMorePager && loadMorePager.buttonText !== undefined;\n}\n\n/**\n * Data source that accepts a client-side data array and includes native support of filtering,\n * sorting (using HcSort), and pagination (using BasePaginationComponent).\n *\n * Allows for sort customization by overriding sortingDataAccessor, which defines how data\n * properties are accessed. Also allows for filter customization by overriding filterTermAccessor,\n * which defines how row data is converted to a string for filter matching.\n */\nexport class HcTableDataSource<T extends object> extends DataSource<T> {\n    /** Stream that emits when a new data array is set on the data source. */\n    private readonly _data: BehaviorSubject<T[]>;\n\n    /** Stream emitting render data to the table (depends on ordered data changes). */\n    private readonly _renderData = new BehaviorSubject<T[]>([]);\n\n    /** Stream that emits when a new filter string is set on the data source. */\n    private readonly _filter = new BehaviorSubject<string>('');\n\n    /**\n     * Subscription to the changes that should trigger an update to the table's rendered rows, such\n     * as filtering, sorting, pagination, or base data changes.\n     */\n    _renderChangesSubscription = Subscription.EMPTY;\n\n    /**\n     * The filtered set of data that has been matched by the filter string, or all the data if there\n     * is no filter. Useful for knowing the set of data the table represents.\n     * For example, a 'selectAll()' function would likely want to select the set of filtered data\n     * shown to the user rather than all the data.\n     */\n    filteredData: T[];\n\n    /** Array of data that should be rendered by the table, where each object represents one row. */\n    get data(): T[] {\n        return this._data.value;\n    }\n    set data(data: T[]) {\n        this._data.next(data);\n    }\n\n    /**\n     * Filter term that should be used to filter out objects from the data array. To override how\n     * data objects match to this filter string, provide a custom function for filterPredicate.\n     */\n    get filter(): string {\n        return this._filter.value;\n    }\n    set filter(filter: string) {\n        this._filter.next(filter);\n    }\n\n    /**\n     * Instance of the HcSort directive used by the table to control its sorting. Sort changes\n     * emitted by the HcSort will trigger an update to the table's rendered data.\n     */\n    get sort(): HcSort | null {\n        return this._sort;\n    }\n    set sort(sort: HcSort | null) {\n        this._sort = sort;\n        this._updateChangeSubscription();\n    }\n    private _sort: HcSort | null;\n\n    /**\n     * Instance of the PaginationComponentused by the table to control what page of the data is\n     * displayed. Page changes emitted by the hc-pagination will trigger an update to the\n     * table's rendered data.\n     *\n     * Note that the data source uses the paginator's properties to calculate which page of data\n     * should be displayed. If the paginator receives its properties as template inputs,\n     * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\n     * initialized before assigning it to this data source.\n     */\n    get paginator(): BasePaginationComponent | null {\n        return this._paginator;\n    }\n    set paginator(paginator: BasePaginationComponent | null) {\n        this._paginator = paginator;\n        this._updateChangeSubscription();\n    }\n    private _paginator: BasePaginationComponent | null;\n\n    /**\n     * Data accessor function that is used for accessing data properties for sorting through\n     * the default sortData function.\n     * This default function assumes that the sort header IDs (which defaults to the column name)\n     * matches the data's properties (e.g. column Xyz represents data['Xyz']).\n     * Converts strings to lowercase characters\n     * May be set to a custom function for different behavior.\n     * @param data Data object that is being accessed.\n     * @param sortHeaderId The name of the column that represents the data.\n     */\n    sortingDataAccessor: (data: T, sortHeaderId: string) => string | number = (data: T, sortHeaderId: string): string | number => {\n        const value = data[sortHeaderId];\n\n        if (_isNumberValue(value)) {\n            const numberValue = Number(value);\n\n            // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we\n            // return them as strings. For more info: https://goo.gl/y5vbSg\n            return numberValue < MAX_SAFE_INTEGER ? numberValue : `${value}`;\n        }\n\n        // lowercase strings\n        if (typeof value === 'string') {\n            return value.toLocaleLowerCase();\n        }\n\n        // convert null/undefined to an empty string so they sort first\n        if (value === null || value === undefined) {\n            return '';\n        }\n\n        // leave dates or other values as is\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        return <any>value;\n    };\n\n    // sortingDataAccessor: ((data: T, sortHeaderId: string) => string) = (data: T, sortHeaderId: string): string => {\n    //     return `${data[sortHeaderId]}`.toLocaleLowerCase();\n    // };\n\n    /**\n     * Gets a sorted copy of the data array based on the state of the HcSort. Called\n     * after changes are made to the filtered data or when sort changes are emitted from HcSort.\n     * By default, the function retrieves the active sort and its direction and compares data\n     * by retrieving data using the sortingDataAccessor. May be overridden for a custom implementation\n     * of data ordering.\n     * @param data The array of data that should be sorted.\n     * @param sort The connected HcSort that holds the current sort state.\n     */\n    sortData: (data: T[], sort: HcSort) => T[] = (data: T[], sort: HcSort): T[] => {\n        const activeSorts = sort.multiSort && sort.sorts.length > 0 ? sort.sorts : [{active: sort.active, direction: sort.direction}];\n        if (!activeSorts[0].active || activeSorts[0].direction === '') {\n            return data;\n        }\n\n        return data.sort((a, b) => {\n            for (const activeSort of activeSorts) {\n                const valueA = this.sortingDataAccessor(a, activeSort.active);\n                const valueB = this.sortingDataAccessor(b, activeSort.active);\n                let comparatorResult = 0;\n                if (valueA != null && valueB != null) {\n                    if (valueA > valueB) {\n                        comparatorResult = 1;\n                    } else if (valueA < valueB) {\n                        comparatorResult = -1;\n                    }\n                } else if (valueA != null) {\n                    comparatorResult = 1;\n                } else if (valueB != null) {\n                    comparatorResult = -1;\n                }\n\n                if (comparatorResult !== 0) {\n                    return comparatorResult * (activeSort.direction === 'asc' ? 1 : -1);\n                }\n            }\n\n            return 0;\n        });\n    };\n\n    /**\n     * Checks if a data object matches the data source's filter string. By default, each data object\n     * is converted to a string of its properties and returns true if the filter has\n     * at least one occurrence in that string. By default, the filter string has its whitespace\n     * trimmed and the match is case-insensitive. May be overridden for a custom implementation of\n     * filter matching.\n     * @param data Data object used to check against the filter.\n     * @param filter Filter string that has been set on the data source.\n     * @returns Whether the filter matches against the data\n     */\n    filterPredicate: (data: T, filter: string) => boolean = (data: T, filter: string): boolean => {\n        // Transform the data into a lowercase string of all property values.\n        const accumulator = (currentTerm, key) => `${currentTerm} ${data[key]}`;\n        const dataStr = Object.keys(data)\n            .reduce(accumulator, '')\n            .toLowerCase();\n\n        // Transform the filter by converting it to lowercase and removing whitespace.\n        const transformedFilter = filter.trim().toLowerCase();\n\n        return dataStr.indexOf(transformedFilter) !== -1;\n    };\n\n    constructor(initialData: T[] = []) {\n        super();\n        this._data = new BehaviorSubject<T[]>(initialData);\n        this._updateChangeSubscription();\n    }\n\n    /**\n     * Subscribe to changes that should trigger an update to the table's rendered rows. When the\n     * changes occur, process the current state of the filter, sort, and pagination along with\n     * the provided base data and send it to the table for rendering.\n     */\n    _updateChangeSubscription(): void {\n        // Sorting and/or pagination should be watched if HcSort and/or BasePaginationComponent are provided.\n        // The events should emit whenever the component emits a change or initializes, or if no\n        // component is provided, a stream with just a null event should be provided.\n        // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the\n        // pipeline can progress to the next step. Note that the value from these streams are not used,\n        // they purely act as a signal to progress in the pipeline.\n        const sortChange: Observable<Sort | null | void> = this._sort\n            ? merge<Sort | void>(this._sort.sortChange, this._sort.initialized)\n            : observableOf(null);\n        const pageChange: Observable<PageEvent | null> = this._paginator\n            ? merge<PageEvent>(this._paginator.page, this._paginator.initialized)\n            : observableOf(null);\n\n        const dataStream = this._data;\n        // Watch for base data or filter changes to provide a filtered set of data.\n        const filteredData = combineLatest([dataStream, this._filter])\n            .pipe(map(([data]) => this._filterData(data)));\n        // Watch for filtered data or sort changes to provide an ordered set of data.\n        const orderedData = combineLatest([filteredData, sortChange])\n            .pipe(map(([data]) => this._orderData(data)));\n        // Watch for ordered data or page changes to provide a paged set of data.\n        const paginatedData = combineLatest([orderedData, pageChange])\n            .pipe(map(([data]) => this._pageData(data)));\n        // Watched for paged data changes and send the result to the table to render.\n        this._renderChangesSubscription.unsubscribe();\n        this._renderChangesSubscription = paginatedData.subscribe(data => this._renderData.next(data));\n    }\n\n    /**\n     * Returns a filtered data array where each filter object contains the filter string within\n     * the result of the filterTermAccessor function. If no filter is set, returns the data array\n     * as provided.\n     */\n    _filterData(data: T[]): T[] {\n        // If there is a filter string, filter out data that does not contain it.\n        // Each data object is converted to a string using the function defined by filterTermAccessor.\n        // May be overridden for customization.\n        this.filteredData = !this.filter ? data : data.filter(obj => this.filterPredicate(obj, this.filter));\n\n        if (this.paginator) {\n            this._updatePaginator(this.filteredData.length);\n        }\n\n        return this.filteredData;\n    }\n\n    /**\n     * Returns a sorted copy of the data if HcSort has a sort applied, otherwise just returns the\n     * data array as provided. Uses the default data accessor for data lookup, unless a\n     * sortDataAccessor function is defined.\n     */\n    _orderData(data: T[]): T[] {\n        // If there is no active sort or direction, return the data without trying to sort.\n        if (!this.sort) {\n            return data;\n        }\n\n        return this.sortData(data.slice(), this.sort);\n    }\n\n    /**\n     * Returns a paged splice of the provided data array according to the provided BasePaginationComponent's page\n     * index and length. If there is no paginator provided, returns the data array as provided.\n     */\n    _pageData(data: T[]): T[] {\n        const pager = this.paginator;\n        if (!pager) {\n            return data;\n        }\n        const startIndex = _isLoadMorePaginator(pager) ? 0 : (pager.pageNumber - 1) * pager.pageSize;\n        const numElsToGrab = _isLoadMorePaginator(pager) ? pager.pageNumber * pager.pageSize : pager.pageSize;\n        return data.slice().splice(startIndex, numElsToGrab);\n    }\n\n    /**\n     * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n     * index does not exceed the paginator's last page. Values are changed in a resolved promise to\n     * guard against making property changes within a round of change detection.\n     */\n    _updatePaginator(filteredDataLength: number): void {\n        Promise.resolve().then(() => {\n            if (!this.paginator) {\n                return;\n            }\n\n            this.paginator.length = filteredDataLength;\n\n            // If the page index is set beyond the page, reduce it to the last page.\n            if (this.paginator.pageNumber > 0) {\n                const lastPageIndex = Math.ceil(this.paginator.length / this.paginator.pageSize) || 1;\n                this.paginator.pageNumber = Math.min(this.paginator.pageNumber, lastPageIndex);\n            }\n        });\n    }\n\n    /**\n     * Used by the HcTable. Called when it connects to the data source.\n     * @docs-private\n     */\n    connect(): BehaviorSubject<T[]> {\n        return this._renderData;\n    }\n\n    /**\n     * Used by the HcTable. Called when it is destroyed. No-op.\n     * @docs-private\n     */\n    disconnect(): void { return; }\n}\n","import {Component, ViewEncapsulation, TemplateRef, ViewChild} from '@angular/core';\n\n/** Contains the HTML markup for tab titles */\n@Component({\n    selector: 'hc-tab-title',\n    template: '<ng-template #tabTitle><ng-content></ng-content></ng-template>',\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class HcTabTitleComponent {\n    @ViewChild('tabTitle')\n    public tabTitle: TemplateRef<unknown>;\n}\n","import {Component, Input, ContentChildren, AfterContentInit, Output, ViewEncapsulation, HostBinding, HostListener, ElementRef} from '@angular/core';\nimport type {QueryList} from '@angular/core';\nimport {EventEmitter, TemplateRef, ViewChild} from '@angular/core';\nimport {HcTabTitleComponent} from './tab-title.component';\nimport {Params} from '@angular/router';\nimport {parseBooleanAttribute} from '../../util';\n\n@Component({\n    templateUrl: './tab.component.html',\n    selector: `hc-tab`,\n    styleUrls: ['./tab.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class TabComponent implements AfterContentInit {\n    @HostBinding('class.hc-tab') _hostClass = true;\n    @HostBinding('class.hc-tab-active') _active = false;\n\n    /** Plain text title of the tab; for HTML support include a `hc-tab-title` element */\n    @Input()\n    tabTitle = '';\n    /** Router path that the tab routes to. If one tab uses the routerLink in a tab set, all must use the router link.\n     * Can be specified as '/path/2' or ['path', '2']\n     */\n    @Input()\n    routerLink: string[] | string;\n\n    /** Add queryParams to the routerLink */\n    @Input()\n    queryParams: Params;\n\n    /** Tab widths default to fit content; use maxWidth to constrain and truncate the content to a fixed width (e.g. `150px`)*/\n    @Input()\n    maxWidth = 'none';\n\n    /** If set to true, [routerLinkActiveOptions]=\"{exact: true}\" is added */\n    @Input()\n    exactRouteMatch: boolean;\n\n    /** Overrides the default Angular hidden behavior to support overflow states; ngIf is also supported to hide tabs */\n    @Input()\n    get hidden(): boolean {\n        return this._hidden || this._hideOverride;\n    }\n    set hidden( val: string | boolean ) {\n        if ( parseBooleanAttribute( val ) ) {\n            this._hide();\n            this._hideOverride = true;\n        } else {\n            this._show();\n            this._hideOverride = false;\n        }\n        this._tabHideChange.emit();\n    }\n    _hideOverride = false;\n\n    @Output()\n    _tabHideChange: EventEmitter<Event> = new EventEmitter();\n\n    @Output()\n    _routerActiveChange: EventEmitter<TabComponent> = new EventEmitter();\n\n    /** Emits when this tab is selected; use instead of `(click)` for click binding    */\n    @Output()\n    tabClick: EventEmitter<Event> = new EventEmitter();\n\n    @HostBinding('attr.tabindex')\n    _hostIndex = 0;\n\n    /** The template to be used when this tab is selected. Defaults to the content of this tab component.\n     * Not used when the tab set uses routing. */\n    @ViewChild('tabContent')\n    tabContent: TemplateRef<unknown>;\n\n    _direction: string;\n    _tight = false;\n    _hidden = false;\n    _htmlTitle: HcTabTitleComponent;\n\n    @ContentChildren(HcTabTitleComponent)\n    _tabTitle: QueryList<HcTabTitleComponent>;\n\n    constructor( public _el: ElementRef ) {}\n\n    ngAfterContentInit(): void {\n        if (this._tabTitle) {\n            this._htmlTitle = this._tabTitle.first;\n        }\n    }\n\n    @HostListener('keydown.enter', ['$event']) _onEnter($event: KeyboardEvent): void {\n        this._tabClickHandler($event);\n    }\n\n    _tabClickHandler(event: Event): void {\n        // Prevent a tab anchor click from also calling the router on the host element\n        event.preventDefault();\n        event.stopPropagation();\n\n        this.tabClick.emit(event);\n    }\n\n    _getWidth(): number {\n        return this._el.nativeElement.scrollWidth;\n    }\n\n    // Listens for changes to routerLinkActive and reports to TabSet\n    _isActiveChange( state: boolean ): void {\n        if ( state ) {\n            this._routerActiveChange.emit(this);\n        }\n    }\n\n    /** Used by the overflow functionality to hide the tab */\n    _hide(): void {\n        this._hidden = true;\n        this._hostIndex = -1;\n    }\n\n    /** Used by the overflow functionality to show the tab */\n    _show(): void {\n        this._hidden = false;\n        this._hostIndex = 0;\n    }\n}\n","@if (_direction && !_hidden) { @if (routerLink) {\n<a\n    tabIndex=\"-1\"\n    class=\"hc-tab-{{ _direction }} hc-text-ellipsis\"\n    [class.hc-tab-tight]=\"_tight\"\n    [style.max-width]=\"maxWidth\"\n    [routerLink]=\"routerLink\"\n    routerLinkActive=\"active\"\n    (isActiveChange)=\"_isActiveChange($event)\"\n    [queryParams]=\"queryParams\"\n    [routerLinkActiveOptions]=\"exactRouteMatch ? {exact: true} : {}\"\n    (click)=\"_tabClickHandler($event)\"\n>\n    @if (_htmlTitle) {\n    <ng-container [ngTemplateOutlet]=\"_htmlTitle.tabTitle\"></ng-container>\n    }\n    {{ tabTitle }}\n</a>\n} @else {\n<a\n    tabIndex=\"-1\"\n    class=\"hc-tab-{{ _direction }} hc-text-ellipsis\"\n    [class.hc-tab-tight]=\"_tight\"\n    [class.active]=\"_active\"\n    [style.max-width]=\"maxWidth\"\n    (click)=\"_tabClickHandler($event)\"\n>\n    @if (_htmlTitle) {\n    <ng-container [ngTemplateOutlet]=\"_htmlTitle.tabTitle\"></ng-container>\n    }\n    {{ tabTitle }}\n</a>\n} }\n<ng-template #tabWithoutRouting>\n    <a\n        tabIndex=\"-1\"\n        class=\"hc-tab-{{ _direction }} hc-text-ellipsis\"\n        [class.hc-tab-tight]=\"_tight\"\n        [class.active]=\"_active\"\n        [style.max-width]=\"maxWidth\"\n        (click)=\"_tabClickHandler($event)\"\n    >\n        @if (_htmlTitle) {\n        <ng-container [ngTemplateOutlet]=\"_htmlTitle.tabTitle\"></ng-container>\n        }\n        {{ tabTitle }}\n    </a>\n</ng-template>\n<ng-template #tabContent>\n    <ng-content></ng-content>\n</ng-template>\n","import {\n    AfterContentInit,\n    ChangeDetectorRef,\n    Component,\n    ContentChildren,\n    ElementRef,\n    HostListener,\n    Input,\n    Output,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport type {QueryList} from '@angular/core';\nimport {EventEmitter, TemplateRef} from '@angular/core';\nimport {TabComponent} from '../tab/tab.component';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {Subject, interval, fromEvent, Subscription} from 'rxjs';\nimport {distinctUntilChanged, filter, take, takeUntil} from 'rxjs/operators';\nimport {parseBooleanAttribute} from '../../util';\nimport {HcPopoverAnchorDirective} from '../../pop';\n\n/** Object returned by a `selectedTabChange` event; a -1 index is returned if all tabs are deselected */\nexport class TabChangeEvent {\n    constructor(public index: number, public tab: TabComponent | null) {}\n}\n\nexport function throwErrorForMissingRouterLink(tabsWithoutRouterLink: TabComponent[]): void {\n    const tabTitles = tabsWithoutRouterLink.map(tab => tab.tabTitle);\n    throw Error(`Routerlink missing on ${tabTitles.join(',')}`);\n}\n\nconst supportedDirections = ['horizontal', 'vertical'];\n\nexport function validateDirectionInput(inputStr: string): void {\n    if (supportedDirections.indexOf(inputStr) < 0) {\n        throw Error('Unsupported tab direction value: ' + inputStr);\n    }\n}\n\nconst supportedOverflow = ['more', 'arrows', 'none'];\n\nexport function validateOverflowInput(inputStr: string): void {\n    if (supportedOverflow.indexOf(inputStr) < 0) {\n        throw Error('Unsupported tab overflow style: ' + inputStr);\n    }\n}\n\nexport function tabComponentMissing(): Error {\n    return new Error(`TabSet must contain at least one TabComponent. Make sure to add a hc-tab to the hc-tab-set element.`);\n}\n\nexport function invalidDefaultTab(tabVal: string | number): void {\n    throw Error('Invalid default tab value: ' + tabVal + \". Must be 'none' or a value less than the total number of tabs in the set.\");\n}\n\n@Component({\n    selector: `hc-tab-set`,\n    templateUrl: './tab-set.component.html',\n    styleUrls: ['./tab-set.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class TabSetComponent implements AfterContentInit {\n    _routerEnabled = false;\n    _routerDeselected = false;\n    _tabArrowsEnabled = [true, true];\n    private _direction = 'vertical';\n    private _defaultTab: string | number = 0;\n    private _stopTabSubscriptionSubject: Subject<void> = new Subject();\n    private _stopTabArrowSubject: Subject<void> = new Subject();\n    private _widthRecheckSub: Subscription;\n    private _tabWidths: Array<number> = [];\n    private _tabsTotalWidth = 0;\n    public _collapse = false;\n    public _moreList: Array<TabComponent> = [];\n    private _selectedTabSubject = new Subject<number | TabComponent>();\n    private unsubscribe = new Subject<void>();\n\n    /** The content to be displayed for the currently selected tab.\n     * This is read from the tab when it is selected.\n     * Not used when this component uses routing.\n     */\n    tabContent: TemplateRef<unknown> | null;\n\n    @ContentChildren(TabComponent)\n    _tabs: QueryList<TabComponent>;\n\n    @ViewChild('tabBar') _tabBar: ElementRef;\n\n    @ViewChild('moreLink')\n    _moreButton: HcPopoverAnchorDirective;\n\n    _selectedTab: number | TabComponent;\n\n    /** **Write-only**: specify which tab is currently selected. Does not fire a `selectedTabChange` emission. */\n    @Input()\n    set selectedTab(selected: number | TabComponent) {\n        if ( typeof selected === 'string' ) {\n            selected = Number(selected);\n        }\n        this._selectedTabSubject.next(selected);\n        // Make sure _selectedTab is set even if we're not subscribed to _selectedTabSubject yet\n        this._selectedTab = selected;\n    }\n\n    /** Emits when the selected tab is changed. Use to keep track of the currently selected tab. */\n    @Output()\n    selectedTabChange: EventEmitter<TabChangeEvent> = new EventEmitter();\n\n    /** Specify direction of tabs as either `horizontal` or `vertical`. Defaults to `vertical` */\n    @Input()\n    get direction(): string {\n        return this._direction;\n    }\n\n    set direction(directionType: string) {\n        validateDirectionInput(directionType);\n        this._direction = directionType;\n    }\n\n    /** Zero-based numerical value specifying which tab to select by default, setting to `none` means no tab\n     * will be immediately selected. Defaults to 0 (the first tab).\n     * For tabs using routing, the default tab will be set by the url and use this value as a fallback if no tab routerLinks match the url.\n     * **NOTE** - if using the `selectedTab` param, it will override this value. */\n    @Input()\n    get defaultTab(): string | number {\n        return this._defaultTab;\n    }\n\n    set defaultTab(tabValue: string | number) {\n        if (!isNaN(+tabValue) || tabValue === 'none') {\n            this._defaultTab = tabValue;\n        } else {\n            invalidDefaultTab(tabValue);\n        }\n    }\n\n    /** Determines whether the tab set will create a router-outlet or ng-container for the tab content.\n     * If set to false, the app will need to add its own container.  Defaults to `true`. */\n    @Input()\n    get addContentContainer(): boolean {\n        return this._addContentContainer;\n    }\n\n    set addContentContainer(value: boolean) {\n        this._addContentContainer = parseBooleanAttribute(value);\n    }\n\n    _addContentContainer = true;\n\n    /** If true, condense the default padding on all included tabs. *Defaults to `false`.*  */\n    @Input()\n    get tight(): boolean {\n        return this._tight;\n    }\n    set tight(value: boolean) {\n        this._tight = parseBooleanAttribute(value);\n        this.setTabDirection();\n    }\n    private _tight = false;\n\n    /** When horzontal tabs overflow the container, specify either 'more', 'arrows', or 'none' for navigation control. Defaults to `more` */\n    @Input()\n    get overflowStyle(): string {\n        return this._overflowStyle;\n    }\n\n    set overflowStyle(overflowType: string) {\n        validateOverflowInput(overflowType);\n        this._overflowStyle = overflowType;\n        if ( this._tabBar ) {\n            this._tabBar.nativeElement.scrollLeft = 0;\n        }\n        this.refreshTabWidths();\n    }\n    private _overflowStyle = 'more';\n\n    constructor(private router: Router, private route: ActivatedRoute, private changeDetector: ChangeDetectorRef, private el: ElementRef) {}\n\n    ngAfterContentInit(): void {\n        // Listeners to support the selectedTab param\n        const selectedChanged$ = this._selectedTabSubject.pipe(distinctUntilChanged(),filter(nextTab => nextTab !== this._selectedTab));\n        selectedChanged$.pipe(takeUntil(this.unsubscribe)).subscribe(selectedTab => {\n            setTimeout(() => {\n                this.selectTab(selectedTab, false);\n                this.changeDetector.detectChanges();\n            });\n        });\n\n        this.setUpTabs(false);\n        this.refreshTabWidths();\n\n        // If using routing, selectedTab isn't set, and routerLinkActive hasn't set any active tabs, default to the first route\n        if ( this._routerEnabled ) {\n            setTimeout(() => {\n                const noActiveTabs = !this._tabs.some(t => t._active);\n                if ( this.defaultTab !== 'none' && noActiveTabs ) {\n                    const tabArray = this._tabs.toArray();\n                    if ( tabArray[Number(this.defaultTab)] ) {\n                        this.selectTab( tabArray[Number(this.defaultTab)] );\n                    }\n                }\n            });\n        }\n\n        // If links are added dynamically, recheck the tab widths\n        this._tabs.changes.pipe(takeUntil(this.unsubscribe)).subscribe(() => {\n            this.setUpTabs(true);\n            setTimeout(() => {\n                // Make sure all tabs are visible any time we are going to update the tab width array\n                this._forceRecollect();\n            });\n        });\n    }\n\n    /** Forces a recalculation of the tabs to determine how many should be rolling into a More menu.\n     * By default the function will use cached values of the tab widths;\n     * if you've changed the title of a tab, set `forceRecalculate` to true to update the cache */\n     @HostListener('window:resize')\n     refreshTabWidths(forceRecalulate = false): void {\n        if ( !this._tabs || !this._tabBar ) {\n            return;\n        }\n\n        if (this._moreButton) {\n            this._moreButton.closePopover();\n        }\n\n        this._moreList = [];\n        this._collapse = false;\n\n        // If the tab bar is hidden, we should skip calculations\n        const tabStyles = getComputedStyle(this.el.nativeElement);\n        if ( tabStyles.display === 'none' || tabStyles.visibility === 'hidden' ) {\n            if ( this._widthRecheckSub ) {\n                this._widthRecheckSub.unsubscribe();\n            }\n            return;\n        }\n\n        // for cases where we want to just show what we can and hide the rest\n        if (this.overflowStyle === 'none') {\n            this._tabs.forEach(t => t._show());\n            return;\n        }\n\n        // The user is asking for an explicit recalculation of the cached tab widths\n        // so we need to unhide any tabs currently in the more menu\n        if ( forceRecalulate ) {\n            this._forceRecollect();\n        }\n\n        // If the component hasn't fully rendered, start to loop to keep checking and only calculate widths when it has\n        if ( this._tabWidths.length !== this._tabs.length || this._tabWidths.includes(0) ) {\n            if ( !this._widthRecheckSub || this._widthRecheckSub.closed ) {\n                const recheckInterval = interval(10);\n\n                this._widthRecheckSub = recheckInterval.pipe(takeUntil(this.unsubscribe)).subscribe(loopCount => {\n                    // If it's been a second and the tabs still haven't rendered, bailout and don't loop forever\n                    if ( loopCount < 100 ) {\n                        this._collectTabWidths();\n                        this.refreshTabWidths();\n                    } else {\n                        this._widthRecheckSub.unsubscribe();\n                    }\n                });\n            }\n            return;\n        } else {\n            if ( this._widthRecheckSub ) {\n                this._widthRecheckSub.unsubscribe();\n            }\n        }\n\n        const tabContainerWidth: number = this._tabBar.nativeElement.offsetWidth;\n\n\n        // we'll make sure the selected tab is always shown, even if it was going to be in the overflow\n        const selectedTabIndex = this._tabs.toArray().findIndex(t => t._active);\n        let curLinks = selectedTabIndex > -1 ? this._tabWidths[selectedTabIndex] : 0;\n\n        // Step through the links until we hit the end of the container, then collapse the\n        // remaining into a more menu\n        this._tabs.forEach((t, i) => {\n            if (t._active) {\n                t._show();\n                return;\n            }\n            if ( !t._hideOverride ) {\n                curLinks += this._tabWidths[i];\n            }\n\n            // Account for the width of either the more button or the two arrow buttons\n            const overflowType: number = this.overflowStyle === 'more' ? 93 : 68;\n            const moreWidth: number = this._tabsTotalWidth > tabContainerWidth ? overflowType : 0;\n\n            if (curLinks + moreWidth < tabContainerWidth) {\n                if ( !t._hideOverride ) {\n                    t._show();\n                }\n            } else {\n                this._collapse = true;\n                if ( this.overflowStyle === 'more' ) {\n                    t._hide();\n                    // Don't include a tab in the more menu that has its hidden param set to false\n                    if ( !t._hideOverride ) {\n                        this._moreList.push(t);\n                    }\n                } else {\n                    t._show();\n                }\n            }\n        });\n\n        if ( this.overflowStyle === 'arrows' && this._collapse ) {\n            setTimeout(() => {\n                this._tabArrowCheck();\n            });\n        }\n    }\n\n    _moreClick(event: Event, tab: TabComponent): void {\n        if (this._moreButton) {\n            this._moreButton.closePopover();\n        }\n\n        tab._tabClickHandler( event );\n    }\n\n    _tabArrowInterval = interval(100);\n\n    _handleTabsWheel(event: WheelEvent): void {\n        const scrollDirection = Math.abs(event.deltaX) > Math.abs(event.deltaY) ? Math.sign(event.deltaX) : Math.sign(event.deltaY);\n        const scrollDistance = Math.sqrt(Math.pow(event.deltaX, 2) + Math.pow(event.deltaY, 2)) * scrollDirection;\n        const scrollLeft = scrollDistance < 0 && Math.floor(this._tabBar.nativeElement.scrollLeft) > 0;\n        const scrollRight = scrollDistance > 0\n            && this._tabBar.nativeElement.scrollWidth - Math.ceil(this._tabBar.nativeElement.scrollLeft) > this._tabBar.nativeElement.offsetWidth;\n\n        if (scrollLeft || scrollRight) {\n            event.preventDefault();\n            event.stopPropagation();\n\n            this._tabBar.nativeElement.scrollLeft += scrollDistance;\n            this._tabArrowCheck();\n        }\n    }\n\n    _tabArrowClick( scrollRight: boolean ): void {\n        this._tabBar.nativeElement.scrollLeft += scrollRight ? 40 : -40;\n        this._tabArrowCheck();\n        this._tabArrowInterval.pipe(takeUntil(this._stopTabArrowSubject)).subscribe(() => {\n            this._tabBar.nativeElement.scrollLeft += scrollRight ? 40 : -40;\n            this._tabArrowCheck();\n        });\n        fromEvent<MouseEvent>(window.document, 'mouseup').pipe(take(1)).subscribe(() => {\n            this._stopTabArrowSubject.next();\n        });\n    }\n\n    _tabArrowTouch( scrollRight: boolean ): void {\n        this._tabBar.nativeElement.scrollLeft += scrollRight ? 40 : -40;\n        this._tabArrowCheck();\n        this._tabArrowInterval.pipe(takeUntil(this._stopTabArrowSubject)).subscribe(() => {\n            this._tabBar.nativeElement.scrollLeft += scrollRight ? 40 : -40;\n            this._tabArrowCheck();\n        });\n        fromEvent<MouseEvent>(window.document, 'touchend').pipe(take(1)).subscribe(() => {\n            this._stopTabArrowSubject.next();\n        });\n    }\n\n    _tabArrowCheck(): void {\n        this._tabArrowsEnabled[0] = Math.floor(this._tabBar.nativeElement.scrollLeft) === 0 ? false : true;\n        this._tabArrowsEnabled[1] = this._tabBar.nativeElement.scrollWidth - Math.ceil(this._tabBar.nativeElement.scrollLeft) <= this._tabBar.nativeElement.offsetWidth ? false : true;\n    }\n\n    private setUpTabs(changeEvent: boolean): void {\n        if (this._tabs.length === 0) {\n            throw tabComponentMissing();\n        }\n\n        this.checkForRouterUse();\n\n        if (!this._routerEnabled && this.defaultTab !== 'none' && !changeEvent) {\n            this.defaultToFirstTab();\n        }\n\n        this.setTabDirection();\n        this.subscribeToTabEvents();\n    }\n\n    private _forceRecollect(): void {\n        this._tabs.forEach(t => t._show());\n        this._collectTabWidths();\n        this.refreshTabWidths();\n    }\n\n    private _collectTabWidths(): void {\n        this._tabWidths = [];\n        this._tabsTotalWidth = 0;\n        this._tabs.forEach(t => {\n            const tabWidthVal = t._hideOverride ? 1 : t._getWidth();\n            this._tabsTotalWidth += tabWidthVal;\n            this._tabWidths.push(tabWidthVal);\n            if (t._hideOverride) {\n                t._hide();\n            }\n        });\n    }\n\n    private setTabDirection(): void {\n        setTimeout(() =>\n            this._tabs.forEach(t => {\n                t._direction = this.direction;\n                t._tight = this.tight;\n            })\n        );\n    }\n\n    private subscribeToTabEvents(): void {\n        this._stopTabSubscriptionSubject.next();\n        this._tabs.forEach(t => t.tabClick.pipe(takeUntil(this._stopTabSubscriptionSubject)).subscribe(() => this._setActive(t)));\n\n        // If using tabs with routing, listen for changes to the routerLinkActive state\n        if ( this._routerEnabled ) {\n            this._tabs.forEach(t => t._routerActiveChange.pipe(takeUntil(this._stopTabSubscriptionSubject)).subscribe(tab => {\n                this._setActive(tab, false);\n            }));\n        }\n\n        // Watch for changes to a tab's [hidden] param to remove it from overflow calculations\n        this._tabs.forEach(t => t._tabHideChange.pipe(takeUntil(this._stopTabSubscriptionSubject)).subscribe(() => {\n            if ( t.hidden && t._active ) {\n                this.selectTab(-1);\n            }\n\n            // Make sure all tabs are visible any time we are going to update the tab width array\n            this._tabs.forEach(t => t._show());\n            this._collectTabWidths();\n\n            this.refreshTabWidths();\n            this.changeDetector.detectChanges();\n        }));\n    }\n\n    /** Sets the currently selected tab by either its numerical index or `TabComponent` object.\n     * Passing a value of -1 or a hidden tab will deselect all tabs in the set. */\n    selectTab(tab: number | TabComponent, shouldEmit = true): void {\n        this._selectedTab = tab;\n        const activeTab = typeof tab === 'number' ? this._tabs.toArray()[tab] : tab;\n\n        if ( tab === -1 || activeTab?._hideOverride ) {\n            this.tabContent = null;\n\n            if ( this._routerEnabled ) {\n                this._routerDeselected = true;\n            }\n\n            this._tabs.toArray().forEach(t => t._active = false);\n\n            if (shouldEmit) {\n                this.selectedTabChange.emit(new TabChangeEvent(-1, null));\n            }\n        } else if ( activeTab ) {\n            if ( this._routerEnabled ) {\n                const routeArray = Array.isArray(activeTab.routerLink) ? activeTab.routerLink : [activeTab.routerLink];\n                this.router.navigate(routeArray, {relativeTo: this.route, queryParams: activeTab.queryParams});\n            }\n            this._setActive(activeTab, shouldEmit);\n        }\n    }\n\n    _setActive(tab: TabComponent, shouldEmit = true): void {\n        let activeIndex = 0;\n        this._tabs.toArray().forEach((t, index) => {\n            t._active = false;\n            if (t === tab) {\n                activeIndex = index;\n            }\n        });\n        tab._active = true;\n        this.tabContent = tab.tabContent;\n        this._routerDeselected = false;\n\n        // For horizontal tabs with arrows overflow, scroll the selected tab into view if it's outside the scroll area\n        if ( this.overflowStyle === 'arrows' && this.direction === 'horizontal' && this._collapse ) {\n            tab._el.nativeElement.scrollIntoView({ block: 'nearest' });\n        }\n\n        if (shouldEmit) {\n            this.selectedTabChange.emit(new TabChangeEvent(activeIndex, tab));\n        }\n\n        this.refreshTabWidths();\n    }\n\n    private defaultToFirstTab() {\n        if (!this._tabs.find(tab => tab._active)) {\n            // setTimeout to avoid change after checked error\n            // when ngFor is used as projected nodes are registered\n            // and stored as part of the existing view, not\n            // the view in which they are projected\n            // embedded views are checked *before* AfterContentInit\n            // is triggered\n            const tabArray = this._tabs.toArray();\n            // If the selectedTab param is being used, respect that value before defaultTab\n            if ( this._selectedTab ) {\n                this.selectTab( this._selectedTab );\n            } else {\n                if (tabArray[Number(this.defaultTab)]) {\n                    setTimeout(() => {\n                        this._setActive(tabArray[Number(this.defaultTab)]);\n                    });\n                } else {\n                    invalidDefaultTab(this.defaultTab);\n                }\n            }\n        }\n    }\n\n    private checkForRouterUse() {\n        const countUsingRouter = this._tabs.filter(tab => tab.routerLink !== undefined).length;\n        if (countUsingRouter > 0 && countUsingRouter < this._tabs.length) {\n            const tabsMissingRouterLink = this._tabs.filter(tab => tab.routerLink === undefined);\n            throwErrorForMissingRouterLink(tabsMissingRouterLink);\n        }\n\n        if (countUsingRouter === this._tabs.length) {\n            this._routerEnabled = true;\n\n            // If the selectedTab param is being used, respect that value for the initially selected tab before the url or defaultTab\n            if ( this._selectedTab ) {\n                this.selectTab( this._selectedTab );\n            }\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.unsubscribe.next();\n        this.unsubscribe.complete();\n    }\n}\n","<div class=\"hc-{{ direction }}-tab-container\">\n    <div\n        #tabBar\n        class=\"hc-tab-bar-{{ direction }}\"\n        [class.hc-tab-bar-arrow-overflow]=\"_collapse && overflowStyle === 'arrows'\"\n        (wheel)=\"_handleTabsWheel($event)\"\n    >\n        @if (_collapse && overflowStyle === 'arrows') {\n        <div\n            class=\"hc-tab-bar-arrows hc-tab-bar-left-arrow\"\n            [class.hc-tab-bar-arrow-disabled]=\"!_tabArrowsEnabled[0]\"\n            tabindex=\"0\"\n            (mousedown)=\"_tabArrowClick(false)\"\n            (touchstart)=\"_tabArrowTouch(false)\"\n        >\n            <hc-icon hcIconSm fontIcon=\"ico-chevron-left\"></hc-icon>\n        </div>\n        }\n        <ng-content select=\"hc-tab\"></ng-content>\n        @if (_collapse) {\n        <div>\n            @if (overflowStyle === 'more') {\n            <div class=\"hc-tab-bar-more hc-text-ellipsis\" tabindex=\"0\" #moreLink=\"hcPopAnchor\" [hcPop]=\"tabsetMore\">\n                More\n                <hc-icon hcIconSm fontIcon=\"more-chevron-down\"></hc-icon>\n            </div>\n            } @if (overflowStyle === 'arrows') {\n            <div\n                class=\"hc-tab-bar-arrows hc-tab-bar-right-arrow\"\n                [class.hc-tab-bar-arrow-disabled]=\"!_tabArrowsEnabled[1]\"\n                tabindex=\"0\"\n                (mousedown)=\"_tabArrowClick(true)\"\n                (touchstart)=\"_tabArrowTouch(true)\"\n            >\n                <hc-icon hcIconSm fontIcon=\"ico-chevron-right\"></hc-icon>\n            </div>\n            }\n        </div>\n        }\n        <ng-content></ng-content>\n    </div>\n    @if (_addContentContainer) {\n    <div class=\"hc-tab-content-{{ direction }}\">\n        @if (_routerEnabled && !_routerDeselected) {\n        <router-outlet></router-outlet>\n        } @if (!_routerEnabled && tabContent) {\n        <ng-container [ngTemplateOutlet]=\"tabContent\"></ng-container>\n        }\n    </div>\n    }\n</div>\n\n<hc-pop #tabsetMore [autoCloseOnContentClick]=\"true\" [showArrow]=\"false\" horizontalAlign=\"end\" [restoreFocus]=\"false\">\n    <div hcMenu>\n        @for (item of _moreList; track item; let i = $index) {\n        <button hcMenuItem (click)=\"_moreClick($event, item)\">\n            <span hcMenuText>\n                @if (item._htmlTitle) {\n                <ng-container [ngTemplateOutlet]=\"item._htmlTitle.tabTitle\"></ng-container>\n                }\n                {{ item.tabTitle }}\n            </span>\n        </button>\n        @if (i != _moreList.length - 1) {\n        <div hcMenuItem hcDivider></div>\n        } }\n    </div>\n</hc-pop>\n","import {RouterModule} from '@angular/router';\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TabComponent} from './tab/tab.component';\nimport {HcTabTitleComponent} from './tab/tab-title.component';\nimport {TabSetComponent} from './tab-set/tab-set.component';\nimport {IconModule} from '../icon/icon.module';\nimport {PopModule} from '../pop/popover.module';\n\n@NgModule({\n    imports: [CommonModule, RouterModule, IconModule, PopModule],\n    declarations: [TabComponent, HcTabTitleComponent, TabSetComponent],\n    exports: [TabComponent, HcTabTitleComponent, TabSetComponent]\n})\nexport class TabsModule {}\n","import {Component, Input, HostBinding, ViewEncapsulation} from '@angular/core';\nimport {parseBooleanAttribute} from '../util';\n\n/** Container element to help segment content visually against a gray background.\n * The tile will expand to the height and width of the content it contains. */\n@Component({\n    selector: 'hc-tile',\n    template: '<ng-content></ng-content>',\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class TileComponent {\n    @HostBinding('class.hc-tile')\n    _hostClass = true;\n\n    @HostBinding('class.hc-tile-tight')\n    _tight = false;\n\n    /** If true, compress the default padding in the tile. Defaults to false  */\n    @Input()\n    get tight(): boolean {\n        return this._tight;\n    }\n    set tight(value: boolean) {\n        this._tight = parseBooleanAttribute(value);\n    }\n}\n","import {Directive, HostBinding, Input} from '@angular/core';\n\nexport type TileHeaderType = 'blue' | 'title' | 'center';\nconst tileHeaderTypes: TileHeaderType[] = ['blue', 'title', 'center'];\n\n/** Applies one of the Cashmere standard tile header stylings to an element */\n@Directive({\n    selector: '[hcTileHeader]',\n    standalone: false\n})\nexport class TileHeaderDirective {\n    private _type: TileHeaderType = 'blue';\n\n    @HostBinding('class.hc-tile-header-blue')\n    _headerBlue = true;\n\n    @HostBinding('class.hc-tile-header-title')\n    _headerTitle = false;\n\n    @HostBinding('class.hc-tile-header-center')\n    _headerCenter = false;\n\n    /** Sets the styling of the header, choices include `blue`, `center`, and `title`; defaults to `blue` */\n    @Input()\n    get type(): TileHeaderType {\n        return this._type;\n    }\n\n    set type(typeStr: TileHeaderType) {\n        if (!tileHeaderTypes.includes(typeStr)) {\n            throw new Error('Unsupported tile header type: ' + typeStr);\n        }\n        this._type = typeStr;\n\n        this._headerBlue = typeStr === 'blue';\n        this._headerTitle = typeStr === 'title';\n        this._headerCenter = typeStr === 'center';\n    }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TileComponent} from './tile.component';\nimport {TileHeaderDirective} from './tile-header.directive';\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [TileComponent, TileHeaderDirective],\n    declarations: [TileComponent, TileHeaderDirective]\n})\nexport class TileModule {}\n","import {Component, EventEmitter, ElementRef, ViewContainerRef, ComponentRef, ChangeDetectorRef, ViewEncapsulation, HostBinding} from '@angular/core';\nimport {trigger, state, style, transition, animate, AnimationEvent} from '@angular/animations';\nimport {Portal, CdkPortalOutletAttachedRef} from '@angular/cdk/portal';\nimport {BehaviorSubject} from 'rxjs';\nimport {HcIcon} from '../icon/icon.component';\n\nconst ANIMATION_TIMINGS = '400ms cubic-bezier(0.25, 0.8, 0.25, 1)';\n\n@Component({\n    selector: 'hc-toaster',\n    templateUrl: './hc-toast.component.html',\n    styleUrls: ['./hc-toast.component.scss'],\n    animations: [\n        trigger('fade', [\n            state('void', style({ transform: 'none', opacity: 0 })),\n            state('enter', style({ transform: 'none', opacity: 1 })),\n            state('leave', style({ transform: 'none', opacity: 0 })),\n            transition('* => *', animate(ANIMATION_TIMINGS))\n        ])\n    ],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class HcToastComponent {\n    _styleType = 'success';\n    _toastIcon = 'icon-check';\n    _headerText: string;\n    _bodyText: string;\n    _animationState: 'void' | 'enter' | 'leave' = 'enter';\n    _animationStateChanged = new EventEmitter<AnimationEvent>();\n    _closeClick = new EventEmitter<MouseEvent>();\n    _canDismiss = false;\n    _canClick = false;\n    _toastPortal: Portal<unknown>;\n    _width = 300;\n    _hasProgressBar = false;\n    _progressVal: number;\n    _progressWidth = '100%';\n    _customImage: string | HcIcon;\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    readonly _componentInstance = new BehaviorSubject<any>(null);\n\n    get _widthStr(): string {\n        return this._width ? `${this._width}px` : 'auto';\n    }\n\n    @HostBinding('class.hc-toaster') _hostClass = true;\n\n    constructor(public _el: ElementRef, public _viewContainerRef: ViewContainerRef, public _changeRef: ChangeDetectorRef) {}\n\n    _onAnimationStart(event: AnimationEvent): void {\n        this._animationStateChanged.emit(event);\n    }\n\n    _onAnimationDone(event: AnimationEvent): void {\n        this._animationStateChanged.emit(event);\n    }\n\n    _startExitAnimation(): void {\n        this._animationState = 'leave';\n    }\n\n    _dismissClick(event: MouseEvent): void {\n        this._closeClick.emit(event);\n    }\n\n    _customComponentAttached(ref: CdkPortalOutletAttachedRef): void {\n        if (ref instanceof ComponentRef) {\n            this._componentInstance.next(ref.instance);\n        }\n    }\n\n    _imgIsURL( val:string | HcIcon ): boolean {\n        return typeof val === 'string';\n    }\n\n    _customFontSet( val: string | HcIcon ): string {\n        const icon = val as HcIcon;\n        return icon.fontSet;\n    }\n\n    _customFontIcon( val: string | HcIcon ): string {\n        const icon = val as HcIcon;\n        return icon.fontIcon;\n    }\n}\n","<div\n    class=\"hc-toast hc-toast-{{ _styleType }}\"\n    [@fade]=\"_animationState\"\n    (@fade.start)=\"_onAnimationStart($event)\"\n    (@fade.done)=\"_onAnimationDone($event)\"\n    (click)=\"_dismissClick($event)\"\n    [style.width]=\"_widthStr\"\n    [ngClass]=\"{'hc-toast-dismiss': _canClick}\"\n>\n    @if (_styleType === 'custom') {\n    <div>\n        <ng-template (attached)=\"_customComponentAttached($event)\" [cdkPortalOutlet]=\"_toastPortal\"></ng-template>\n    </div>\n    } @if (_styleType !== 'custom') {\n    <div class=\"hc-toast-content\" [ngClass]=\"{'hc-toast-progress-offset': _hasProgressBar}\">\n        <div class=\"hc-toast-icon-container\">\n            @if (_customImage && _imgIsURL(_customImage)) {\n            <div>\n                <div class=\"hc-toast-custom-image\" [style.background-image]=\"'url(' + _customImage + ')'\"></div>\n            </div>\n            } @if (_customImage && !_imgIsURL(_customImage)) {\n            <div>\n                <hc-icon\n                    class=\"hc-toast-custom-icon\"\n                    [fontSet]=\"_customFontSet(_customImage)\"\n                    [fontIcon]=\"_customFontIcon(_customImage)\"\n                ></hc-icon>\n            </div>\n            } @if (!_customImage) {\n            <div class=\"hc-toast-icon\"></div>\n            }\n        </div>\n        <div class=\"hc-toast-content-container\">\n            <div class=\"hc-toast-header\">{{ _headerText }}</div>\n            <div class=\"hc-toast-body\">{{ _bodyText }}</div>\n        </div>\n        @if (_canDismiss) {\n        <div class=\"hc-toast-close\">\n            <div class=\"hc-toast-close-icon\"></div>\n        </div>\n        }\n    </div>\n    } @if (_hasProgressBar) {\n    <div class=\"hc-toast-progress\" [ngClass]=\"{'hc-toast-progress-indeterminate': !_progressVal}\" [ngStyle]=\"{width: _progressWidth}\"></div>\n    }\n</div>\n","import {OverlayRef} from '@angular/cdk/overlay';\nimport {HcToastComponent} from './hc-toast.component';\nimport {Subject} from 'rxjs';\nimport {filter, take} from 'rxjs/operators';\nimport { Input, Injectable } from '@angular/core';\n\n@Injectable()\nexport class HcToastRef {\n    private _beforeClose = new Subject<void>();\n    private _afterClosed = new Subject<void>();\n\n    _toastPosition: string;\n\n    /** The HcToast component associated with the toast reference */\n    componentInstance: HcToastComponent;\n\n    /** If the `hasProgressBar` option is set to true in `hc-toast-options`, this 0-100 value can\n     * be used to make it a determinate progress bar. If the progress bar is on but a value is not set,\n     * the progress bar will be indeterminate.*/\n    @Input()\n    get progress(): number {\n        return this.componentInstance._progressVal;\n    }\n\n    set progress(progVal: number) {\n        if (progVal < 0) {\n            progVal = 0;\n        } else if (progVal > 100) {\n            progVal = 100;\n        }\n        this.componentInstance._progressVal = progVal;\n        this.componentInstance._progressWidth = progVal + '%';\n    }\n\n    constructor(public _overlayRef: OverlayRef) {}\n\n    /** Closes the associated toast message with this reference */\n    close(): void {\n        if (this.componentInstance._animationState !== 'leave') {\n            this.componentInstance._animationStateChanged\n                .pipe(\n                    filter(event => event.phaseName === 'start'),\n                    take(1)\n                )\n                .subscribe(() => {\n                    this._beforeClose.next();\n                    this._beforeClose.complete();\n                });\n\n            this.componentInstance._animationStateChanged\n                .pipe(\n                    filter(event => event.phaseName === 'done' && event.toState === 'leave'),\n                    take(1)\n                )\n                .subscribe(() => {\n                    this._overlayRef.dispose();\n                    this._afterClosed.next();\n                    this._afterClosed.complete();\n                    this.componentInstance._componentInstance.unsubscribe();\n                    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n                    this.componentInstance = null!;\n                });\n\n            this.componentInstance._startExitAnimation();\n        }\n    }\n}\n","import {Injectable, ComponentRef, Injector, TemplateRef, Type} from '@angular/core';\nimport {Overlay, OverlayConfig, OverlayRef, PositionStrategy} from '@angular/cdk/overlay';\nimport {ComponentPortal, TemplatePortal} from '@angular/cdk/portal';\nimport {HcToastComponent} from './hc-toast.component';\nimport {HcToastOptions} from './hc-toast-options';\nimport {HcToastRef} from './hc-toast-ref';\nimport {filter, take} from 'rxjs/operators';\n\nexport type ComponentSetup<T> = Partial<T> | ((instance: T) => void);\nexport type ToastContentType<T> = Type<T> | TemplateRef<unknown>;\n\n/** Toasts provide users with instant feedback on actions they've taken. For more general information,\n * use a `hc-banner`. */\n@Injectable()\nexport class HcToasterService {\n    _toasts: HcToastRef[] = [];\n\n    // Inject overlay service\n    constructor(private injector: Injector, private _overlay: Overlay) {}\n\n    /** Displays a new toaster message with the settings included in `toastOptions`. `toastContent` can be used to\n     * create entirely custom toasts, but only if the type in toastOptions is set to `custom`. Be sure to set `border-radius: 5px`\n     * in the style of your custom content template so it matches the toast container. If your custom toast is\n     * using a component, the `componentSetup` parameter accepts an object or function to configure that component. */\n    addToast<T>(toastOptions?: HcToastOptions, toastContent?: ToastContentType<T>, componentSetup?: ComponentSetup<T>): HcToastRef {\n        const defaultOptions: HcToastOptions = {\n            type: 'success',\n            position: 'bottom-right',\n            timeout: 5000,\n            clickDismiss: false\n        };\n        const options = {...defaultOptions, ...toastOptions};\n\n        // Returns an OverlayRef (which is a PortalHost)\n        const _overlayRef = this._createOverlay(options);\n\n        // Instantiate remote control\n        const _toastRef = new HcToastRef(_overlayRef);\n\n        const overlayComponent = this._attachToastContainer(_overlayRef, _toastRef);\n\n        _toastRef.componentInstance = overlayComponent;\n\n        if (options.type === 'custom' && toastContent) {\n            if (toastContent instanceof TemplateRef) {\n                _toastRef.componentInstance._toastPortal = new TemplatePortal(toastContent, _toastRef.componentInstance._viewContainerRef);\n            } else {\n                _toastRef.componentInstance._toastPortal = new ComponentPortal(toastContent);\n                if (componentSetup) {\n                    _toastRef.componentInstance._componentInstance.pipe(filter(c => !!c)).subscribe(c => {\n                        if (componentSetup instanceof Function) {\n                            componentSetup(c);\n                        } else {\n                            Object.keys(componentSetup).forEach(k => (c[k] = componentSetup[k]));\n                        }\n                    });\n                }\n            }\n        }\n\n        // Listen for click events to close the toast if the option is set\n        if (options.clickDismiss || options.toastClicked) {\n            _toastRef.componentInstance._canClick = true;\n            _toastRef.componentInstance._canDismiss = options.clickDismiss ? options.clickDismiss : false;\n            _toastRef.componentInstance._closeClick.subscribe(() => {\n                if (options.toastClicked) {\n                    options.toastClicked();\n                }\n                if ( _toastRef.componentInstance._canDismiss ) {\n                    _toastRef.close();\n                }\n            });\n        }\n\n        // Set the class for the type set in options\n        if (options.type) {\n            if (\n                options.type === 'success' ||\n                options.type === 'info' ||\n                options.type === 'warning' ||\n                options.type === 'alert' ||\n                options.type === 'custom'\n            ) {\n                _toastRef.componentInstance._styleType = options.type;\n            } else {\n                throw Error('Unsupported toaster type: ' + options.type);\n            }\n        }\n\n        // Set the header text\n        if (options.header) {\n            _toastRef.componentInstance._headerText = options.header;\n        }\n\n        // Set the toast width\n        if (options.width || options.width === 0) {\n            _toastRef.componentInstance._width = options.width;\n        }\n\n        // Set the body text\n        if (options.body) {\n            _toastRef.componentInstance._bodyText = options.body;\n        }\n\n        // Set the custom image if one is defined\n        if (options.image) {\n            _toastRef.componentInstance._customImage = options.image;\n        }\n\n        // Store the positioning of the toast\n        _toastRef._toastPosition = String(options.position);\n\n        // Set progress bar\n        if (options.hasProgressBar) {\n            _toastRef.componentInstance._hasProgressBar = options.hasProgressBar;\n        }\n\n        // Set the timeout interval to close the toast if non-zero\n        if (options.timeout !== 0) {\n            setTimeout(() => {\n                if (_toastRef.componentInstance) {\n                    _toastRef.close();\n                }\n            }, options.timeout);\n        }\n\n        // Cleanup functions called when the toast close animation is triggered\n        _toastRef.componentInstance._animationStateChanged\n            .pipe(\n                filter(event => event.phaseName === 'done' && event.toState === 'leave'),\n                take(1)\n            )\n            .subscribe(() => {\n                this._removeToastPointer(_toastRef);\n                if (options.toastClosed) {\n                    options.toastClosed();\n                }\n                this._updateToastPositions();\n                _toastRef.componentInstance._closeClick.unsubscribe();\n            });\n\n        _toastRef.componentInstance._changeRef.detectChanges();\n        this._toasts.push(_toastRef);\n        return _toastRef;\n    }\n\n    /** Closes the most recent toast displayed */\n    closeLastToast(): void {\n        if (this._toasts.length > 0) {\n            const element = this._toasts[this._toasts.length - 1];\n            if (element) {\n                element.close();\n            }\n        }\n    }\n\n    /** Closes currently visible toasts */\n    closeAllToasts(): void {\n        const len = this._toasts.length;\n        for (let index = 0; index < len; index++) {\n            const element = this._toasts[index];\n            if (element) {\n                element.close();\n            }\n        }\n    }\n\n    private _createOverlay(config: HcToastOptions) {\n        const overlayConfig = this._getOverlayConfig(config);\n        return this._overlay.create(overlayConfig);\n    }\n\n    private _attachToastContainer(overlayRef: OverlayRef, toastRef: HcToastRef) {\n        const injector = this._createInjector(toastRef);\n\n        const containerPortal = new ComponentPortal(HcToastComponent, null, injector);\n        const containerRef: ComponentRef<HcToastComponent> = overlayRef.attach(containerPortal);\n\n        return containerRef.instance;\n    }\n\n    private _createInjector(toastRef: HcToastRef): Injector {\n        return Injector.create({\n            providers: [\n                { provide: HcToastRef, useValue: toastRef }\n            ],\n            parent: this.injector\n        });\n    }\n\n    private _getOverlayConfig(config: HcToastOptions): OverlayConfig {\n        let overlayConfig;\n        const positionStrategy = this._getPositionStrategy(String(config.position), this._toasts.length);\n\n        if (config.position === 'top-full-width' || config.position === 'bottom-full-width') {\n            overlayConfig = new OverlayConfig({positionStrategy, width: '96%', panelClass: 'overlay-pointer-events'});\n        } else {\n            overlayConfig = new OverlayConfig({positionStrategy, panelClass: 'overlay-pointer-events'});\n        }\n\n        return overlayConfig;\n    }\n\n    private _getPositionStrategy(position: string, index: number): PositionStrategy {\n        let positionStrategy: PositionStrategy;\n        const toastIndex: number = this._getLastToast(position, index);\n\n        switch (position) {\n            case 'top-right':\n                if (toastIndex !== -1) {\n                    positionStrategy = this._overlay\n                        .position()\n                        .flexibleConnectedTo(this._toasts[toastIndex].componentInstance._el.nativeElement.children[0])\n                        .withPositions([\n                            {\n                                overlayX: 'end',\n                                overlayY: 'top',\n                                originX: 'end',\n                                originY: 'bottom'\n                            }\n                        ]);\n                } else {\n                    positionStrategy = this._overlay\n                        .position()\n                        .global()\n                        .right('10px');\n                }\n                break;\n            case 'top-center':\n                if (toastIndex !== -1) {\n                    positionStrategy = this._overlay\n                        .position()\n                        .flexibleConnectedTo(this._toasts[toastIndex].componentInstance._el.nativeElement.children[0])\n                        .withPositions([\n                            {\n                                overlayX: 'center',\n                                overlayY: 'top',\n                                originX: 'center',\n                                originY: 'bottom'\n                            }\n                        ]);\n                } else {\n                    positionStrategy = this._overlay\n                        .position()\n                        .global()\n                        .centerHorizontally();\n                }\n                break;\n            case 'top-left':\n                if (toastIndex !== -1) {\n                    positionStrategy = this._overlay\n                        .position()\n                        .flexibleConnectedTo(this._toasts[toastIndex].componentInstance._el.nativeElement.children[0])\n                        .withPositions([\n                            {\n                                overlayX: 'start',\n                                overlayY: 'top',\n                                originX: 'start',\n                                originY: 'bottom'\n                            }\n                        ]);\n                } else {\n                    positionStrategy = this._overlay\n                        .position()\n                        .global()\n                        .left('10px');\n                }\n                break;\n            case 'top-full-width':\n                if (toastIndex !== -1) {\n                    positionStrategy = this._overlay\n                        .position()\n                        .flexibleConnectedTo(this._toasts[toastIndex].componentInstance._el.nativeElement.children[0])\n                        .withFlexibleDimensions(false)\n                        .withPositions([\n                            {\n                                overlayX: 'center',\n                                overlayY: 'top',\n                                originX: 'center',\n                                originY: 'bottom'\n                            }\n                        ]);\n                } else {\n                    positionStrategy = this._overlay\n                        .position()\n                        .global()\n                        .centerHorizontally();\n                }\n                break;\n            case 'bottom-right':\n                if (toastIndex !== -1) {\n                    positionStrategy = this._overlay\n                        .position()\n                        .flexibleConnectedTo(this._toasts[toastIndex].componentInstance._el.nativeElement.children[0])\n                        .withPositions([\n                            {\n                                overlayX: 'end',\n                                overlayY: 'bottom',\n                                originX: 'end',\n                                originY: 'top'\n                            }\n                        ]);\n                } else {\n                    positionStrategy = this._overlay\n                        .position()\n                        .global()\n                        .bottom()\n                        .right('10px');\n                }\n                break;\n            case 'bottom-center':\n                if (toastIndex !== -1) {\n                    positionStrategy = this._overlay\n                        .position()\n                        .flexibleConnectedTo(this._toasts[toastIndex].componentInstance._el.nativeElement.children[0])\n                        .withPositions([\n                            {\n                                overlayX: 'center',\n                                overlayY: 'bottom',\n                                originX: 'center',\n                                originY: 'top'\n                            }\n                        ]);\n                } else {\n                    positionStrategy = this._overlay\n                        .position()\n                        .global()\n                        .bottom()\n                        .centerHorizontally();\n                }\n                break;\n            case 'bottom-left':\n                if (toastIndex !== -1) {\n                    positionStrategy = this._overlay\n                        .position()\n                        .flexibleConnectedTo(this._toasts[toastIndex].componentInstance._el.nativeElement.children[0])\n                        .withPositions([\n                            {\n                                overlayX: 'start',\n                                overlayY: 'bottom',\n                                originX: 'start',\n                                originY: 'top'\n                            }\n                        ]);\n                } else {\n                    positionStrategy = this._overlay\n                        .position()\n                        .global()\n                        .bottom()\n                        .left('10px');\n                }\n                break;\n            case 'bottom-full-width':\n                if (toastIndex !== -1) {\n                    positionStrategy = this._overlay\n                        .position()\n                        .flexibleConnectedTo(this._toasts[toastIndex].componentInstance._el.nativeElement.children[0])\n                        .withFlexibleDimensions(false)\n                        .withPositions([\n                            {\n                                overlayX: 'center',\n                                overlayY: 'bottom',\n                                originX: 'center',\n                                originY: 'top'\n                            }\n                        ]);\n                } else {\n                    positionStrategy = this._overlay\n                        .position()\n                        .global()\n                        .bottom()\n                        .centerHorizontally();\n                }\n                break;\n            default:\n                throw Error('Unsupported toaster message position: ' + position);\n        }\n\n        return positionStrategy;\n    }\n\n    // Removes the toast that was closed from the storage array\n    private _removeToastPointer(toastRef: HcToastRef) {\n        for (let index = 0; index < this._toasts.length; index++) {\n            if (this._toasts[index] === toastRef) {\n                this._toasts.splice(index, 1);\n            }\n        }\n    }\n\n    // Returns one toast back from the index provided in the position provided\n    private _getLastToast(toastPos: string, startIndex: number): number {\n        let toastIndex = -1;\n\n        for (let index = startIndex - 1; index >= 0; index--) {\n            if (this._toasts[index]._toastPosition === toastPos) {\n                toastIndex = index;\n                break;\n            }\n        }\n        return toastIndex;\n    }\n\n    // Updates the position strategy for what toasts are connected after one is closed\n    private _updateToastPositions() {\n        for (let index = 0; index < this._toasts.length; index++) {\n            this._toasts[index]._overlayRef.updatePositionStrategy(this._getPositionStrategy(this._toasts[index]._toastPosition, index));\n        }\n    }\n}\n","import {HcToastComponent} from './hc-toast.component';\nimport {HcToasterService} from './hc-toaster.service';\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {IconModule} from '../icon/icon.module';\n\n@NgModule({\n    imports: [CommonModule, PortalModule, OverlayModule, IconModule],\n    exports: [HcToastComponent],\n    declarations: [HcToastComponent],\n    providers: [HcToasterService]\n})\nexport class ToasterModule {}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\n\nexport function throwErrorForMissingSurveyUri(): Error {\n    throw Error(`SurveyUri must be specified on element hc-typeform-survey`);\n}\n\nexport class TypeformWindow {\n    public typeformEmbed: unknown;\n}\n\n@Component({\n    selector: 'hc-typeform-survey',\n    template: `\n        <a\n            class=\"typeform-share link\"\n            [href]=\"_fullUri\"\n            data-mode=\"drawer_right\"\n            data-auto-open=\"true\"\n            data-submit-close-delay=\"0\"\n            target=\"_blank\"\n            rel=\"noopener\"\n        ></a>\n    `,\n    styles: [],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class TypeformSurveyComponent {\n    /**\n     * TypeForm survey URI you want to use. Example: https://somecompany.typeform.com/to/surveyId?parameter=parametervalue\n     */\n    @Input() public set surveyUri(uri: string) {\n        this._surveyUri = uri;\n        this.refreshFullUri();\n    }\n    public get surveyUri(): string {\n        return this._surveyUri;\n    }\n    /**\n     * App version which will be passed to the survey in a hidden field. Ensures you know what version the feedback is referencing.\n     */\n    @Input() public set appVersion(version: string) {\n        this._appVersion = version;\n        this.refreshFullUri();\n    }\n    public get appVersion(): string {\n        return this._appVersion;\n    }\n    public _fullUri: string;\n    private _surveyUri = \"\";\n    private _appVersion: string;\n    private _id = 'typef_orm_share';\n\n    /**\n     * Opens the survey specified in the surveyUri\n     */\n    public open(): void {\n        if (!document.getElementById(this._id)) {\n            this.getScripts();\n        } else {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            (window as any).typeformEmbed.makePopup(this._fullUri, {\n                mode: 'drawer_right',\n                autoOpen: true,\n                opacity: 100,\n                autoClose: 0,\n                hideScrollbars: true\n            });\n        }\n    }\n\n    private refreshFullUri() {\n        const varChar: string = this.surveyUri.includes('?') ? '&' : '?';\n        this._fullUri = this.appVersion ? this.surveyUri + varChar + 'app_version=' + this.appVersion : this.surveyUri;\n    }\n\n    private getScripts(): void {\n        if (!this.surveyUri) {\n            throwErrorForMissingSurveyUri();\n        }\n        /* this is directly from the embed\n           markup given from TypeForm */\n        let embedScript, firstScript;\n        if (!document.getElementById(this._id)) {\n            // create new embed script with typeform cdn source\n            embedScript = document.createElement('script');\n            embedScript.id = this._id;\n            embedScript.src = `https://embed.typeform.com/embed.js`;\n\n            // insert embed script before other js scripts\n            firstScript = document.getElementsByTagName.call(document, 'script')[0];\n            if (firstScript.parentNode) {\n                firstScript.parentNode.insertBefore(embedScript, firstScript);\n            }\n        }\n    }\n}\n","import {TypeformSurveyComponent} from './typeform-survey.component';\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [TypeformSurveyComponent],\n    declarations: [TypeformSurveyComponent]\n})\nexport class TypeformSurveyModule {}\n","/*\n * Public API Surface of cashmere\n */\n\nexport * from './lib/accordion/index';\nexport * from './lib/app-switcher/index';\nexport * from './lib/banner/index';\nexport * from './lib/breadcrumbs/index';\nexport * from './lib/button/index';\nexport * from './lib/button-toggle/index';\nexport * from './lib/checkbox/index';\nexport * from './lib/chip/index';\nexport * from './lib/column-menu/index';\nexport * from './lib/datepicker/index';\nexport * from './lib/date-range/index';\nexport * from './lib/drawer/index';\nexport * from './lib/drag-list/index';\nexport * from './lib/env-switcher/index';\nexport * from './lib/form-field/index';\nexport * from './lib/icon/index';\nexport * from './lib/file-uploader/index';\nexport * from './lib/input/index';\nexport * from './lib/instance-switcher/index';\nexport * from './lib/list/index';\nexport * from './lib/measurable/index';\nexport * from './lib/modal/index';\nexport * from './lib/multiselect/index';\nexport * from './lib/navbar/index';\nexport * from './lib/pagination/index';\nexport * from './lib/pipes/index';\nexport * from './lib/picklist-old/index';\nexport * from './lib/picklist/index';\nexport * from './lib/pop/index';\nexport * from './lib/progress-indicators/index';\nexport * from './lib/radio-button/index';\nexport * from './lib/release-notes-modal/index';\nexport * from './lib/resizable/index';\nexport * from './lib/scroll-nav/index';\nexport * from './lib/search-bar/index';\nexport * from './lib/select/index';\nexport * from './lib/slide-toggle/index';\nexport * from './lib/slider/index';\nexport * from './lib/sidenav/index';\nexport * from './lib/sort/index';\nexport * from './lib/stepper/index';\nexport * from './lib/subnav/index';\nexport * from './lib/table/index';\nexport * from './lib/tabs/index';\nexport * from './lib/tile/index';\nexport * from './lib/toaster/index';\nexport * from './lib/typeform-survey/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["supportedAligns","validateAlignInput","supportedColors","validateColorInput","i1.WorkTrackerService","i2","i3.ProgressSpinnerComponent","i4.EllipsisPipe","i1.IconComponent","i1","i1.HcPopoverAnchoringService","i2.HcPopoverAccessibilityService","supportedStyles","i1.HcPopComponent","i2.HcPopoverAnchorDirective","i3.MenuDirective","i4.ButtonComponent","i2.ButtonComponent","i3.HcPopComponent","i4.HcPopoverAnchorDirective","i5.MenuDirective","i6.MenuItemDirective","i7.CheckboxComponent","i9.IconComponent","i1.DateAdapter","i3.CalendarBodyComponent","uniqueId","i2.HcErrorComponent","i1.SelectService","i4.HcOptionDirective","i1.HcDatepickerIntl","i2.DateAdapter","i3.ButtonComponent","i4","i5.IconComponent","i6.HcIconSmallDirective","i7.InputDirective","i8.HcFormFieldComponent","i9.HcSuffixDirective","i10.SelectComponent","i11.HcOptionDirective","i12","i14.MonthViewComponent","i15.YearViewComponent","i16.MultiYearViewComponent","i3.CalendarComponent","i2.HcFormFieldComponent","observableOf","i3.IconComponent","i4.HcSuffixDirective","i3","i1.ConfigStoreService","i3.HcErrorComponent","i4.HcLabelComponent","i5.CalendarComponent","i6.DatepickerInputDirective","i8","nextUniqueId","i3.ChipComponent","i5.RadioButtonComponent","i5.RadioGroupDirective","i6","i7.CalendarWrapperComponent","i1.CalendarOverlayService","i2.ConfigStoreService","openStateAnimation","closeStateAnimation","i1.BackdropHostDirective","i2.HcPopComponent","i3.HcPopoverAnchorDirective","i4.MenuItemDirective","i5.ProgressSpinnerComponent","i6.ProgressDotsComponent","i8.ButtonComponent","i1.MeasurableService","i7.MenuIconDirective","i8.MenuTextDirective","i10.HcIconSmallDirective","i11.MeasurableComponent","i12.InputDirective","i13","i14","i1.ActiveModal","i5.ModalHeaderComponent","i6.ModalBodyComponent","i7.ModalFooterComponent","i8.ModalComponent","i4.HcIconSmallDirective","i5.HcIconMediumDirective","i6.HcPopComponent","i7.HcPopoverAnchorDirective","i8.MenuDirective","i9.MenuItemDirective","i10.MenuTextDirective","i11.DividerDirective","i5.HcPopComponent","i6.HcPopoverAnchorDirective","i1.ButtonComponent","i2.SelectComponent","i3.HcOptionDirective","i1.PicklistFilterLocalService","i1.PicklistStateService","i2.PicklistStateService","i3.PicklistFilterRemoteService","i4.PicklistFilterLocalService","i1.PicklistFilterService","i2.PicklistFilterService","i3.PicklistFilterLocalService","i4.PicklistValuesetMovingService","i5.PicklistStateService","i1.PicklistOldService","i2.PicklistActionService","i3.PicklistFilterService","i5","i6.IconComponent","i7.HcIconSmallDirective","i8.InputDirective","i9.HcFormFieldComponent","i10.HcSuffixDirective","i11.ProgressDotsComponent","i5.PicklistPaneComponent","i1.PickPaneListService","i1.PicklistService","i2.PickPaneDragService","i5.InputDirective","i6.HcFormFieldComponent","i7.HcSuffixDirective","i8.ProgressDotsComponent","i9.PickPaneListComponent","i10.PickItemLabelDirective","i4.PickPaneComponent","i3.ModalHeaderComponent","i4.ModalBodyComponent","i5.ModalFooterComponent","i6.ModalComponent","i7.AccordionComponent","i8.AccordionToolbarComponent","i1.ModalService","Meta","map","CdkScrollable","i1.HcFormFieldComponent","i2.HcSuffixDirective","i3.InputDirective","i4.ClearInputComponent","i2.ProgressDotsComponent","i4.HcPopComponent","i5.HcPopoverAnchorDirective","i1.HcSortHeaderIntl","i2.HcSort","i2.MenuDirective","i3.MenuItemDirective","i4.MenuIconDirective","i5.MenuTextDirective","i6.DividerDirective","i7.IconComponent","throwErrorForMissingRouterLink","i7.MenuDirective","i8.MenuItemDirective","i9.MenuTextDirective","i10.DividerDirective"],"mappings":"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EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,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"}