{"version":3,"file":"nebular-theme.mjs","sources":["../../../src/framework/theme/theme.options.ts","../../../src/framework/theme/services/breakpoints.service.ts","../../../src/framework/theme/services/js-themes/default.theme.ts","../../../src/framework/theme/services/js-themes/cosmic.theme.ts","../../../src/framework/theme/services/js-themes/corporate.theme.ts","../../../src/framework/theme/services/js-themes/dark.theme.ts","../../../src/framework/theme/services/js-themes-registry.service.ts","../../../src/framework/theme/services/theme.service.ts","../../../src/framework/theme/services/spinner.service.ts","../../../src/framework/theme/services/direction.service.ts","../../../src/framework/theme/services/scroll.service.ts","../../../src/framework/theme/services/ruler.service.ts","../../../src/framework/theme/components/shared/shared.module.ts","../../../src/framework/theme/components/cdk/a11y/focus-trap.ts","../../../src/framework/theme/components/cdk/a11y/focus-key-manager.ts","../../../src/framework/theme/components/cdk/a11y/descendant-key-manager.ts","../../../src/framework/theme/components/cdk/a11y/a11y.module.ts","../../../src/framework/theme/components/cdk/overlay/mapping.ts","../../../src/framework/theme/components/cdk/overlay/position-helper.ts","../../../src/framework/theme/components/cdk/platform/platform-service.ts","../../../src/framework/theme/components/cdk/adapter/viewport-ruler-adapter.ts","../../../src/framework/theme/components/cdk/adapter/overlay-container-adapter.ts","../../../src/framework/theme/components/cdk/overlay/overlay-position.ts","../../../src/framework/theme/components/cdk/overlay/overlay-container.ts","../../../src/framework/theme/components/cdk/overlay/overlay-service.ts","../../../src/framework/theme/components/cdk/adapter/scroll-dispatcher-adapter.ts","../../../src/framework/theme/components/cdk/adapter/block-scroll-strategy-adapter.ts","../../../src/framework/theme/components/cdk/adapter/adapter.module.ts","../../../src/framework/theme/components/cdk/overlay/overlay-trigger.ts","../../../src/framework/theme/components/cdk/overlay/overlay.module.ts","../../../src/framework/theme/services/status.service.ts","../../../src/framework/theme/theme.module.ts","../../../src/framework/theme/services/color.helper.ts","../../../src/framework/theme/components/icon/icon-pack.ts","../../../src/framework/theme/components/icon/icon.ts","../../../src/framework/theme/components/icon/icon-libraries.ts","../../../src/framework/theme/components/icon/icon.component.ts","../../../src/framework/theme/components/icon/icon.module.ts","../../../src/framework/theme/components/card/card.component.ts","../../../src/framework/theme/components/card/reveal-card/reveal-card.component.ts","../../../src/framework/theme/components/card/flip-card/flip-card.component.ts","../../../src/framework/theme/components/card/shared/shared.component.ts","../../../src/framework/theme/components/card/card.module.ts","../../../src/framework/theme/components/calendar-kit/model.ts","../../../src/framework/theme/components/helpers.ts","../../../src/framework/theme/components/calendar-kit/services/date.service.ts","../../../src/framework/theme/components/calendar-kit/helpers.ts","../../../src/framework/theme/components/calendar-kit/services/calendar-year-model.service.ts","../../../src/framework/theme/components/button/base-button.ts","../../../src/framework/theme/components/button/button.component.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-navigation/calendar-view-mode.component.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-navigation/calendar-pageable-navigation.component.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-year-picker/calendar-year-cell.component.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-picker/calendar-picker-row.component.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-picker/calendar-picker.component.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-year-picker/calendar-year-picker.component.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-month-picker/calendar-month-cell.component.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-month-picker/calendar-month-picker.component.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-day-picker/calendar-day-cell.component.ts","../../../src/framework/theme/components/calendar-kit/services/calendar-month-model.service.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-days-names/calendar-days-names.component.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-week-number/calendar-week-number.component.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-day-picker/calendar-day-picker.component.ts","../../../src/framework/theme/components/calendar/base-calendar.component.ts","../../../src/framework/theme/components/calendar/base-calendar.component.html","../../../src/framework/theme/components/calendar/calendar.component.ts","../../../src/framework/theme/components/button/button.module.ts","../../../src/framework/theme/components/calendar-kit/services/native-date.service.ts","../../../src/framework/theme/components/calendar-kit/services/calendar-time-model.service.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-actions/calendar-actions.component.ts","../../../src/framework/theme/components/calendar-kit/calendar-kit.module.ts","../../../src/framework/theme/components/calendar/base-calendar.module.ts","../../../src/framework/theme/components/calendar/calendar.module.ts","../../../src/framework/theme/components/calendar/base-calendar-range-cell.ts","../../../src/framework/theme/components/calendar/calendar-range-day-cell.component.ts","../../../src/framework/theme/components/calendar/calendar-range-year-cell.component.ts","../../../src/framework/theme/components/calendar/calendar-range-month-cell.component.ts","../../../src/framework/theme/components/calendar/calendar-range.component.ts","../../../src/framework/theme/components/calendar/calendar-range.module.ts","../../../src/framework/theme/components/timepicker/model.ts","../../../src/framework/theme/components/list/list.component.ts","../../../src/framework/theme/components/timepicker/timepicker-cell.component.ts","../../../src/framework/theme/components/timepicker/timepicker.component.ts","../../../src/framework/theme/components/timepicker/timepicker.component.html","../../../src/framework/theme/components/datepicker/calendar-with-time.component.ts","../../../src/framework/theme/components/datepicker/datepicker-container.component.ts","../../../src/framework/theme/components/datepicker/datepicker.directive.ts","../../../src/framework/theme/components/datepicker/datepicker.component.ts","../../../src/framework/theme/components/datepicker/date-timepicker.component.ts","../../../src/framework/theme/components/menu/url-matching-helpers.ts","../../../src/framework/theme/components/layout/restore-scroll-top.service.ts","../../../src/framework/theme/components/layout/layout.component.ts","../../../src/framework/theme/components/layout/layout-direction.directive.ts","../../../src/framework/theme/components/layout/layout.module.ts","../../../src/framework/theme/components/menu/menu.service.ts","../../../src/framework/theme/components/badge/badge.component.ts","../../../src/framework/theme/components/menu/menu.component.ts","../../../src/framework/theme/components/menu/menu-item.component.html","../../../src/framework/theme/components/badge/badge.module.ts","../../../src/framework/theme/components/menu/menu.module.ts","../../../src/framework/theme/components/route-tabset/merge-configs.pipe.ts","../../../src/framework/theme/components/route-tabset/route-tabset.component.ts","../../../src/framework/theme/components/route-tabset/route-tabset.module.ts","../../../src/framework/theme/components/sidebar/sidebar.service.ts","../../../src/framework/theme/components/sidebar/sidebar.component.ts","../../../src/framework/theme/components/sidebar/sidebar.module.ts","../../../src/framework/theme/components/tabset/tab-content.directive.ts","../../../src/framework/theme/components/tabset/tab-title.directive.ts","../../../src/framework/theme/components/tabset/tabset.component.ts","../../../src/framework/theme/components/tabset/tabset.module.ts","../../../src/framework/theme/components/user/user.component.ts","../../../src/framework/theme/components/user/user.component.html","../../../src/framework/theme/components/user/user.module.ts","../../../src/framework/theme/components/actions/actions.component.ts","../../../src/framework/theme/components/actions/actions.module.ts","../../../src/framework/theme/components/search/search.service.ts","../../../src/framework/theme/components/search/search.component.ts","../../../src/framework/theme/components/search/search.module.ts","../../../src/framework/theme/components/checkbox/checkbox.component.ts","../../../src/framework/theme/components/checkbox/checkbox.module.ts","../../../src/framework/theme/components/cdk/overlay/dynamic/dynamic-overlay.ts","../../../src/framework/theme/components/cdk/overlay/dynamic/dynamic-overlay-handler.ts","../../../src/framework/theme/components/popover/popover.component.ts","../../../src/framework/theme/components/popover/popover.directive.ts","../../../src/framework/theme/components/popover/popover.module.ts","../../../src/framework/theme/components/context-menu/context-menu.component.ts","../../../src/framework/theme/components/context-menu/context-menu.directive.ts","../../../src/framework/theme/components/context-menu/context-menu.module.ts","../../../src/framework/theme/components/progress-bar/progress-bar.component.ts","../../../src/framework/theme/components/progress-bar/progress-bar.module.ts","../../../src/framework/theme/components/alert/alert.component.ts","../../../src/framework/theme/components/alert/alert.module.ts","../../../src/framework/theme/components/form-field/form-field-control.ts","../../../src/framework/theme/components/input/input.directive.ts","../../../src/framework/theme/components/chat/chat-form.component.ts","../../../src/framework/theme/components/chat/chat-custom-message.service.ts","../../../src/framework/theme/components/chat/chat-message-text.component.ts","../../../src/framework/theme/components/chat/chat-message-file.component.ts","../../../src/framework/theme/components/chat/chat-message-quote.component.ts","../../../src/framework/theme/components/chat/chat.options.ts","../../../src/framework/theme/components/chat/chat-message-map.component.ts","../../../src/framework/theme/components/chat/chat-avatar.component.ts","../../../src/framework/theme/components/chat/chat-message.component.ts","../../../src/framework/theme/components/chat/chat-title.directive.ts","../../../src/framework/theme/components/chat/chat.component.ts","../../../src/framework/theme/components/input/input.module.ts","../../../src/framework/theme/components/chat/chat-custom-message.directive.ts","../../../src/framework/theme/components/chat/chat.module.ts","../../../src/framework/theme/components/spinner/spinner.component.ts","../../../src/framework/theme/components/spinner/spinner.directive.ts","../../../src/framework/theme/components/spinner/spinner.module.ts","../../../src/framework/theme/components/stepper/stepper-tokens.ts","../../../src/framework/theme/components/stepper/step.component.ts","../../../src/framework/theme/components/stepper/stepper.component.ts","../../../src/framework/theme/components/stepper/stepper.component.html","../../../src/framework/theme/components/stepper/stepper-button.directive.ts","../../../src/framework/theme/components/stepper/stepper.module.ts","../../../src/framework/theme/components/accordion/accordion.component.ts","../../../src/framework/theme/components/accordion/accordion-item.component.ts","../../../src/framework/theme/components/accordion/accordion-item-body.component.ts","../../../src/framework/theme/components/accordion/accordion-item-header.component.ts","../../../src/framework/theme/components/accordion/accordion.module.ts","../../../src/framework/theme/components/button-group/button-group-injection-tokens.ts","../../../src/framework/theme/components/button-group/button-toggle.directive.ts","../../../src/framework/theme/components/button-group/button-group.component.ts","../../../src/framework/theme/components/button-group/button-group.module.ts","../../../src/framework/theme/components/list/list-page-tracker.directive.ts","../../../src/framework/theme/components/list/infinite-list.directive.ts","../../../src/framework/theme/components/list/list.module.ts","../../../src/framework/theme/components/cdk/bidi/bidi-service.ts","../../../src/framework/theme/components/cdk/bidi/bidi.module.ts","../../../src/framework/theme/components/cdk/table/cell.ts","../../../src/framework/theme/components/cdk/table/data-source.ts","../../../src/framework/theme/components/cdk/table/row.ts","../../../src/framework/theme/components/cdk/table/type-mappings.ts","../../../src/framework/theme/components/cdk/table/table.module.ts","../../../src/framework/theme/components/dialog/dialog-config.ts","../../../src/framework/theme/components/dialog/dialog-ref.ts","../../../src/framework/theme/components/dialog/dialog-container.ts","../../../src/framework/theme/components/dialog/dialog.service.ts","../../../src/framework/theme/components/dialog/dialog.module.ts","../../../src/framework/theme/components/toastr/toast.component.ts","../../../src/framework/theme/components/toastr/toast.component.html","../../../src/framework/theme/components/toastr/toastr-container.component.ts","../../../src/framework/theme/components/toastr/toastr-config.ts","../../../src/framework/theme/components/toastr/toastr.service.ts","../../../src/framework/theme/components/toastr/toastr.module.ts","../../../src/framework/theme/components/toastr/model.ts","../../../src/framework/theme/components/tooltip/tooltip.component.ts","../../../src/framework/theme/components/tooltip/tooltip.directive.ts","../../../src/framework/theme/components/tooltip/tooltip.module.ts","../../../src/framework/theme/components/select/select-injection-tokens.ts","../../../src/framework/theme/components/option/option.component.ts","../../../src/framework/theme/components/option/option-list.component.ts","../../../src/framework/theme/components/select/select.component.ts","../../../src/framework/theme/components/select/select.component.html","../../../src/framework/theme/components/option/option-group.component.ts","../../../src/framework/theme/components/option/option-list.module.ts","../../../src/framework/theme/components/select/select.module.ts","../../../src/framework/theme/components/form-field/prefix.directive.ts","../../../src/framework/theme/components/form-field/suffix.directive.ts","../../../src/framework/theme/components/form-field/form-field.component.ts","../../../src/framework/theme/components/form-field/form-field.component.html","../../../src/framework/theme/components/select-with-autocomplete/select-with-autocomplete.component.ts","../../../src/framework/theme/components/select-with-autocomplete/select-with-autocomplete.component.html","../../../src/framework/theme/components/form-field/form-field.module.ts","../../../src/framework/theme/components/select-with-autocomplete/select-with-autocomplete.module.ts","../../../src/framework/theme/components/autocomplete/autocomplete.component.ts","../../../src/framework/theme/components/autocomplete/autocomplete.component.html","../../../src/framework/theme/components/autocomplete/autocomplete.directive.ts","../../../src/framework/theme/components/autocomplete/autocomplete.module.ts","../../../src/framework/theme/components/window/window.options.ts","../../../src/framework/theme/components/window/window-ref.ts","../../../src/framework/theme/components/window/windows-container.component.ts","../../../src/framework/theme/components/window/window.component.ts","../../../src/framework/theme/components/window/window.service.ts","../../../src/framework/theme/components/window/window.module.ts","../../../src/framework/theme/components/timepicker/timepicker.directive.ts","../../../src/framework/theme/components/timepicker/timepicker.module.ts","../../../src/framework/theme/components/datepicker/datepicker-adapter.ts","../../../src/framework/theme/components/datepicker/datepicker.module.ts","../../../src/framework/theme/components/radio/radio.component.ts","../../../src/framework/theme/components/radio/radio-group.component.ts","../../../src/framework/theme/components/radio/radio.module.ts","../../../src/framework/theme/components/tag/tag.component.ts","../../../src/framework/theme/components/tag/tag.component.html","../../../src/framework/theme/components/tag/tag-input.directive.ts","../../../src/framework/theme/components/tag/tag-list.component.ts","../../../src/framework/theme/components/tag/tag.module.ts","../../../src/framework/theme/components/tree-grid/data-source/tree-grid.model.ts","../../../src/framework/theme/components/tree-grid/data-source/tree-grid-filter.service.ts","../../../src/framework/theme/components/tree-grid/tree-grid-sort.component.ts","../../../src/framework/theme/components/tree-grid/data-source/tree-grid-sort.service.ts","../../../src/framework/theme/components/tree-grid/data-source/tree-grid.service.ts","../../../src/framework/theme/components/tree-grid/data-source/tree-grid-data.service.ts","../../../src/framework/theme/components/tree-grid/data-source/tree-grid-data-source.ts","../../../src/framework/theme/components/tree-grid/tree-grid-injection-tokens.ts","../../../src/framework/theme/components/tree-grid/tree-grid-columns.service.ts","../../../src/framework/theme/components/tree-grid/tree-grid.component.ts","../../../src/framework/theme/components/tree-grid/tree-grid-def.component.ts","../../../src/framework/theme/components/tree-grid/tree-grid-row.component.ts","../../../src/framework/theme/components/tree-grid/tree-grid-column-def.directive.ts","../../../src/framework/theme/components/tree-grid/tree-grid-cell.component.ts","../../../src/framework/theme/components/tree-grid/tree-grid-filter.ts","../../../src/framework/theme/components/tree-grid/tree-grid-row-toggle.directive.ts","../../../src/framework/theme/components/tree-grid/tree-grid-row-toggle.component.ts","../../../src/framework/theme/components/tree-grid/tree-grid.module.ts","../../../src/framework/theme/components/toggle/toggle.component.ts","../../../src/framework/theme/components/toggle/toggle.module.ts","../../../src/framework/theme/public_api.ts","../../../src/framework/theme/nebular-theme.ts"],"sourcesContent":["/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { InjectionToken } from '@angular/core';\nimport { NbMediaBreakpoint } from './services/breakpoints.service';\nimport { NbJSThemeOptions } from './services/js-themes/theme.options';\n\nexport interface NbThemeOptions {\n  name: string;\n}\n\nexport const NB_THEME_OPTIONS = new InjectionToken<NbThemeOptions>('Nebular Theme Options');\nexport const NB_MEDIA_BREAKPOINTS = new InjectionToken<NbMediaBreakpoint[]>('Nebular Media Breakpoints');\nexport const NB_BUILT_IN_JS_THEMES = new InjectionToken<NbJSThemeOptions[]>('Nebular Built-in JS Themes');\nexport const NB_JS_THEMES = new InjectionToken<NbJSThemeOptions[]>('Nebular JS Themes');\n\n/**\n * We're providing browser apis with tokens to improve testing capabilities.\n * */\nexport const NB_WINDOW = new InjectionToken<Window>('Window');\nexport const NB_DOCUMENT = new InjectionToken<Document>('Document');\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Inject, Injectable } from '@angular/core';\nimport { NB_MEDIA_BREAKPOINTS } from '../theme.options';\n\n/**\n * Media breakpoint type\n *\n * Where `name` - breakpoint name alias (e.g. xs, sm, md, etc), and width - min breakpoint width\n */\nexport interface NbMediaBreakpoint {\n  name: string;\n  width: number;\n}\n\nexport const DEFAULT_MEDIA_BREAKPOINTS = [\n  {\n    name: 'xs',\n    width: 0,\n  },\n  {\n    name: 'is',\n    width: 400,\n  },\n  {\n    name: 'sm',\n    width: 576,\n  },\n  {\n    name: 'md',\n    width: 768,\n  },\n  {\n    name: 'lg',\n    width: 992,\n  },\n  {\n    name: 'xl',\n    width: 1200,\n  },\n  {\n    name: 'xxl',\n    width: 1400,\n  },\n  {\n    name: 'xxxl',\n    width: 1600,\n  },\n];\n\n/**\n * Manages media breakpoints\n *\n * Provides access to available media breakpoints to convert window width to a configured breakpoint,\n * e.g. 200px - *xs* breakpoint\n */\n@Injectable()\nexport class NbMediaBreakpointsService {\n\n  private breakpointsMap: { [breakpoint: string]: number };\n\n  constructor(@Inject(NB_MEDIA_BREAKPOINTS) private breakpoints) {\n    this.breakpointsMap = this.breakpoints.reduce((res, b: NbMediaBreakpoint) => {\n      res[b.name] = b.width;\n      return res;\n    }, {});\n  }\n\n  /**\n   * Returns a configured breakpoint by width\n   * @param width number\n   * @returns {Z|{name: string, width: number}}\n   */\n  getByWidth(width: number): NbMediaBreakpoint {\n    const unknown = { name: 'unknown', width: width };\n    const breakpoints = this.getBreakpoints();\n\n    return breakpoints\n      .find((point: NbMediaBreakpoint, index: number) => {\n        const next = breakpoints[index + 1];\n        return width >= point.width && (!next || width < next.width);\n      }) || unknown;\n  }\n\n  /**\n   * Returns a configured breakpoint by name\n   * @param name string\n   * @returns NbMediaBreakpoint\n   */\n  getByName(name: string): NbMediaBreakpoint {\n    const unknown = { name: 'unknown', width: NaN };\n    const breakpoints = this.getBreakpoints();\n\n    return breakpoints.find((point: NbMediaBreakpoint) => name === point.name) || unknown;\n  }\n\n  /**\n   * Returns a list of configured breakpoints for the theme\n   * @returns NbMediaBreakpoint[]\n   */\n  getBreakpoints(): NbMediaBreakpoint[] {\n    return this.breakpoints;\n  }\n\n  /**\n   * Returns a map of configured breakpoints for the theme\n   * @returns {[p: string]: number}\n   */\n  getBreakpointsMap(): { [breakpoint: string]: number } {\n    return this.breakpointsMap;\n  }\n}\n","import { NbJSThemeOptions } from './theme.options';\n\nconst palette = {\n  primary: '#3366ff',\n  success: '#00d68f',\n  info: '#0095ff',\n  warning: '#ffaa00',\n  danger: '#ff3d71',\n};\n\nexport const DEFAULT_THEME: NbJSThemeOptions = {\n  name: 'default',\n  variables: {\n    fontMain: 'Open Sans, sans-serif',\n    fontSecondary: 'Raleway, sans-serif',\n\n    bg: '#ffffff',\n    bg2: '#f7f9fc',\n    bg3: '#edf1f7',\n    bg4: '#e4e9f2',\n\n    border: '#ffffff',\n    border2: '#f7f9fc',\n    border3: '#edf1f7',\n    border4: '#e4e9f2',\n    border5: '#c5cee0',\n\n    fg: '#8f9bb3',\n    fgHeading: '#1a2138',\n    fgText: '#1a2138',\n    fgHighlight: palette.primary,\n    layoutBg: '#f7f9fc',\n    separator: '#edf1f7',\n\n    primary: palette.primary,\n    success: palette.success,\n    info: palette.info,\n    warning: palette.warning,\n    danger: palette.danger,\n\n    primaryLight: '#598bff',\n    successLight: '#2ce69b',\n    infoLight: '#42aaff',\n    warningLight: '#ffc94d',\n    dangerLight: '#ff708d',\n  },\n};\n","import { NbJSThemeOptions } from './theme.options';\n\nconst palette = {\n  primary: '#a16eff',\n  success: '#00d68f',\n  info: '#0095ff',\n  warning: '#ffaa00',\n  danger: '#ff3d71',\n};\n\nexport const COSMIC_THEME: NbJSThemeOptions = {\n  name: 'cosmic',\n  variables: {\n    fontMain: 'Open Sans, sans-serif',\n    fontSecondary: 'Raleway, sans-serif',\n\n    bg: '#323259',\n    bg2: '#252547',\n    bg3: '#1b1b38',\n    bg4: '#13132b',\n\n    border: '#323259',\n    border2: '#252547',\n    border3: '#1b1b38',\n    border4: '#13132b',\n    border5: '#13132b',\n\n    fg: '#b4b4db',\n    fgHeading: '#ffffff',\n    fgText: '#ffffff',\n    fgHighlight: palette.primary,\n    layoutBg: '#151a30',\n    separator: '#151a30',\n\n    primary: palette.primary,\n    success: palette.success,\n    info: palette.info,\n    warning: palette.warning,\n    danger: palette.danger,\n\n    primaryLight: '#b18aff',\n    successLight: '#2ce69b',\n    infoLight: '#42aaff',\n    warningLight: '#ffc94d',\n    dangerLight: '#ff708d',\n  },\n};\n","import { NbJSThemeOptions } from './theme.options';\n\nconst palette = {\n  primary: '#73a1ff',\n  success: '#5dcfe3',\n  info: '#ba7fec',\n  warning: '#ffa36b',\n  danger: '#ff6b83',\n};\n\nexport const CORPORATE_THEME: NbJSThemeOptions = {\n  name: 'corporate',\n  base: 'default',\n  variables: {\n    fontMain: 'Open Sans, sans-serif',\n    fontSecondary: 'Raleway, sans-serif',\n\n    bg: '#ffffff',\n    bg2: '#f7f9fc',\n    bg3: '#edf1f7',\n    bg4: '#e4e9f2',\n\n    border: '#ffffff',\n    border2: '#f7f9fc',\n    border3: '#edf1f7',\n    border4: '#e4e9f2',\n    border5: '#c5cee0',\n\n    fg: '#8f9bb3',\n    fgHeading: '#1a2138',\n    fgText: '#1a2138',\n    fgHighlight: palette.primary,\n    layoutBg: '#f7f9fc',\n    separator: '#edf1f7',\n\n    primary: palette.primary,\n    success: palette.success,\n    info: palette.info,\n    warning: palette.warning,\n    danger: palette.danger,\n\n    primaryLight: '#598bff',\n    successLight: '#2ce69b',\n    infoLight: '#42aaff',\n    warningLight: '#ffc94d',\n    dangerLight: '#ff708d',\n  },\n};\n","import { NbJSThemeOptions } from './theme.options';\n\nconst palette = {\n  primary: '#3366ff',\n  success: '#00d68f',\n  info: '#0095ff',\n  warning: '#ffaa00',\n  danger: '#ff3d71',\n};\n\nexport const DARK_THEME: NbJSThemeOptions = {\n  name: 'dark',\n  variables: {\n    fontMain: 'Open Sans, sans-serif',\n    fontSecondary: 'Raleway, sans-serif',\n\n    bg: '#222b45',\n    bg2: '#1a2138',\n    bg3: '#151a30',\n    bg4: '#101426',\n\n    border: '#222b45',\n    border2: '#1a2138',\n    border3: '#151a30',\n    border4: '#101426',\n    border5: '#101426',\n\n    fg: '#8f9bb3',\n    fgHeading: '#ffffff',\n    fgText: '#ffffff',\n    fgHighlight: palette.primary,\n    layoutBg: '#1b1b38',\n    separator: '#1b1b38',\n\n    primary: palette.primary,\n    success: palette.success,\n    info: palette.info,\n    warning: palette.warning,\n    danger: palette.danger,\n\n    primaryLight: '#598bff',\n    successLight: '#2ce69b',\n    infoLight: '#42aaff',\n    warningLight: '#ffc94d',\n    dangerLight: '#ff708d',\n  },\n};\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Inject, Injectable } from '@angular/core';\n\n\nimport { NbJSThemeOptions } from './js-themes/theme.options';\nimport { DEFAULT_THEME } from './js-themes/default.theme';\nimport { COSMIC_THEME } from './js-themes/cosmic.theme';\nimport { CORPORATE_THEME } from './js-themes/corporate.theme';\nimport { DARK_THEME } from './js-themes/dark.theme';\nimport { NB_BUILT_IN_JS_THEMES, NB_JS_THEMES } from '../theme.options';\n\nexport const BUILT_IN_THEMES: NbJSThemeOptions[] = [\n  DEFAULT_THEME,\n  COSMIC_THEME,\n  CORPORATE_THEME,\n  DARK_THEME,\n];\n\n/**\n * Js Themes registry - provides access to the JS themes' variables.\n * Usually shouldn't be used directly, but through the NbThemeService class methods (getJsTheme).\n */\n@Injectable()\nexport class NbJSThemesRegistry {\n\n  private themes: any = {};\n\n  constructor(@Inject(NB_BUILT_IN_JS_THEMES) builtInThemes: NbJSThemeOptions[],\n              @Inject(NB_JS_THEMES) newThemes: NbJSThemeOptions[] = []) {\n\n    const themes = this.combineByNames(newThemes, builtInThemes);\n\n    themes.forEach((theme: any) => {\n      this.register(theme, theme.name, theme.base);\n    });\n  }\n\n  /**\n   * Registers a new JS theme\n   * @param config any\n   * @param themeName string\n   * @param baseTheme string\n   */\n  register(config: any, themeName: string, baseTheme: string) {\n    const base = this.has(baseTheme) ? this.get(baseTheme) : {};\n    this.themes[themeName] = this.mergeDeep({}, base, config);\n  }\n\n  /**\n   * Checks whether the theme is registered\n   * @param themeName\n   * @returns boolean\n   */\n  has(themeName: string): boolean {\n    return !!this.themes[themeName];\n  }\n\n  /**\n   * Return a theme\n   * @param themeName\n   * @returns NbJSThemeOptions\n   */\n  get(themeName: string): NbJSThemeOptions {\n    if (!this.themes[themeName]) {\n      throw Error(`NbThemeConfig: no theme '${themeName}' found registered.`);\n    }\n    return JSON.parse(JSON.stringify(this.themes[themeName]));\n  }\n\n  private combineByNames(newThemes: NbJSThemeOptions[], oldThemes: NbJSThemeOptions[]): NbJSThemeOptions[] {\n    if (newThemes) {\n      const mergedThemes: NbJSThemeOptions[] = [];\n      newThemes.forEach((theme: NbJSThemeOptions) => {\n        const sameOld: NbJSThemeOptions = oldThemes.find((tm: NbJSThemeOptions) => tm.name === theme.name)\n          || <NbJSThemeOptions>{};\n\n        const mergedTheme = this.mergeDeep({}, sameOld, theme);\n        mergedThemes.push(mergedTheme);\n      });\n\n      oldThemes.forEach((theme: NbJSThemeOptions) => {\n        if (!mergedThemes.find((tm: NbJSThemeOptions) => tm.name === theme.name)) {\n          mergedThemes.push(theme);\n        }\n      });\n      return mergedThemes;\n    }\n    return oldThemes;\n  }\n\n\n  private isObject(item) {\n    return item && typeof item === 'object' && !Array.isArray(item);\n  }\n\n  // TODO: move to helpers\n  private mergeDeep(target, ...sources) {\n    if (!sources.length) {\n      return target;\n    }\n    const source = sources.shift();\n\n    if (this.isObject(target) && this.isObject(source)) {\n      for (const key in source) {\n        if (this.isObject(source[key])) {\n          if (!target[key]) {\n            Object.assign(target, { [key]: {} });\n          }\n          this.mergeDeep(target[key], source[key]);\n        } else {\n          Object.assign(target, { [key]: source[key] });\n        }\n      }\n    }\n    return this.mergeDeep(target, ...sources);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Inject, Injectable } from '@angular/core';\n\nimport { Observable, ReplaySubject, Subject } from 'rxjs';\nimport { map, filter, pairwise, distinctUntilChanged, startWith, share } from 'rxjs/operators';\n\nimport { NB_THEME_OPTIONS } from '../theme.options';\nimport { NbJSThemeOptions } from './js-themes/theme.options';\nimport { NbJSThemesRegistry } from './js-themes-registry.service';\nimport { NbMediaBreakpointsService, NbMediaBreakpoint } from './breakpoints.service';\n\n/**\n * Main Nebular service. Includes various helper methods.\n */\n@Injectable()\nexport class NbThemeService {\n\n  // TODO: behavioral subject here?\n  currentTheme: string;\n  private themeChanges$ = new ReplaySubject(1);\n  private appendLayoutClass$ = new Subject();\n  private removeLayoutClass$ = new Subject();\n  private changeWindowWidth$ = new ReplaySubject<number>(2);\n\n  constructor(@Inject(NB_THEME_OPTIONS) protected options: any,\n              private breakpointService: NbMediaBreakpointsService,\n              private jsThemesRegistry: NbJSThemesRegistry) {\n    if (options && options.name) {\n      this.changeTheme(options.name);\n    }\n  }\n\n  /**\n   * Change current application theme\n   * @param {string} name\n   */\n  changeTheme(name: string): void {\n    this.themeChanges$.next({ name, previous: this.currentTheme });\n    this.currentTheme = name;\n  }\n\n  changeWindowWidth(width: number): void {\n    this.changeWindowWidth$.next(width);\n  }\n\n  /**\n   * Returns a theme object with variables (color/paddings/etc) on a theme change.\n   * Once subscribed - returns current theme.\n   *\n   * @returns {Observable<NbJSThemeOptions>}\n   */\n  getJsTheme(): Observable<NbJSThemeOptions> {\n    return this.onThemeChange().pipe(\n      map((theme: any) => {\n        return this.jsThemesRegistry.get(theme.name);\n      }),\n    );\n  }\n\n  /**\n   * Triggers media query breakpoint change\n   * Returns a pair where the first item is previous media breakpoint and the second item is current breakpoit.\n   * ```ts\n   *  [{ name: 'xs', width: 0 }, { name: 'md', width: 768 }] // change from `xs` to `md`\n   * ```\n   * @returns {Observable<[NbMediaBreakpoint, NbMediaBreakpoint]>}\n   */\n  onMediaQueryChange(): Observable<NbMediaBreakpoint[]> {\n    return this.changeWindowWidth$\n      .pipe(\n        startWith(undefined),\n        pairwise(),\n        map(([prevWidth, width]: [number, number]) => {\n          return [\n            this.breakpointService.getByWidth(prevWidth),\n            this.breakpointService.getByWidth(width),\n          ] as [NbMediaBreakpoint, NbMediaBreakpoint];\n        }),\n        filter(([prevPoint, point]: [NbMediaBreakpoint, NbMediaBreakpoint]) => {\n          return prevPoint.name !== point.name;\n        }),\n        distinctUntilChanged(null, params => params[0].name + params[1].name),\n        share(),\n      );\n  }\n\n  /**\n   * Triggered when current theme is changed\n   * @returns {Observable<any>}\n   */\n  onThemeChange(): Observable<any> {\n    return this.themeChanges$.pipe(share());\n  }\n\n  /**\n   * Append a class to nb-layout\n   * @param {string} className\n   */\n  appendLayoutClass(className: string) {\n    this.appendLayoutClass$.next(className);\n  }\n\n  /**\n   * Triggered when a new class is added to nb-layout through `appendLayoutClass` method\n   * @returns {Observable<any>}\n   */\n  onAppendLayoutClass(): Observable<any> {\n    return this.appendLayoutClass$.pipe(share());\n  }\n\n  /**\n   * Removes a class from nb-layout\n   * @param {string} className\n   */\n  removeLayoutClass(className: string) {\n    this.removeLayoutClass$.next(className);\n  }\n\n  /**\n   * Triggered when a class is removed from nb-layout through `removeLayoutClass` method\n   * @returns {Observable<any>}\n   */\n  onRemoveLayoutClass(): Observable<any> {\n    return this.removeLayoutClass$.pipe(share());\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\nimport { Injectable, Inject } from '@angular/core';\nimport { NB_DOCUMENT } from '../theme.options';\n\n/**\n * Service to control the global page spinner.\n */\n@Injectable()\nexport class NbSpinnerService {\n\n  private loaders: Promise<any>[] = [];\n  private selector: string = 'nb-global-spinner';\n\n  constructor(@Inject(NB_DOCUMENT) private document) {}\n\n  /**\n   * Appends new loader to the list of loader to be completed before\n   * spinner will be hidden\n   * @param method Promise<any>\n   */\n  registerLoader(method: Promise<any>): void {\n    this.loaders.push(method);\n  }\n\n  /**\n   * Clears the list of loader\n   */\n  clear(): void {\n    this.loaders = [];\n  }\n\n  /**\n   * Start the loader process, show spinnder and execute loaders\n   */\n  load(): void {\n    this.showSpinner();\n    this.executeAll();\n  }\n\n  private executeAll(done = (values) => {}): void {\n    Promise.all(this.loaders).then((values) => {\n      this.hideSpinner();\n      done.call(null, values);\n    })\n      .catch((error) => {\n        // TODO: Promise.reject\n        console.error(error);\n      });\n  }\n\n  // TODO is there any better way of doing this?\n  private showSpinner(): void {\n    const el = this.getSpinnerElement();\n    if (el) {\n      el.style['display'] = 'block';\n    }\n  }\n\n  private hideSpinner(): void {\n    const el = this.getSpinnerElement();\n    if (el) {\n      el.style['display'] = 'none';\n    }\n  }\n\n  private getSpinnerElement() {\n    return this.document.getElementById(this.selector);\n  }\n}\n","import { InjectionToken, Optional, Inject, Injectable } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { share } from 'rxjs/operators';\n\n/**\n * Layout direction.\n * */\nexport enum NbLayoutDirection {\n  LTR = 'ltr',\n  RTL = 'rtl',\n}\n\n/**\n * Layout direction setting injection token.\n * */\nexport const NB_LAYOUT_DIRECTION = new InjectionToken<NbLayoutDirection>('Layout direction');\n\n/**\n * Layout Direction Service.\n * Allows to set or get layout direction and listen to its changes\n */\n@Injectable()\nexport class NbLayoutDirectionService {\n  private $directionChange = new ReplaySubject<NbLayoutDirection>(1);\n\n  constructor(\n    @Optional() @Inject(NB_LAYOUT_DIRECTION) private direction = NbLayoutDirection.LTR,\n  ) {\n    this.setDirection(direction);\n  }\n\n  /**\n   * Returns true if layout direction set to left to right.\n   * @returns boolean.\n   * */\n  public isLtr(): boolean {\n    return this.direction === NbLayoutDirection.LTR;\n  }\n\n  /**\n   * Returns true if layout direction set to right to left.\n   * @returns boolean.\n   * */\n  public isRtl(): boolean {\n    return this.direction === NbLayoutDirection.RTL;\n  }\n\n  /**\n   * Returns current layout direction.\n   * @returns NbLayoutDirection.\n   * */\n  getDirection(): NbLayoutDirection {\n    return this.direction;\n  }\n\n  /**\n   * Sets layout direction\n   * @param {NbLayoutDirection} direction\n   */\n  setDirection(direction: NbLayoutDirection) {\n    this.direction = direction;\n    this.$directionChange.next(direction);\n  }\n\n  /**\n   * Triggered when direction was changed.\n   * @returns Observable<NbLayoutDirection>.\n   */\n  onDirectionChange(): Observable<NbLayoutDirection> {\n    return this.$directionChange.pipe(share<NbLayoutDirection>());\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscriber } from 'rxjs';\nimport { share } from 'rxjs/operators';\n\n/**\n * Scroll position type\n */\nexport interface NbScrollPosition {\n\n  /**\n   * x - left\n   * @type {number}\n   */\n  x: number;\n\n  /**\n   * y - top\n   * @type {number}\n   */\n  y: number;\n}\n\n/**\n * Layout scroll service. Provides information about current scroll position,\n * as well as methods to update position of the scroll.\n *\n * The reason we added this service is that in Nebular there are two scroll modes:\n * - the default mode when scroll is on body\n * - and the `withScroll` mode, when scroll is removed from the body and moved to an element inside of the\n * `nb-layout` component\n */\n@Injectable()\nexport class NbLayoutScrollService {\n\n  private scrollPositionReq$ = new Subject<any>();\n  private manualScroll$ = new Subject<NbScrollPosition>();\n  private scroll$ = new Subject<any>();\n  private scrollable$ = new Subject<boolean>();\n\n  /**\n   * Returns scroll position\n   *\n   * @returns {Observable<NbScrollPosition>}\n   */\n  getPosition(): Observable<NbScrollPosition> {\n    return new Observable((observer: Subscriber<NbScrollPosition>) => {\n      const listener = new Subject<NbScrollPosition>();\n      listener.subscribe(observer);\n      this.scrollPositionReq$.next({ listener });\n\n      return () => listener.complete();\n    });\n  }\n\n  /**\n   * Sets scroll position\n   *\n   * @param {number} x\n   * @param {number} y\n   */\n  scrollTo(x: number = null, y: number = null) {\n    this.manualScroll$.next({ x, y });\n  }\n\n  /**\n   * Returns a stream of scroll events\n   *\n   * @returns {Observable<any>}\n   */\n  onScroll() {\n    return this.scroll$.pipe(share<any>());\n  }\n\n  /**\n   * @private\n   * @returns Observable<NbScrollPosition>.\n   */\n  onManualScroll(): Observable<NbScrollPosition> {\n    return this.manualScroll$.pipe(share<NbScrollPosition>());\n  }\n\n  /**\n   * @private\n   * @returns {Subject<any>}\n   */\n  onGetPosition(): Subject<any> {\n    return this.scrollPositionReq$;\n  }\n\n  onScrollableChange(): Observable<boolean> {\n    return this.scrollable$.pipe(share());\n  }\n\n  /**\n   * @private\n   * @param {any} event\n   */\n  fireScrollChange(event: any) {\n    this.scroll$.next(event);\n  }\n\n  scrollable(scrollable: boolean) {\n    this.scrollable$.next(scrollable);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscriber } from 'rxjs';\n\n/**\n * Layout dimensions type\n */\nexport interface NbLayoutDimensions {\n\n  /**\n   * clientWidth\n   * @type {number}\n   */\n  clientWidth: number;\n\n  /**\n   * clientHeight\n   * @type {number}\n   */\n  clientHeight: number;\n\n  /**\n   * scrollWidth\n   * @type {number}\n   */\n  scrollWidth: number;\n\n  /**\n   * scrollHeight\n   * @type {number}\n   */\n  scrollHeight: number;\n}\n\n/**\n * Simple helper service to return Layout dimensions\n * Depending of current Layout scroll mode (default or `withScroll` when scroll is moved to an element\n * inside of the layout) corresponding dimensions will be returns  - of `documentElement` in first case and\n * `.scrollable-container` in the second.\n */\n@Injectable()\nexport class NbLayoutRulerService {\n\n  private contentDimensionsReq$ = new Subject();\n\n  /**\n   * Content dimensions\n   * @returns {Observable<NbLayoutDimensions>}\n   */\n  getDimensions(): Observable<NbLayoutDimensions> {\n    return new Observable((observer: Subscriber<NbLayoutDimensions>) => {\n      const listener = new Subject<NbLayoutDimensions>();\n      listener.subscribe(observer);\n      this.contentDimensionsReq$.next({ listener });\n\n      return () => listener.complete();\n    });\n  }\n\n  /**\n   * @private\n   * @returns {Subject<any>}\n   */\n  onGetDimensions(): Subject<any> {\n    return this.contentDimensionsReq$;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\n@NgModule({\n  exports: [\n    CommonModule,\n    // TODO: probably we don't need FormsModule in SharedModule\n    FormsModule,\n    RouterModule,\n  ],\n})\nexport class NbSharedModule { }\n","import { Inject, Injectable, NgZone } from '@angular/core';\nimport { FocusTrap, FocusTrapFactory, InteractivityChecker } from '@angular/cdk/a11y';\n\nimport { NB_DOCUMENT } from '../../../theme.options';\n\n\n/**\n * Overrides angular cdk focus trap to keep restore functionality inside trap.\n * */\nexport class NbFocusTrap extends FocusTrap {\n  protected previouslyFocusedElement: HTMLElement;\n\n  constructor(\n    protected element: HTMLElement,\n    protected checker: InteractivityChecker,\n    protected ngZone: NgZone,\n    protected document: Document,\n    deferAnchors) {\n    super(element, checker, ngZone, document, deferAnchors);\n    this.savePreviouslyFocusedElement();\n  }\n\n  restoreFocus() {\n    this.previouslyFocusedElement.focus();\n    this.destroy();\n  }\n\n  blurPreviouslyFocusedElement() {\n    this.previouslyFocusedElement.blur();\n  }\n\n  protected savePreviouslyFocusedElement() {\n    this.previouslyFocusedElement = this.document.activeElement as HTMLElement;\n  }\n}\n\n@Injectable()\nexport class NbFocusTrapFactoryService extends FocusTrapFactory {\n  constructor(\n    protected checker: InteractivityChecker,\n    protected ngZone: NgZone,\n    @Inject(NB_DOCUMENT) private document) {\n    super(checker, ngZone, document);\n  }\n\n  create(element: HTMLElement, deferCaptureElements?: boolean): NbFocusTrap {\n    return new NbFocusTrap(element, this.checker, this.ngZone, this.document, deferCaptureElements);\n  }\n}\n","import { QueryList } from '@angular/core';\nimport { FocusableOption, FocusKeyManager } from '@angular/cdk/a11y';\n\nexport type NbFocusableOption = FocusableOption;\nexport class NbFocusKeyManager<T> extends FocusKeyManager<T> {}\n\nexport class NbFocusKeyManagerFactoryService<T extends NbFocusableOption> {\n  create(items: QueryList<T> | T[]): NbFocusKeyManager<T> {\n    return new NbFocusKeyManager<T>(items);\n  }\n}\n","import { ActiveDescendantKeyManager, Highlightable } from '@angular/cdk/a11y';\nimport { QueryList } from '@angular/core';\n\nexport type NbHighlightableOption = Highlightable;\nexport class NbActiveDescendantKeyManager<T> extends ActiveDescendantKeyManager<T> {}\n\nexport class NbActiveDescendantKeyManagerFactoryService<T extends NbHighlightableOption> {\n  create(items: QueryList<T> | T[]): NbActiveDescendantKeyManager<T> {\n    return new NbActiveDescendantKeyManager<T>(items);\n  }\n}\n\nexport enum NbKeyManagerActiveItemMode {\n  RESET_ACTIVE = -1,\n  FIRST_ACTIVE = 0,\n}\n","import { ModuleWithProviders, NgModule, Injectable } from '@angular/core';\n\nimport { NbFocusTrapFactoryService } from './focus-trap';\nimport { NbFocusKeyManagerFactoryService } from './focus-key-manager';\nimport { NbActiveDescendantKeyManagerFactoryService } from './descendant-key-manager';\nimport { FocusMonitor } from '@angular/cdk/a11y';\n\n@Injectable()\nexport class NbFocusMonitor extends FocusMonitor {}\n\n@NgModule({})\nexport class NbA11yModule {\n  static forRoot(): ModuleWithProviders<NbA11yModule> {\n    return {\n      ngModule: NbA11yModule,\n      providers: [\n        NbFocusTrapFactoryService,\n        NbFocusKeyManagerFactoryService,\n        NbActiveDescendantKeyManagerFactoryService,\n        { provide: NbFocusMonitor, useClass: FocusMonitor },\n      ],\n    };\n  }\n}\n","import { Directive, Injectable, ModuleWithProviders, NgModule, TemplateRef, ViewContainerRef } from '@angular/core';\nimport {\n  CdkPortal,\n  CdkPortalOutlet,\n  ComponentPortal,\n  Portal,\n  PortalModule,\n  TemplatePortal,\n} from '@angular/cdk/portal';\nimport {\n  ComponentType,\n  ConnectedOverlayPositionChange,\n  ConnectedPosition,\n  ConnectionPositionPair,\n  FlexibleConnectedPositionStrategy,\n  Overlay,\n  OverlayConfig,\n  OverlayContainer,\n  OverlayModule,\n  OverlayPositionBuilder,\n  OverlayRef,\n  PositionStrategy,\n  ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport { NbScrollStrategyOptions } from '../adapter/block-scroll-strategy-adapter';\n\n@Directive({\n    selector: '[nbPortal]',\n    standalone: false\n})\nexport class NbPortalDirective extends CdkPortal {}\n\n@Directive({\n    selector: '[nbPortalOutlet]',\n    standalone: false\n})\nexport class NbPortalOutletDirective extends CdkPortalOutlet {}\n\nexport class NbComponentPortal<T = any> extends ComponentPortal<T> {}\n\n@Injectable()\nexport class NbOverlay extends Overlay {\n  scrollStrategies: NbScrollStrategyOptions;\n}\n\n@Injectable()\nexport class NbOverlayPositionBuilder extends OverlayPositionBuilder {}\n\nexport class NbTemplatePortal<T = any> extends TemplatePortal<T> {\n  constructor(template: TemplateRef<T>, viewContainerRef?: ViewContainerRef, context?: T) {\n    super(template, viewContainerRef, context);\n  }\n}\n\n@Injectable()\nexport class NbOverlayContainer extends OverlayContainer {}\n\nexport class NbFlexibleConnectedPositionStrategy extends FlexibleConnectedPositionStrategy {}\n\nexport type NbPortal<T = any> = Portal<T>;\nexport type NbOverlayRef = OverlayRef;\nexport type NbComponentType<T = any> = ComponentType<T>;\nexport type NbPositionStrategy = PositionStrategy;\nexport type NbConnectedPosition = ConnectedPosition;\nexport type NbConnectedOverlayPositionChange = ConnectedOverlayPositionChange;\nexport type NbConnectionPositionPair = ConnectionPositionPair;\nexport type NbOverlayConfig = OverlayConfig;\nexport type NbScrollStrategy = ScrollStrategy;\n\nconst CDK_MODULES = [OverlayModule, PortalModule];\n\n/**\n * This module helps us to keep all angular/cdk deps inside our cdk module via providing aliases.\n * Approach will help us move cdk in separate npm package and refactor nebular/theme code.\n * */\n@NgModule({\n  imports: [...CDK_MODULES],\n  exports: [...CDK_MODULES, NbPortalDirective, NbPortalOutletDirective],\n  declarations: [NbPortalDirective, NbPortalOutletDirective],\n})\nexport class NbCdkMappingModule {\n  static forRoot(): ModuleWithProviders<NbCdkMappingModule> {\n    return {\n      ngModule: NbCdkMappingModule,\n      providers: [NbOverlay, NbOverlayPositionBuilder],\n    };\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { NbLayoutDirectionService } from '../../../services/direction.service';\n\nexport enum NbGlobalLogicalPosition {\n  TOP_START = 'top-start',\n  TOP_END = 'top-end',\n  BOTTOM_START = 'bottom-start',\n  BOTTOM_END = 'bottom-end',\n}\n\nexport enum NbGlobalPhysicalPosition {\n  TOP_RIGHT = 'top-right',\n  TOP_LEFT = 'top-left',\n  BOTTOM_RIGHT = 'bottom-right',\n  BOTTOM_LEFT = 'bottom-left',\n}\n\nexport type NbGlobalPosition = NbGlobalPhysicalPosition | NbGlobalLogicalPosition;\n\n@Injectable()\nexport class NbPositionHelper {\n  constructor(protected layoutDirection: NbLayoutDirectionService) {}\n\n  toLogicalPosition(position: NbGlobalPosition): NbGlobalLogicalPosition {\n    if (Object.values(NbGlobalLogicalPosition).includes(position as NbGlobalLogicalPosition)) {\n      return position as NbGlobalLogicalPosition;\n    }\n\n    if (this.layoutDirection.isLtr()) {\n      return this.toLogicalPositionWhenLtr(position as NbGlobalPhysicalPosition);\n    } else {\n      return this.toLogicalPositionWhenRtl(position as NbGlobalPhysicalPosition);\n    }\n  }\n\n  toPhysicalPosition(position: NbGlobalPosition): NbGlobalPhysicalPosition {\n    if (Object.values(NbGlobalPhysicalPosition).includes(position as NbGlobalPhysicalPosition)) {\n      return position as NbGlobalPhysicalPosition;\n    }\n\n    if (this.layoutDirection.isLtr()) {\n      return this.toPhysicalPositionWhenLtr(position as NbGlobalLogicalPosition);\n    } else {\n      return this.toPhysicalPositionWhenRtl(position as NbGlobalLogicalPosition);\n    }\n  }\n\n  isTopPosition(position: NbGlobalPosition) {\n    const logicalPosition = this.toLogicalPosition(position);\n\n    return logicalPosition === NbGlobalLogicalPosition.TOP_END || logicalPosition === NbGlobalLogicalPosition.TOP_START;\n  }\n\n  isRightPosition(position: NbGlobalPosition) {\n    const physicalPosition = this.toPhysicalPosition(position);\n\n    return (\n      physicalPosition === NbGlobalPhysicalPosition.TOP_RIGHT ||\n      physicalPosition === NbGlobalPhysicalPosition.BOTTOM_RIGHT\n    );\n  }\n\n  protected toLogicalPositionWhenLtr(position: NbGlobalPhysicalPosition): NbGlobalLogicalPosition {\n    switch (position) {\n      case NbGlobalPhysicalPosition.TOP_RIGHT:\n        return NbGlobalLogicalPosition.TOP_END;\n      case NbGlobalPhysicalPosition.TOP_LEFT:\n        return NbGlobalLogicalPosition.TOP_START;\n      case NbGlobalPhysicalPosition.BOTTOM_RIGHT:\n        return NbGlobalLogicalPosition.BOTTOM_END;\n      case NbGlobalPhysicalPosition.BOTTOM_LEFT:\n        return NbGlobalLogicalPosition.BOTTOM_START;\n    }\n  }\n\n  protected toLogicalPositionWhenRtl(position: NbGlobalPhysicalPosition): NbGlobalLogicalPosition {\n    switch (position) {\n      case NbGlobalPhysicalPosition.TOP_RIGHT:\n        return NbGlobalLogicalPosition.TOP_START;\n      case NbGlobalPhysicalPosition.TOP_LEFT:\n        return NbGlobalLogicalPosition.TOP_END;\n      case NbGlobalPhysicalPosition.BOTTOM_RIGHT:\n        return NbGlobalLogicalPosition.BOTTOM_START;\n      case NbGlobalPhysicalPosition.BOTTOM_LEFT:\n        return NbGlobalLogicalPosition.BOTTOM_END;\n    }\n  }\n\n  protected toPhysicalPositionWhenLtr(position: NbGlobalLogicalPosition): NbGlobalPhysicalPosition {\n    switch (position) {\n      case NbGlobalLogicalPosition.TOP_START:\n        return NbGlobalPhysicalPosition.TOP_LEFT;\n      case NbGlobalLogicalPosition.TOP_END:\n        return NbGlobalPhysicalPosition.TOP_RIGHT;\n      case NbGlobalLogicalPosition.BOTTOM_START:\n        return NbGlobalPhysicalPosition.BOTTOM_LEFT;\n      case NbGlobalLogicalPosition.BOTTOM_END:\n        return NbGlobalPhysicalPosition.BOTTOM_RIGHT;\n    }\n  }\n\n  protected toPhysicalPositionWhenRtl(position: NbGlobalLogicalPosition): NbGlobalPhysicalPosition {\n    switch (position) {\n      case NbGlobalLogicalPosition.TOP_START:\n        return NbGlobalPhysicalPosition.TOP_RIGHT;\n      case NbGlobalLogicalPosition.TOP_END:\n        return NbGlobalPhysicalPosition.TOP_LEFT;\n      case NbGlobalLogicalPosition.BOTTOM_START:\n        return NbGlobalPhysicalPosition.BOTTOM_RIGHT;\n      case NbGlobalLogicalPosition.BOTTOM_END:\n        return NbGlobalPhysicalPosition.BOTTOM_LEFT;\n    }\n  }\n}\n","import { Platform } from '@angular/cdk/platform';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n  useClass: Platform,\n})\nexport class NbPlatform extends Platform {}\n","import { Inject, Injectable, NgZone } from '@angular/core';\nimport { ViewportRuler } from '@angular/cdk/overlay';\nimport { map } from 'rxjs/operators';\n\nimport { NbPlatform } from '../platform/platform-service';\nimport { NbLayoutRulerService } from '../../../services/ruler.service';\nimport { NbLayoutScrollService, NbScrollPosition } from '../../../services/scroll.service';\nimport { NB_DOCUMENT } from '../../../theme.options';\n\n\n@Injectable()\nexport class NbViewportRulerAdapter extends ViewportRuler {\n  constructor(platform: NbPlatform, ngZone: NgZone,\n              protected ruler: NbLayoutRulerService,\n              protected scroll: NbLayoutScrollService,\n              @Inject(NB_DOCUMENT) document: any) {\n    super(platform, ngZone, document);\n  }\n\n  getViewportSize(): Readonly<{ width: number; height: number; }> {\n    let res;\n    /*\n    * getDimensions call is really synchronous operation.\n    * And we have to conform with the interface of the original service.\n    * */\n    this.ruler.getDimensions()\n      .pipe(map(dimensions => ({ width: dimensions.clientWidth, height: dimensions.clientHeight })))\n      .subscribe(rect => res = rect);\n    return res;\n  }\n\n  getViewportScrollPosition(): { left: number; top: number } {\n    let res;\n    /*\n    * getPosition call is really synchronous operation.\n    * And we have to conform with the interface of the original service.\n    * */\n    this.scroll.getPosition()\n      .pipe(map((position: NbScrollPosition) => ({ top: position.y, left: position.x })))\n      .subscribe(position => res = position);\n    return res;\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { NbOverlayContainer } from '../overlay/mapping';\n\nfunction throwLayoutNotFoundError(): void {\n  throw new Error(`[NbOverlayContainerAdapter]: Layout not found.\n  When using Nebular '<nb-layout>' is required and should wrap other nebular components.`);\n}\n\n/**\n * Provides nb-layout as overlay container.\n * Container has to be cleared when layout destroys.\n * Another way previous version of the container will be used\n * but it isn't inserted in DOM and exists in memory only.\n * This case important only if you switch between multiple layouts.\n * */\n@Injectable()\nexport class NbOverlayContainerAdapter extends NbOverlayContainer {\n  protected container: HTMLElement;\n\n  setContainer(container: HTMLElement) {\n    this.container = container;\n  }\n\n  clearContainer() {\n    this.container = null;\n    this._containerElement = null;\n  }\n\n  protected _createContainer(): void {\n    this.checkContainer();\n\n    const container = this._document.createElement('div');\n    container.classList.add('cdk-overlay-container');\n    this.container.appendChild(container);\n    this._containerElement = container;\n  }\n\n  protected checkContainer(): void {\n    if (!this.container) {\n      throwLayoutNotFoundError();\n    }\n  }\n}\n","import { ElementRef, Inject, Injectable } from '@angular/core';\nimport { GlobalPositionStrategy } from '@angular/cdk/overlay';\n\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\n\nimport { NB_DOCUMENT } from '../../../theme.options';\nimport {\n  NbConnectedOverlayPositionChange,\n  NbConnectedPosition,\n  NbConnectionPositionPair,\n  NbFlexibleConnectedPositionStrategy,\n  NbOverlayPositionBuilder,\n  NbOverlayRef,\n  NbPositionStrategy,\n} from './mapping';\nimport { NbPlatform } from '../platform/platform-service';\nimport { NbOverlayContainerAdapter } from '../adapter/overlay-container-adapter';\nimport { NbViewportRulerAdapter } from '../adapter/viewport-ruler-adapter';\nimport { NbGlobalLogicalPosition } from './position-helper';\nimport { NbLayoutDirection } from '../../../services/direction.service';\n\nexport type NbAdjustmentValues = 'noop' | 'clockwise' | 'counterclockwise' | 'vertical' | 'horizontal';\nexport enum NbAdjustment {\n  NOOP = 'noop',\n  CLOCKWISE = 'clockwise',\n  COUNTERCLOCKWISE = 'counterclockwise',\n  VERTICAL = 'vertical',\n  HORIZONTAL = 'horizontal',\n}\n\nexport type NbPositionValues =\n  | 'top'\n  | 'bottom'\n  | 'left'\n  | 'right'\n  | 'start'\n  | 'end'\n  | 'top-end'\n  | 'top-start'\n  | 'bottom-end'\n  | 'bottom-start'\n  | 'end-top'\n  | 'end-bottom'\n  | 'start-top'\n  | 'start-bottom';\nexport enum NbPosition {\n  TOP = 'top',\n  BOTTOM = 'bottom',\n  LEFT = 'left',\n  RIGHT = 'right',\n  START = 'start',\n  END = 'end',\n  TOP_END = 'top-end',\n  TOP_START = 'top-start',\n  BOTTOM_END = 'bottom-end',\n  BOTTOM_START = 'bottom-start',\n  END_TOP = 'end-top',\n  END_BOTTOM = 'end-bottom',\n  START_TOP = 'start-top',\n  START_BOTTOM = 'start-bottom',\n}\n\nconst POSITIONS = {\n  [NbPosition.RIGHT](offset) {\n    return { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: offset };\n  },\n  [NbPosition.BOTTOM](offset) {\n    return { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: offset };\n  },\n  [NbPosition.LEFT](offset) {\n    return { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -offset };\n  },\n  [NbPosition.TOP](offset) {\n    return { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -offset };\n  },\n  [NbPosition.START](offset) {\n    return this[NbPosition.LEFT](offset);\n  },\n  [NbPosition.END](offset) {\n    return this[NbPosition.RIGHT](offset);\n  },\n  [NbPosition.END_TOP](offset) {\n    return { originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom', offsetX: offset };\n  },\n  [NbPosition.END_BOTTOM](offset) {\n    return { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top', offsetX: offset };\n  },\n  [NbPosition.BOTTOM_START](offset) {\n    return { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: offset };\n  },\n  [NbPosition.BOTTOM_END](offset) {\n    return { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: offset };\n  },\n  [NbPosition.START_TOP](offset) {\n    return { originX: 'start', originY: 'bottom', overlayX: 'end', overlayY: 'bottom', offsetX: -offset };\n  },\n  [NbPosition.START_BOTTOM](offset) {\n    return { originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top', offsetX: -offset };\n  },\n  [NbPosition.TOP_START](offset) {\n    return { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetY: -offset };\n  },\n  [NbPosition.TOP_END](offset) {\n    return { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -offset };\n  },\n};\n\nconst RTL_PHYSICAL_POSITIONS = {\n  ...POSITIONS,\n  [NbPosition.RIGHT](offset) {\n    return { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: offset };\n  },\n  [NbPosition.LEFT](offset) {\n    return { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: -offset };\n  },\n  [NbPosition.START](offset) {\n    return this[NbPosition.RIGHT](offset);\n  },\n  [NbPosition.END](offset) {\n    return this[NbPosition.LEFT](offset);\n  },\n};\n\nconst COUNTER_CLOCKWISE_POSITIONS = [\n  NbPosition.TOP,\n  NbPosition.TOP_END,\n  NbPosition.TOP_START,\n  NbPosition.START,\n  NbPosition.START_TOP,\n  NbPosition.START_BOTTOM,\n  NbPosition.BOTTOM,\n  NbPosition.BOTTOM_START,\n  NbPosition.BOTTOM_END,\n  NbPosition.END,\n  NbPosition.END_BOTTOM,\n  NbPosition.END_TOP,\n];\nconst CLOCKWISE_POSITIONS = [\n  NbPosition.TOP,\n  NbPosition.TOP_START,\n  NbPosition.TOP_END,\n  NbPosition.END,\n  NbPosition.END_TOP,\n  NbPosition.END_BOTTOM,\n  NbPosition.BOTTOM,\n  NbPosition.BOTTOM_END,\n  NbPosition.BOTTOM_START,\n  NbPosition.START,\n  NbPosition.START_BOTTOM,\n  NbPosition.START_TOP,\n];\nconst VERTICAL_POSITIONS = [NbPosition.BOTTOM, NbPosition.TOP];\nconst HORIZONTAL_POSITIONS = [NbPosition.START, NbPosition.END];\n\nfunction comparePositions(p1: NbConnectedPosition, p2: NbConnectedPosition): boolean {\n  return (\n    p1.originX === p2.originX && p1.originY === p2.originY && p1.overlayX === p2.overlayX && p1.overlayY === p2.overlayY\n  );\n}\n\n/**\n * The main idea of the adjustable connected strategy is to provide predefined set of positions for your overlay.\n * You have to provide adjustment and appropriate strategy will be chosen in runtime.\n * */\nexport class NbAdjustableConnectedPositionStrategy\n  extends NbFlexibleConnectedPositionStrategy\n  implements NbPositionStrategy\n{\n  protected _position: NbPosition;\n  protected _offset: number = 15;\n  protected _adjustment: NbAdjustment;\n  protected _direction: NbLayoutDirection | undefined;\n\n  protected appliedPositions: { key: NbPosition; connectedPosition: NbConnectedPosition }[];\n\n  readonly positionChange: Observable<NbPosition> = this.positionChanges.pipe(\n    map((positionChange: NbConnectedOverlayPositionChange) => positionChange.connectionPair),\n    map((connectionPair: NbConnectionPositionPair) => {\n      return this.appliedPositions.find(({ connectedPosition }) => {\n        return comparePositions(connectedPosition, connectionPair);\n      }).key;\n    }),\n  );\n\n  attach(overlayRef: NbOverlayRef) {\n    /**\n     * We have to apply positions before attach because super.attach() validates positions and crashes app\n     * if no positions provided.\n     * */\n    this.applyPositions();\n    super.attach(overlayRef);\n  }\n\n  direction(direction: NbLayoutDirection): this {\n    this._direction = direction;\n    return this;\n  }\n\n  apply() {\n    this.applyPositions();\n    super.apply();\n  }\n\n  position(position: NbPosition): this {\n    this._position = position;\n    return this;\n  }\n\n  adjustment(adjustment: NbAdjustment): this {\n    this._adjustment = adjustment;\n    return this;\n  }\n\n  offset(offset: number): this {\n    this._offset = offset;\n    return this;\n  }\n\n  protected applyPositions() {\n    const positions: NbPosition[] = this.createPositions();\n    this.persistChosenPositions(positions);\n    this.withPositions(this.appliedPositions.map(({ connectedPosition }) => connectedPosition));\n  }\n\n  protected createPositions(): NbPosition[] {\n    switch (this._adjustment) {\n      case NbAdjustment.NOOP:\n        return [this._position];\n      case NbAdjustment.CLOCKWISE:\n        return this.reorderPreferredPositions(CLOCKWISE_POSITIONS);\n      case NbAdjustment.COUNTERCLOCKWISE:\n        return this.reorderPreferredPositions(COUNTER_CLOCKWISE_POSITIONS);\n      case NbAdjustment.HORIZONTAL:\n        return this.reorderPreferredPositions(HORIZONTAL_POSITIONS);\n      case NbAdjustment.VERTICAL:\n        return this.reorderPreferredPositions(VERTICAL_POSITIONS);\n    }\n  }\n\n  protected mapToLogicalPosition(position: NbPosition): NbPosition {\n    if (position === NbPosition.LEFT) {\n      return this._direction === NbLayoutDirection.LTR ? NbPosition.START : NbPosition.END;\n    }\n    if (position === NbPosition.RIGHT) {\n      return this._direction === NbLayoutDirection.LTR ? NbPosition.END : NbPosition.START;\n    }\n    return position;\n  }\n\n  protected persistChosenPositions(positions: NbPosition[]) {\n    const positionGrid = this._direction === NbLayoutDirection.RTL ? RTL_PHYSICAL_POSITIONS : POSITIONS;\n\n    this.appliedPositions = positions.map((position) => ({\n      key: position,\n      connectedPosition: positionGrid[position](this._offset) as NbConnectedPosition,\n    }));\n  }\n\n  protected reorderPreferredPositions(positions: NbPosition[]): NbPosition[] {\n    // Physical positions should be mapped to logical as adjustments use logical positions.\n    const startPosition = this.mapToLogicalPosition(this._position);\n    const startPositionIndex = positions.indexOf(startPosition);\n    const firstPart = positions.slice(startPositionIndex);\n    const secondPart = positions.slice(0, startPositionIndex);\n    return firstPart.concat(secondPart);\n  }\n}\n\nexport class NbGlobalPositionStrategy extends GlobalPositionStrategy {\n  position(position: NbGlobalLogicalPosition): this {\n    switch (position) {\n      case NbGlobalLogicalPosition.TOP_START:\n        return this.top().left();\n\n      case NbGlobalLogicalPosition.TOP_END:\n        return this.top().right();\n\n      case NbGlobalLogicalPosition.BOTTOM_START:\n        return this.bottom().left();\n\n      case NbGlobalLogicalPosition.BOTTOM_END:\n        return this.bottom().right();\n    }\n  }\n}\n\n@Injectable()\nexport class NbPositionBuilderService {\n  constructor(\n    @Inject(NB_DOCUMENT) protected document,\n    protected viewportRuler: NbViewportRulerAdapter,\n    protected platform: NbPlatform,\n    protected positionBuilder: NbOverlayPositionBuilder,\n    protected overlayContainer: NbOverlayContainerAdapter,\n  ) {}\n\n  global(): NbGlobalPositionStrategy {\n    return new NbGlobalPositionStrategy();\n  }\n\n  connectedTo(elementRef: ElementRef): NbAdjustableConnectedPositionStrategy {\n    return new NbAdjustableConnectedPositionStrategy(\n      elementRef,\n      this.viewportRuler,\n      this.document,\n      this.platform,\n      this.overlayContainer,\n    )\n      .withFlexibleDimensions(false)\n      .withPush(false);\n  }\n}\n","import {\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  DestroyableInjector,\n  EmbeddedViewRef,\n  HostBinding,\n  Injector,\n  Input,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\n\nimport { NbPosition } from './overlay-position';\nimport { NbComponentPortal, NbPortalOutletDirective, NbTemplatePortal } from './mapping';\n\nexport interface NbRenderableContainer {\n\n  /**\n   * A renderContent method renders content with provided context.\n   * Naturally, this job has to be done by ngOnChanges lifecycle hook, but\n   * ngOnChanges hook will be triggered only if we update content or context properties\n   * through template property binding syntax. But in our case we're updating these properties programmatically.\n   * */\n  renderContent();\n}\n\n@Component({\n    template: '',\n    standalone: false\n})\nexport class NbPositionedContainerComponent {\n  @Input() position: NbPosition;\n\n  @HostBinding('class.nb-overlay-top')\n  get top(): boolean {\n    return this.position === NbPosition.TOP;\n  }\n\n  @HostBinding('class.nb-overlay-top-start')\n  get topStart(): boolean {\n    return this.position === NbPosition.TOP_START;\n  }\n\n  @HostBinding('class.nb-overlay-top-end')\n  get topEnd(): boolean {\n    return this.position === NbPosition.TOP_END;\n  }\n\n  @HostBinding('class.nb-overlay-right')\n  get right(): boolean {\n    return this.position === NbPosition.RIGHT || this.position === NbPosition.END;\n  }\n\n  @HostBinding('class.nb-overlay-end-top')\n  get endTop(): boolean {\n    return this.position === NbPosition.END_TOP;\n  }\n\n  @HostBinding('class.nb-overlay-end-bottom')\n  get endBottom(): boolean {\n    return this.position === NbPosition.END_BOTTOM;\n  }\n\n  @HostBinding('class.nb-overlay-bottom')\n  get bottom(): boolean {\n    return this.position === NbPosition.BOTTOM;\n  }\n\n  @HostBinding('class.nb-overlay-bottom-start')\n  get bottomStart(): boolean {\n    return this.position === NbPosition.BOTTOM_START;\n  }\n\n  @HostBinding('class.nb-overlay-bottom-end')\n  get bottomEnd(): boolean {\n    return this.position === NbPosition.BOTTOM_END;\n  }\n\n  @HostBinding('class.nb-overlay-left')\n  get left(): boolean {\n    return this.position === NbPosition.LEFT || this.position === NbPosition.START;\n  }\n\n  @HostBinding('class.nb-overlay-start-top')\n  get startTop(): boolean {\n    return this.position === NbPosition.START_TOP;\n  }\n\n  @HostBinding('class.nb-overlay-start-bottom')\n  get startBottom(): boolean {\n    return this.position === NbPosition.START_BOTTOM;\n  }\n}\n\n\n@Component({\n    selector: 'nb-overlay-container',\n    template: `\n    <div *ngIf=\"isStringContent\" class=\"primitive-overlay\">{{ content }}</div>\n    <ng-template nbPortalOutlet></ng-template>\n  `,\n    standalone: false\n})\nexport class NbOverlayContainerComponent {\n\n  // TODO static must be false as of Angular 9.0.0, issues/1514\n  @ViewChild(NbPortalOutletDirective, { static: true }) portalOutlet: NbPortalOutletDirective;\n\n  isAttached: boolean = false;\n\n  content: string;\n\n  constructor(protected vcr: ViewContainerRef,\n              protected injector: Injector, private changeDetectorRef: ChangeDetectorRef) {\n  }\n\n  get isStringContent(): boolean {\n    return !!this.content;\n  }\n\n  attachComponentPortal<T>(portal: NbComponentPortal<T>, context?: Object): ComponentRef<T> {\n    portal.injector = this.createChildInjector();\n    const componentRef = this.portalOutlet.attachComponentPortal(portal);\n    if (context) {\n      Object.assign(componentRef.instance, context);\n    }\n    componentRef.changeDetectorRef.markForCheck();\n    componentRef.changeDetectorRef.detectChanges();\n    this.isAttached = true;\n    return componentRef;\n  }\n\n  attachTemplatePortal<C>(portal: NbTemplatePortal<C>): EmbeddedViewRef<C> {\n    const templateRef = this.portalOutlet.attachTemplatePortal(portal);\n    templateRef.detectChanges();\n    this.isAttached = true;\n    return templateRef;\n  }\n\n  attachStringContent(content: string) {\n    this.content = content;\n    this.changeDetectorRef.markForCheck();\n    this.changeDetectorRef.detectChanges();\n    this.isAttached = true;\n  }\n\n  detach() {\n    if (this.portalOutlet.hasAttached()) {\n      this.portalOutlet.detach();\n    }\n    this.attachStringContent(null);\n    this.isAttached = false;\n  }\n\n  protected createChildInjector(): DestroyableInjector {\n    return Injector.create({\n      parent: this.injector,\n      providers: [],\n    });\n  }\n}\n","import { ComponentRef, Injectable, TemplateRef, Type } from '@angular/core';\n\nimport {\n  NbComponentPortal,\n  NbComponentType,\n  NbOverlay,\n  NbOverlayConfig,\n  NbOverlayRef,\n} from './mapping';\nimport { NbScrollStrategyOptions } from '../adapter/block-scroll-strategy-adapter';\nimport { NbLayoutDirectionService } from '../../../services/direction.service';\n\n\nexport type NbOverlayContent = Type<any> | TemplateRef<any> | string;\n\nexport function patch<T>(container: ComponentRef<T>, containerContext: Object): ComponentRef<T> {\n  Object.assign(container.instance, containerContext);\n  container.changeDetectorRef.detectChanges();\n  return container;\n}\n\nexport function createContainer<T>(\n  ref: NbOverlayRef,\n  container: NbComponentType<T>,\n  context: Object,\n  ): ComponentRef<T> {\n  const containerRef = ref.attach(new NbComponentPortal(container, null, null));\n  patch(containerRef, context);\n  return containerRef;\n}\n\n@Injectable()\nexport class NbOverlayService {\n  constructor(protected overlay: NbOverlay, protected layoutDirection: NbLayoutDirectionService) {\n  }\n\n  get scrollStrategies(): NbScrollStrategyOptions {\n    return this.overlay.scrollStrategies;\n  }\n\n  create(config?: NbOverlayConfig): NbOverlayRef {\n    const overlayRef = this.overlay.create(config);\n    this.layoutDirection.onDirectionChange()\n      .subscribe(dir => overlayRef.setDirection(dir));\n    return overlayRef;\n  }\n}\n","import { Inject, Injectable, NgZone } from '@angular/core';\nimport { CdkScrollable, ScrollDispatcher } from '@angular/cdk/overlay';\nimport { merge, Observable } from 'rxjs';\n\nimport { NbPlatform } from '../platform/platform-service';\nimport { NbLayoutScrollService } from '../../../services/scroll.service';\nimport { NB_DOCUMENT } from '../../../theme.options';\n\n@Injectable()\nexport class NbScrollDispatcherAdapter extends ScrollDispatcher {\n  constructor(ngZone: NgZone,\n              platform: NbPlatform,\n              protected scrollService: NbLayoutScrollService,\n              @Inject(NB_DOCUMENT) document: any) {\n    super(ngZone, platform, document);\n  }\n\n  scrolled(auditTimeInMs?: number): Observable<CdkScrollable | void> {\n    return merge(\n      super.scrolled(auditTimeInMs),\n      this.scrollService.onScroll(),\n    );\n  }\n}\n\n","import { Inject, Injectable, NgZone } from '@angular/core';\nimport { BlockScrollStrategy, ScrollDispatcher, ScrollStrategyOptions } from '@angular/cdk/overlay';\n\nimport { NbLayoutScrollService } from '../../../services/scroll.service';\nimport { NB_DOCUMENT } from '../../../theme.options';\nimport { NbViewportRulerAdapter } from './viewport-ruler-adapter';\n\n\n/**\n * Overrides default block scroll strategy because default strategy blocks scrolling on the body only.\n * But Nebular has its own scrollable container - nb-layout. So, we need to block scrolling in it to.\n * */\n@Injectable()\nexport class NbBlockScrollStrategyAdapter extends BlockScrollStrategy {\n  constructor(@Inject(NB_DOCUMENT) document: any,\n              viewportRuler: NbViewportRulerAdapter,\n              protected scrollService: NbLayoutScrollService) {\n    super(viewportRuler, document);\n  }\n\n  enable() {\n    super.enable();\n    this.scrollService.scrollable(false);\n  }\n\n  disable() {\n    super.disable();\n    this.scrollService.scrollable(true);\n  }\n}\n\n@Injectable()\nexport class NbScrollStrategyOptions extends ScrollStrategyOptions {\n  constructor(protected scrollService: NbLayoutScrollService,\n              protected scrollDispatcher: ScrollDispatcher,\n              protected viewportRuler: NbViewportRulerAdapter,\n              protected ngZone: NgZone,\n              @Inject(NB_DOCUMENT) protected document) {\n    super(scrollDispatcher, viewportRuler, ngZone, document);\n  }\n\n  block = () => new NbBlockScrollStrategyAdapter(this.document, this.viewportRuler, this.scrollService);\n}\n\nexport type NbScrollStrategies = keyof Pick<NbScrollStrategyOptions, 'noop' | 'close' | 'block' | 'reposition'>;\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { OverlayContainer, ScrollDispatcher, ScrollStrategyOptions } from '@angular/cdk/overlay';\n\nimport { NbOverlayContainer } from '../overlay/mapping';\nimport { NbOverlayContainerAdapter } from './overlay-container-adapter';\nimport { NbScrollDispatcherAdapter } from './scroll-dispatcher-adapter';\nimport { NbViewportRulerAdapter } from './viewport-ruler-adapter';\nimport { NbBlockScrollStrategyAdapter, NbScrollStrategyOptions } from './block-scroll-strategy-adapter';\n\n\n@NgModule({})\nexport class NbCdkAdapterModule {\n  static forRoot(): ModuleWithProviders<NbCdkAdapterModule> {\n    return {\n      ngModule: NbCdkAdapterModule,\n      providers: [\n        NbViewportRulerAdapter,\n        NbOverlayContainerAdapter,\n        NbBlockScrollStrategyAdapter,\n        NbScrollDispatcherAdapter,\n        NbScrollStrategyOptions,\n        { provide: OverlayContainer, useExisting: NbOverlayContainerAdapter },\n        { provide: NbOverlayContainer, useExisting: NbOverlayContainerAdapter },\n        { provide: ScrollDispatcher, useExisting: NbScrollDispatcherAdapter },\n        { provide: ScrollStrategyOptions, useExisting: NbScrollStrategyOptions },\n      ],\n    };\n  }\n}\n","import { ComponentRef, Inject, Injectable } from '@angular/core';\nimport { EMPTY, fromEvent as observableFromEvent, merge as observableMerge, Observable, Subject } from 'rxjs';\nimport { debounceTime, delay, filter, map, repeat, share, switchMap, takeUntil, takeWhile } from 'rxjs/operators';\nimport { NB_DOCUMENT } from '../../../theme.options';\n\nexport type NbTriggerValues = 'noop' | 'click' | 'hover' | 'hint' | 'focus';\nexport enum NbTrigger {\n  NOOP = 'noop',\n  CLICK = 'click',\n  HOVER = 'hover',\n  HINT = 'hint',\n  FOCUS = 'focus',\n}\n\n/**\n * Provides entity with two event stream: show and hide.\n * Each stream provides different events depends on implementation.\n * We have three main trigger strategies: click, hint and hover.\n * */\nexport interface NbTriggerStrategy {\n  show$: Observable<never | Event>;\n  hide$: Observable<never | Event>;\n\n  destroy();\n}\n\n/**\n * TODO maybe we have to use renderer.listen instead of observableFromEvent?\n * Renderer provides capability use it in service worker, ssr and so on.\n * */\nexport abstract class NbTriggerStrategyBase implements NbTriggerStrategy {\n  destroy() {\n    this.destroyed$.next();\n  }\n\n  protected destroyed$ = new Subject<void>();\n\n  protected isNotOnHostOrContainer(element: Element): boolean {\n    return !this.isOnHost(element) && !this.isOnContainer(element);\n  }\n\n  protected isOnHostOrContainer(element: Element): boolean {\n    return this.isOnHost(element) || this.isOnContainer(element);\n  }\n\n  protected isOnHost(element: Element): boolean {\n    return this.host.contains(element);\n  }\n\n  protected isOnContainer(element: Element): boolean {\n    return this.container() && this.container().location.nativeElement.contains(element);\n  }\n\n  abstract show$: Observable<Event>;\n  abstract hide$: Observable<Event>;\n\n  constructor(\n    protected document: Document,\n    protected host: HTMLElement,\n    protected container: () => ComponentRef<any>,\n  ) {}\n}\n\n/**\n * Creates show and hide event streams.\n * Fires toggle event when the click was performed on the host element.\n * Fires close event when the click was performed on the document but\n * not on the host or container.\n * */\nexport class NbClickTriggerStrategy extends NbTriggerStrategyBase {\n  // since we should track click for both SHOW and HIDE event we firstly need to track the click and the state\n  // of the container and then later on decide should we hide it or show\n  // if we track the click & state separately this will case a behavior when the container is getting shown\n  // and then hidden right away\n  protected click$: Observable<[boolean, Event]> = observableFromEvent<Event>(this.document, 'click').pipe(\n    map((event: Event) => [!this.container() && this.isOnHost(event.target as Element), event] as [boolean, Event]),\n    share(),\n    takeUntil(this.destroyed$),\n  );\n\n  readonly show$: Observable<Event> = this.click$.pipe(\n    filter(([shouldShow]) => shouldShow),\n    map(([, event]) => event),\n    takeUntil(this.destroyed$),\n  );\n\n  readonly hide$: Observable<Event> = this.click$.pipe(\n    filter(([shouldShow, event]) => !shouldShow && !this.isOnContainer(event.target as Element)),\n    map(([, event]) => event),\n    takeUntil(this.destroyed$),\n  );\n}\n\n/**\n * Creates show and hide event streams.\n * Fires open event when a mouse hovers over the host element and stay over at least 100 milliseconds.\n * Fires close event when the mouse leaves the host element and stops out of the host and popover container.\n * */\nexport class NbHoverTriggerStrategy extends NbTriggerStrategyBase {\n  show$: Observable<Event> = observableFromEvent<Event>(this.host, 'mouseenter').pipe(\n    filter(() => !this.container()),\n    // this `delay & takeUntil & repeat` operators combination is a synonym for `conditional debounce`\n    // meaning that if one event occurs in some time after the initial one we won't react to it\n    delay(100),\n    // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n    takeUntil(observableFromEvent(this.host, 'mouseleave')),\n    repeat(),\n    takeUntil(this.destroyed$),\n  );\n\n  hide$: Observable<Event> = observableFromEvent<Event>(this.host, 'mouseleave').pipe(\n    switchMap(() =>\n      observableFromEvent<Event>(this.document, 'mousemove').pipe(\n        debounceTime(100),\n        takeWhile(() => !!this.container()),\n        filter((event) => this.isNotOnHostOrContainer(event.target as Element)),\n      ),\n    ),\n    takeUntil(this.destroyed$),\n  );\n}\n\n/**\n * Creates show and hide event streams.\n * Fires open event when a mouse hovers over the host element and stay over at least 100 milliseconds.\n * Fires close event when the mouse leaves the host element.\n * */\nexport class NbHintTriggerStrategy extends NbTriggerStrategyBase {\n  show$: Observable<Event> = observableFromEvent<Event>(this.host, 'mouseenter').pipe(\n    // this `delay & takeUntil & repeat` operators combination is a synonym for `conditional debounce`\n    // meaning that if one event occurs in some time after the initial one we won't react to it\n    delay(100),\n    // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n    takeUntil(observableFromEvent(this.host, 'mouseleave')),\n    repeat(),\n    takeUntil(this.destroyed$),\n  );\n\n  hide$: Observable<Event> = observableFromEvent(this.host, 'mouseleave').pipe(takeUntil(this.destroyed$));\n}\n\n/**\n * Creates show and hide event streams.\n * Fires open event when a focus is on the host element and stay over at least 100 milliseconds.\n * Fires close event when the focus leaves the host element.\n * */\nexport class NbFocusTriggerStrategy extends NbTriggerStrategyBase {\n  protected focusOut$: Observable<Event> = observableFromEvent<Event>(this.host, 'focusout').pipe(\n    switchMap(() =>\n      observableFromEvent<Event>(this.document, 'focusin').pipe(\n        takeWhile(() => !!this.container()),\n        filter((event) => this.isNotOnHostOrContainer(event.target as Element)),\n      ),\n    ),\n    takeUntil(this.destroyed$),\n  );\n\n  protected clickIn$: Observable<Event> = observableFromEvent<Event>(this.host, 'click').pipe(\n    filter(() => !this.container()),\n    takeUntil(this.destroyed$),\n  );\n\n  protected clickOut$: Observable<Event> = observableFromEvent<Event>(this.document, 'click').pipe(\n    filter(() => !!this.container()),\n    /**\n     * Event target of `click` could be different from `activeElement`.\n     * If during click you return focus to the host, it won't be opened.\n     */\n    filter((event) => {\n      if (this.isNotOnHostOrContainer(event.target as Element)) {\n        return this.isNotOnHostOrContainer(this.document.activeElement);\n      }\n      return false;\n    }),\n    takeUntil(this.destroyed$),\n  );\n\n  protected tabKeyPress$: Observable<Event> = observableFromEvent<Event>(this.document, 'keydown').pipe(\n    filter((event: Event) => (event as KeyboardEvent).keyCode === 9),\n    filter(() => !!this.container()),\n    takeUntil(this.destroyed$),\n  );\n\n  show$: Observable<Event> = observableMerge(observableFromEvent<Event>(this.host, 'focusin'), this.clickIn$).pipe(\n    filter(() => !this.container()),\n    debounceTime(100),\n    // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n    takeUntil(observableFromEvent(this.host, 'focusout')),\n    repeat(),\n    takeUntil(this.destroyed$),\n  );\n\n  hide$ = observableMerge(this.focusOut$, this.tabKeyPress$, this.clickOut$).pipe(takeUntil(this.destroyed$));\n}\n\n/**\n * Creates empty show and hide event streams.\n * */\nexport class NbNoopTriggerStrategy extends NbTriggerStrategyBase {\n  show$: Observable<Event> = EMPTY;\n  hide$: Observable<Event> = EMPTY;\n}\n\n@Injectable()\nexport class NbTriggerStrategyBuilderService {\n  protected _host: HTMLElement;\n  protected _container: () => ComponentRef<any>;\n  protected _trigger: NbTrigger;\n\n  constructor(@Inject(NB_DOCUMENT) protected _document) {}\n\n  trigger(trigger: NbTrigger): this {\n    this._trigger = trigger;\n    return this;\n  }\n\n  host(host: HTMLElement): this {\n    this._host = host;\n    return this;\n  }\n\n  container(container: () => ComponentRef<any>): this {\n    this._container = container;\n    return this;\n  }\n\n  build(): NbTriggerStrategy {\n    switch (this._trigger) {\n      case NbTrigger.CLICK:\n        return new NbClickTriggerStrategy(this._document, this._host, this._container);\n      case NbTrigger.HINT:\n        return new NbHintTriggerStrategy(this._document, this._host, this._container);\n      case NbTrigger.HOVER:\n        return new NbHoverTriggerStrategy(this._document, this._host, this._container);\n      case NbTrigger.FOCUS:\n        return new NbFocusTriggerStrategy(this._document, this._host, this._container);\n      case NbTrigger.NOOP:\n        return new NbNoopTriggerStrategy(this._document, this._host, this._container);\n      default:\n        throw new Error('Trigger have to be provided');\n    }\n  }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../../shared/shared.module';\nimport { NbA11yModule } from '../a11y/a11y.module';\nimport { NbCdkMappingModule } from './mapping';\nimport { NbPositionBuilderService } from './overlay-position';\nimport { NbOverlayContainerComponent, NbPositionedContainerComponent } from './overlay-container';\nimport { NbOverlayService } from './overlay-service';\nimport { NbCdkAdapterModule } from '../adapter/adapter.module';\nimport { NbPositionHelper } from './position-helper';\nimport { NbTriggerStrategyBuilderService } from './overlay-trigger';\n\n\n@NgModule({\n  imports: [\n    NbCdkMappingModule,\n    NbSharedModule,\n  ],\n  declarations: [\n    NbPositionedContainerComponent,\n    NbOverlayContainerComponent,\n  ],\n  exports: [\n    NbCdkMappingModule,\n    NbCdkAdapterModule,\n    NbOverlayContainerComponent,\n  ],\n})\nexport class NbOverlayModule {\n  static forRoot(): ModuleWithProviders<NbOverlayModule> {\n    return {\n      ngModule: NbOverlayModule,\n      providers: [\n        NbPositionBuilderService,\n        NbTriggerStrategyBuilderService,\n        NbOverlayService,\n        NbPositionHelper,\n        ...NbCdkMappingModule.forRoot().providers,\n        ...NbCdkAdapterModule.forRoot().providers,\n        ...NbA11yModule.forRoot().providers,\n      ],\n    };\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { NbComponentOrCustomStatus, NbComponentStatus } from '../components/component-status';\n\n@Injectable()\nexport class NbStatusService {\n  readonly coreStatuses: NbComponentStatus[] = ['basic', 'primary', 'info', 'warning', 'danger', 'control'];\n\n  isCoreStatus(status: NbComponentOrCustomStatus): boolean {\n    return this.coreStatuses.includes(status as NbComponentStatus);\n  }\n\n  isCustomStatus(status: NbComponentOrCustomStatus): boolean {\n    if (this.isValidStatusString(status)) {\n      return !this.isCoreStatus(status);\n    }\n\n    return false;\n  }\n\n  getStatusClass(status: NbComponentOrCustomStatus): string | undefined {\n    if (this.isValidStatusString(status)) {\n      return `status-${status}`;\n    }\n\n    return undefined;\n  }\n\n  protected isValidStatusString(status: NbComponentOrCustomStatus): boolean {\n    return typeof status === 'string' && status.length > 0;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { DOCUMENT, NgModule, ModuleWithProviders, PLATFORM_ID } from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\n\nimport {\n  NB_BUILT_IN_JS_THEMES,\n  NB_MEDIA_BREAKPOINTS,\n  NbThemeOptions,\n  NB_THEME_OPTIONS,\n  NB_JS_THEMES,\n  NB_DOCUMENT,\n  NB_WINDOW,\n} from './theme.options';\nimport { NbThemeService } from './services/theme.service';\nimport { NbSpinnerService } from './services/spinner.service';\nimport { NbJSThemeOptions } from './services/js-themes/theme.options';\nimport { BUILT_IN_THEMES, NbJSThemesRegistry } from './services/js-themes-registry.service';\nimport {\n  DEFAULT_MEDIA_BREAKPOINTS,\n  NbMediaBreakpoint,\n  NbMediaBreakpointsService,\n} from './services/breakpoints.service';\nimport { NbLayoutDirectionService, NbLayoutDirection, NB_LAYOUT_DIRECTION } from './services/direction.service';\nimport { NbLayoutScrollService } from './services/scroll.service';\nimport { NbLayoutRulerService } from './services/ruler.service';\nimport { NbOverlayModule } from './components/cdk/overlay/overlay.module';\nimport { NbStatusService } from './services/status.service';\n\nexport function windowFactory(platformId: Object): Window | undefined {\n  if (isPlatformBrowser(platformId)) {\n    return window;\n  }\n\n  // Provide undefined to get the error when trying to access the window as it\n  // shouldn't be used outside the browser. Those who need to provide something\n  // instead of window (e.g. domino window when running in node) could override\n  // NB_WINDOW token.\n  return undefined;\n}\n\n@NgModule({\n  imports: [\n    CommonModule,\n  ],\n  exports: [\n  ],\n})\nexport class NbThemeModule {\n\n  // TODO: check the options (throw exception?)\n  /**\n   * Main Theme Module\n   *\n   * @param nbThemeOptions {NbThemeOptions} Main theme options\n   * @param nbJSThemes {NbJSThemeOptions[]} List of JS Themes, will be merged with default themes\n   * @param nbMediaBreakpoints {NbMediaBreakpoint} Available media breakpoints\n   * @param layoutDirection {NbLayoutDirection} Layout direction\n   *\n   * @returns {ModuleWithProviders}\n   */\n  static forRoot(nbThemeOptions: NbThemeOptions = { name: 'default' },\n                 nbJSThemes?: NbJSThemeOptions[],\n                 nbMediaBreakpoints?: NbMediaBreakpoint[],\n                 layoutDirection?: NbLayoutDirection): ModuleWithProviders<NbThemeModule> {\n\n    return {\n      ngModule: NbThemeModule,\n      providers: [\n        { provide: NB_THEME_OPTIONS, useValue: nbThemeOptions || {} },\n        { provide: NB_BUILT_IN_JS_THEMES, useValue: BUILT_IN_THEMES },\n        { provide: NB_JS_THEMES, useValue: nbJSThemes || [] },\n        { provide: NB_MEDIA_BREAKPOINTS, useValue: nbMediaBreakpoints || DEFAULT_MEDIA_BREAKPOINTS },\n        { provide: NB_DOCUMENT, useExisting: DOCUMENT },\n        { provide: NB_WINDOW, useFactory: windowFactory, deps: [ PLATFORM_ID ] },\n        NbJSThemesRegistry,\n        NbThemeService,\n        NbMediaBreakpointsService,\n        NbSpinnerService,\n        { provide: NB_LAYOUT_DIRECTION, useValue: layoutDirection || NbLayoutDirection.LTR },\n        NbLayoutDirectionService,\n        NbLayoutScrollService,\n        NbLayoutRulerService,\n        ...NbOverlayModule.forRoot().providers,\n        NbStatusService,\n      ],\n    };\n  }\n}\n","export class NbColorHelper {\n  static shade(color, weight) {\n    return NbColorHelper.mix('#000000', color, weight);\n  }\n\n  static tint(color, weight) {\n    return NbColorHelper.mix('#ffffff', color, weight);\n  }\n\n  static mix(color1, color2, weight) {\n    const d2h = (d) => d.toString(16);\n    const h2d = (h) => parseInt(h, 16);\n\n    let result = '#';\n    for (let i = 1; i < 7; i += 2) {\n      const firstPart = h2d(color1.substr(i, 2));\n      const secondPart = h2d(color2.substr(i, 2));\n      const resultPart = d2h(Math.floor(secondPart + (firstPart - secondPart) * (weight / 100.0)));\n      result += ('0' + resultPart).slice(-2);\n    }\n    return result;\n  }\n\n  static hexToRgbA(hex, alpha) {\n    let c;\n    if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)) {\n      c = hex.substring(1).split('');\n      if (c.length === 3) {\n        c = [c[0], c[0], c[1], c[1], c[2], c[2]];\n      }\n      c = '0x' + c.join('');\n      return 'rgba(' + [(c >> 16) & 255, (c >> 8) & 255, c & 255].join(',') + ',' + alpha + ')';\n    }\n    throw new Error('Bad Hex');\n  }\n}\n","import { NbIcon } from './icon';\n\nexport interface NbIcons {\n  [key: string]: NbIcon | string;\n}\n\nexport enum NbIconPackType  {\n  SVG = 'svg',\n  FONT = 'font',\n}\n\nexport interface NbIconPackParams {\n  packClass?: string,\n  [name: string]: any,\n}\n\nexport interface NbFontIconPackParams extends NbIconPackParams {\n  iconClassPrefix?: string,\n}\n\nexport interface NbIconPack {\n  name: string;\n  type: NbIconPackType;\n  icons: Map<string, NbIcon | string>;\n  params: NbIconPackParams,\n}\n","import { NbFontIconPackParams, NbIconPackParams } from './icon-pack';\n\nexport interface NbIconOptions {\n  [name: string]: any;\n}\n\nexport interface NbIcon {\n  getClasses(options?: NbIconOptions): string[];\n  getContent(options?: NbIconOptions): string;\n}\n\nexport class NbFontIcon implements NbIcon {\n\n  constructor(protected name, protected content: any, protected params: NbFontIconPackParams = {}) {}\n\n  getClasses(options?: NbIconOptions): string[] {\n    const classes = [];\n\n    if (this.params.packClass) {\n      classes.push(this.params.packClass);\n    }\n\n    const name = this.params.iconClassPrefix ? `${this.params.iconClassPrefix}-${this.name}` : this.name;\n    classes.push(name);\n    return classes;\n  }\n\n  getContent(options?: NbIconOptions): string {\n    return this.content;\n  }\n}\n\nexport class NbSvgIcon implements NbIcon {\n\n  constructor(protected name, protected content: any, protected params: NbIconPackParams = {}) {}\n\n  getClasses(options?: NbIconOptions): string[] {\n    const classes = [];\n\n    if (this.params.packClass) {\n      classes.push(this.params.packClass);\n    }\n    return classes;\n  }\n\n  getContent(options?: NbIconOptions): string {\n    return this.content;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable } from '@angular/core';\nimport { NbFontIconPackParams, NbIconPack, NbIconPackParams, NbIconPackType, NbIcons } from './icon-pack';\nimport { NbFontIcon, NbIcon, NbSvgIcon } from './icon';\n\nexport class NbIconDefinition {\n  name: string;\n  type: string;\n  pack: string;\n  icon: NbIcon;\n}\n\nfunction throwPackNotFoundError(name: string) {\n  throw Error(`Icon Pack '${name}' is not registered`);\n}\n\nfunction throwNoDefaultPackError() {\n  throw Error('Default pack is not registered.');\n}\n\nfunction throwWrongPackTypeError(name: string, type: string, desiredType: string) {\n  throw Error(`Pack '${name}' is not an '${desiredType}' Pack and its type is '${type}'`);\n}\n\n/**\n * This service allows to register multiple icon packs to use them later within `<nb-icon></nb-icon>` component.\n */\n@Injectable({ providedIn: 'root' })\nexport class NbIconLibraries {\n  protected packs: Map<string, NbIconPack> = new Map();\n  protected defaultPack: NbIconPack;\n\n  /**\n   * Registers new Svg icon pack\n   * @param {string} name\n   * @param {NbIcon} icons\n   * @param {NbIconPackParams} params\n   */\n  registerSvgPack(name: string, icons: NbIcons, params: NbIconPackParams = {}) {\n    this.packs.set(name, {\n      name,\n      icons: new Map(Object.entries(icons)),\n      params,\n      type: NbIconPackType.SVG,\n    });\n  }\n\n  /**\n   * Registers new font pack\n   * @param {string} name\n   * @param {NbIconPackParams} params\n   */\n  registerFontPack(name: string, params: NbFontIconPackParams = {}) {\n    this.packs.set(name, {\n      name,\n      params,\n      icons: new Map(),\n      type: NbIconPackType.FONT,\n    });\n  }\n\n  /**\n   * Returns pack by name\n   * @param {string} name\n   */\n  getPack(name: string): NbIconPack {\n    return this.packs.get(name);\n  }\n\n  /**\n   * Sets pack as a default\n   * @param {string} name\n   */\n  setDefaultPack(name: string) {\n    if (!this.packs.has(name)) {\n      throwPackNotFoundError(name);\n    }\n\n    this.defaultPack = this.packs.get(name);\n  }\n\n  /**\n   * Returns Svg icon\n   * @param {string} name\n   * @param {string} pack\n   *\n   * @returns NbIconDefinition\n   */\n  getSvgIcon(name: string, pack?: string): NbIconDefinition | null {\n    const iconsPack = pack ? this.getPackOrThrow(pack) : this.getDefaultPackOrThrow();\n\n    if (iconsPack.type !== NbIconPackType.SVG) {\n      throwWrongPackTypeError(iconsPack.name, iconsPack.type, 'SVG');\n    }\n\n    const icon = this.getIconFromPack(name, iconsPack);\n\n    if (!icon) {\n      return null;\n    }\n\n    return {\n      name,\n      pack: iconsPack.name,\n      type: NbIconPackType.SVG,\n      icon: this.createSvgIcon(name, icon, iconsPack.params),\n    };\n  }\n\n  /**\n   * Returns Font icon\n   * @param {string} name\n   * @param {string} pack\n   *\n   * @returns NbIconDefinition\n   */\n  getFontIcon(name: string, pack?: string): NbIconDefinition {\n    const iconsPack = pack ? this.getPackOrThrow(pack) : this.getDefaultPackOrThrow();\n\n    if (iconsPack.type !== NbIconPackType.FONT) {\n      throwWrongPackTypeError(iconsPack.name, iconsPack.type, 'Font');\n    }\n\n    const icon = this.getIconFromPack(name, iconsPack) ?? '';\n    const iconContent = iconsPack.params.ligature ? name : icon;\n\n    return {\n      name,\n      pack: iconsPack.name,\n      type: NbIconPackType.FONT,\n      icon: this.createFontIcon(name, iconContent, iconsPack.params),\n    };\n  }\n\n  /**\n   * Returns an icon\n   * @param {string} name\n   * @param {string} pack\n   *\n   * @returns NbIconDefinition\n   */\n  getIcon(name: string, pack?: string): NbIconDefinition | null {\n    const iconsPack = pack ? this.getPackOrThrow(pack) : this.getDefaultPackOrThrow();\n\n    if (iconsPack.type === NbIconPackType.SVG) {\n      return this.getSvgIcon(name, pack);\n    }\n\n    return this.getFontIcon(name, pack);\n  }\n\n  protected createSvgIcon(name: string, content: NbIcon | string, params: NbIconPackParams): NbSvgIcon {\n    return content instanceof NbSvgIcon ? content : new NbSvgIcon(name, content, params);\n  }\n\n  protected createFontIcon(name: string, content: NbIcon | string, params: NbFontIconPackParams): NbFontIcon {\n    return content instanceof NbFontIcon ? content : new NbFontIcon(name, content, params);\n  }\n\n  protected getPackOrThrow(name: string): NbIconPack {\n    const pack: NbIconPack = this.packs.get(name);\n    if (!pack) {\n      throwPackNotFoundError(name);\n    }\n    return pack;\n  }\n\n  protected getDefaultPackOrThrow(): NbIconPack {\n    if (!this.defaultPack) {\n      throwNoDefaultPackError();\n    }\n    return this.defaultPack;\n  }\n\n  protected getIconFromPack(name: string, pack: NbIconPack): NbIcon | string | null {\n    if (pack.icons.has(name)) {\n      return pack.icons.get(name);\n    }\n\n    return null;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnInit,\n  Renderer2,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbIconLibraries } from './icon-libraries';\n\nexport interface NbIconConfig {\n  icon: string;\n  pack?: string;\n  status?: NbComponentOrCustomStatus;\n  options?: { [name: string]: any };\n}\n\n/**\n * Icon component. Allows to render both `svg` and `font` icons.\n * Starting from Nebular 4.0 uses [Eva Icons](https://akveo.github.io/eva-icons/) pack by default.\n *\n * Basic icon example:\n * @stacked-example(Showcase, icon/icon-showcase.component)\n *\n * Icon configuration:\n *\n * ```html\n * <nb-icon icon=\"star\"></nb-icon>\n * ```\n * ### Installation\n *\n * By default Nebular comes without any pre-installed icon pack.\n * Starting with Nebular 4.0.0 we ship separate package called `@nebular/eva-icons`\n * which integrates SVG [Eva Icons](https://akveo.github.io/eva-icons/) pack to Nebular. To add it to your\n * project run:\n * ```sh\n * npm i eva-icons @nebular/eva-icons\n * ```\n * This command will install Eva Icons pack. Then register `NbEvaIconsModule` into your app module:\n * ```ts\n * import { NbEvaIconsModule } from '@nebular/eva-icons';\n *\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbEvaIconsModule,\n *   ],\n * })\n * export class AppModule { }\n * ```\n * Last thing, import `NbIconModule` to your feature module where you need to show an icon:\n * ```ts\n * import { NbIconModule } from '@nebular/theme';\n *\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbIconModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Icon can be colored using `status` input:\n * ```html\n * <nb-icon icon=\"star\" status=\"warning\"></nb-icon>\n * ```\n *\n * Colored icons:\n * @stacked-example(Colored Icons, icon/icon-colors.component)\n *\n * In case you need to specify an icon from a specific icon pack, this could be done using `pack` input property:\n * ```html\n * <nb-icon icon=\"star\" pack=\"font-awesome\"></nb-icon>\n * ```\n * Additional icon settings (if available by the icon pack) could be passed using `options` input:\n *\n * ```html\n * <nb-icon icon=\"star\" [options]=\"{ animation: { type: 'zoom' } }\"></nb-icon>\n * ```\n *\n * @styles\n *\n * icon-font-size:\n * icon-line-height:\n * icon-width:\n * icon-height:\n * icon-svg-vertical-align:\n * icon-basic-color:\n * icon-primary-color:\n * icon-info-color:\n * icon-success-color:\n * icon-warning-color:\n * icon-danger-color:\n * icon-control-color:\n */\n@Component({\n    selector: 'nb-icon',\n    styleUrls: [`./icon.component.scss`],\n    template: '',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbIconComponent implements NbIconConfig, OnChanges, OnInit {\n\n  protected iconDef;\n  protected prevClasses = [];\n\n  @HostBinding('innerHtml')\n  html: SafeHtml = '';\n\n  @HostBinding('class.status-primary')\n  get primary() {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-info')\n  get info() {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-success')\n  get success() {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning() {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger() {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic() {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control() {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  /**\n   * Icon name\n   * @param {string} status\n   */\n  @Input() icon: string;\n\n  /**\n   * Icon pack name\n   * @param {string} status\n   */\n  @Input() pack: string;\n\n  /**\n   * Additional icon settings\n   * @param {[name: string]: any}\n   */\n  @Input() options: { [name: string]: any };\n\n  /**\n   * Icon status (adds specific styles):\n   * `basic`, `primary`, `info`, `success`, `warning`, `danger`, `control`\n   */\n  @Input() status?: NbComponentOrCustomStatus;\n\n  /**\n   * Sets all icon configurable properties via config object.\n   * If passed value is a string set icon name.\n   * @docs-private\n   */\n  @Input()\n  get config(): string | NbIconConfig {\n    return this._config;\n  }\n  set config(value: string | NbIconConfig) {\n    if (!value) {\n      return;\n    }\n\n    this._config = value;\n\n    if (typeof value === 'string') {\n      this.icon = value;\n    } else {\n      this.icon = value.icon;\n      this.pack = value.pack;\n      this.status = value.status;\n      this.options = value.options;\n    }\n  }\n  protected _config: string | NbIconConfig;\n\n  constructor(\n    protected sanitizer: DomSanitizer,\n    protected iconLibrary: NbIconLibraries,\n    protected el: ElementRef,\n    protected renderer: Renderer2,\n    protected statusService: NbStatusService,\n  ) {}\n\n  ngOnInit() {\n    this.iconDef = this.renderIcon(this.icon, this.pack, this.options);\n  }\n\n  ngOnChanges() {\n    const iconDef = this.iconLibrary.getIcon(this.icon, this.pack);\n    if (iconDef) {\n      this.renderIcon(this.icon, this.pack, this.options);\n    } else {\n      this.clearIcon();\n    }\n  }\n\n  renderIcon(name: string, pack?: string, options?: { [name: string]: any }) {\n    const iconDefinition = this.iconLibrary.getIcon(name, pack);\n\n    if (!iconDefinition) {\n      return undefined;\n    }\n\n    const content = iconDefinition.icon.getContent(options);\n    if (content) {\n      this.html = this.sanitizer.bypassSecurityTrustHtml(content);\n    }\n\n    this.assignClasses(iconDefinition.icon.getClasses(options));\n    return iconDefinition;\n  }\n\n  protected clearIcon(): void {\n    this.html = '';\n    this.assignClasses([]);\n  }\n\n  protected assignClasses(classes: string[]) {\n    this.prevClasses.forEach((className: string) => {\n      this.renderer.removeClass(this.el.nativeElement, className);\n    });\n\n    classes.forEach((className: string) => {\n      this.renderer.addClass(this.el.nativeElement, className);\n    });\n\n    this.prevClasses = classes;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { NbIconComponent } from './icon.component';\nimport { NbIconLibraries } from './icon-libraries';\n\n@NgModule({\n  imports: [\n    CommonModule,\n  ],\n  declarations: [\n    NbIconComponent,\n  ],\n  exports: [\n    NbIconComponent,\n  ],\n})\nexport class NbIconModule {\n\n  private essentialsPackName = 'nebular-essentials';\n\n  constructor(private iconsLibrary: NbIconLibraries) {\n\n    // in case of consequent calls we don't need to enable `nebular-essentials` pack again\n    if (this.iconsLibrary.getPack(this.essentialsPackName)) {\n      return;\n    }\n\n    /* eslint-disable max-len */\n    this.iconsLibrary.registerSvgPack(this.essentialsPackName, {\n      'chevron-down-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"chevron-down\"><rect width=\"24\" height=\"24\" opacity=\"0\"/><path d=\"M12 15.5a1 1 0 0 1-.71-.29l-4-4a1 1 0 1 1 1.42-1.42L12 13.1l3.3-3.18a1 1 0 1 1 1.38 1.44l-4 3.86a1 1 0 0 1-.68.28z\"/></g></g></svg>',\n      'chevron-up-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"chevron-up\"><rect width=\"24\" height=\"24\" transform=\"rotate(180 12 12)\" opacity=\"0\"/><path d=\"M16 14.5a1 1 0 0 1-.71-.29L12 10.9l-3.3 3.18a1 1 0 0 1-1.41 0 1 1 0 0 1 0-1.42l4-3.86a1 1 0 0 1 1.4 0l4 4a1 1 0 0 1 0 1.42 1 1 0 0 1-.69.28z\"/></g></g></svg>',\n      'chevron-left-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"chevron-left\"><rect width=\"24\" height=\"24\" transform=\"rotate(90 12 12)\" opacity=\"0\"/><path d=\"M13.36 17a1 1 0 0 1-.72-.31l-3.86-4a1 1 0 0 1 0-1.4l4-4a1 1 0 1 1 1.42 1.42L10.9 12l3.18 3.3a1 1 0 0 1 0 1.41 1 1 0 0 1-.72.29z\"/></g></g></svg>',\n      'chevron-right-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"chevron-right\"><rect width=\"24\" height=\"24\" transform=\"rotate(-90 12 12)\" opacity=\"0\"/><path d=\"M10.5 17a1 1 0 0 1-.71-.29 1 1 0 0 1 0-1.42L13.1 12 9.92 8.69a1 1 0 0 1 0-1.41 1 1 0 0 1 1.42 0l3.86 4a1 1 0 0 1 0 1.4l-4 4a1 1 0 0 1-.7.32z\"/></g></g></svg>',\n      'checkmark-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"checkmark\"><rect width=\"24\" height=\"24\" opacity=\"0\"/><path d=\"M9.86 18a1 1 0 0 1-.73-.32l-4.86-5.17a1 1 0 1 1 1.46-1.37l4.12 4.39 8.41-9.2a1 1 0 1 1 1.48 1.34l-9.14 10a1 1 0 0 1-.73.33z\"/></g></g></svg>',\n      'paper-plane-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"paper-plane\"><rect width=\"24\" height=\"24\" opacity=\"0\"/><path d=\"M21 4a1.31 1.31 0 0 0-.06-.27v-.09a1 1 0 0 0-.2-.3 1 1 0 0 0-.29-.19h-.09a.86.86 0 0 0-.31-.15H20a1 1 0 0 0-.3 0l-18 6a1 1 0 0 0 0 1.9l8.53 2.84 2.84 8.53a1 1 0 0 0 1.9 0l6-18A1 1 0 0 0 21 4zm-4.7 2.29l-5.57 5.57L5.16 10zM14 18.84l-1.86-5.57 5.57-5.57z\"/></g></g></svg>',\n      'file-text-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"file-text\"><rect width=\"24\" height=\"24\" opacity=\"0\"/><path d=\"M15 16H9a1 1 0 0 0 0 2h6a1 1 0 0 0 0-2z\"/><path d=\"M9 14h3a1 1 0 0 0 0-2H9a1 1 0 0 0 0 2z\"/><path d=\"M19.74 8.33l-5.44-6a1 1 0 0 0-.74-.33h-7A2.53 2.53 0 0 0 4 4.5v15A2.53 2.53 0 0 0 6.56 22h10.88A2.53 2.53 0 0 0 20 19.5V9a1 1 0 0 0-.26-.67zM14 5l2.74 3h-2a.79.79 0 0 1-.74-.85zm3.44 15H6.56a.53.53 0 0 1-.56-.5v-15a.53.53 0 0 1 .56-.5H12v3.15A2.79 2.79 0 0 0 14.71 10H18v9.5a.53.53 0 0 1-.56.5z\"/></g></g></svg>',\n      'alert-triangle-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"alert-triangle\"><rect width=\"24\" height=\"24\" transform=\"rotate(90 12 12)\" opacity=\"0\"/><path d=\"M22.56 16.3L14.89 3.58a3.43 3.43 0 0 0-5.78 0L1.44 16.3a3 3 0 0 0-.05 3A3.37 3.37 0 0 0 4.33 21h15.34a3.37 3.37 0 0 0 2.94-1.66 3 3 0 0 0-.05-3.04zm-1.7 2.05a1.31 1.31 0 0 1-1.19.65H4.33a1.31 1.31 0 0 1-1.19-.65 1 1 0 0 1 0-1l7.68-12.73a1.48 1.48 0 0 1 2.36 0l7.67 12.72a1 1 0 0 1 .01 1.01z\"/><circle cx=\"12\" cy=\"16\" r=\"1\"/><path d=\"M12 8a1 1 0 0 0-1 1v4a1 1 0 0 0 2 0V9a1 1 0 0 0-1-1z\"/></g></g></svg>',\n      'question-mark-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"question-mark\"><rect width=\"24\" height=\"24\" transform=\"rotate(180 12 12)\" opacity=\"0\"/><path d=\"M17 9A5 5 0 0 0 7 9a1 1 0 0 0 2 0 3 3 0 1 1 3 3 1 1 0 0 0-1 1v2a1 1 0 0 0 2 0v-1.1A5 5 0 0 0 17 9z\"/><circle cx=\"12\" cy=\"19\" r=\"1\"/></g></g></svg>',\n      'email-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"email\"><rect width=\"24\" height=\"24\" opacity=\"0\"/><path d=\"M19 4H5a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V7a3 3 0 0 0-3-3zm-.67 2L12 10.75 5.67 6zM19 18H5a1 1 0 0 1-1-1V7.25l7.4 5.55a1 1 0 0 0 .6.2 1 1 0 0 0 .6-.2L20 7.25V17a1 1 0 0 1-1 1z\"/></g></g></svg>',\n      'flash-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"flash\"><rect width=\"24\" height=\"24\" opacity=\"0\"/><path d=\"M11.11 23a1 1 0 0 1-.34-.06 1 1 0 0 1-.65-1.05l.77-7.09H5a1 1 0 0 1-.83-1.56l7.89-11.8a1 1 0 0 1 1.17-.38 1 1 0 0 1 .65 1l-.77 7.14H19a1 1 0 0 1 .83 1.56l-7.89 11.8a1 1 0 0 1-.83.44zM6.87 12.8H12a1 1 0 0 1 .74.33 1 1 0 0 1 .25.78l-.45 4.15 4.59-6.86H12a1 1 0 0 1-1-1.11l.45-4.15z\"/></g></g></svg>',\n      'search-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"search\"><rect width=\"24\" height=\"24\" opacity=\"0\"/><path d=\"M20.71 19.29l-3.4-3.39A7.92 7.92 0 0 0 19 11a8 8 0 1 0-8 8 7.92 7.92 0 0 0 4.9-1.69l3.39 3.4a1 1 0 0 0 1.42 0 1 1 0 0 0 0-1.42zM5 11a6 6 0 1 1 6 6 6 6 0 0 1-6-6z\"/></g></g></svg>',\n      'close-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"close\"><rect width=\"24\" height=\"24\" transform=\"rotate(180 12 12)\" opacity=\"0\"/><path d=\"M13.41 12l4.3-4.29a1 1 0 1 0-1.42-1.42L12 10.59l-4.29-4.3a1 1 0 0 0-1.42 1.42l4.3 4.29-4.3 4.29a1 1 0 0 0 0 1.42 1 1 0 0 0 1.42 0l4.29-4.3 4.29 4.3a1 1 0 0 0 1.42 0 1 1 0 0 0 0-1.42z\"/></g></g></svg>',\n      'collapse-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"collapse\"><rect width=\"24\" height=\"24\" transform=\"rotate(180 12 12)\" opacity=\"0\"/><path d=\"M19 9h-2.58l3.29-3.29a1 1 0 1 0-1.42-1.42L15 7.57V5a1 1 0 0 0-1-1 1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h5a1 1 0 0 0 0-2z\"/><path d=\"M10 13H5a1 1 0 0 0 0 2h2.57l-3.28 3.29a1 1 0 0 0 0 1.42 1 1 0 0 0 1.42 0L9 16.42V19a1 1 0 0 0 1 1 1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1z\"/></g></g></svg>',\n      'expand-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"expand\"><rect width=\"24\" height=\"24\" transform=\"rotate(180 12 12)\" opacity=\"0\"/><path d=\"M20 5a1 1 0 0 0-1-1h-5a1 1 0 0 0 0 2h2.57l-3.28 3.29a1 1 0 0 0 0 1.42 1 1 0 0 0 1.42 0L18 7.42V10a1 1 0 0 0 1 1 1 1 0 0 0 1-1z\"/><path d=\"M10.71 13.29a1 1 0 0 0-1.42 0L6 16.57V14a1 1 0 0 0-1-1 1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h5a1 1 0 0 0 0-2H7.42l3.29-3.29a1 1 0 0 0 0-1.42z\"/></g></g></svg>',\n      'minus-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"minus\"><rect width=\"24\" height=\"24\" transform=\"rotate(180 12 12)\" opacity=\"0\"/><path d=\"M19 13H5a1 1 0 0 1 0-2h14a1 1 0 0 1 0 2z\"/></g></g></svg>',\n      'minus-bold-outline': '<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" fill=\"currentColor\" viewBox=\"0 0 8 2\" width=\"100%\" height=\"100%\"><defs><rect id=\"nb-mbo\" y=\"3\" width=\"8\" height=\"2\" rx=\"1\"/></defs><use xlink:href=\"#nb-mbo\" transform=\"translate(0 -3)\" fill-rule=\"evenodd\"/></svg>',\n      'checkmark-bold-outline': '<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" fill=\"currentColor\" viewBox=\"0 0 8 7\" width=\"100%\" height=\"100%\"><defs><path id=\"nb-cbo\" d=\"M6.039 1.43a1.11 1.11 0 0 1 1.517-.228c.483.342.588.998.234 1.466L4.431 7.1a1 1 0 0 1-1.492.115L.317 4.677a1.023 1.023 0 0 1 .002-1.483 1.113 1.113 0 0 1 1.535.002l1.641 1.59L6.04 1.428z\"/></defs><use xlink:href=\"#nb-cbo\" transform=\"translate(0 -1)\" fill-rule=\"evenodd\"/></svg>',\n      'arrow-back': '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"arrow-back\"><rect width=\"24\" height=\"24\" transform=\"rotate(90 12 12)\" opacity=\"0\"/><path d=\"M19 11H7.14l3.63-4.36a1 1 0 1 0-1.54-1.28l-5 6a1.19 1.19 0 0 0-.09.15c0 .05 0 .08-.07.13A1 1 0 0 0 4 12a1 1 0 0 0 .07.36c0 .05 0 .08.07.13a1.19 1.19 0 0 0 .09.15l5 6A1 1 0 0 0 10 19a1 1 0 0 0 .64-.23 1 1 0 0 0 .13-1.41L7.14 13H19a1 1 0 0 0 0-2z\"/></g></g></svg>',\n    });\n    /* eslint-enable max-len */\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, Input, HostBinding } from '@angular/core';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentOrCustomStatus, NbComponentStatus } from '../component-status';\n\n/**\n * Component intended to be used within the `<nb-card>` component.\n * It adds styles for a preset header section.\n *\n * @styles\n *\n * card-header-text-color:\n * card-header-text-font-family:\n * card-header-text-font-size:\n * card-header-text-font-weight:\n * card-header-text-line-height:\n * card-header-basic-background-color:\n * card-header-basic-text-color:\n * card-header-primary-background-color:\n * card-header-primary-text-color:\n * card-header-info-background-color:\n * card-header-info-text-color:\n * card-header-success-background-color:\n * card-header-success-text-color:\n * card-header-warning-background-color:\n * card-header-warning-text-color:\n * card-header-danger-background-color:\n * card-header-danger-text-color:\n * card-header-control-background-color:\n * card-header-control-text-color:\n */\n@Component({\n    selector: 'nb-card-header',\n    template: `<ng-content></ng-content>`,\n    standalone: false\n})\nexport class NbCardHeaderComponent {\n}\n\n/**\n * Component intended to be used within  the `<nb-card>` component.\n * Adds styles for a preset body section.\n */\n@Component({\n    selector: 'nb-card-body',\n    template: `<ng-content></ng-content>`,\n    standalone: false\n})\nexport class NbCardBodyComponent {\n}\n\n/**\n * Component intended to be used within  the `<nb-card>` component.\n * Adds styles for a preset footer section.\n */\n@Component({\n    selector: 'nb-card-footer',\n    template: `<ng-content></ng-content>`,\n    standalone: false\n})\nexport class NbCardFooterComponent {\n}\n\n/**\n * Basic content container component.\n *\n * Basic card example:\n * @stacked-example(Showcase, card/card-showcase.component)\n *\n * Basic card configuration:\n *\n * ```html\n * <nb-card>\n *   <nb-card-body>\n *     Card\n *   </nb-card-body>\n * </nb-card>\n * ```\n *\n * ### Installation\n *\n * Import `NbCardModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbCardModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Card with header and footer:\n * @stacked-example(With Header & Footer, card/card-full.component)\n *\n * Most of the time main card content goes to `nb-card-body`,\n * so it is styled and aligned in accordance with the header and footer.\n * In case you need a higher level of control, you can pass contend directly to `nb-card`,\n * so `nb-card-body` styling will not be applied.\n *\n * Consider an example with `nb-list` component:\n * @stacked-example(Card with list, card/card-without-body.component)\n *\n * Colored cards could be simply configured by providing a `status` property:\n * @stacked-example(Colored Card, card/card-colors.component)\n *\n * It is also possible to assign an `accent` property for a slight card highlight\n * as well as combine it with `status`:\n * @stacked-example(Accent Card, card/card-accents.component)\n *\n * Cards of smaller sizes could be combined and put on the same row with a bigger card so they have the same heights.\n * @stacked-example(Card sizes combinations, card/card-sizes-combinations.component)\n *\n * @additional-example(Multiple Sizes, card/card-sizes.component)\n *\n * @styles\n *\n * card-background-color:\n * card-text-color:\n * card-text-font-family:\n * card-text-font-size:\n * card-text-font-weight:\n * card-text-line-height:\n * card-border-width:\n * card-border-style:\n * card-border-color:\n * card-border-radius:\n * card-padding:\n * card-shadow:\n * card-divider-color:\n * card-divider-style:\n * card-divider-width:\n * card-height-tiny:\n * card-height-small:\n * card-height-medium:\n * card-height-large:\n * card-height-giant:\n * card-margin-bottom:\n * card-scrollbar-color:\n * card-scrollbar-background-color:\n * card-scrollbar-width:\n */\n@Component({\n    selector: 'nb-card',\n    styleUrls: ['./card.component.scss'],\n    template: `\n    <ng-content select=\"nb-card-header\"></ng-content>\n    <ng-content select=\"nb-card-body\"></ng-content>\n    <ng-content></ng-content>\n    <ng-content select=\"nb-card-footer\"></ng-content>\n  `,\n    standalone: false\n})\nexport class NbCardComponent {\n\n  /**\n   * Card size, available sizes:\n   * tiny, small, medium, large, giant\n   */\n  @Input()\n  get size(): '' | NbComponentSize {\n    return this._size;\n  }\n  set size(value: '' | NbComponentSize) {\n    this._size = value;\n  }\n  _size: '' | NbComponentSize = '';\n\n  /**\n   * Card status:\n   * `basic`, `primary`, `info`, `success`, `warning`, `danger`, `control`\n   */\n  @Input()\n  status: '' | NbComponentOrCustomStatus = '';\n\n  /**\n   * Card accent (color of the top border):\n   * `basic`, `primary`, `info`, `success`, `warning`, `danger`, `control`\n   */\n  @Input()\n  accent: '' | NbComponentStatus = '';\n\n  @HostBinding('class.size-tiny')\n  get tiny() {\n    return this.size === 'tiny';\n  }\n\n  @HostBinding('class.size-small')\n  get small() {\n    return this.size === 'small';\n  }\n\n  @HostBinding('class.size-medium')\n  get medium() {\n    return this.size === 'medium';\n  }\n\n  @HostBinding('class.size-large')\n  get large() {\n    return this.size === 'large';\n  }\n\n  @HostBinding('class.size-giant')\n  get giant() {\n    return this.size === 'giant';\n  }\n\n  @HostBinding('class.status-primary')\n  get primary() {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-info')\n  get info() {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-success')\n  get success() {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning() {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger() {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic() {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control() {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class.accent')\n  get hasAccent() {\n    return this.accent;\n  }\n\n  @HostBinding('class.accent-primary')\n  get primaryAccent() {\n    return this.accent === 'primary';\n  }\n\n  @HostBinding('class.accent-info')\n  get infoAccent() {\n    return this.accent === 'info';\n  }\n\n  @HostBinding('class.accent-success')\n  get successAccent() {\n    return this.accent === 'success';\n  }\n\n  @HostBinding('class.accent-warning')\n  get warningAccent() {\n    return this.accent === 'warning';\n  }\n\n  @HostBinding('class.accent-danger')\n  get dangerAccent() {\n    return this.accent === 'danger';\n  }\n\n  @HostBinding('class.accent-basic')\n  get basicAccent() {\n    return this.accent === 'basic';\n  }\n\n  @HostBinding('class.accent-control')\n  get controlAccent() {\n    return this.accent === 'control';\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  constructor(protected statusService: NbStatusService) {\n  }\n}\n","import { Component, Input, HostBinding } from '@angular/core';\n\n/**\n *\n * Reveal card example:\n * @stacked-example(My example, reveal-card/reveal-card-showcase.component)\n *\n * As a content Reveal card accepts two instances of `nb-card` - for front and back sides.\n *\n * Basic reveal card configuration:\n *\n * ```html\n * <nb-reveal-card>\n *   <nb-card-front>\n *     <nb-card>\n *       <nb-card-body>\n *         Front\n *       </nb-card-body>\n *     </nb-card>\n *   </nb-card-front>\n *   <nb-card-back>\n *     <nb-card>\n *       <nb-card-body>\n *         Back\n *       </nb-card-body>\n *     </nb-card>\n *   </nb-card-back>\n * </nb-reveal-card>\n * ```\n *\n * ### Installation\n *\n * Import `NbCardModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbCardModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Reveal Card with header and footer:\n * @stacked-example(With Header & Footer, reveal-card/reveal-card-full.component)\n *\n * Colored reveal-cards could be simply configured by providing a `status` property:\n * @stacked-example(Colored Card, reveal-card/reveal-card-colors.component)\n *\n * It is also possible to assign an `accent` property for a slight card highlight\n * as well as combine it with `status`:\n * @stacked-example(Accent Card, reveal-card/reveal-card-accents.component)\n *\n * @additional-example(Multiple Sizes, reveal-card/reveal-card-sizes.component)\n */\n@Component({\n    selector: 'nb-reveal-card',\n    styleUrls: ['./reveal-card.component.scss'],\n    template: `\n    <ng-content select=\"nb-card-front\"></ng-content>\n    <div class=\"second-card-container\">\n      <ng-content select=\"nb-card-back\"></ng-content>\n    </div>\n    <a *ngIf=\"showToggleButton\" class=\"reveal-button\" (click)=\"toggle()\">\n      <nb-icon icon=\"chevron-down-outline\" pack=\"nebular-essentials\" aria-hidden=\"true\"></nb-icon>\n    </a>\n  `,\n    standalone: false\n})\nexport class NbRevealCardComponent {\n  /**\n   * Reveal state\n   * @type boolean\n   */\n  @Input()\n  @HostBinding('class.revealed')\n  revealed: boolean = false;\n\n  /**\n   * Show/hide toggle button to be able to control toggle from your code\n   * @type {boolean}\n   */\n  @Input() showToggleButton = true;\n\n  toggle() {\n    this.revealed = !this.revealed;\n  }\n}\n","import { Component, Input, HostBinding } from '@angular/core';\n\n/**\n *\n * Flip card example:\n * @stacked-example(Showcase, flip-card/flip-card-showcase.component)\n *\n * As a content Flip card accepts two instances of `nb-card` - for front and back sides.\n *\n * Basic flip card configuration:\n *\n * ```html\n * <nb-flip-card>\n *   <nb-card-front>\n *     <nb-card>\n *       <nb-card-body>\n *         Front\n *       </nb-card-body>\n *     </nb-card>\n *   </nb-card-front>\n *   <nb-card-back>\n *     <nb-card>\n *       <nb-card-body>\n *         Back\n *       </nb-card-body>\n *     </nb-card>\n *   </nb-card-back>\n * </nb-flip-card>\n * ```\n *\n * ### Installation\n *\n * Import `NbCardModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbCardModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Flip Card with header and footer:\n * @stacked-example(With Header & Footer, flip-card/flip-card-full.component.ts)\n *\n * Colored flip-cards could be simply configured by providing a `status` property:\n * @stacked-example(Colored Card, flip-card/flip-card-colors.component)\n *\n * It is also possible to assign an `accent` property for a slight card highlight\n * as well as combine it with `status`:\n * @stacked-example(Accent Card, flip-card/flip-card-accents.component)\n *\n * @additional-example(Multiple Sizes, flip-card/flip-card-sizes.component)\n *\n */\n@Component({\n    selector: 'nb-flip-card',\n    styleUrls: ['./flip-card.component.scss'],\n    template: `\n    <div class=\"flipcard-body\">\n      <div class=\"front-container\">\n        <ng-content select=\"nb-card-front\"></ng-content>\n        <a *ngIf=\"showToggleButton\" class=\"flip-button\" (click)=\"toggle()\">\n          <nb-icon icon=\"chevron-left-outline\" pack=\"nebular-essentials\" aria-hidden=\"true\"></nb-icon>\n        </a>\n      </div>\n      <div class=\"back-container\">\n        <ng-content select=\"nb-card-back\"></ng-content>\n        <a *ngIf=\"showToggleButton\" class=\"flip-button\" (click)=\"toggle()\">\n          <nb-icon icon=\"chevron-left-outline\" pack=\"nebular-essentials\" aria-hidden=\"true\"></nb-icon>\n        </a>\n      </div>\n    </div>\n  `,\n    standalone: false\n})\nexport class NbFlipCardComponent {\n  /**\n   * Flip state\n   * @type boolean\n   */\n  @Input()\n  @HostBinding('class.flipped')\n  flipped: boolean = false;\n\n  /**\n   * Show/hide toggle button to be able to control toggle from your code\n   * @type {boolean}\n   */\n  @Input() showToggleButton = true;\n\n  toggle() {\n    this.flipped = !this.flipped;\n  }\n}\n","import { Component } from '@angular/core';\n\n/**\n * Component intended to be used within the `<nb-flip-card>` and `<nb-reveal-card>` components.\n *\n * Use it as a container for the front card.\n */\n@Component({\n    selector: 'nb-card-front',\n    template: '<ng-content select=\"nb-card\"></ng-content>',\n    standalone: false\n})\nexport class NbCardFrontComponent { }\n\n/**\n * Component intended to be used within the `<nb-flip-card>` and `<nb-reveal-card>` components.\n *\n * Use it as a container for the back card.\n */\n@Component({\n    selector: 'nb-card-back',\n    template: '<ng-content select=\"nb-card\"></ng-content>',\n    standalone: false\n})\nexport class NbCardBackComponent { }\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbIconModule } from '../icon/icon.module';\nimport {\n  NbCardComponent,\n  NbCardBodyComponent,\n  NbCardFooterComponent,\n  NbCardHeaderComponent,\n} from './card.component';\n\nimport { NbRevealCardComponent } from './reveal-card/reveal-card.component';\nimport { NbFlipCardComponent } from './flip-card/flip-card.component';\nimport { NbCardFrontComponent, NbCardBackComponent } from './shared/shared.component';\n\nconst NB_CARD_COMPONENTS = [\n  NbCardComponent,\n  NbCardBodyComponent,\n  NbCardFooterComponent,\n  NbCardHeaderComponent,\n  NbRevealCardComponent,\n  NbFlipCardComponent,\n  NbCardFrontComponent,\n  NbCardBackComponent,\n];\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n    NbIconModule,\n  ],\n  declarations: [\n    ...NB_CARD_COMPONENTS,\n  ],\n  exports: [\n    ...NB_CARD_COMPONENTS,\n  ],\n})\nexport class NbCardModule { }\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { EventEmitter } from '@angular/core';\n\nexport interface NbCalendarDay {\n  name: string;\n  isHoliday: boolean;\n}\n\nexport type NbCalendarViewModeValues = 'year' | 'month' | 'date';\nexport enum NbCalendarViewMode {\n  YEAR = 'year',\n  MONTH = 'month',\n  DATE = 'date',\n}\n\nexport type NbCalendarSizeValues = 'medium' | 'large';\nexport enum NbCalendarSize {\n  MEDIUM = 'medium',\n  LARGE = 'large',\n}\n\nexport interface NbCalendarCell<D, T> {\n  date: D;\n  select: EventEmitter<D>;\n  selectedValue?: T;\n  visibleDate?: D;\n  min?: D;\n  max?: D;\n  filter?: (D) => boolean;\n  size?: NbCalendarSize;\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nexport type NbNullableInput = string | null | undefined;\nexport type NbBooleanInput = boolean | NbNullableInput;\n\nexport function convertToBoolProperty(val: any): boolean {\n  if (typeof val === 'string') {\n    val = val.toLowerCase().trim();\n\n    return val === 'true' || val === '';\n  }\n\n  return !!val;\n}\n\nexport function getElementHeight(el) {\n  /**\n   *\n   * TODO: Move helpers in separate common module.\n   * TODO: Provide window through di token.\n   * */\n  const style = window.getComputedStyle(el);\n  const marginTop = parseInt(style.getPropertyValue('margin-top'), 10);\n  const marginBottom = parseInt(style.getPropertyValue('margin-bottom'), 10);\n  return el.offsetHeight + marginTop + marginBottom;\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { TranslationWidth } from '@angular/common';\n\nexport const enum NbDayPeriod {\n  AM = 'AM', // before midday, 0 - 11 in 24-hour format.\n  PM = 'PM', // after midday, 12 - 23 in 24-hour format.\n}\n\nexport abstract class NbDateService<D> {\n  readonly DAYS_IN_WEEK: number = 7;\n\n  /**\n   * Number of hours in AM/PM day periods.\n   **/\n  readonly HOURS_IN_DAY_PERIOD = 12;\n\n  protected locale: string;\n\n  setLocale(locale: any) {\n    this.locale = locale;\n  }\n\n  /**\n   * Checks if the date is between the start date and the end date.\n   * */\n  isBetween(date: D, start: D, end: D): boolean {\n    return this.compareDates(date, start) > 0 && this.compareDates(date, end) < 0;\n  };\n\n  /**\n   * Checks is two dates have the same day.\n   * */\n  isSameDaySafe(date1: D, date2: D): boolean {\n    return date1 && date2 && this.isSameDay(date1, date2);\n  };\n\n  /**\n   * Checks is two dates have the same month.\n   * */\n  isSameMonthSafe(date1: D, date2: D): boolean {\n    return date1 && date2 && this.isSameMonth(date1, date2);\n  }\n\n  /**\n   * Checks is two dates have the same year.\n   * */\n  isSameYearSafe(date1: D, date2: D): boolean {\n    return date1 && date2 && this.isSameYear(date1, date2);\n  }\n\n  /**\n   * Returns date with selected hour\n   * */\n  abstract setHours(date: D, hour: number): D;\n\n  /**\n   * Returns date with selected minute\n   * */\n  abstract setMinutes(date: D, minute: number): D;\n\n  /**\n   * Returns date with selected second\n   * */\n  abstract setSeconds(date: D, second: number): D;\n\n  /**\n   * Returns date with selected milliseconds\n   * */\n  abstract setMilliseconds(date: D, second: number): D;\n  /**\n   * Returns true if date string is valid date string according to the provided format.\n   * */\n  abstract isValidDateString(date: string, format: string): boolean;\n\n  /**\n   * Returns true if time string is valid time string according to the provided format.\n   * */\n  abstract isValidTimeString(date: string, format: string): boolean;\n\n  /**\n   * Returns today date.\n   * */\n  abstract today(): D;\n\n  /**\n   * Gets the time format based on locale\n   * */\n  abstract getLocaleTimeFormat(): string;\n\n  /**\n   * Gets the date of the month component of the given date.\n   */\n  abstract getDate(date: D): number;\n\n  /**\n   * Gets the hour component of the given date.\n   */\n  abstract getHours(date: D): number;\n\n  /**\n   * Gets the minute component of the given date.\n   */\n  abstract getMinutes(date: D): number;\n\n  /**\n   * Gets the second component of the given date.\n   */\n  abstract getSeconds(date: D): number;\n\n  /**\n   * Gets the second component of the given date.\n   */\n  abstract getMilliseconds(date: D): number;\n\n  /**\n   * Gets the month component of the given date.\n   * */\n  abstract getMonth(date: D): number;\n\n  /**\n   * Gets the year component of the given date.\n   * */\n  abstract getYear(date: D): number;\n\n  /**\n   * Returns day of the week of the given date.\n   */\n  abstract getDayOfWeek(date: D): number;\n\n  /**\n   * Returns first day of the week, it can be 1 if week starts from monday\n   * and 0 if from sunday and so on.\n   * */\n  abstract getFirstDayOfWeek(): number;\n\n  /**\n   * Returns localized month name by date and style.\n   * */\n  abstract getMonthName(date: D, style?: TranslationWidth): string;\n\n  /**\n   * Returns localized month name by month index and style.\n   * */\n  abstract getMonthNameByIndex(month: number, style?: TranslationWidth): string;\n\n  /**\n   * Returns localized days names.\n   * */\n  abstract getDayOfWeekNames(style?: TranslationWidth): string[];\n\n  /**\n   * Parses the date string according to the passed format.\n   * */\n  abstract parse(date: string, format: string): D;\n\n  /**\n   * Transforms the date to the string according to the passed format.\n   * */\n  abstract format(date: D, format: string): string;\n\n  /**\n   * Creates new date from year, month and date.\n   * */\n  abstract createDate(year: number, month: number, date: number): D;\n\n  /**\n   * Checks is two dates have the same year.\n   * */\n  abstract isSameYear(date1: D, date2: D): boolean;\n\n  /**\n   * Checks is two dates have the same month.\n   * */\n  abstract isSameMonth(date1: D, date2: D): boolean;\n\n  /**\n   * Checks is two dates have the same day.\n   * */\n  abstract isSameDay(date1: D, date2: D): boolean;\n\n  /**\n   * Compares two dates.\n   * Returns 0 if dates are the same.\n   * Returns 1 if the first date is greater than the second.\n   * Returns -1 if the second date is greater than the first.\n   * */\n  abstract compareDates(date1: D, date2: D): number;\n\n  /**\n   * Clones passed date.\n   * */\n  abstract clone(date: D): D;\n\n  /**\n   * Creates the same date but with day equals to 1.\n   * */\n  abstract getMonthStart(date: D): D;\n\n  /**\n   * Creates the same date but with day equals to the last day in this month.\n   * */\n  abstract getMonthEnd(date: D): D;\n\n  /**\n   * Creates the same date but with month equals to 0 and day equals to 1.\n   * */\n  abstract getYearStart(date: D): D;\n\n  /**\n   * Creates the same date but with month equals to 11 and day equals to 31.\n   * */\n  abstract getYearEnd(date: D): D;\n\n  /**\n   * Returns number of days in the date.\n   * */\n  abstract getNumberOfDaysInMonth(date: D): number;\n\n  /**\n   * Returns date with added number of days.\n   * */\n  abstract addDay(date: D, days: number): D;\n\n  /**\n   * Returns date with added number of months.\n   * */\n  abstract addMonth(date: D, months: number): D;\n\n  /**\n   * Returns date with added number of hours.\n   * */\n  abstract addHours(date: D, hour: number): D;\n\n   /**\n   * Returns date with added number of minutes.\n   * */\n  abstract addMinutes(date: D, minute: number): D;\n\n  /**\n   * Returns date with added number of years.\n   * */\n  abstract addYear(date: D, years: number): D;\n\n  abstract getId(): string;\n\n  abstract getWeekNumber(date: D): number;\n\n  abstract getDateFormat(): string;\n\n  abstract getTwelveHoursFormat(): string;\n\n  /**\n   * Returns date with added number of years.\n   * */\n  abstract valueOf(date: D): number;\n\n  isSameHourAndMinute(date1: D, date2: D): boolean {\n    return this.isSameHour(date1, date2) && this.isSameMinute(date1, date2);\n  }\n\n  isSameHour(date1: D, date2: D): boolean {\n    return this.getHours(date1) === this.getHours(date2);\n  }\n\n  isSameMinute(date1: D, date2: D): boolean {\n    return this.getMinutes(date1) === this.getMinutes(date2);\n  }\n\n  getTwentyFourHoursFormat(): string {\n    return 'HH:mm';\n  }\n\n  getTwentyFourHoursFormatWithSeconds(): string {\n    return 'HH:mm:ss'\n  }\n\n  getTwelveHoursFormatWithSeconds(): string {\n    return 'hh:mm:ss a';\n  }\n\n  getDayPeriod(date: D): NbDayPeriod {\n    const isFirstDayPeriod = this.getHours(date) < this.HOURS_IN_DAY_PERIOD;\n    if (isFirstDayPeriod) {\n      return NbDayPeriod.AM;\n    } else {\n      return NbDayPeriod.PM;\n    }\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nexport const batch = <T>(target: T[], batchSize: number, offset: number = 0): T[][] => {\n  return target.reduce((res, item, index) => {\n    const chunkIndex = Math.floor((index + offset) / batchSize);\n    if (!res[chunkIndex]) {\n      res[chunkIndex] = [];\n    }\n    res[chunkIndex].push(item);\n    return res;\n  }, [])\n};\n/**\n * returns array with numbers from first argument to bound.\n * */\nexport const rangeFromTo = <T>(from: number, to = 0, producer: (number) => T = i => i) => {\n  const arr = [];\n\n  for (let i = from; i < to; i++) {\n    arr.push(producer(i));\n  }\n\n  return arr;\n};\n\n/**\n * returns array with numbers from zero to bound.\n * */\nexport const range = <T>(bound: number, producer: (number) => T = i => i) => {\n  return rangeFromTo(0, bound, producer);\n};\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { range, batch } from '../helpers';\nimport { NbDateService } from './date.service';\n\n@Injectable()\nexport class NbCalendarYearModelService<D> {\n\n  protected yearsInView = 12;\n  protected yearsInRow = 4;\n\n  constructor(protected dateService: NbDateService<D>) {\n  }\n\n  getYearsInView(): number {\n    return this.yearsInView;\n  }\n\n  getYearsInRow(): number {\n    return this.yearsInRow;\n  }\n\n  getViewYears(viewYear: D): D[][] {\n    const year = this.dateService.getYear(viewYear);\n    let viewStartYear: number;\n    if (year >= 0) {\n      viewStartYear = year - (year % this.yearsInView);\n    } else {\n      viewStartYear = year - (year % this.yearsInView + this.yearsInView);\n    }\n    const years = range(this.yearsInView).map(i => this.copyWithYear(viewStartYear + i, viewYear));\n\n    return batch(years, this.yearsInRow);\n  }\n\n  protected copyWithYear(year: number, date: D): D {\n    return this.dateService.createDate(year, this.dateService.getMonth(date), this.dateService.getDate(date));\n  }\n}\n","import {\n  AfterContentChecked,\n  AfterViewInit,\n  ChangeDetectorRef,\n  ContentChildren,\n  Directive,\n  ElementRef,\n  EmbeddedViewRef,\n  HostBinding,\n  Input,\n  NgZone,\n  QueryList,\n  Renderer2,\n} from '@angular/core';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbComponentShape } from '../component-shape';\nimport { NbIconComponent } from '../icon/icon.component';\n\nexport type NbButtonAppearance = 'filled' | 'outline' | 'ghost' | 'hero';\n\nexport type NbButtonProperties = Pick<NbButton, 'appearance' | 'size' | 'shape' | 'status' | 'disabled'> & Object;\n\n@Directive()\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport abstract class NbButton implements AfterContentChecked, AfterViewInit {\n  /**\n   * Button size, available sizes:\n   * `tiny`, `small`, `medium`, `large`, `giant`\n   */\n  @Input() size: NbComponentSize = 'medium';\n\n  /**\n   * Button status (adds specific styles):\n   * `primary`, `info`, `success`, `warning`, `danger`\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Button shapes: `rectangle`, `round`, `semi-round`\n   */\n  @Input() shape: NbComponentShape = 'rectangle';\n\n  /**\n   * Button appearance: `filled`, `outline`, `ghost`, `hero`\n   */\n  @Input() appearance: NbButtonAppearance = 'filled';\n\n  /**\n   * Sets `filled` appearance\n   */\n  @Input()\n  @HostBinding('class.appearance-filled')\n  get filled(): boolean {\n    return this.appearance === 'filled';\n  }\n  set filled(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'filled';\n    }\n  }\n  static ngAcceptInputType_filled: NbBooleanInput;\n\n  /**\n   * Sets `outline` appearance\n   */\n  @Input()\n  @HostBinding('class.appearance-outline')\n  get outline(): boolean {\n    return this.appearance === 'outline';\n  }\n  set outline(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'outline';\n    }\n  }\n  static ngAcceptInputType_outline: NbBooleanInput;\n\n  /**\n   * Sets `ghost` appearance\n   */\n  @Input()\n  @HostBinding('class.appearance-ghost')\n  get ghost(): boolean {\n    return this.appearance === 'ghost';\n  }\n  set ghost(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'ghost';\n    }\n  }\n  static ngAcceptInputType_ghost: NbBooleanInput;\n\n  /**\n   * If set element will fill its container\n   */\n  @Input()\n  @HostBinding('class.full-width')\n  get fullWidth(): boolean {\n    return this._fullWidth;\n  }\n  set fullWidth(value: boolean) {\n    this._fullWidth = convertToBoolProperty(value);\n  }\n  private _fullWidth = false;\n  static ngAcceptInputType_fullWidth: NbBooleanInput;\n\n  /**\n   * Disables the button\n   */\n  @Input()\n  @HostBinding('attr.aria-disabled')\n  @HostBinding('class.btn-disabled')\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value: boolean) {\n    if (this.disabled !== convertToBoolProperty(value)) {\n      this._disabled = !this.disabled;\n      this.renderer.setProperty(this.hostElement.nativeElement, 'disabled', this.disabled);\n    }\n  }\n  private _disabled: boolean = false;\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  /**\n   * Tabindex of the button.\n   */\n  @Input() tabIndex: number;\n\n  // issue #794\n  @HostBinding('attr.tabindex')\n  get tabbable(): string {\n    if (this.disabled) {\n      return '-1';\n    }\n\n    if (this.tabIndex == null) {\n      return '0';\n    }\n\n    return this.tabIndex.toString();\n  }\n\n  @HostBinding('class.size-tiny')\n  get tiny() {\n    return this.size === 'tiny';\n  }\n\n  @HostBinding('class.size-small')\n  get small() {\n    return this.size === 'small';\n  }\n\n  @HostBinding('class.size-medium')\n  get medium() {\n    return this.size === 'medium';\n  }\n\n  @HostBinding('class.size-large')\n  get large() {\n    return this.size === 'large';\n  }\n\n  @HostBinding('class.size-giant')\n  get giant() {\n    return this.size === 'giant';\n  }\n\n  @HostBinding('class.shape-rectangle')\n  get rectangle() {\n    return this.shape === 'rectangle';\n  }\n\n  @HostBinding('class.shape-round')\n  get round() {\n    return this.shape === 'round';\n  }\n\n  @HostBinding('class.shape-semi-round')\n  get semiRound() {\n    return this.shape === 'semi-round';\n  }\n\n  @HostBinding('class.icon-start') iconLeft = false;\n\n  @HostBinding('class.icon-end') iconRight = false;\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  @ContentChildren(NbIconComponent, { read: ElementRef }) icons: QueryList<ElementRef>;\n\n  protected constructor(\n    protected renderer: Renderer2,\n    protected hostElement: ElementRef<HTMLElement>,\n    protected cd: ChangeDetectorRef,\n    protected zone: NgZone,\n    protected statusService: NbStatusService,\n  ) {\n  }\n\n  ngAfterContentChecked() {\n    const firstNode = this.nodes[0];\n    const lastNode = this.nodes[this.nodes.length - 1];\n\n    this.iconLeft = this.isIconExist(firstNode);\n    this.iconRight = this.isIconExist(lastNode);\n  }\n\n  ngAfterViewInit() {\n    // TODO: #2254\n    this.zone.runOutsideAngular(() => setTimeout(() => {\n      this.renderer.addClass(this.hostElement.nativeElement, 'nb-transition');\n    }));\n  }\n\n  /**\n   * @docs-private\n   **/\n  updateProperties(config: Partial<NbButtonProperties>) {\n    let isPropertyChanged = false;\n\n    for (const key in config) {\n      if (config.hasOwnProperty(key) && this[key] !== config[key]) {\n        this[key] = config[key];\n        isPropertyChanged = true;\n      }\n    }\n\n    if (isPropertyChanged) {\n      this.cd.markForCheck();\n    }\n  }\n\n  get iconElement() {\n    const el = this.hostElement.nativeElement;\n    return el.querySelector('nb-icon');\n  }\n\n  protected get nodes(): Node[] {\n    return (this.cd as EmbeddedViewRef<any>).rootNodes.filter((child: Node) => child.nodeType !== Node.COMMENT_NODE);\n  }\n\n  protected isIconExist(node: Node): boolean {\n    return this.icons.some((item) => item.nativeElement === node);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  Renderer2,\n  NgZone,\n} from '@angular/core';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbButton } from './base-button';\n\n/**\n * Basic button component.\n *\n * Default button size is `medium` and status color is `basic`:\n * @stacked-example(Button Showcase, button/button-showcase.component)\n *\n * ```html\n * <button nbButton></button>\n * ```\n * ### Installation\n *\n * Import `NbButtonModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbButtonModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Buttons are available in multiple colors using `status` property:\n * @stacked-example(Button Colors, button/button-colors.component.html)\n *\n * There are three button sizes:\n *\n * @stacked-example(Button Sizes, button/button-sizes.component.html)\n *\n * And two additional style types - `outline`:\n *\n * @stacked-example(Outline Buttons, button/button-outline.component.html)\n *\n * and `hero`:\n *\n * @stacked-example(Button Hero, button/button-hero.component.html)\n *\n * Buttons available in different shapes, which could be combined with the other properties:\n * @stacked-example(Button Shapes, button/button-shapes.component)\n *\n * `nbButton` could be applied to the following selectors - `button`, `input[type=\"button\"]`, `input[type=\"submit\"]`\n * and `a`:\n * @stacked-example(Button Elements, button/button-types.component.html)\n *\n * Button can be made `fullWidth`:\n * @stacked-example(Full Width Button, button/button-full-width.component.html)\n *\n * Icon can be placed inside of a button as a child element:\n * @stacked-example(Icon Button, button/button-icon.component.html)\n *\n * @additional-example(Interactive example, button/button-interactive.component)\n *\n * @styles\n *\n * button-cursor:\n * button-outline-width:\n * button-outline-color:\n * button-text-font-family:\n * button-text-font-weight:\n * button-disabled-cursor:\n * button-tiny-text-font-size:\n * button-tiny-text-line-height:\n * button-tiny-icon-size:\n * button-tiny-icon-vertical-margin:\n * button-tiny-icon-offset:\n * button-small-text-font-size:\n * button-small-text-line-height:\n * button-small-icon-size:\n * button-small-icon-vertical-margin:\n * button-small-icon-offset:\n * button-medium-text-font-size:\n * button-medium-text-line-height:\n * button-medium-icon-size:\n * button-medium-icon-vertical-margin:\n * button-medium-icon-offset:\n * button-large-text-font-size:\n * button-large-text-line-height:\n * button-large-icon-size:\n * button-large-icon-vertical-margin:\n * button-large-icon-offset:\n * button-giant-text-font-size:\n * button-giant-text-line-height:\n * button-giant-icon-size:\n * button-giant-icon-vertical-margin:\n * button-giant-icon-offset:\n * button-rectangle-border-radius:\n * button-semi-round-border-radius:\n * button-round-border-radius:\n * button-filled-border-style:\n * button-filled-border-width:\n * button-filled-text-transform:\n * button-filled-tiny-padding:\n * button-filled-small-padding:\n * button-filled-medium-padding:\n * button-filled-large-padding:\n * button-filled-giant-padding:\n * button-filled-basic-background-color:\n * button-filled-basic-border-color:\n * button-filled-basic-text-color:\n * button-filled-basic-focus-background-color:\n * button-filled-basic-focus-border-color:\n * button-filled-basic-hover-background-color:\n * button-filled-basic-hover-border-color:\n * button-filled-basic-active-background-color:\n * button-filled-basic-active-border-color:\n * button-filled-basic-disabled-background-color:\n * button-filled-basic-disabled-border-color:\n * button-filled-basic-disabled-text-color:\n * button-filled-primary-background-color:\n * button-filled-primary-border-color:\n * button-filled-primary-text-color:\n * button-filled-primary-focus-background-color:\n * button-filled-primary-focus-border-color:\n * button-filled-primary-hover-background-color:\n * button-filled-primary-hover-border-color:\n * button-filled-primary-active-background-color:\n * button-filled-primary-active-border-color:\n * button-filled-primary-disabled-background-color:\n * button-filled-primary-disabled-border-color:\n * button-filled-primary-disabled-text-color:\n * button-filled-success-background-color:\n * button-filled-success-border-color:\n * button-filled-success-text-color:\n * button-filled-success-focus-background-color:\n * button-filled-success-focus-border-color:\n * button-filled-success-hover-background-color:\n * button-filled-success-hover-border-color:\n * button-filled-success-active-background-color:\n * button-filled-success-active-border-color:\n * button-filled-success-disabled-background-color:\n * button-filled-success-disabled-border-color:\n * button-filled-success-disabled-text-color:\n * button-filled-info-background-color:\n * button-filled-info-border-color:\n * button-filled-info-text-color:\n * button-filled-info-focus-background-color:\n * button-filled-info-focus-border-color:\n * button-filled-info-hover-background-color:\n * button-filled-info-hover-border-color:\n * button-filled-info-active-background-color:\n * button-filled-info-active-border-color:\n * button-filled-info-disabled-background-color:\n * button-filled-info-disabled-border-color:\n * button-filled-info-disabled-text-color:\n * button-filled-warning-background-color:\n * button-filled-warning-border-color:\n * button-filled-warning-text-color:\n * button-filled-warning-focus-background-color:\n * button-filled-warning-focus-border-color:\n * button-filled-warning-hover-background-color:\n * button-filled-warning-hover-border-color:\n * button-filled-warning-active-background-color:\n * button-filled-warning-active-border-color:\n * button-filled-warning-disabled-background-color:\n * button-filled-warning-disabled-border-color:\n * button-filled-warning-disabled-text-color:\n * button-filled-danger-background-color:\n * button-filled-danger-border-color:\n * button-filled-danger-text-color:\n * button-filled-danger-focus-background-color:\n * button-filled-danger-focus-border-color:\n * button-filled-danger-hover-background-color:\n * button-filled-danger-hover-border-color:\n * button-filled-danger-active-background-color:\n * button-filled-danger-active-border-color:\n * button-filled-danger-disabled-background-color:\n * button-filled-danger-disabled-border-color:\n * button-filled-danger-disabled-text-color:\n * button-filled-control-background-color:\n * button-filled-control-border-color:\n * button-filled-control-text-color:\n * button-filled-control-focus-background-color:\n * button-filled-control-focus-border-color:\n * button-filled-control-hover-background-color:\n * button-filled-control-hover-border-color:\n * button-filled-control-active-background-color:\n * button-filled-control-active-border-color:\n * button-filled-control-disabled-background-color:\n * button-filled-control-disabled-border-color:\n * button-filled-control-disabled-text-color:\n * button-outline-border-style:\n * button-outline-border-width:\n * button-outline-text-transform:\n * button-outline-focus-inset-shadow-length:\n * button-outline-tiny-padding:\n * button-outline-small-padding:\n * button-outline-medium-padding:\n * button-outline-large-padding:\n * button-outline-giant-padding:\n * button-outline-basic-background-color:\n * button-outline-basic-border-color:\n * button-outline-basic-text-color:\n * button-outline-basic-focus-background-color:\n * button-outline-basic-focus-border-color:\n * button-outline-basic-focus-text-color:\n * button-outline-basic-hover-background-color:\n * button-outline-basic-hover-border-color:\n * button-outline-basic-hover-text-color:\n * button-outline-basic-active-background-color:\n * button-outline-basic-active-border-color:\n * button-outline-basic-active-text-color:\n * button-outline-basic-disabled-background-color:\n * button-outline-basic-disabled-border-color:\n * button-outline-basic-disabled-text-color:\n * button-outline-primary-background-color:\n * button-outline-primary-border-color:\n * button-outline-primary-text-color:\n * button-outline-primary-focus-background-color:\n * button-outline-primary-focus-border-color:\n * button-outline-primary-focus-text-color:\n * button-outline-primary-hover-background-color:\n * button-outline-primary-hover-border-color:\n * button-outline-primary-hover-text-color:\n * button-outline-primary-active-background-color:\n * button-outline-primary-active-border-color:\n * button-outline-primary-active-text-color:\n * button-outline-primary-disabled-background-color:\n * button-outline-primary-disabled-border-color:\n * button-outline-primary-disabled-text-color:\n * button-outline-success-background-color:\n * button-outline-success-border-color:\n * button-outline-success-text-color:\n * button-outline-success-focus-background-color:\n * button-outline-success-focus-border-color:\n * button-outline-success-focus-text-color:\n * button-outline-success-hover-background-color:\n * button-outline-success-hover-border-color:\n * button-outline-success-hover-text-color:\n * button-outline-success-active-background-color:\n * button-outline-success-active-border-color:\n * button-outline-success-active-text-color:\n * button-outline-success-disabled-background-color:\n * button-outline-success-disabled-border-color:\n * button-outline-success-disabled-text-color:\n * button-outline-info-background-color:\n * button-outline-info-border-color:\n * button-outline-info-text-color:\n * button-outline-info-focus-background-color:\n * button-outline-info-focus-border-color:\n * button-outline-info-focus-text-color:\n * button-outline-info-hover-background-color:\n * button-outline-info-hover-border-color:\n * button-outline-info-hover-text-color:\n * button-outline-info-active-background-color:\n * button-outline-info-active-border-color:\n * button-outline-info-active-text-color:\n * button-outline-info-disabled-background-color:\n * button-outline-info-disabled-border-color:\n * button-outline-info-disabled-text-color:\n * button-outline-warning-background-color:\n * button-outline-warning-border-color:\n * button-outline-warning-text-color:\n * button-outline-warning-focus-background-color:\n * button-outline-warning-focus-border-color:\n * button-outline-warning-focus-text-color:\n * button-outline-warning-hover-background-color:\n * button-outline-warning-hover-border-color:\n * button-outline-warning-hover-text-color:\n * button-outline-warning-active-background-color:\n * button-outline-warning-active-border-color:\n * button-outline-warning-active-text-color:\n * button-outline-warning-disabled-background-color:\n * button-outline-warning-disabled-border-color:\n * button-outline-warning-disabled-text-color:\n * button-outline-danger-background-color:\n * button-outline-danger-border-color:\n * button-outline-danger-text-color:\n * button-outline-danger-focus-background-color:\n * button-outline-danger-focus-border-color:\n * button-outline-danger-focus-text-color:\n * button-outline-danger-hover-background-color:\n * button-outline-danger-hover-border-color:\n * button-outline-danger-hover-text-color:\n * button-outline-danger-active-background-color:\n * button-outline-danger-active-border-color:\n * button-outline-danger-active-text-color:\n * button-outline-danger-disabled-background-color:\n * button-outline-danger-disabled-border-color:\n * button-outline-danger-disabled-text-color:\n * button-outline-control-background-color:\n * button-outline-control-border-color:\n * button-outline-control-text-color:\n * button-outline-control-focus-background-color:\n * button-outline-control-focus-border-color:\n * button-outline-control-focus-text-color:\n * button-outline-control-hover-background-color:\n * button-outline-control-hover-border-color:\n * button-outline-control-hover-text-color:\n * button-outline-control-active-background-color:\n * button-outline-control-active-border-color:\n * button-outline-control-active-text-color:\n * button-outline-control-disabled-background-color:\n * button-outline-control-disabled-border-color:\n * button-outline-control-disabled-text-color:\n * button-ghost-background-color:\n * button-ghost-border-color:\n * button-ghost-border-style:\n * button-ghost-border-width:\n * button-ghost-text-transform:\n * button-ghost-focus-inset-shadow-length:\n * button-ghost-tiny-padding:\n * button-ghost-small-padding:\n * button-ghost-medium-padding:\n * button-ghost-large-padding:\n * button-ghost-giant-padding:\n * button-ghost-basic-text-color:\n * button-ghost-basic-focus-background-color:\n * button-ghost-basic-focus-border-color:\n * button-ghost-basic-focus-text-color:\n * button-ghost-basic-hover-background-color:\n * button-ghost-basic-hover-border-color:\n * button-ghost-basic-hover-text-color:\n * button-ghost-basic-active-background-color:\n * button-ghost-basic-active-border-color:\n * button-ghost-basic-active-text-color:\n * button-ghost-basic-disabled-background-color:\n * button-ghost-basic-disabled-border-color:\n * button-ghost-basic-disabled-text-color:\n * button-ghost-primary-text-color:\n * button-ghost-primary-focus-background-color:\n * button-ghost-primary-focus-border-color:\n * button-ghost-primary-focus-text-color:\n * button-ghost-primary-hover-background-color:\n * button-ghost-primary-hover-border-color:\n * button-ghost-primary-hover-text-color:\n * button-ghost-primary-active-background-color:\n * button-ghost-primary-active-border-color:\n * button-ghost-primary-active-text-color:\n * button-ghost-primary-disabled-background-color:\n * button-ghost-primary-disabled-border-color:\n * button-ghost-primary-disabled-text-color:\n * button-ghost-success-text-color:\n * button-ghost-success-focus-background-color:\n * button-ghost-success-focus-border-color:\n * button-ghost-success-focus-text-color:\n * button-ghost-success-hover-background-color:\n * button-ghost-success-hover-border-color:\n * button-ghost-success-hover-text-color:\n * button-ghost-success-active-background-color:\n * button-ghost-success-active-border-color:\n * button-ghost-success-active-text-color:\n * button-ghost-success-disabled-background-color:\n * button-ghost-success-disabled-border-color:\n * button-ghost-success-disabled-text-color:\n * button-ghost-info-text-color:\n * button-ghost-info-focus-background-color:\n * button-ghost-info-focus-border-color:\n * button-ghost-info-focus-text-color:\n * button-ghost-info-hover-background-color:\n * button-ghost-info-hover-border-color:\n * button-ghost-info-hover-text-color:\n * button-ghost-info-active-background-color:\n * button-ghost-info-active-border-color:\n * button-ghost-info-active-text-color:\n * button-ghost-info-disabled-background-color:\n * button-ghost-info-disabled-border-color:\n * button-ghost-info-disabled-text-color:\n * button-ghost-warning-text-color:\n * button-ghost-warning-focus-background-color:\n * button-ghost-warning-focus-border-color:\n * button-ghost-warning-focus-text-color:\n * button-ghost-warning-hover-background-color:\n * button-ghost-warning-hover-border-color:\n * button-ghost-warning-hover-text-color:\n * button-ghost-warning-active-background-color:\n * button-ghost-warning-active-border-color:\n * button-ghost-warning-active-text-color:\n * button-ghost-warning-disabled-background-color:\n * button-ghost-warning-disabled-border-color:\n * button-ghost-warning-disabled-text-color:\n * button-ghost-danger-text-color:\n * button-ghost-danger-focus-background-color:\n * button-ghost-danger-focus-border-color:\n * button-ghost-danger-focus-text-color:\n * button-ghost-danger-hover-background-color:\n * button-ghost-danger-hover-border-color:\n * button-ghost-danger-hover-text-color:\n * button-ghost-danger-active-background-color:\n * button-ghost-danger-active-border-color:\n * button-ghost-danger-active-text-color:\n * button-ghost-danger-disabled-background-color:\n * button-ghost-danger-disabled-border-color:\n * button-ghost-danger-disabled-text-color:\n * button-ghost-control-text-color:\n * button-ghost-control-focus-background-color:\n * button-ghost-control-focus-border-color:\n * button-ghost-control-focus-text-color:\n * button-ghost-control-hover-background-color:\n * button-ghost-control-hover-border-color:\n * button-ghost-control-hover-text-color:\n * button-ghost-control-active-background-color:\n * button-ghost-control-active-border-color:\n * button-ghost-control-active-text-color:\n * button-ghost-control-disabled-background-color:\n * button-ghost-control-disabled-border-color:\n * button-ghost-control-disabled-text-color:\n * button-hero-border-color:\n * button-hero-border-style:\n * button-hero-border-width:\n * button-hero-text-transform:\n * button-hero-tiny-padding:\n * button-hero-small-padding:\n * button-hero-medium-padding:\n * button-hero-large-padding:\n * button-hero-giant-padding:\n * button-hero-shadow:\n * button-hero-text-shadow:\n * button-hero-bevel-size:\n * button-hero-glow-size:\n * button-hero-outline-color:\n * button-hero-outline-width:\n * button-hero-basic-text-color:\n * button-hero-basic-bevel-color:\n * button-hero-basic-glow-color:\n * button-hero-basic-left-background-color:\n * button-hero-basic-right-background-color:\n * button-hero-basic-focus-left-background-color:\n * button-hero-basic-focus-right-background-color:\n * button-hero-basic-hover-left-background-color:\n * button-hero-basic-hover-right-background-color:\n * button-hero-basic-active-left-background-color:\n * button-hero-basic-active-right-background-color:\n * button-hero-basic-disabled-background-color:\n * button-hero-basic-disabled-text-color:\n * button-hero-primary-text-color:\n * button-hero-primary-bevel-color:\n * button-hero-primary-glow-color:\n * button-hero-primary-left-background-color:\n * button-hero-primary-right-background-color:\n * button-hero-primary-focus-left-background-color:\n * button-hero-primary-focus-right-background-color:\n * button-hero-primary-hover-left-background-color:\n * button-hero-primary-hover-right-background-color:\n * button-hero-primary-active-left-background-color:\n * button-hero-primary-active-right-background-color:\n * button-hero-primary-disabled-background-color:\n * button-hero-primary-disabled-text-color:\n * button-hero-success-text-color:\n * button-hero-success-bevel-color:\n * button-hero-success-glow-color:\n * button-hero-success-left-background-color:\n * button-hero-success-right-background-color:\n * button-hero-success-focus-left-background-color:\n * button-hero-success-focus-right-background-color:\n * button-hero-success-hover-left-background-color:\n * button-hero-success-hover-right-background-color:\n * button-hero-success-active-left-background-color:\n * button-hero-success-active-right-background-color:\n * button-hero-success-disabled-background-color:\n * button-hero-success-disabled-text-color:\n * button-hero-info-text-color:\n * button-hero-info-bevel-color:\n * button-hero-info-glow-color:\n * button-hero-info-left-background-color:\n * button-hero-info-right-background-color:\n * button-hero-info-focus-left-background-color:\n * button-hero-info-focus-right-background-color:\n * button-hero-info-hover-left-background-color:\n * button-hero-info-hover-right-background-color:\n * button-hero-info-active-left-background-color:\n * button-hero-info-active-right-background-color:\n * button-hero-info-disabled-background-color:\n * button-hero-info-disabled-text-color:\n * button-hero-warning-text-color:\n * button-hero-warning-bevel-color:\n * button-hero-warning-glow-color:\n * button-hero-warning-left-background-color:\n * button-hero-warning-right-background-color:\n * button-hero-warning-focus-left-background-color:\n * button-hero-warning-focus-right-background-color:\n * button-hero-warning-hover-left-background-color:\n * button-hero-warning-hover-right-background-color:\n * button-hero-warning-active-left-background-color:\n * button-hero-warning-active-right-background-color:\n * button-hero-warning-disabled-background-color:\n * button-hero-warning-disabled-text-color:\n * button-hero-danger-text-color:\n * button-hero-danger-bevel-color:\n * button-hero-danger-glow-color:\n * button-hero-danger-left-background-color:\n * button-hero-danger-right-background-color:\n * button-hero-danger-focus-left-background-color:\n * button-hero-danger-focus-right-background-color:\n * button-hero-danger-hover-left-background-color:\n * button-hero-danger-hover-right-background-color:\n * button-hero-danger-active-left-background-color:\n * button-hero-danger-active-right-background-color:\n * button-hero-danger-disabled-background-color:\n * button-hero-danger-disabled-text-color:\n * button-hero-control-text-color:\n * button-hero-control-bevel-color:\n * button-hero-control-glow-color:\n * button-hero-control-left-background-color:\n * button-hero-control-right-background-color:\n * button-hero-control-focus-left-background-color:\n * button-hero-control-focus-right-background-color:\n * button-hero-control-hover-left-background-color:\n * button-hero-control-hover-right-background-color:\n * button-hero-control-active-left-background-color:\n * button-hero-control-active-right-background-color:\n * button-hero-control-disabled-background-color:\n * button-hero-control-disabled-text-color:\n */\n@Component({\n    selector: 'button[nbButton],a[nbButton],input[type=\"button\"][nbButton],input[type=\"submit\"][nbButton]',\n    template: `\n    <ng-content></ng-content>\n  `,\n    providers: [\n        { provide: NbButton, useExisting: NbButtonComponent },\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbButtonComponent extends NbButton implements AfterViewInit {\n  /**\n   * Sets `hero` appearance\n   */\n  @Input()\n  @HostBinding('class.appearance-hero')\n  get hero(): boolean {\n    return this.appearance === 'hero';\n  }\n  set hero(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'hero';\n    }\n  }\n  static ngAcceptInputType_hero: NbBooleanInput;\n\n  @HostBinding('class.status-primary')\n  get primary() {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-info')\n  get info() {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-success')\n  get success() {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning() {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger() {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic() {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control() {\n    return this.status === 'control';\n  }\n\n  /**\n   * @private\n   * Keep this handler to partially support anchor disabling.\n   * Unlike button, anchor doesn't have 'disabled' DOM property,\n   * so handler will be called anyway. We preventing navigation and bubbling.\n   * Disabling is partial due to click handlers precedence. Consider example:\n   * <a nbButton [disabled]=\"true\" (click)=\"clickHandler()\">...</a>\n   * 'clickHandler' will be called before our host listener below. We can't prevent\n   * such handlers call.\n   */\n  @HostListener('click', ['$event'])\n  onClick(event) {\n    if (this.disabled) {\n      event.preventDefault();\n      event.stopImmediatePropagation();\n    }\n  }\n\n  constructor(\n    protected renderer: Renderer2,\n    protected hostElement: ElementRef<HTMLElement>,\n    protected cd: ChangeDetectorRef,\n    protected zone: NgZone,\n    protected statusService: NbStatusService,\n  ) {\n    super(renderer, hostElement, cd, zone, statusService);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { TranslationWidth } from '@angular/common';\n\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NbCalendarViewMode, NbCalendarViewModeValues } from '../../model';\nimport { NbCalendarYearModelService } from '../../services/calendar-year-model.service';\nimport { NbDateService } from '../../services/date.service';\n\n\n@Component({\n    selector: 'nb-calendar-view-mode',\n    template: `\n    <button nbButton (click)=\"changeMode.emit()\" ghost status=\"basic\">\n      {{ getText() }}\n      <nb-icon [icon]=\"getIcon()\" pack=\"nebular-essentials\"></nb-icon>\n    </button>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarViewModeComponent<D> {\n  @Input() date: D;\n  @Input() viewMode: NbCalendarViewMode = NbCalendarViewMode.DATE;\n  static ngAcceptInputType_viewMode: NbCalendarViewModeValues;\n  @Output() changeMode = new EventEmitter<void>(true);\n\n  constructor(\n    protected dateService: NbDateService<D>,\n    protected yearModelService: NbCalendarYearModelService<D>,\n  ) {}\n\n  getText(): string {\n    if (!this.date) {\n      return '';\n    }\n\n    switch (this.viewMode) {\n      case NbCalendarViewMode.DATE: {\n        const month = this.dateService.getMonthName(this.date, TranslationWidth.Wide);\n        const year = this.dateService.getYear(this.date);\n        return `${month} ${year}`;\n      }\n      case NbCalendarViewMode.MONTH:\n        return `${this.dateService.getYear(this.date)}`;\n      case NbCalendarViewMode.YEAR:\n        return `${this.getFirstYear()} - ${this.getLastYear()}`;\n    }\n  }\n\n  getIcon(): string {\n    if (this.viewMode === NbCalendarViewMode.DATE) {\n      return 'chevron-down-outline';\n    }\n\n    return 'chevron-up-outline';\n  }\n\n  protected getFirstYear(): string {\n    const years = this.yearModelService.getViewYears(this.date);\n    return this.dateService.getYear(years[0][0]).toString();\n  }\n\n  protected getLastYear(): string {\n    const years = this.yearModelService.getViewYears(this.date);\n    const lastRow = years[years.length - 1];\n    const lastYear = lastRow[lastRow.length - 1];\n\n    return this.dateService.getYear(lastYear).toString();\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, EventEmitter, Output } from '@angular/core';\n\nimport { NbLayoutDirectionService } from '../../../../services/direction.service';\n\n\n@Component({\n    selector: 'nb-calendar-pageable-navigation',\n    styleUrls: ['./calendar-pageable-navigation.component.scss'],\n    template: `\n    <button nbButton (click)=\"prev.emit()\" ghost status=\"basic\" class=\"prev-month\">\n      <nb-icon [icon]=\"isLtr ? 'chevron-left-outline' : 'chevron-right-outline'\" pack=\"nebular-essentials\"></nb-icon>\n    </button>\n    <button nbButton (click)=\"next.emit()\" ghost status=\"basic\" class=\"next-month\">\n      <nb-icon [icon]=\"isLtr ? 'chevron-right-outline' : 'chevron-left-outline'\" pack=\"nebular-essentials\"></nb-icon>\n    </button>\n  `,\n    standalone: false\n})\nexport class NbCalendarPageableNavigationComponent<D> {\n  @Output() next = new EventEmitter<void>();\n  @Output() prev = new EventEmitter<void>();\n\n  constructor(private directionService: NbLayoutDirectionService) {\n  }\n\n  get isLtr(): boolean {\n    return this.directionService.isLtr();\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  Output,\n} from '@angular/core';\nimport { NbDateService } from '../../services/date.service';\nimport { NbCalendarCell, NbCalendarSize, NbCalendarSizeValues } from '../../model';\n\n\n@Component({\n    selector: 'nb-calendar-year-cell',\n    template: `\n    <div class=\"cell-content\">\n      {{ year }}\n    </div>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarYearCellComponent<D> implements NbCalendarCell<D, D> {\n  @Input() date: D;\n\n  @Input() min: D;\n\n  @Input() max: D;\n\n  @Input() selectedValue: D;\n\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  @Output() select: EventEmitter<D> = new EventEmitter(true);\n\n  constructor(protected dateService: NbDateService<D>) {\n  }\n\n  @HostBinding('class.selected') get selected(): boolean {\n    return this.dateService.isSameYearSafe(this.date, this.selectedValue);\n  }\n\n  @HostBinding('class.today') get today(): boolean {\n    return this.dateService.isSameYearSafe(this.date, this.dateService.today());\n  }\n\n  @HostBinding('class.disabled') get disabled(): boolean {\n    return this.smallerThanMin() || this.greaterThanMax();\n  }\n\n  @HostBinding('class.size-large')\n  get isLarge(): boolean {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  @HostBinding('class.year-cell')\n  yearCellClass = true;\n\n  get year(): number {\n    return this.dateService.getYear(this.date);\n  }\n\n  @HostListener('click')\n  onClick() {\n    if (this.disabled) {\n      return;\n    }\n\n    this.select.emit(this.date);\n  }\n\n  private smallerThanMin(): boolean {\n    return this.date && this.min && this.dateService.compareDates(this.yearEnd(), this.min) < 0;\n  }\n\n  private greaterThanMax(): boolean {\n    return this.date && this.max && this.dateService.compareDates(this.yearStart(), this.max) > 0;\n  }\n\n  private yearStart(): D {\n    return this.dateService.getYearStart(this.date);\n  }\n\n  private yearEnd(): D {\n    return this.dateService.getYearEnd(this.date);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  TemplateRef,\n  Type,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\n\nimport { NbCalendarCell, NbCalendarSize, NbCalendarSizeValues } from '../../model';\n\n@Component({\n    selector: 'nb-calendar-picker-row',\n    styles: [\n        `\n      :host {\n        display: flex;\n        justify-content: space-between;\n      }\n    `,\n    ],\n    template: '<ng-template></ng-template>',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarPickerRowComponent<D, T> implements OnChanges {\n  @Input() row: D[];\n  @Input() selectedValue: T;\n  @Input() visibleDate: D;\n  @Input() component: Type<NbCalendarCell<D, T>>;\n  @Input() min: D;\n  @Input() max: D;\n  @Input() filter: (D) => boolean;\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() select: EventEmitter<D> = new EventEmitter();\n\n  // TODO static must be false as of Angular 9.0.0, issues/1514\n  @ViewChild(TemplateRef, { read: ViewContainerRef, static: true }) containerRef: ViewContainerRef;\n\n  ngOnChanges() {\n    this.containerRef.clear();\n\n    this.row.forEach((date: D) => {\n      const component = this.containerRef.createComponent(this.component, { index: this.containerRef.length });\n      this.patchWithContext(component.instance, date);\n      component.changeDetectorRef.detectChanges();\n    });\n  }\n\n  private patchWithContext(component: NbCalendarCell<D, T>, date: D) {\n    component.visibleDate = this.visibleDate;\n    component.selectedValue = this.selectedValue;\n    component.date = date;\n    component.min = this.min;\n    component.max = this.max;\n    component.filter = this.filter;\n    component.size = this.size;\n    component.select.subscribe(this.select.emit.bind(this.select));\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, Type, HostBinding } from '@angular/core';\n\nimport { NbCalendarCell, NbCalendarSize, NbCalendarSizeValues } from '../../model';\n\n\n@Component({\n    selector: 'nb-calendar-picker',\n    template: `\n    <nb-calendar-picker-row\n      *ngFor=\"let row of data\"\n      [row]=\"row\"\n      [visibleDate]=\"visibleDate\"\n      [selectedValue]=\"selectedValue\"\n      [component]=\"cellComponent\"\n      [min]=\"min\"\n      [max]=\"max\"\n      [filter]=\"filter\"\n      [size]=\"size\"\n      (select)=\"select.emit($event)\">\n    </nb-calendar-picker-row>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarPickerComponent<D, T> {\n  @Input() data: D[][];\n  @Input() visibleDate: D;\n  @Input() selectedValue: T;\n  @Input() cellComponent: Type<NbCalendarCell<D, T>>;\n  @Input() min: D;\n  @Input() max: D;\n  @Input() filter: (D) => boolean;\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n  @Output() select: EventEmitter<D> = new EventEmitter();\n\n  @HostBinding('class.size-large')\n  get isLarge(): boolean {\n    return this.size === NbCalendarSize.LARGE;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  Output,\n  Type,\n} from '@angular/core';\nimport { NbCalendarCell, NbCalendarSize, NbCalendarSizeValues } from '../../model';\nimport { NbCalendarYearCellComponent } from './calendar-year-cell.component';\nimport { NbDateService } from '../../services/date.service';\nimport { NbCalendarYearModelService } from '../../services/calendar-year-model.service';\n\n@Component({\n    selector: 'nb-calendar-year-picker',\n    template: `\n    <nb-calendar-picker\n      [data]=\"years\"\n      [min]=\"min\"\n      [max]=\"max\"\n      [filter]=\"filter\"\n      [selectedValue]=\"date\"\n      [visibleDate]=\"year\"\n      [cellComponent]=\"cellComponent\"\n      [size]=\"size\"\n      (select)=\"onSelect($event)\">\n    </nb-calendar-picker>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarYearPickerComponent<D> implements OnChanges {\n\n  @Input() date: D;\n\n  @Input() min: D;\n\n  @Input() max: D;\n\n  @Input() filter: (D) => boolean;\n\n  @Input('cellComponent')\n  set _cellComponent(cellComponent: Type<NbCalendarCell<D, D>>) {\n    if (cellComponent) {\n      this.cellComponent = cellComponent;\n    }\n  }\n  cellComponent: Type<NbCalendarCell<D, D>> = NbCalendarYearCellComponent;\n\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  @Input() year: D;\n\n  @Output() yearChange = new EventEmitter<D>();\n\n  @HostBinding('class.size-large')\n  get large() {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  years: D[][];\n\n  constructor(\n    protected dateService: NbDateService<D>,\n    protected yearModelService: NbCalendarYearModelService<D>,\n  ) {}\n\n  ngOnChanges() {\n    this.years = this.yearModelService.getViewYears(this.year);\n  }\n\n  onSelect(year) {\n    this.yearChange.emit(year);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  Output,\n} from '@angular/core';\nimport { NbCalendarCell, NbCalendarSize, NbCalendarSizeValues } from '../../model';\nimport { NbDateService } from '../../services/date.service';\n\n\n@Component({\n    selector: 'nb-calendar-month-cell',\n    template: `\n    <div class=\"cell-content\">\n      {{ month }}\n    </div>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarMonthCellComponent<D> implements NbCalendarCell<D, D> {\n  @Input() date: D;\n\n  @Input() selectedValue: D;\n\n  @Input() min: D;\n\n  @Input() max: D;\n\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  @Output() select: EventEmitter<D> = new EventEmitter(true);\n\n  constructor(private dateService: NbDateService<D>) {\n  }\n\n  @HostBinding('class.selected') get selected(): boolean {\n    return this.dateService.isSameMonthSafe(this.date, this.selectedValue);\n  }\n\n  @HostBinding('class.today') get today(): boolean {\n    return this.dateService.isSameMonthSafe(this.date, this.dateService.today());\n  }\n\n  @HostBinding('class.disabled') get disabled(): boolean {\n    return this.smallerThanMin() || this.greaterThanMax();\n  }\n\n  @HostBinding('class.size-large')\n  get isLarge(): boolean {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  @HostBinding('class.month-cell')\n  monthCellClass = true;\n\n  get month(): string {\n    return this.dateService.getMonthName(this.date);\n  }\n\n  @HostListener('click')\n  onClick() {\n    if (this.disabled) {\n      return;\n    }\n\n    this.select.emit(this.date);\n  }\n\n  protected smallerThanMin(): boolean {\n    return this.date && this.min && this.dateService.compareDates(this.monthEnd(), this.min) < 0;\n  }\n\n  protected greaterThanMax(): boolean {\n    return this.date && this.max && this.dateService.compareDates(this.monthStart(), this.max) > 0;\n  }\n\n  protected monthStart(): D {\n    return this.dateService.getMonthStart(this.date);\n  }\n\n  protected monthEnd(): D {\n    return this.dateService.getMonthEnd(this.date);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  Output,\n  Type,\n  SimpleChanges,\n} from '@angular/core';\nimport { batch } from '../../helpers';\nimport { NbCalendarCell, NbCalendarSize, NbCalendarSizeValues } from '../../model';\nimport { NbCalendarMonthCellComponent } from './calendar-month-cell.component';\nimport { NbDateService } from '../../services/date.service';\n\nexport const MONTHS_IN_VIEW = 12;\nexport const MONTHS_IN_COLUMN = 4;\n\n@Component({\n    selector: 'nb-calendar-month-picker',\n    template: `\n    <nb-calendar-picker\n      [data]=\"months\"\n      [min]=\"min\"\n      [max]=\"max\"\n      [filter]=\"filter\"\n      [selectedValue]=\"date\"\n      [visibleDate]=\"month\"\n      [cellComponent]=\"cellComponent\"\n      [size]=\"size\"\n      (select)=\"onSelect($event)\">\n    </nb-calendar-picker>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarMonthPickerComponent<D, T> implements OnChanges {\n\n  @Input() min: D;\n\n  @Input() max: D;\n\n  @Input() filter: (D) => boolean;\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  /**\n   * Visible month\n   **/\n  @Input() month: D;\n\n  /**\n   * Selected date\n   **/\n  @Input() date: D;\n\n  @Output() monthChange: EventEmitter<D> = new EventEmitter();\n  months: D[][];\n\n  constructor(protected dateService: NbDateService<D>) {\n  }\n\n  @Input('cellComponent')\n  set _cellComponent(cellComponent: Type<NbCalendarCell<D, T>>) {\n    if (cellComponent) {\n      this.cellComponent = cellComponent;\n    }\n  }\n  cellComponent: Type<NbCalendarCell<any, any>> = NbCalendarMonthCellComponent;\n\n  @HostBinding('class.size-large')\n  get large() {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.month) {\n      this.initMonths();\n    }\n  }\n\n  initMonths() {\n    const date = this.dateService.getDate(this.month);\n    const year = this.dateService.getYear(this.month);\n    const firstMonth = this.dateService.createDate(year, 0, date);\n    const months = [ firstMonth ];\n\n    for (let monthIndex = 1; monthIndex < MONTHS_IN_VIEW; monthIndex++) {\n      months.push(this.dateService.addMonth(firstMonth, monthIndex));\n    }\n\n    this.months = batch(months, MONTHS_IN_COLUMN);\n  }\n\n  onSelect(month: D) {\n    this.monthChange.emit(month);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  Output,\n} from '@angular/core';\n\nimport { NbCalendarCell, NbCalendarSize, NbCalendarSizeValues } from '../../model';\nimport { NbDateService } from '../../services/date.service';\n\n\n@Component({\n    selector: 'nb-calendar-day-cell',\n    template: `\n    <div class=\"cell-content\">\n      {{ day }}\n    </div>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarDayCellComponent<D> implements NbCalendarCell<D, D> {\n\n  @Input() date: D;\n\n  @Input() selectedValue: D;\n\n  @Input() visibleDate: D;\n\n  @Input() min: D;\n\n  @Input() max: D;\n\n  @Input() filter: (D) => boolean;\n\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  @Output() select: EventEmitter<D> = new EventEmitter(true);\n\n  constructor(protected dateService: NbDateService<D>) {\n  }\n\n  @HostBinding('class.today') get today(): boolean {\n    return this.dateService.isSameDaySafe(this.date, this.dateService.today());\n  }\n\n  @HostBinding('class.bounding-month') get boundingMonth(): boolean {\n    return !this.dateService.isSameMonthSafe(this.date, this.visibleDate);\n  }\n\n  @HostBinding('class.selected') get selected(): boolean {\n    return this.dateService.isSameDaySafe(this.date, this.selectedValue);\n  }\n\n  @HostBinding('class.empty') get empty(): boolean {\n    return !this.date;\n  }\n\n  @HostBinding('class.disabled') get disabled(): boolean {\n    return this.smallerThanMin() || this.greaterThanMax() || this.dontFitFilter();\n  }\n\n  @HostBinding('class.size-large')\n  get isLarge(): boolean {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  @HostBinding('class.day-cell')\n  dayCellClass = true;\n\n  get day(): number {\n    return this.date && this.dateService.getDate(this.date);\n  }\n\n  @HostListener('click')\n  onClick() {\n    if (this.disabled || this.empty) {\n      return;\n    }\n\n    this.select.emit(this.date);\n  }\n\n  private smallerThanMin(): boolean {\n    return this.date && this.min && this.dateService.compareDates(this.date, this.min) < 0;\n  }\n\n  private greaterThanMax(): boolean {\n    return this.date && this.max && this.dateService.compareDates(this.date, this.max) > 0;\n  }\n\n  private dontFitFilter(): boolean {\n    return this.date && this.filter && !this.filter(this.date);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { NbDateService } from './date.service';\nimport { batch, range } from '../helpers';\n\n\n@Injectable()\nexport class NbCalendarMonthModelService<D> {\n\n  constructor(protected dateService: NbDateService<D>) {\n  }\n\n  createDaysGrid(activeMonth: D, boundingMonth: boolean = true, firstDayOfWeek?: number): D[][] {\n    const weeks = this.createDates(activeMonth, firstDayOfWeek);\n    return this.withBoundingMonths(weeks, activeMonth, boundingMonth);\n  }\n\n  private createDates(activeMonth: D, firstDayOfWeek?: number): D[][] {\n    const days = this.createDateRangeForMonth(activeMonth);\n    const startOfWeekDayDiff = this.getStartOfWeekDayDiff(activeMonth, firstDayOfWeek);\n    return batch(days, this.dateService.DAYS_IN_WEEK, startOfWeekDayDiff);\n  }\n\n  private withBoundingMonths(weeks: D[][], activeMonth: D, boundingMonth: boolean): D[][] {\n    let withBoundingMonths = weeks;\n\n    if (this.isShouldAddPrevBoundingMonth(withBoundingMonths)) {\n      withBoundingMonths = this.addPrevBoundingMonth(withBoundingMonths, activeMonth, boundingMonth);\n    }\n\n    if (this.isShouldAddNextBoundingMonth(withBoundingMonths)) {\n      withBoundingMonths = this.addNextBoundingMonth(withBoundingMonths, activeMonth, boundingMonth);\n    }\n\n    return withBoundingMonths;\n  }\n\n  private addPrevBoundingMonth(weeks: D[][], activeMonth: D, boundingMonth: boolean): D[][] {\n    const firstWeek = weeks.shift();\n    const requiredItems: number = this.dateService.DAYS_IN_WEEK - firstWeek.length;\n    firstWeek.unshift(...this.createPrevBoundingDays(activeMonth, boundingMonth, requiredItems));\n    return [firstWeek, ...weeks];\n  }\n\n  private addNextBoundingMonth(weeks: D[][], activeMonth: D, boundingMonth: boolean): D[][] {\n    const lastWeek = weeks.pop();\n    const requiredItems: number = this.dateService.DAYS_IN_WEEK - lastWeek.length;\n    lastWeek.push(...this.createNextBoundingDays(activeMonth, boundingMonth, requiredItems));\n    return [...weeks, lastWeek];\n  }\n\n  private createPrevBoundingDays(activeMonth: D, boundingMonth: boolean, requiredItems: number): D[] {\n    const month = this.dateService.addMonth(activeMonth, -1);\n    const daysInMonth = this.dateService.getNumberOfDaysInMonth(month);\n    return this.createDateRangeForMonth(month)\n      .slice(daysInMonth - requiredItems)\n      .map(date => boundingMonth ? date : null);\n  }\n\n  private createNextBoundingDays(activeMonth: D, boundingMonth: boolean, requiredItems: number): D[] {\n    const month = this.dateService.addMonth(activeMonth, 1);\n    return this.createDateRangeForMonth(month)\n      .slice(0, requiredItems)\n      .map(date => boundingMonth ? date : null);\n  }\n\n  private getStartOfWeekDayDiff(date: D, firstDayOfWeek?: number): number {\n    const startOfMonth = this.dateService.getMonthStart(date);\n    return this.getWeekStartDiff(startOfMonth, firstDayOfWeek);\n  }\n\n  private getWeekStartDiff(date: D, firstDayOfWeek?: number): number {\n    const weekOfset = firstDayOfWeek ?? this.dateService.getFirstDayOfWeek();\n    return (7 - weekOfset + this.dateService.getDayOfWeek(date)) % 7;\n  }\n\n  private isShouldAddPrevBoundingMonth(weeks: D[][]): boolean {\n    return weeks[0].length < this.dateService.DAYS_IN_WEEK;\n  }\n\n  private isShouldAddNextBoundingMonth(weeks: D[][]): boolean {\n    return weeks[weeks.length - 1].length < this.dateService.DAYS_IN_WEEK;\n  }\n\n  private createDateRangeForMonth(date: D): D[] {\n    const daysInMonth: number = this.dateService.getNumberOfDaysInMonth(date);\n    return range(daysInMonth, i => {\n      const year = this.dateService.getYear(date);\n      const month = this.dateService.getMonth(date);\n      return this.dateService.createDate(year, month, i + 1)\n    });\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ChangeDetectionStrategy, Component, OnInit, Input, HostBinding, SimpleChanges, OnChanges } from '@angular/core';\n\nimport { NbCalendarDay, NbCalendarSize, NbCalendarSizeValues } from '../../model';\nimport { NbDateService } from '../../services/date.service';\n\n\n@Component({\n    selector: 'nb-calendar-days-names',\n    styleUrls: ['./calendar-days-names.component.scss'],\n    template: `\n    <div class=\"day\" *ngFor=\"let day of days\" [class.holiday]=\"day.isHoliday\">{{ day.name }}</div>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarDaysNamesComponent<D> implements OnInit, OnChanges {\n\n  days: NbCalendarDay[];\n\n  @Input() size: NbCalendarSize;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  @HostBinding('class.size-large')\n  get isLarge(): boolean {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  /**\n   * Sets first day of the week, it can be 1 if week starts from monday and 0 if from sunday and so on.\n   * `undefined` means that default locale setting will be used.\n   * */\n  @Input() firstDayOfWeek: number | undefined;\n\n  constructor(private dateService: NbDateService<D>) {\n  }\n\n  ngOnInit() {\n    const days: NbCalendarDay[] = this.createDaysNames();\n    this.days = this.shiftStartOfWeek(days);\n  }\n\n  ngOnChanges({firstDayOfWeek}: SimpleChanges) {\n    if (firstDayOfWeek) {\n      const days: NbCalendarDay[] = this.createDaysNames();\n      this.days = this.shiftStartOfWeek(days);\n    }\n  }\n\n  private createDaysNames(): NbCalendarDay[] {\n    return this.dateService.getDayOfWeekNames()\n      .map(this.markIfHoliday);\n  }\n\n  private shiftStartOfWeek(days: NbCalendarDay[]): NbCalendarDay[] {\n    const firstDayOfWeek = this.firstDayOfWeek ?? this.dateService.getFirstDayOfWeek();\n    for (let i = 0; i < firstDayOfWeek; i++) {\n      days.push(days.shift());\n    }\n\n    return days;\n  }\n\n  private markIfHoliday(name, i) {\n    return { name, isHoliday: i % 6 === 0 };\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, Input, HostBinding, ChangeDetectionStrategy, OnChanges, SimpleChanges } from '@angular/core';\n\nimport { NbDateService } from '../../services/date.service';\nimport { NbCalendarSize, NbCalendarSizeValues } from '../../model';\n\n@Component({\n    selector: 'nb-calendar-week-numbers',\n    template: `\n    <div class=\"sign-container\">\n      <div class=\"sign\">{{ weekNumberSymbol }}</div>\n    </div>\n    <div class=\"week-number\" *ngFor=\"let weekNumber of weekNumbers\">{{ weekNumber }}</div>\n  `,\n    styleUrls: ['./calendar-week-number.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarWeekNumberComponent<D> implements OnChanges {\n\n  weekNumbers: number[];\n\n  @Input()\n  weeks: D[][];\n\n  @Input()\n  size: NbCalendarSize;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  /**\n   * Sets symbol used as a header for week numbers column\n   * */\n  @Input() weekNumberSymbol: string;\n\n  @HostBinding('class.size-large')\n  get isLarge() {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  constructor(private dateService: NbDateService<D>) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.weeks) {\n      this.weekNumbers = this.getWeeks();\n    }\n  }\n\n  getWeeks(): number[] {\n    return this.weeks.map((week: D[]) => {\n      // Find last defined day as week could contain null days in case\n      // boundingMonth set to false\n      const lastDay = [ ...week ].reverse().find((day: D) => !!day);\n      // Use last day of the week to determine week number.\n      // This way weeks which span between sibling years is marked first\n      return this.dateService.getWeekNumber(lastDay);\n    });\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  Type,\n} from '@angular/core';\n\nimport { NbCalendarMonthModelService } from '../../services/calendar-month-model.service';\nimport { NbCalendarDayCellComponent } from './calendar-day-cell.component';\nimport { NbCalendarCell, NbCalendarSize, NbCalendarSizeValues } from '../../model';\nimport { convertToBoolProperty, NbBooleanInput } from '../../../helpers';\n\n\n/**\n * Provides capability pick days.\n * */\n@Component({\n    selector: 'nb-calendar-day-picker',\n    template: `\n    <nb-calendar-week-numbers *ngIf=\"showWeekNumber\"\n                              [weeks]=\"weeks\"\n                              [size]=\"size\"\n                              [weekNumberSymbol]=\"weekNumberSymbol\">\n    </nb-calendar-week-numbers>\n    <div class=\"days-container\">\n      <nb-calendar-days-names [size]=\"size\" [firstDayOfWeek]=\"firstDayOfWeek\"></nb-calendar-days-names>\n      <nb-calendar-picker\n          [data]=\"weeks\"\n          [visibleDate]=\"visibleDate\"\n          [selectedValue]=\"date\"\n          [cellComponent]=\"cellComponent\"\n          [min]=\"min\"\n          [max]=\"max\"\n          [filter]=\"filter\"\n          [size]=\"size\"\n          (select)=\"onSelect($event)\">\n      </nb-calendar-picker>\n    </div>\n  `,\n    styleUrls: ['./calendar-day-picker.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarDayPickerComponent<D, T> implements OnChanges {\n\n  /**\n   * Describes which month picker have to render.\n   * */\n  @Input() visibleDate: D;\n\n  /**\n   * Defines if we should render previous and next months\n   * in the current month view.\n   * */\n  @Input() boundingMonths: boolean = true;\n\n  /**\n   * Minimum available date for selection.\n   * */\n  @Input() min: D;\n\n  /**\n   * Maximum available date for selection.\n   * */\n  @Input() max: D;\n\n  /**\n   * Predicate that decides which cells will be disabled.\n   * */\n  @Input() filter: (D) => boolean;\n\n  /**\n   * Custom day cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input('cellComponent')\n  set setCellComponent(cellComponent: Type<NbCalendarCell<D, T>>) {\n    if (cellComponent) {\n      this.cellComponent = cellComponent;\n    }\n  }\n  cellComponent: Type<NbCalendarCell<any, any>> = NbCalendarDayCellComponent;\n\n  /**\n   * Size of the component.\n   * Can be 'medium' which is default or 'large'.\n   * */\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  /**\n   * Already selected date.\n   * */\n  @Input() date: T;\n\n  /**\n   * Determines should we show week numbers column.\n   * False by default.\n   * */\n  @Input()\n  get showWeekNumber(): boolean {\n    return this._showWeekNumber;\n  }\n  set showWeekNumber(value: boolean) {\n    this._showWeekNumber = convertToBoolProperty(value);\n  }\n  protected _showWeekNumber: boolean = false;\n  static ngAcceptInputType_showWeekNumber: NbBooleanInput;\n\n  /**\n   * Sets symbol used as a header for week numbers column\n   * */\n  @Input() weekNumberSymbol: string;\n\n  /**\n   * Sets first day of the week, it can be 1 if week starts from monday and 0 if from sunday and so on.\n   * `undefined` means that default locale setting will be used.\n   * */\n  @Input() firstDayOfWeek: number | undefined;\n\n  /**\n   * Fires newly selected date.\n   * */\n  @Output() dateChange = new EventEmitter<D>();\n\n  @HostBinding('class.size-large')\n  get large() {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  /**\n   * Day picker model.\n   * Provides all days in current month and if boundingMonth is true some days\n   * from previous and next one.\n   * */\n  weeks: D[][];\n\n  constructor(private monthModel: NbCalendarMonthModelService<D>) {\n  }\n\n  ngOnChanges({ visibleDate, boundingMonths, firstDayOfWeek }: SimpleChanges) {\n    if (visibleDate || boundingMonths || firstDayOfWeek) {\n      this.weeks = this.monthModel.createDaysGrid(this.visibleDate, this.boundingMonths, this.firstDayOfWeek);\n    }\n  }\n\n  onSelect(day: D) {\n    this.dateChange.emit(day);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, EventEmitter, HostBinding, Input, OnInit, Output, Type } from '@angular/core';\n\nimport { NbCalendarYearModelService } from '../calendar-kit/services/calendar-year-model.service';\nimport {\n  NbCalendarCell,\n  NbCalendarSize,\n  NbCalendarViewMode,\n  NbCalendarSizeValues,\n  NbCalendarViewModeValues,\n} from '../calendar-kit/model';\nimport { NbDateService } from '../calendar-kit/services/date.service';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\n\n/**\n * The basis for calendar and range calendar components.\n * Encapsulates common behavior - store calendar state and perform navigation\n * between pickers.\n * */\n@Component({\n    selector: 'nb-base-calendar',\n    templateUrl: './base-calendar.component.html',\n    standalone: false\n})\nexport class NbBaseCalendarComponent<D, T> implements OnInit {\n\n  /**\n   * Defines if we should render previous and next months\n   * in the current month view.\n   * */\n  @Input() boundingMonth: boolean = true;\n\n  /**\n   * Defines active view for calendar.\n   * */\n  @Input('startView') activeViewMode: NbCalendarViewMode = NbCalendarViewMode.DATE;\n  static ngAcceptInputType_activeViewMode: NbCalendarViewModeValues;\n\n  /**\n   * Minimum available date for selection.\n   * */\n  @Input() min: D;\n\n  /**\n   * Maximum available date for selection.\n   * */\n  @Input() max: D;\n\n  /**\n   * Predicate that decides which cells will be disabled.\n   * */\n  @Input() filter: (D) => boolean;\n\n  /**\n   * Custom day cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input() dayCellComponent: Type<NbCalendarCell<D, T>>;\n\n  /**\n   * Custom month cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input() monthCellComponent: Type<NbCalendarCell<D, T>>;\n\n  /**\n   * Custom year cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input() yearCellComponent: Type<NbCalendarCell<D, T>>;\n\n  /**\n   * Size of the calendar and entire components.\n   * Can be 'medium' which is default or 'large'.\n   * */\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  @Input() visibleDate: D;\n\n  /**\n   * Determines whether we should show calendar navigation or not.\n   * */\n  @Input()\n  @HostBinding('class.has-navigation')\n  showNavigation: boolean = true;\n\n  /**\n   * Value which will be rendered as selected.\n   * */\n  @Input() date: T;\n\n  /**\n   * Determines should we show week numbers column.\n   * False by default.\n   * */\n  @Input()\n  @HostBinding('class.has-week-number')\n  get showWeekNumber(): boolean {\n    return this._showWeekNumber;\n  }\n  set showWeekNumber(value: boolean) {\n    this._showWeekNumber = convertToBoolProperty(value);\n  }\n  protected _showWeekNumber = false;\n  static ngAcceptInputType_showWeekNumber: NbBooleanInput;\n\n  /**\n   * Sets symbol used as a header for week numbers column\n   * */\n  @Input() weekNumberSymbol: string;\n\n  /**\n   * Sets first day of the week, it can be 1 if week starts from monday and 0 if from sunday and so on.\n   * `undefined` means that default locale setting will be used.\n   * */\n  @Input() firstDayOfWeek: number | undefined;\n\n  /**\n   * Emits date when selected.\n   * */\n  @Output() dateChange: EventEmitter<T> = new EventEmitter();\n\n  constructor(\n    protected dateService: NbDateService<D>,\n    protected yearModelService: NbCalendarYearModelService<D>,\n  ) {}\n\n  ngOnInit() {\n    if (!this.visibleDate) {\n      this.visibleDate = this.dateService.today();\n    }\n  }\n\n  @HostBinding('class.size-large')\n  get large() {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  ViewMode = NbCalendarViewMode;\n\n  setViewMode(viewMode: NbCalendarViewMode) {\n    this.activeViewMode = viewMode;\n  }\n\n  setVisibleDate(visibleDate: D) {\n    this.visibleDate = visibleDate;\n  }\n\n  prevMonth() {\n    this.changeVisibleMonth(-1);\n  }\n\n  nextMonth() {\n    this.changeVisibleMonth(1);\n  }\n\n  prevYear() {\n    this.changeVisibleYear(-1);\n  }\n\n  nextYear() {\n    this.changeVisibleYear(1);\n  }\n\n  prevYears() {\n    this.changeVisibleYears(-1);\n  }\n\n  nextYears() {\n    this.changeVisibleYears(1);\n  }\n\n  navigatePrev() {\n    switch (this.activeViewMode) {\n      case NbCalendarViewMode.DATE:\n        return this.prevMonth();\n      case NbCalendarViewMode.MONTH:\n        return this.prevYear();\n      case NbCalendarViewMode.YEAR:\n        return this.prevYears();\n    }\n  }\n\n  navigateNext() {\n    switch (this.activeViewMode) {\n      case NbCalendarViewMode.DATE:\n        return this.nextMonth();\n      case NbCalendarViewMode.MONTH:\n        return this.nextYear();\n      case NbCalendarViewMode.YEAR:\n        return this.nextYears();\n    }\n  }\n\n  onChangeViewMode() {\n    if (this.activeViewMode === NbCalendarViewMode.DATE) {\n      return this.setViewMode(NbCalendarViewMode.YEAR);\n    }\n\n    this.setViewMode(NbCalendarViewMode.DATE);\n  }\n\n  private changeVisibleMonth(direction: number) {\n    this.visibleDate = this.dateService.addMonth(this.visibleDate, direction);\n  }\n\n  private changeVisibleYear(direction: number) {\n    this.visibleDate = this.dateService.addYear(this.visibleDate, direction);\n  }\n\n  private changeVisibleYears(direction: number) {\n    this.visibleDate = this.dateService.addYear(this.visibleDate, direction * this.yearModelService.getYearsInView());\n  }\n}\n","<nb-card>\n  <nb-card-header *ngIf=\"showNavigation\" class=\"calendar-navigation\">\n    <nb-calendar-view-mode [date]=\"visibleDate\"\n                           [viewMode]=\"activeViewMode\"\n                           (changeMode)=\"onChangeViewMode()\">\n    </nb-calendar-view-mode>\n\n    <nb-calendar-pageable-navigation (prev)=\"navigatePrev()\" (next)=\"navigateNext()\">\n    </nb-calendar-pageable-navigation>\n  </nb-card-header>\n\n  <nb-card-body [ngSwitch]=\"activeViewMode\">\n\n    <nb-calendar-day-picker *ngSwitchCase=\"ViewMode.DATE\"\n                            [boundingMonths]=\"boundingMonth\"\n                            [cellComponent]=\"dayCellComponent\"\n                            [min]=\"min\"\n                            [max]=\"max\"\n                            [filter]=\"filter\"\n                            [visibleDate]=\"visibleDate\"\n                            [size]=\"size\"\n                            [date]=\"date\"\n                            [showWeekNumber]=\"showWeekNumber\"\n                            [firstDayOfWeek]=\"firstDayOfWeek\"\n                            (dateChange)=\"dateChange.emit($any($event))\"\n                            [weekNumberSymbol]=\"weekNumberSymbol\">\n    </nb-calendar-day-picker>\n\n    <nb-calendar-year-picker *ngSwitchCase=\"ViewMode.YEAR\"\n                             [cellComponent]=\"yearCellComponent\"\n                             [date]=\"$any(date)\"\n                             [min]=\"min\"\n                             [max]=\"max\"\n                             [filter]=\"filter\"\n                             [size]=\"size\"\n                             [year]=\"visibleDate\"\n                             (yearChange)=\"setVisibleDate($event); setViewMode(ViewMode.MONTH)\">\n    </nb-calendar-year-picker>\n\n    <nb-calendar-month-picker *ngSwitchCase=\"ViewMode.MONTH\"\n                              [cellComponent]=\"monthCellComponent\"\n                              [min]=\"min\"\n                              [max]=\"max\"\n                              [filter]=\"filter\"\n                              [size]=\"size\"\n                              [month]=\"visibleDate\"\n                              [date]=\"$any(date)\"\n                              (monthChange)=\"setVisibleDate($event); setViewMode(ViewMode.DATE)\">\n    </nb-calendar-month-picker>\n\n  </nb-card-body>\n\n</nb-card>\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, EventEmitter, Input, Output, Type } from '@angular/core';\n\nimport {\n  NbCalendarCell,\n  NbCalendarSize,\n  NbCalendarViewMode,\n  NbCalendarSizeValues,\n  NbCalendarViewModeValues,\n} from '../calendar-kit/model';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\n\n\n/**\n * Calendar component provides a capability to choose a date.\n *\n * ```html\n * <nb-calendar [(date)]=\"date\"></nb-calendar>\n * <nb-calendar [date]=\"date\" (dateChange)=\"handleDateChange($event)\"></nb-calendar>\n * ```\n *\n * Basic usage example\n * @stacked-example(Showcase, calendar/calendar-showcase.component)\n *\n * ### Installation\n *\n * Import `NbCalendarModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbCalendarModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * If you want to select ranges you can use `NbCalendarRangeComponent`.\n *\n * ```html\n * <nb-calendar-range [(range)]=\"range\"></nb-calendar-range>\n * <nb-calendar-range [range]=\"range\" (rangeChange)=\"handleRangeChange($event)\"></nb-calendar-range>\n * ```\n *\n * In order to use it, you have to import `NbCalendarRangeModule`.\n * @stacked-example(Range, calendar/calendar-range-showcase.component)\n *\n * The calendar component is supplied with a calendar navigation that contains navigate buttons.\n * If you do not want to use it you can hide calendar navigation using `showNavigation` property.\n * @stacked-example(Without navigation, calendar/calendar-without-navigation.component)\n *\n * As you can see in the basic usage example calendar contains previous and next month days\n * which can be disabled using `boundingMonth` property.\n * @stacked-example(Bounding months, calendar/calendar-bounding-month.component)\n *\n * You can define starting view of the calendar by setting `startView` property.\n * Available values: year, month and date.\n * @stacked-example(Start view, calendar/calendar-start-view.component)\n *\n * You can use a larger version of the calendar by defining size property.\n * Available values: medium(which is default) and large.\n * @stacked-example(Size, calendar/calendar-size.component)\n *\n * Calendar supports min and max dates which disables values out of min-max range.\n * @stacked-example(Borders, calendar/calendar-min-max.component)\n *\n * Also, you can define custom filter property that should be predicate which receives\n * date and returns false if this date has to be disabled. In this example, we provide the filter\n * which disables weekdays.\n * @stacked-example(Filter, calendar/calendar-filter.component)\n *\n * Week numbers column could be enabled via `showWeekNumber` binding:\n * @stacked-example(Week number, calendar/calendar-week-number.component)\n *\n * If you need create custom cells you can easily provide custom components for\n * calendar. For examples if you want to show any average price under each date you can\n * just provide custom `dayCellComponent`. Custom cells for month and year can be provided\n * the same way, check API reference.\n * @stacked-example(Custom day cell, calendar/calendar-custom-day-cell-showcase.component)\n *\n * @styles\n *\n * calendar-width:\n * calendar-background-color:\n * calendar-border-color:\n * calendar-border-style:\n * calendar-border-width:\n * calendar-border-radius:\n * calendar-text-color:\n * calendar-text-font-family:\n * calendar-text-font-size:\n * calendar-text-font-weight:\n * calendar-text-line-height:\n * calendar-picker-padding-top:\n * calendar-picker-padding-bottom:\n * calendar-picker-padding-start:\n * calendar-picker-padding-end:\n * calendar-navigation-text-color:\n * calendar-navigation-text-font-family:\n * calendar-navigation-title-text-font-size:\n * calendar-navigation-title-text-font-weight:\n * calendar-navigation-title-text-line-height:\n * calendar-navigation-padding:\n * calendar-cell-inactive-text-color:\n * calendar-cell-disabled-text-color:\n * calendar-cell-hover-background-color:\n * calendar-cell-hover-border-color:\n * calendar-cell-hover-text-color:\n * calendar-cell-hover-text-font-size:\n * calendar-cell-hover-text-font-weight:\n * calendar-cell-hover-text-line-height:\n * calendar-cell-active-background-color:\n * calendar-cell-active-border-color:\n * calendar-cell-active-text-color:\n * calendar-cell-active-text-font-size:\n * calendar-cell-active-text-font-weight:\n * calendar-cell-active-text-line-height:\n * calendar-cell-today-background-color:\n * calendar-cell-today-border-color:\n * calendar-cell-today-text-color:\n * calendar-cell-today-text-font-size:\n * calendar-cell-today-text-font-weight:\n * calendar-cell-today-text-line-height:\n * calendar-cell-today-hover-background-color:\n * calendar-cell-today-hover-border-color:\n * calendar-cell-today-active-background-color:\n * calendar-cell-today-active-border-color:\n * calendar-cell-today-disabled-border-color:\n * calendar-cell-today-selected-background-color:\n * calendar-cell-today-selected-border-color:\n * calendar-cell-today-selected-text-color:\n * calendar-cell-today-selected-hover-background-color:\n * calendar-cell-today-selected-hover-border-color:\n * calendar-cell-today-selected-active-background-color:\n * calendar-cell-today-selected-active-border-color:\n * calendar-cell-today-in-range-background-color:\n * calendar-cell-today-in-range-border-color:\n * calendar-cell-today-in-range-text-color:\n * calendar-cell-today-in-range-hover-background-color:\n * calendar-cell-today-in-range-hover-border-color:\n * calendar-cell-today-in-range-active-background-color:\n * calendar-cell-today-in-range-active-border-color:\n * calendar-cell-selected-background-color:\n * calendar-cell-selected-border-color:\n * calendar-cell-selected-text-color:\n * calendar-cell-selected-text-font-size:\n * calendar-cell-selected-text-font-weight:\n * calendar-cell-selected-text-line-height:\n * calendar-cell-selected-hover-background-color:\n * calendar-cell-selected-hover-border-color:\n * calendar-cell-selected-active-background-color:\n * calendar-cell-selected-active-border-color:\n * calendar-day-cell-width:\n * calendar-day-cell-height:\n * calendar-month-cell-width:\n * calendar-month-cell-height:\n * calendar-year-cell-width:\n * calendar-year-cell-height:\n * calendar-weekday-background:\n * calendar-weekday-divider-color:\n * calendar-weekday-divider-width:\n * calendar-weekday-text-color:\n * calendar-weekday-text-font-size:\n * calendar-weekday-text-font-weight:\n * calendar-weekday-text-line-height:\n * calendar-weekday-holiday-text-color:\n * calendar-weekday-height:\n * calendar-weekday-width:\n * calendar-weeknumber-background:\n * calendar-weeknumber-divider-color:\n * calendar-weeknumber-divider-width:\n * calendar-weeknumber-text-color:\n * calendar-weeknumber-text-font-size:\n * calendar-weeknumber-text-font-weight:\n * calendar-weeknumber-text-line-height:\n * calendar-weeknumber-height:\n * calendar-weeknumber-width:\n * calendar-large-width:\n * calendar-day-cell-large-width:\n * calendar-day-cell-large-height:\n * calendar-weekday-large-height:\n * calendar-weekday-large-width:\n * calendar-weeknumber-large-height:\n * calendar-weeknumber-large-width:\n * calendar-month-cell-large-width:\n * calendar-month-cell-large-height:\n * calendar-year-cell-large-width:\n * calendar-year-cell-large-height:\n * */\n@Component({\n    selector: 'nb-calendar',\n    template: `\n    <nb-base-calendar\n      [boundingMonth]=\"boundingMonth\"\n      [startView]=\"startView\"\n      [date]=\"date\"\n      [min]=\"min\"\n      [max]=\"max\"\n      [filter]=\"filter\"\n      [dayCellComponent]=\"dayCellComponent\"\n      [monthCellComponent]=\"monthCellComponent\"\n      [yearCellComponent]=\"yearCellComponent\"\n      [size]=\"size\"\n      [visibleDate]=\"visibleDate\"\n      [showNavigation]=\"showNavigation\"\n      [showWeekNumber]=\"showWeekNumber\"\n      [weekNumberSymbol]=\"weekNumberSymbol\"\n      [firstDayOfWeek]=\"firstDayOfWeek\"\n      (dateChange)=\"dateChange.emit($event)\"\n    ></nb-base-calendar>\n  `,\n    standalone: false\n})\nexport class NbCalendarComponent<D> {\n\n  /**\n   * Defines if we should render previous and next months\n   * in the current month view.\n   * */\n  @Input() boundingMonth: boolean = true;\n\n  /**\n   * Defines starting view for calendar.\n   * */\n  @Input() startView: NbCalendarViewMode = NbCalendarViewMode.DATE;\n  static ngAcceptInputType_startView: NbCalendarViewModeValues;\n\n  /**\n   * Minimum available date for selection.\n   * */\n  @Input() min: D;\n\n  /**\n   * Maximum available date for selection.\n   * */\n  @Input() max: D;\n\n  /**\n   * Predicate that decides which cells will be disabled.\n   * */\n  @Input() filter: (D) => boolean;\n\n  /**\n   * Custom day cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input() dayCellComponent: Type<NbCalendarCell<D, D>>;\n\n  /**\n   * Custom month cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input() monthCellComponent: Type<NbCalendarCell<D, D>>;\n\n  /**\n   * Custom year cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input() yearCellComponent: Type<NbCalendarCell<D, D>>;\n\n  /**\n   * Size of the calendar and entire components.\n   * Can be 'medium' which is default or 'large'.\n   * */\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  @Input() visibleDate: D;\n\n  /**\n   * Determines should we show calendars navigation or not.\n   * */\n  @Input() showNavigation: boolean = true;\n\n  /**\n   * Date which will be rendered as selected.\n   * */\n  @Input() date: D;\n\n  /**\n   * Determines should we show week numbers column.\n   * False by default.\n   * */\n  @Input()\n  get showWeekNumber(): boolean {\n    return this._showWeekNumber;\n  }\n  set showWeekNumber(value: boolean) {\n    this._showWeekNumber = convertToBoolProperty(value);\n  }\n  protected _showWeekNumber: boolean = false;\n  static ngAcceptInputType_showWeekNumber: NbBooleanInput;\n\n  /**\n   * Sets symbol used as a header for week numbers column\n   * */\n  @Input() weekNumberSymbol: string = '#';\n\n  /**\n   * Sets first day of the week, it can be 1 if week starts from monday and 0 if from sunday and so on.\n   * `undefined` means that default locale setting will be used.\n   * */\n  @Input() firstDayOfWeek: number | undefined;\n\n  /**\n   * Emits date when selected.\n   * */\n  @Output() dateChange: EventEmitter<D> = new EventEmitter();\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\n\nimport { NbButtonComponent } from './button.component';\n\nconst NB_BUTTON_COMPONENTS = [\n  NbButtonComponent,\n];\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n  ],\n  declarations: [\n    ...NB_BUTTON_COMPONENTS,\n  ],\n  exports: [\n    ...NB_BUTTON_COMPONENTS,\n  ],\n})\nexport class NbButtonModule { }\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { FormatWidth, getLocaleTimeFormat } from '@angular/common';\nimport {\n  DatePipe,\n  FormStyle,\n  getLocaleDayNames,\n  getLocaleFirstDayOfWeek,\n  getLocaleMonthNames,\n  TranslationWidth,\n} from '@angular/common';\n\nimport { NbDateService } from './date.service';\n\n/**\n * The `NbNativeDateService` is basic implementation of `NbDateService` using\n * native js date objects and angular localization services.\n * */\n@Injectable()\nexport class NbNativeDateService extends NbDateService<Date> {\n  protected datePipe: DatePipe;\n\n  constructor(@Inject(LOCALE_ID) locale: string) {\n    super();\n    this.setLocale(locale);\n  }\n\n  setLocale(locale: string) {\n    super.setLocale(locale);\n    this.datePipe = new DatePipe(locale);\n  }\n\n\n  setHours(date: Date, hour: number): Date {\n    const result: Date = this.clone(date);\n    result.setHours(hour);\n\n    return result;\n  }\n\n  setMinutes(date: Date, minute: number): Date {\n    const result: Date = this.clone(date);\n    result.setMinutes(minute);\n\n    return result;\n  }\n\n  setSeconds(date: Date, second: number): Date {\n    const result: Date = this.clone(date);\n    result.setSeconds(second);\n\n    return result;\n  }\n\n  setMilliseconds(date: Date, second: number): Date {\n    const result: Date = this.clone(date);\n    result.setMilliseconds(second);\n\n    return result;\n  }\n\n  isValidDateString(date: string, format: string): boolean {\n    return !isNaN(this.parse(date, format).getTime());\n  }\n\n  isValidTimeString(date: string, format: string): boolean {\n    return this.isValidDateString(date, format);\n  }\n\n  today(): Date {\n    return new Date();\n  }\n\n  getLocaleTimeFormat(): string {\n    return getLocaleTimeFormat(this.locale, FormatWidth.Short);\n  }\n\n  getDate(date: Date): number {\n    return date.getDate();\n  }\n\n  getMonth(date: Date): number {\n    return date.getMonth();\n  }\n\n  getYear(date: Date): number {\n    return date.getFullYear();\n  }\n\n  getDayOfWeek(date: Date): number {\n    return date.getDay();\n  }\n\n  /**\n   * returns first day of the week, it can be 1 if week starts from monday\n   * and 0 if from sunday and so on.\n   * */\n  getFirstDayOfWeek(): number {\n    return getLocaleFirstDayOfWeek(this.locale);\n  }\n\n  getMonthName(date: Date, style: TranslationWidth = TranslationWidth.Abbreviated): string {\n    const index: number = date.getMonth();\n    return this.getMonthNameByIndex(index, style);\n  }\n\n  getMonthNameByIndex(index: number, style: TranslationWidth = TranslationWidth.Abbreviated): string {\n    return getLocaleMonthNames(this.locale, FormStyle.Format, style)[index];\n  }\n\n  getDayOfWeekNames(): string[] {\n    return [...getLocaleDayNames(this.locale, FormStyle.Format, TranslationWidth.Short)];\n  }\n\n  format(date: Date, format: string): string {\n    return this.datePipe.transform(date, format);\n  }\n\n  /**\n   * We haven't got capability to parse date using formatting without third party libraries.\n   * */\n  parse(date: string, format: string): Date {\n    return new Date(Date.parse(date));\n  }\n\n  addDay(date: Date, num: number): Date {\n    return this.createDate(date.getFullYear(), date.getMonth(), date.getDate() + num);\n  }\n\n  addMonth(date: Date, num: number): Date {\n    const month = this.createDate(date.getFullYear(), date.getMonth() + num, 1);\n    // In case of date has more days than calculated month js Date will change that month to the next one\n    // because of the date overflow.\n    month.setDate(Math.min(date.getDate(), this.getMonthEnd(month).getDate()));\n    return month;\n  }\n\n  addMinutes(date: Date, minute: number): Date {\n    const result: Date = new Date(date);\n    result.setMinutes(date.getMinutes() + minute);\n\n    return result;\n  }\n\n  addHours(date: Date, hour: number): Date {\n    const result: Date = new Date(date);\n    result.setHours(date.getHours() + hour);\n\n    return result;\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  getSeconds(date: Date): number {\n    return date.getSeconds();\n  }\n\n  getMilliseconds(date: Date): number {\n    return date.getMilliseconds();\n  }\n\n  addYear(date: Date, num: number): Date {\n    return this.createDate(date.getFullYear() + num, date.getMonth(), date.getDate());\n  }\n\n  clone(date: Date): Date {\n    return new Date(date.getTime());\n  }\n\n  compareDates(date1: Date, date2: Date): number {\n    return date1.getTime() - date2.getTime();\n  }\n\n  createDate(year: number, month: number, date: number): Date {\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(result.getFullYear() - 1900);\n    }\n    return result;\n  }\n\n  getMonthEnd(date: Date): Date {\n    return this.createDate(date.getFullYear(), date.getMonth() + 1, 0);\n  }\n\n  getMonthStart(date: Date): Date {\n    return this.createDate(date.getFullYear(), date.getMonth(), 1);\n  }\n\n  getNumberOfDaysInMonth(date: Date): number {\n    return this.getMonthEnd(date).getDate();\n  }\n\n  getYearEnd(date: Date): Date {\n    return this.createDate(date.getFullYear(), 11, 31);\n  }\n\n  getYearStart(date: Date): Date {\n    return this.createDate(date.getFullYear(), 0, 1);\n  }\n\n  valueOf(date: Date): number {\n    return date.valueOf();\n  }\n\n  isSameDay(date1: Date, date2: Date): boolean {\n    return this.isSameMonth(date1, date2) &&\n      date1.getDate() === date2.getDate();\n  }\n\n  isSameMonth(date1: Date, date2: Date): boolean {\n    return this.isSameYear(date1, date2) &&\n      date1.getMonth() === date2.getMonth();\n  }\n\n  isSameYear(date1: Date, date2: Date): boolean {\n    return date1.getFullYear() === date2.getFullYear();\n  }\n\n  getId(): string {\n    return 'native';\n  }\n\n  getWeekNumber(date: Date): number {\n    return parseInt(this.datePipe.transform(date, 'w'), 10);\n  }\n\n  getDateFormat(): string {\n    return 'yyyy-MM-dd';\n  }\n\n  getTwelveHoursFormat(): string {\n    return 'hh:mm a';\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { NbDateService } from './date.service';\n\n\n@Injectable()\nexport class NbCalendarTimeModelService<D> {\n  readonly MINUTES_AND_SECONDS = 60;\n\n  constructor(protected dateService: NbDateService<D>) {\n  }\n\n  getHoursRange(step: number = this.MINUTES_AND_SECONDS): D[] {\n    let date: D = this.getResetTime();\n\n    const endDate = this.dateService.addDay(date, 1);\n\n    const result: D[] = [];\n\n    while (this.dateService.compareDates(date, endDate) < 0) {\n      result.push(date);\n      date = this.dateService.addMinutes(date, step);\n    }\n\n    return result;\n  }\n\n  getResetTime(): D {\n    let today = this.dateService.today();\n    today = this.dateService.setHours(today, 0);\n    today = this.dateService.setMinutes(today, 0);\n    today = this.dateService.setSeconds(today, 0);\n    today = this.dateService.setMilliseconds(today, 0);\n\n    return today;\n  }\n\n  paddToTwoSymbols(n: number): string {\n    if (n < 10) {\n      return '0' + n;\n    }\n\n    return n.toString();\n  }\n\n  buildDateFormat(twelveHoursFormat: boolean, withSeconds: boolean = false): string {\n    if (twelveHoursFormat) {\n      return `${this.dateService.getDateFormat()} ${this.dateService.getTwelveHoursFormat()}`\n    }\n\n    if (withSeconds) {\n      return `${this.dateService.getDateFormat()} ${this.dateService.getTwentyFourHoursFormatWithSeconds()}`\n    }\n\n    return `${this.dateService.getDateFormat()} ${this.dateService.getTwentyFourHoursFormat()}`\n  }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n    selector: 'nb-calendar-actions',\n    template: `\n    <button\n      *ngIf=\"showCurrentTimeButton\"\n      nbButton\n      ghost\n      status=\"primary\"\n      size=\"small\"\n      (click)=\"setCurrentTime.emit()\">\n      {{ currentTimeText }}</button>\n    <button\n      class=\"apply-text-button\"\n      nbButton\n      status=\"primary\"\n      size=\"small\"\n      (click)=\"saveValue.emit()\">\n      {{ applyText }}</button>\n  `,\n    styleUrls: ['./calendar-actions.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarActionsComponent {\n  @Input() set applyButtonText(value: string) {\n    if (value) {\n      this._applyButtonText = value;\n    }\n  };\n  get applyText() {\n    return this._applyButtonText;\n  };\n  protected _applyButtonText = 'ok';\n\n  @Input() set currentTimeButtonText(value: string) {\n    if (value) {\n      this._currentTimeButtonText = value;\n    }\n  }\n  get currentTimeText() {\n    return this._currentTimeButtonText;\n  };\n  _currentTimeButtonText = 'now';\n\n  @Input() showCurrentTimeButton: boolean;\n\n  @Output() setCurrentTime: EventEmitter<void> = new EventEmitter();\n  @Output() saveValue: EventEmitter<void> = new EventEmitter();\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { DatePipe } from '@angular/common';\n\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbButtonModule } from '../button/button.module';\nimport { NbIconModule } from '../icon/icon.module';\n\nimport { NbCalendarMonthModelService } from './services/calendar-month-model.service';\nimport { NbDateService } from './services/date.service';\n\nimport { NbCalendarDayCellComponent } from './components/calendar-day-picker/calendar-day-cell.component';\nimport { NbCalendarDayPickerComponent } from './components/calendar-day-picker/calendar-day-picker.component';\nimport { NbCalendarDaysNamesComponent } from './components/calendar-days-names/calendar-days-names.component';\nimport { NbCalendarMonthCellComponent } from './components/calendar-month-picker/calendar-month-cell.component';\nimport { NbCalendarMonthPickerComponent } from './components/calendar-month-picker/calendar-month-picker.component';\nimport { NbCalendarViewModeComponent } from './components/calendar-navigation/calendar-view-mode.component';\nimport {\n  NbCalendarPageableNavigationComponent,\n} from './components/calendar-navigation/calendar-pageable-navigation.component';\nimport { NbCalendarPickerComponent } from './components/calendar-picker/calendar-picker.component';\nimport { NbCalendarPickerRowComponent } from './components/calendar-picker/calendar-picker-row.component';\nimport { NbCalendarYearCellComponent } from './components/calendar-year-picker/calendar-year-cell.component';\nimport { NbCalendarYearPickerComponent } from './components/calendar-year-picker/calendar-year-picker.component';\nimport { NbCalendarWeekNumberComponent } from './components/calendar-week-number/calendar-week-number.component';\n\nimport { NbNativeDateService } from './services/native-date.service';\nimport { NbCalendarYearModelService } from './services/calendar-year-model.service';\nimport { NbCalendarTimeModelService } from './services/calendar-time-model.service';\nimport { NbCalendarActionsComponent } from './components/calendar-actions/calendar-actions.component';\n\n\nconst SERVICES = [\n  { provide: NbDateService, useClass: NbNativeDateService },\n  DatePipe,\n  NbCalendarMonthModelService,\n  NbCalendarYearModelService,\n  NbCalendarTimeModelService,\n];\n\nconst COMPONENTS = [\n  NbCalendarViewModeComponent,\n  NbCalendarPageableNavigationComponent,\n  NbCalendarDaysNamesComponent,\n  NbCalendarYearPickerComponent,\n  NbCalendarMonthPickerComponent,\n  NbCalendarDayPickerComponent,\n  NbCalendarDayCellComponent,\n  NbCalendarActionsComponent,\n  NbCalendarMonthCellComponent,\n  NbCalendarYearCellComponent,\n  NbCalendarPickerRowComponent,\n  NbCalendarPickerComponent,\n  NbCalendarWeekNumberComponent,\n];\n\n/**\n * `NbCalendarKitModule` is a module that contains multiple useful components for building custom calendars.\n * So if you think our calendars is not enough powerful for you just use calendar-kit and build your own calendar!\n *\n * Available components:\n * - `NbCalendarDayPicker`\n * - `NbCalendarDayCell`\n * - `NbCalendarMonthPicker`\n * - `NbCalendarMonthCell`\n * - `NbCalendarYearPicker`\n * - `NbCalendarYearCell`\n * - `NbCalendarViewModeComponent`\n * - `NbCalendarPageableNavigation`\n *\n * For example you can easily build full calendar:\n * @stacked-example(Full calendar, calendar-kit/calendar-kit-full-calendar.component)\n * */\n@NgModule({\n  imports: [ NbSharedModule, NbButtonModule, NbIconModule ],\n  exports: [...COMPONENTS],\n  declarations: [...COMPONENTS],\n  providers: [...SERVICES],\n})\nexport class NbCalendarKitModule {\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbCalendarKitModule } from '../calendar-kit/calendar-kit.module';\nimport { NbCardModule } from '../card/card.module';\nimport { NbBaseCalendarComponent } from './base-calendar.component';\n\n\n@NgModule({\n  imports: [NbCalendarKitModule, NbSharedModule, NbCardModule],\n  exports: [NbBaseCalendarComponent],\n  declarations: [NbBaseCalendarComponent],\n})\nexport class NbBaseCalendarModule {\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbCalendarComponent } from './calendar.component';\nimport { NbBaseCalendarModule } from './base-calendar.module';\n\n\n@NgModule({\n  imports: [NbBaseCalendarModule],\n  exports: [NbCalendarComponent],\n  declarations: [NbCalendarComponent],\n})\nexport class NbCalendarModule {\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NbCalendarRange } from './calendar-range.component';\n\nexport abstract class NbBaseCalendarRangeCell<D> {\n  abstract selectedValue: NbCalendarRange<D>;\n\n  get hasRange(): boolean {\n    return !!(this.selectedValue && this.selectedValue.start && this.selectedValue.end);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  ChangeDetectionStrategy,\n  Input,\n  Output,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n} from '@angular/core';\n\nimport { NbCalendarCell, NbCalendarSize, NbCalendarSizeValues } from '../calendar-kit/model';\nimport { NbCalendarRange } from './calendar-range.component';\nimport { NbDateService } from '../calendar-kit/services/date.service';\nimport { NbBaseCalendarRangeCell } from './base-calendar-range-cell';\n\n@Component({\n    selector: 'nb-calendar-range-day-cell',\n    template: `\n    <div class=\"cell-content\">{{ day }}</div>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarRangeDayCellComponent<D> extends NbBaseCalendarRangeCell<D>\n  implements NbCalendarCell<D, NbCalendarRange<D>> {\n  @Input() date: D;\n\n  @Input() selectedValue: NbCalendarRange<D>;\n\n  @Input() visibleDate: D;\n\n  @Input() min: D;\n\n  @Input() max: D;\n\n  @Input() filter: (D) => boolean;\n\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  @Output() select: EventEmitter<D> = new EventEmitter(true);\n\n  constructor(protected dateService: NbDateService<D>) {\n    super();\n  }\n\n  @HostBinding('class.in-range')\n  get inRange(): boolean {\n    if (this.date && this.hasRange) {\n      return this.isInRange(this.date, this.selectedValue);\n    }\n\n    return false;\n  }\n\n  @HostBinding('class.start')\n  get start(): boolean {\n    return this.date && this.hasRange && this.dateService.isSameDay(this.date, this.selectedValue.start);\n  }\n\n  @HostBinding('class.end')\n  get end(): boolean {\n    return this.date && this.hasRange && this.dateService.isSameDay(this.date, this.selectedValue.end);\n  }\n\n  @HostBinding('class.range-cell')\n  rangeCellClass = true;\n\n  @HostBinding('class.day-cell')\n  dayCellClass = true;\n\n  @HostBinding('class.today')\n  get today(): boolean {\n    return this.date && this.dateService.isSameDay(this.date, this.dateService.today());\n  }\n\n  @HostBinding('class.bounding-month')\n  get boundingMonth(): boolean {\n    return !this.dateService.isSameMonthSafe(this.date, this.visibleDate);\n  }\n\n  @HostBinding('class.selected')\n  get selected(): boolean {\n    if (this.inRange) {\n      return true;\n    }\n\n    if (this.selectedValue) {\n      return this.dateService.isSameDaySafe(this.date, this.selectedValue.start);\n    }\n\n    return false;\n  }\n\n  @HostBinding('class.empty')\n  get empty(): boolean {\n    return !this.date;\n  }\n\n  @HostBinding('class.disabled')\n  get disabled(): boolean {\n    return this.smallerThanMin() || this.greaterThanMax() || this.dontFitFilter();\n  }\n\n  @HostBinding('class.size-large')\n  get isLarge(): boolean {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  get day(): number {\n    return this.date && this.dateService.getDate(this.date);\n  }\n\n  @HostListener('click')\n  onClick() {\n    if (this.disabled || this.empty) {\n      return;\n    }\n\n    this.select.emit(this.date);\n  }\n\n  protected smallerThanMin(): boolean {\n    return this.date && this.min && this.dateService.compareDates(this.date, this.min) < 0;\n  }\n\n  protected greaterThanMax(): boolean {\n    return this.date && this.max && this.dateService.compareDates(this.date, this.max) > 0;\n  }\n\n  protected dontFitFilter(): boolean {\n    return this.date && this.filter && !this.filter(this.date);\n  }\n\n  protected isInRange(date: D, { start, end }: NbCalendarRange<D>): boolean {\n    const isGreaterThanStart = this.dateService.compareDates(this.date, start) >= 0;\n    const isLessThanEnd = this.dateService.compareDates(this.date, end) <= 0;\n\n    return isGreaterThanStart && isLessThanEnd;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  ChangeDetectionStrategy,\n  Input,\n  Output,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n} from '@angular/core';\n\nimport { NbCalendarCell, NbCalendarSize, NbCalendarSizeValues } from '../calendar-kit/model';\nimport { NbCalendarRange } from './calendar-range.component';\nimport { NbDateService } from '../calendar-kit/services/date.service';\nimport { NbBaseCalendarRangeCell } from './base-calendar-range-cell';\n\n@Component({\n    selector: 'nb-calendar-range-year-cell',\n    template: `\n    <div class=\"cell-content\">\n      {{ year }}\n    </div>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarRangeYearCellComponent<D> extends NbBaseCalendarRangeCell<D>\n  implements NbCalendarCell<D, NbCalendarRange<D>> {\n  @Input() date: D;\n\n  @Input() min: D;\n\n  @Input() max: D;\n\n  @Input() selectedValue: NbCalendarRange<D>;\n\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  @Output() select: EventEmitter<D> = new EventEmitter(true);\n\n  constructor(protected dateService: NbDateService<D>) {\n    super();\n  }\n\n  @HostBinding('class.in-range')\n  get inRange(): boolean {\n    return this.hasRange && this.isInRange(this.date, this.selectedValue);\n  }\n\n  @HostBinding('class.start')\n  get rangeStart(): boolean {\n    return this.hasRange && this.dateService.isSameYear(this.date, this.selectedValue.start);\n  }\n\n  @HostBinding('class.end')\n  get rangeEnd(): boolean {\n    return this.hasRange && this.dateService.isSameYear(this.date, this.selectedValue.end);\n  }\n\n  @HostBinding('class.selected')\n  get selected(): boolean {\n    if (this.inRange) {\n      return true;\n    }\n\n    if (this.selectedValue) {\n      return this.dateService.isSameYearSafe(this.date, this.selectedValue.start);\n    }\n\n    return false;\n  }\n\n  @HostBinding('class.today')\n  get today(): boolean {\n    return this.dateService.isSameYear(this.date, this.dateService.today());\n  }\n\n  @HostBinding('class.disabled')\n  get disabled(): boolean {\n    return this.smallerThanMin() || this.greaterThanMax();\n  }\n\n  @HostBinding('class.size-large')\n  get isLarge(): boolean {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  @HostBinding('class.year-cell')\n  yearCellClass = true;\n\n  @HostBinding('class.range-cell')\n  rangeCellClass = true;\n\n  get year(): number {\n    return this.dateService.getYear(this.date);\n  }\n\n  @HostListener('click')\n  onClick() {\n    if (this.disabled) {\n      return;\n    }\n\n    this.select.emit(this.date);\n  }\n\n  protected smallerThanMin(): boolean {\n    return this.date && this.min && this.dateService.compareDates(this.yearEnd(), this.min) < 0;\n  }\n\n  protected greaterThanMax(): boolean {\n    return this.date && this.max && this.dateService.compareDates(this.yearStart(), this.max) > 0;\n  }\n\n  protected yearStart(): D {\n    return this.dateService.getYearStart(this.date);\n  }\n\n  protected yearEnd(): D {\n    return this.dateService.getYearEnd(this.date);\n  }\n\n  protected isInRange(date: D, { start, end }: NbCalendarRange<D>): boolean {\n    if (start && end) {\n      const cellYear = this.dateService.getYear(date);\n      const startYear = this.dateService.getYear(start);\n      const endYear = this.dateService.getYear(end);\n\n      return cellYear >= startYear && cellYear <= endYear;\n    }\n\n    return this.dateService.isSameYear(date, start);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  Output,\n} from '@angular/core';\n\nimport { NbCalendarCell, NbCalendarSize, NbCalendarSizeValues } from '../calendar-kit/model';\nimport { NbDateService } from '../calendar-kit/services/date.service';\nimport { NbCalendarRange } from './calendar-range.component';\nimport { NbBaseCalendarRangeCell } from './base-calendar-range-cell';\n\n@Component({\n    selector: 'nb-calendar-range-month-cell',\n    template: `\n    <div class=\"cell-content\">\n      {{ month }}\n    </div>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarRangeMonthCellComponent<D> extends NbBaseCalendarRangeCell<D>\n                                                  implements NbCalendarCell<D, NbCalendarRange<D>> {\n\n  get month(): string {\n    return this.dateService.getMonthName(this.date);\n  }\n\n  @Input() date: D;\n  @Input() visibleDate: D;\n\n  @Input() selectedValue: NbCalendarRange<D>;\n  @Input() min: D;\n  @Input() max: D;\n\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  @Output() select: EventEmitter<D> = new EventEmitter(true);\n\n  @HostBinding('class.month-cell')\n  monthCellClass = true;\n\n  @HostBinding('class.range-cell')\n  rangeCellClass = true;\n\n  @HostBinding('class.selected')\n  get selected(): boolean {\n    if (this.inRange) {\n      return true;\n    }\n\n    if (this.selectedValue) {\n      return this.dateService.isSameMonthSafe(this.date, this.selectedValue.start);\n    }\n\n    return false;\n  }\n\n  @HostBinding('class.in-range')\n  get inRange(): boolean {\n    if (this.hasRange) {\n      return this.isInRage(this.date, this.selectedValue);\n    }\n    return false;\n  }\n\n  @HostBinding('class.start')\n  get rangeStart(): boolean {\n    if (this.hasRange) {\n      return this.dateService.isSameMonth(this.date, this.selectedValue.start);\n    }\n    return false;\n  }\n\n  @HostBinding('class.end')\n  get rangeEnd(): boolean {\n    if (this.hasRange) {\n      return this.dateService.isSameMonth(this.date, this.selectedValue.end);\n    }\n    return false;\n  }\n\n  @HostBinding('class.today')\n  get today(): boolean {\n    return this.dateService.isSameMonthSafe(this.date, this.dateService.today());\n  }\n\n  @HostBinding('class.disabled')\n  get disabled(): boolean {\n    return this.smallerThanMin() || this.greaterThanMax();\n  }\n\n  @HostBinding('class.size-large')\n  get isLarge(): boolean {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  @HostListener('click')\n  onClick() {\n    if (this.disabled) {\n      return;\n    }\n\n    this.select.emit(this.date);\n  }\n\n  constructor(protected dateService: NbDateService<D>) {\n    super();\n  }\n\n  protected smallerThanMin(): boolean {\n    return this.date && this.min && this.dateService.compareDates(this.monthEnd(), this.min) < 0;\n  }\n\n  protected greaterThanMax(): boolean {\n    return this.date && this.max && this.dateService.compareDates(this.monthStart(), this.max) > 0;\n  }\n\n  protected monthStart(): D {\n    return this.dateService.getMonthStart(this.date);\n  }\n\n  protected monthEnd(): D {\n    return this.dateService.getMonthEnd(this.date);\n  }\n\n  protected isInRage(date: D, range: NbCalendarRange<D>): boolean {\n    if (range.start && range.end) {\n      const cellDate = this.dateService.getMonthStart(date);\n      const start = this.dateService.getMonthStart(range.start);\n      const end = this.dateService.getMonthStart(range.end);\n\n      const isGreaterThanStart = this.dateService.compareDates(cellDate, start) >= 0;\n      const isLessThanEnd = this.dateService.compareDates(cellDate, end) <= 0;\n\n      return isGreaterThanStart && isLessThanEnd;\n    }\n\n    return this.dateService.isSameMonth(date, range.start);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, EventEmitter, Input, Output, Type } from '@angular/core';\n\nimport {\n  NbCalendarCell,\n  NbCalendarSize,\n  NbCalendarViewMode,\n  NbCalendarSizeValues,\n  NbCalendarViewModeValues,\n} from '../calendar-kit/model';\nimport { NbDateService } from '../calendar-kit/services/date.service';\nimport { NbCalendarRangeDayCellComponent } from './calendar-range-day-cell.component';\nimport { NbCalendarRangeYearCellComponent } from './calendar-range-year-cell.component';\nimport { NbCalendarRangeMonthCellComponent } from './calendar-range-month-cell.component';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\n\n\nexport interface NbCalendarRange<D> {\n  start: D;\n  end?: D;\n}\n\n/**\n * CalendarRange component provides a capability to choose a date range.\n *\n * ```html\n * <nb-calendar [(date)]=\"date\"></nb-calendar>\n * <nb-calendar [date]=\"date\" (dateChange)=\"handleDateChange($event)\"></nb-calendar>\n * ```\n *\n * Basic usage example\n * @stacked-example(Range, calendar/calendar-range-showcase.component)\n *\n * ### Installation\n *\n * Import `NbCalendarRangeModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbCalendarRangeModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n *\n * ### Usage\n *\n * CalendarRange component supports all of the Calendar component customization properties. More defails can be found\n * in the [Calendar component docs](docs/components/calendar).\n *\n * @styles\n *\n * calendar-width:\n * calendar-background-color:\n * calendar-border-color:\n * calendar-border-style:\n * calendar-border-width:\n * calendar-border-radius:\n * calendar-text-color:\n * calendar-text-font-family:\n * calendar-text-font-size:\n * calendar-text-font-weight:\n * calendar-text-line-height:\n * calendar-picker-padding-top:\n * calendar-picker-padding-bottom:\n * calendar-picker-padding-start:\n * calendar-picker-padding-end:\n * calendar-navigation-text-color:\n * calendar-navigation-text-font-family:\n * calendar-navigation-title-text-font-size:\n * calendar-navigation-title-text-font-weight:\n * calendar-navigation-title-text-line-height:\n * calendar-navigation-padding:\n * calendar-cell-inactive-text-color:\n * calendar-cell-disabled-text-color:\n * calendar-cell-hover-background-color:\n * calendar-cell-hover-border-color:\n * calendar-cell-hover-text-color:\n * calendar-cell-hover-text-font-size:\n * calendar-cell-hover-text-font-weight:\n * calendar-cell-hover-text-line-height:\n * calendar-cell-active-background-color:\n * calendar-cell-active-border-color:\n * calendar-cell-active-text-color:\n * calendar-cell-active-text-font-size:\n * calendar-cell-active-text-font-weight:\n * calendar-cell-active-text-line-height:\n * calendar-cell-today-background-color:\n * calendar-cell-today-border-color:\n * calendar-cell-today-text-color:\n * calendar-cell-today-text-font-size:\n * calendar-cell-today-text-font-weight:\n * calendar-cell-today-text-line-height:\n * calendar-cell-today-hover-background-color:\n * calendar-cell-today-hover-border-color:\n * calendar-cell-today-active-background-color:\n * calendar-cell-today-active-border-color:\n * calendar-cell-today-disabled-border-color:\n * calendar-cell-today-selected-background-color:\n * calendar-cell-today-selected-border-color:\n * calendar-cell-today-selected-text-color:\n * calendar-cell-today-selected-hover-background-color:\n * calendar-cell-today-selected-hover-border-color:\n * calendar-cell-today-selected-active-background-color:\n * calendar-cell-today-selected-active-border-color:\n * calendar-cell-today-in-range-background-color:\n * calendar-cell-today-in-range-border-color:\n * calendar-cell-today-in-range-text-color:\n * calendar-cell-today-in-range-hover-background-color:\n * calendar-cell-today-in-range-hover-border-color:\n * calendar-cell-today-in-range-active-background-color:\n * calendar-cell-today-in-range-active-border-color:\n * calendar-cell-selected-background-color:\n * calendar-cell-selected-border-color:\n * calendar-cell-selected-text-color:\n * calendar-cell-selected-text-font-size:\n * calendar-cell-selected-text-font-weight:\n * calendar-cell-selected-text-line-height:\n * calendar-cell-selected-hover-background-color:\n * calendar-cell-selected-hover-border-color:\n * calendar-cell-selected-active-background-color:\n * calendar-cell-selected-active-border-color:\n * calendar-day-cell-width:\n * calendar-day-cell-height:\n * calendar-month-cell-width:\n * calendar-month-cell-height:\n * calendar-year-cell-width:\n * calendar-year-cell-height:\n * calendar-weekday-background:\n * calendar-weekday-divider-color:\n * calendar-weekday-divider-width:\n * calendar-weekday-text-color:\n * calendar-weekday-text-font-size:\n * calendar-weekday-text-font-weight:\n * calendar-weekday-text-line-height:\n * calendar-weekday-holiday-text-color:\n * calendar-weekday-height:\n * calendar-weekday-width:\n * calendar-weeknumber-background:\n * calendar-weeknumber-divider-color:\n * calendar-weeknumber-divider-width:\n * calendar-weeknumber-text-color:\n * calendar-weeknumber-text-font-size:\n * calendar-weeknumber-text-font-weight:\n * calendar-weeknumber-text-line-height:\n * calendar-weeknumber-height:\n * calendar-weeknumber-width:\n * calendar-large-width:\n * calendar-day-cell-large-width:\n * calendar-day-cell-large-height:\n * calendar-weekday-large-height:\n * calendar-weekday-large-width:\n * calendar-weeknumber-large-height:\n * calendar-weeknumber-large-width:\n * calendar-month-cell-large-width:\n * calendar-month-cell-large-height:\n * calendar-year-cell-large-width:\n * calendar-year-cell-large-height:\n * */\n@Component({\n    selector: 'nb-calendar-range',\n    template: `\n    <nb-base-calendar\n      [date]=\"range\"\n      (dateChange)=\"onChange($any($event))\"\n      [min]=\"min\"\n      [max]=\"max\"\n      [filter]=\"filter\"\n      [startView]=\"startView\"\n      [boundingMonth]=\"boundingMonth\"\n      [dayCellComponent]=\"dayCellComponent\"\n      [monthCellComponent]=\"monthCellComponent\"\n      [yearCellComponent]=\"yearCellComponent\"\n      [visibleDate]=\"visibleDate\"\n      [showNavigation]=\"showNavigation\"\n      [size]=\"size\"\n      [showWeekNumber]=\"showWeekNumber\"\n      [weekNumberSymbol]=\"weekNumberSymbol\"\n      [firstDayOfWeek]=\"firstDayOfWeek\"\n    ></nb-base-calendar>\n  `,\n    standalone: false\n})\nexport class NbCalendarRangeComponent<D> {\n  /**\n   * Defines if we should render previous and next months\n   * in the current month view.\n   * */\n  @Input() boundingMonth: boolean = true;\n\n  /**\n   * Defines starting view for the calendar.\n   * */\n  @Input() startView: NbCalendarViewMode = NbCalendarViewMode.DATE;\n  static ngAcceptInputType_startView: NbCalendarViewModeValues;\n\n  /**\n   * A minimum available date for selection.\n   * */\n  @Input() min: D;\n\n  /**\n   * A maximum available date for selection.\n   * */\n  @Input() max: D;\n\n  /**\n   * A predicate that decides which cells will be disabled.\n   * */\n  @Input() filter: (D) => boolean;\n\n  /**\n   * Custom day cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input('dayCellComponent')\n  set _cellComponent(cellComponent: Type<NbCalendarCell<D, NbCalendarRange<D>>>) {\n    if (cellComponent) {\n      this.dayCellComponent = cellComponent;\n    }\n  }\n  dayCellComponent: Type<NbCalendarCell<D, NbCalendarRange<D>>> = NbCalendarRangeDayCellComponent;\n\n  /**\n   * Custom month cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input('monthCellComponent')\n  set _monthCellComponent(cellComponent: Type<NbCalendarCell<D, NbCalendarRange<D>>>) {\n    if (cellComponent) {\n      this.monthCellComponent = cellComponent;\n    }\n  }\n  @Input() monthCellComponent: Type<NbCalendarCell<D, NbCalendarRange<D>>> = NbCalendarRangeMonthCellComponent;\n\n  /**\n   * Custom year cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input('yearCellComponent')\n  set _yearCellComponent(cellComponent: Type<NbCalendarCell<D, NbCalendarRange<D>>>) {\n    if (cellComponent) {\n      this.yearCellComponent = cellComponent;\n    }\n  }\n  yearCellComponent: Type<NbCalendarCell<D, NbCalendarRange<D>>> = NbCalendarRangeYearCellComponent;\n\n  /**\n   * Size of the calendar and entire components.\n   * Can be 'medium' which is default or 'large'.\n   * */\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  @Input() visibleDate: D;\n\n  /**\n   * Determines should we show calendars navigation or not.\n   * */\n  @Input() showNavigation: boolean = true;\n\n  /**\n   * Range which will be rendered as selected.\n   * */\n  @Input() range: NbCalendarRange<D>;\n\n  /**\n   * Determines should we show week numbers column.\n   * False by default.\n   * */\n  @Input()\n  get showWeekNumber(): boolean {\n    return this._showWeekNumber;\n  }\n  set showWeekNumber(value: boolean) {\n    this._showWeekNumber = convertToBoolProperty(value);\n  }\n  protected _showWeekNumber: boolean = false;\n  static ngAcceptInputType_showWeekNumber: NbBooleanInput;\n\n  /**\n   * Sets symbol used as a header for week numbers column\n   * */\n  @Input() weekNumberSymbol: string = '#';\n\n  /**\n   * Sets first day of the week, it can be 1 if week starts from monday and 0 if from sunday and so on.\n   * `undefined` means that default locale setting will be used.\n   * */\n  @Input() firstDayOfWeek: number | undefined;\n\n  /**\n   * Emits range when start selected and emits again when end selected.\n   * */\n  @Output() rangeChange: EventEmitter<NbCalendarRange<D>> = new EventEmitter();\n\n  constructor(protected dateService: NbDateService<D>) {\n  }\n\n  onChange(date: D) {\n    this.initDateIfNull();\n    this.handleSelected(date);\n  }\n\n  private initDateIfNull() {\n    if (!this.range) {\n      this.range = { start: null, end: null };\n    }\n  }\n\n  private handleSelected(date: D) {\n    if (this.selectionStarted()) {\n      this.selectEnd(date);\n    } else {\n      this.selectStart(date);\n    }\n  }\n\n  private selectionStarted(): boolean {\n    const { start, end } = this.range;\n    return start && !end;\n  }\n\n  private selectStart(start: D) {\n    this.selectRange({ start });\n  }\n\n  private selectEnd(date: D) {\n    const { start } = this.range;\n\n    if (this.dateService.compareDates(date, start) > 0) {\n      this.selectRange({ start, end: date });\n    } else {\n      this.selectRange({ start: date, end: start });\n    }\n  }\n\n  private selectRange(range: NbCalendarRange<D>) {\n    this.range = range;\n    this.rangeChange.emit(range);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbCalendarRangeComponent } from './calendar-range.component';\nimport { NbCalendarRangeDayCellComponent } from './calendar-range-day-cell.component';\nimport { NbCalendarRangeYearCellComponent } from './calendar-range-year-cell.component';\nimport { NbCalendarRangeMonthCellComponent } from './calendar-range-month-cell.component';\nimport { NbBaseCalendarModule } from './base-calendar.module';\n\n\n@NgModule({\n  imports: [NbBaseCalendarModule],\n  exports: [NbCalendarRangeComponent],\n  declarations: [\n    NbCalendarRangeComponent,\n    NbCalendarRangeDayCellComponent,\n    NbCalendarRangeYearCellComponent,\n    NbCalendarRangeMonthCellComponent,\n  ],\n})\nexport class NbCalendarRangeModule {\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport const NB_TIME_PICKER_CONFIG = new InjectionToken('NB_TIME_PICKER_CONFIG');\n\nexport interface NbTimepickerLocalizationConfig {\n  hoursText: string,\n  minutesText: string,\n  secondsText: string,\n  ampmText: string,\n}\n\nexport const NB_DEFAULT_TIMEPICKER_LOCALIZATION_CONFIG: NbTimepickerLocalizationConfig = {\n  hoursText: 'Hr',\n  minutesText: 'Min',\n  secondsText: 'Sec',\n  ampmText: 'Am/Pm',\n};\n\nexport interface NbTimePickerConfig {\n  twelveHoursFormat?: boolean,\n  format?: string,\n  localization?: NbTimepickerLocalizationConfig,\n}\n\nexport interface NbSelectedTimeModel {\n  value: string;\n}\n\nexport interface NbSelectedTimePayload<D> {\n  time: D,\n  save?: boolean,\n}\n","import { Component, Input, HostBinding } from '@angular/core';\n\n/**\n * List is a container component that wraps `nb-list-item` component.\n *\n * Basic example:\n * @stacked-example(Simple list, list/simple-list-showcase.component)\n *\n * `nb-list-item` accepts arbitrary content, so you can create a list of any components.\n *\n * ### Installation\n *\n * Import `NbListModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbListModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * List of users:\n * @stacked-example(Users list, list/users-list-showcase.component)\n *\n * @styles\n *\n * list-item-divider-color:\n * list-item-divider-style:\n * list-item-divider-width:\n * list-item-padding:\n * list-item-text-color:\n * list-item-font-family:\n * list-item-font-size:\n * list-item-font-weight:\n * list-item-line-height:\n */\n@Component({\n    selector: 'nb-list',\n    template: `<ng-content select=\"nb-list-item\"></ng-content>`,\n    styleUrls: ['./list.component.scss'],\n    standalone: false\n})\nexport class NbListComponent {\n  /**\n   * Role attribute value\n   *\n   * @type {string}\n   */\n  @Input()\n  @HostBinding('attr.role')\n  role = 'list';\n}\n\n/**\n * List item component is a grouping component that accepts arbitrary content.\n * It should be direct child of `nb-list` componet.\n */\n@Component({\n    selector: 'nb-list-item',\n    template: `<ng-content></ng-content>`,\n    styleUrls: ['list-item.component.scss'],\n    standalone: false\n})\nexport class NbListItemComponent {\n  /**\n   * Role attribute value\n   *\n   * @type {string}\n   */\n  @Input()\n  @HostBinding('attr.role')\n  role = 'listitem';\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  NgZone,\n  OnDestroy,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { filter, take, takeUntil } from 'rxjs/operators';\nimport { merge, Subject } from 'rxjs';\nimport { NbSelectedTimeModel } from './model';\nimport { NbPlatform } from '../cdk/platform/platform-service';\n\n@Component({\n    selector: 'nb-timepicker-cell',\n    template: `\n    <div #valueContainer>{{ value }}</div>\n  `,\n    styleUrls: ['./timepicker-cell.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbTimePickerCellComponent implements AfterViewInit, OnDestroy {\n  protected selectedChange$ = new Subject<boolean>();\n  protected unselected$ = this.selectedChange$.pipe(filter((selected) => !selected));\n  protected destroy$ = new Subject<void>();\n  _selected: boolean;\n\n  @Input() set selected(selected: boolean) {\n    if (selected) {\n      this._selected = selected;\n      this.scrollToElement();\n    }\n    this.selectedChange$.next(selected);\n  };\n  get selected(): boolean {\n    return this._selected;\n  }\n  @Input() value: string;\n  @Output() select: EventEmitter<NbSelectedTimeModel> = new EventEmitter();\n\n  @ViewChild('valueContainer') valueContainerElement: ElementRef;\n\n  constructor(protected ngZone: NgZone,\n              protected platformService: NbPlatform) {\n  }\n\n  @HostListener('click')\n  onClick() {\n    this.select.emit({ value: this.value });\n  }\n\n  ngAfterViewInit(): void {\n    if (this.selected) {\n      // Since we render timepicker in the overlay, at the moment this hook called,\n      // timepicker could be not fully rendered and placed. Because of it, we're waiting for Angular\n      // to finish change detection run and only then scroll to the selected cell.\n      this.ngZone.onStable\n      .pipe(\n        take(1),\n        takeUntil(merge(this.unselected$, this.destroy$)))\n      .subscribe(() => this.scrollToElement());\n    }\n  }\n\n  protected scrollToElement() {\n    if (this.valueContainerElement && this.platformService.isBrowser) {\n      this.ngZone.runOutsideAngular(() =>\n        this.valueContainerElement.nativeElement.scrollIntoView({block: 'center'}));\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  LOCALE_ID,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbPortalDirective } from '../cdk/overlay/mapping';\nimport { NbPlatform } from '../cdk/platform/platform-service';\nimport { NbDateService, NbDayPeriod } from '../calendar-kit/services/date.service';\nimport { range, rangeFromTo } from '../calendar-kit/helpers';\nimport { NbCalendarTimeModelService } from '../calendar-kit/services/calendar-time-model.service';\nimport {\n  NB_DEFAULT_TIMEPICKER_LOCALIZATION_CONFIG,\n  NB_TIME_PICKER_CONFIG,\n  NbSelectedTimePayload,\n  NbTimePickerConfig,\n} from './model';\n\ninterface NbTimePartOption {\n  value: number;\n  text: string;\n}\n\n/**\n * The TimePicker components itself.\n * Provides a proxy to `TimePicker` options as well as custom picker options.\n */\n@Component({\n    selector: 'nb-timepicker',\n    templateUrl: './timepicker.component.html',\n    styleUrls: ['./timepicker.component.scss'],\n    exportAs: 'nbTimepicker',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbTimePickerComponent<D> implements OnChanges {\n  protected blur$: Subject<void> = new Subject<void>();\n\n  fullTimeOptions: D[];\n  hoursColumnOptions: NbTimePartOption[];\n  minutesColumnOptions: NbTimePartOption[];\n  secondsColumnOptions: NbTimePartOption[];\n  readonly dayPeriodColumnOptions = [NbDayPeriod.AM, NbDayPeriod.PM];\n  hostRef: ElementRef;\n  isAM = true;\n\n  timepickerFormatChange$: Subject<void> = new Subject();\n\n  /**\n   * Emits when timepicker looses focus.\n   */\n  get blur(): Observable<void> {\n    return this.blur$.asObservable();\n  }\n\n  /**\n   * Defines time format string.\n   * */\n  @Input()\n  get timeFormat(): string {\n    return this._timeFormat;\n  }\n  set timeFormat(timeFormat: string) {\n    this._timeFormat = timeFormat;\n  }\n  protected _timeFormat: string;\n\n  computedTimeFormat: string = this.setupTimeFormat();\n\n  /**\n   * Defines 12 hours format .\n   * */\n  @Input()\n  get twelveHoursFormat(): boolean {\n    return this._twelveHoursFormat;\n  }\n  set twelveHoursFormat(value: boolean) {\n    this._twelveHoursFormat = convertToBoolProperty(value);\n  }\n  protected _twelveHoursFormat: boolean;\n  static ngAcceptInputType_twelveHoursFormat: NbBooleanInput;\n\n  /**\n   * Defines should show am/pm label if twelveHoursFormat enabled.\n   * */\n  @Input()\n  get showAmPmLabel(): boolean {\n    return this._showAmPmLabel;\n  }\n  set showAmPmLabel(value: boolean) {\n    this._showAmPmLabel = convertToBoolProperty(value);\n  }\n  protected _showAmPmLabel: boolean = true;\n  static ngAcceptInputType_showAmPmLabel: NbBooleanInput;\n\n  /**\n   * Show seconds in timepicker.\n   * Ignored when singleColumn is true\n   * */\n  @Input()\n  get withSeconds(): boolean {\n    return this._withSeconds;\n  }\n  set withSeconds(value: boolean) {\n    this._withSeconds = convertToBoolProperty(value);\n  }\n  protected _withSeconds: boolean;\n  static ngAcceptInputType_withSeconds: NbBooleanInput;\n\n  /**\n   * Show timepicker values in one column with 60 minutes step by default.\n   * */\n  @Input()\n  get singleColumn(): boolean {\n    return this._singleColumn;\n  }\n  set singleColumn(value: boolean) {\n    this._singleColumn = convertToBoolProperty(value);\n  }\n  _singleColumn: boolean;\n  static ngAcceptInputType_singleColumn: NbBooleanInput;\n\n  /**\n   * Defines minutes offset for options, when timepicker is in single column mode.\n   * By default it’s 60 minutes: '12:00, 13:00: 14:00, 15:00...'\n   * */\n  @Input()\n  set step(step: number) {\n    this._step = step;\n  }\n  get step(): number {\n    return this._step;\n  }\n  protected _step: number;\n\n  /**\n   * Date which will be rendered as selected.\n   * */\n  @Input()\n  set date(date: D) {\n    this._date = date;\n    this.isAM = this.dateService.getDayPeriod(this.date) === NbDayPeriod.AM;\n    this.buildColumnOptions();\n    this.cd.markForCheck();\n  }\n\n  get date(): D {\n    return this._date;\n  }\n\n  _date: D;\n\n  /**\n   * In timepicker value should be always true\n   * In calendar-with-time.component  should set to false\n   * @docs-private\n   */\n  @Input() showFooter: boolean = true;\n  @Input() applyButtonText: string;\n  @Input() hoursText: string;\n  @Input() minutesText: string;\n  @Input() secondsText: string;\n  @Input() ampmText: string;\n  @Input() currentTimeButtonText: string;\n\n  /**\n   * Emits date when selected.\n   * */\n  @Output() onSelectTime: EventEmitter<NbSelectedTimePayload<D>> = new EventEmitter<NbSelectedTimePayload<D>>();\n  @ViewChild(NbPortalDirective, { static: true }) portal: NbPortalDirective;\n\n  constructor(\n    @Inject(NB_TIME_PICKER_CONFIG) protected config: NbTimePickerConfig,\n    protected platformService: NbPlatform,\n    @Inject(LOCALE_ID) locale: string,\n    public cd: ChangeDetectorRef,\n    protected calendarTimeModelService: NbCalendarTimeModelService<D>,\n    protected dateService: NbDateService<D>,\n  ) {\n    this.initFromConfig(this.config);\n  }\n\n  ngOnChanges({ step, twelveHoursFormat, withSeconds, singleColumn }: SimpleChanges): void {\n    const nextTimeFormat = this.setupTimeFormat();\n    if (nextTimeFormat !== this.computedTimeFormat) {\n      this.computedTimeFormat = nextTimeFormat;\n      this.timepickerFormatChange$.next();\n    }\n\n    const isConfigChanged = step || twelveHoursFormat || withSeconds || singleColumn;\n\n    if (isConfigChanged || !this.fullTimeOptions) {\n      this.buildColumnOptions();\n    }\n  }\n\n  setHost(hostRef: ElementRef): void {\n    this.hostRef = hostRef;\n  }\n\n  attach(hostRef: ElementRef): void {\n    this.hostRef = hostRef;\n  }\n\n  setCurrentTime(): void {\n    this.date = this.dateService.today();\n    this.onSelectTime.emit({\n      time: this.date,\n      save: true,\n    });\n  }\n\n  setHour(value: number): void {\n    this.updateValue(this.dateService.setHours(this.date, value));\n  }\n\n  setMinute(value: number): void {\n    this.updateValue(this.dateService.setMinutes(this.date, value));\n  }\n\n  setSecond(value: number): void {\n    this.updateValue(this.dateService.setSeconds(this.date, value));\n  }\n\n  selectFullTime(value: D): void {\n    this.updateValue(value);\n  }\n\n  changeDayPeriod(dayPeriodToSet: NbDayPeriod): void {\n    if (this.dateService.getDayPeriod(this.date) === dayPeriodToSet) {\n      return;\n    }\n\n    // Subtract hours when switching to AM (before midday, 0-11 in 24-hour) from PM (after midday, 12-24 in 24-hour),\n    // otherwise add hours because switching to PM from AM.\n    const direction = dayPeriodToSet === NbDayPeriod.AM ? -1 : 1;\n    const increment = direction * this.dateService.HOURS_IN_DAY_PERIOD;\n    this.updateValue(this.dateService.addHours(this.date, increment));\n  }\n\n  updateValue(date: D): void {\n    this.onSelectTime.emit({ time: date });\n  }\n\n  saveValue(): void {\n    this.onSelectTime.emit({\n      time: this.date,\n      save: true,\n    });\n  }\n\n  trackByTimeValues(index, item: NbTimePartOption): number {\n    return item.value;\n  }\n\n  trackBySingleColumnValue(index, item: D) {\n    return this.dateService.valueOf(item);\n  }\n\n  trackByDayPeriod(index, item: NbDayPeriod): string {\n    return item;\n  }\n\n  showSeconds(): boolean {\n    return this.withSeconds && !this.singleColumn;\n  }\n\n  isSelectedHour(val: number): boolean {\n    if (this.date) {\n      return this.dateService.getHours(this.date) === val;\n    }\n\n    return false;\n  }\n\n  isSelectedMinute(val: number): boolean {\n    if (this.date) {\n      return this.dateService.getMinutes(this.date) === val;\n    }\n\n    return false;\n  }\n\n  isSelectedSecond(val: number): boolean {\n    if (this.date) {\n      return this.dateService.getSeconds(this.date) === val;\n    }\n\n    return false;\n  }\n\n  isSelectedDayPeriod(dayPeriod: NbDayPeriod): boolean {\n    if (this.date) {\n      return dayPeriod === this.dateService.getDayPeriod(this.date);\n    }\n\n    return false;\n  }\n\n  getFullTimeString(item: D): string {\n    return this.dateService.format(item, this.computedTimeFormat).toUpperCase();\n  }\n\n  isSelectedFullTimeValue(value: D): boolean {\n    if (this.date) {\n      return this.dateService.isSameHourAndMinute(value, this.date);\n    }\n\n    return false;\n  }\n\n  protected buildColumnOptions(): void {\n    this.fullTimeOptions = this.singleColumn ? this.calendarTimeModelService.getHoursRange(this.step) : [];\n\n    this.hoursColumnOptions = this.generateHours();\n    this.minutesColumnOptions = this.generateMinutesOrSeconds();\n    this.secondsColumnOptions = this.showSeconds() ? this.generateMinutesOrSeconds() : [];\n  }\n\n  /**\n   * @docs-private\n   */\n  isFirefox(): boolean {\n    return this.platformService.FIREFOX;\n  }\n\n  protected generateHours(): NbTimePartOption[] {\n    if (!this.twelveHoursFormat) {\n      return range(24, (v: number) => {\n        return { value: v, text: this.calendarTimeModelService.paddToTwoSymbols(v) };\n      });\n    }\n\n    if (this.isAM) {\n      return range(12, (v: number) => {\n        const text = v === 0 ? 12 : v;\n        return { value: v, text: this.calendarTimeModelService.paddToTwoSymbols(text) };\n      });\n    }\n\n    return rangeFromTo(12, 24, (v: number) => {\n      const text = v === 12 ? 12 : v - 12;\n      return { value: v, text: this.calendarTimeModelService.paddToTwoSymbols(text) };\n    });\n  }\n\n  protected generateMinutesOrSeconds(): NbTimePartOption[] {\n    return range(60, (v: number) => {\n      return { value: v, text: this.calendarTimeModelService.paddToTwoSymbols(v) };\n    });\n  }\n\n  protected setupTimeFormat(): string {\n    if (!this.timeFormat) {\n      return this.config.format || this.buildTimeFormat();\n    }\n\n    return this.timeFormat;\n  }\n\n  /**\n   * @docs-private\n   */\n  buildTimeFormat(): string {\n    if (this.twelveHoursFormat) {\n      return `${\n        this.withSeconds && !this.singleColumn\n          ? this.dateService.getTwelveHoursFormatWithSeconds()\n          : this.dateService.getTwelveHoursFormat()\n      }`;\n    } else {\n      return `${\n        this.withSeconds && !this.singleColumn\n          ? this.dateService.getTwentyFourHoursFormatWithSeconds()\n          : this.dateService.getTwentyFourHoursFormat()\n      }`;\n    }\n  }\n\n  protected initFromConfig(config: NbTimePickerConfig) {\n    if (config) {\n      this.twelveHoursFormat = config.twelveHoursFormat;\n    } else {\n      this.twelveHoursFormat = this.dateService.getLocaleTimeFormat().includes('h');\n    }\n\n    const localeConfig = { ...NB_DEFAULT_TIMEPICKER_LOCALIZATION_CONFIG, ...(config?.localization ?? {}) };\n    this.hoursText = localeConfig.hoursText;\n    this.minutesText = localeConfig.minutesText;\n    this.secondsText = localeConfig.secondsText;\n    this.ampmText = localeConfig.ampmText;\n  }\n}\n","<nb-card *nbPortal [class.supports-scrollbar-theming]=\"!isFirefox()\" class=\"nb-timepicker-container\">\n  <nb-card-header class=\"column-header\">\n    <ng-container *ngIf=\"singleColumn; else fullTimeHeadersBlock\">\n      <div class=\"header-cell\">Time</div>\n    </ng-container>\n    <ng-template #fullTimeHeadersBlock>\n      <div class=\"header-cell\">{{ hoursText }}</div>\n      <div class=\"header-cell\">{{ minutesText }}</div>\n      <div *ngIf=\"withSeconds\" class=\"header-cell\">{{ secondsText }}</div>\n      <div *ngIf=\"twelveHoursFormat\" class=\"header-cell\">\n        <ng-template [ngIf]=\"showAmPmLabel\">{{ ampmText }}</ng-template>\n      </div>\n    </ng-template>\n  </nb-card-header>\n\n  <div class=\"picker-body\">\n    <ng-container *ngIf=\"singleColumn; else fullTimeColumnBlock\">\n      <nb-list class=\"values-list\">\n        <nb-list-item\n          class=\"list-item\"\n          [class.selected]=\"isSelectedFullTimeValue(item)\"\n          *ngFor=\"let item of fullTimeOptions; trackBy: trackBySingleColumnValue.bind(this)\"\n        >\n          <nb-timepicker-cell\n            [value]=\"getFullTimeString(item)\"\n            [selected]=\"isSelectedFullTimeValue(item)\"\n            (select)=\"selectFullTime(item)\"\n          >\n          </nb-timepicker-cell>\n        </nb-list-item>\n      </nb-list>\n    </ng-container>\n\n    <ng-template #fullTimeColumnBlock>\n      <nb-list class=\"values-list\">\n        <nb-list-item\n          class=\"list-item\"\n          [class.selected]=\"isSelectedHour(item.value)\"\n          *ngFor=\"let item of hoursColumnOptions; trackBy: trackByTimeValues\"\n        >\n          <nb-timepicker-cell\n            [value]=\"item.text\"\n            [selected]=\"isSelectedHour(item.value)\"\n            (select)=\"setHour(item.value)\"\n          >\n          </nb-timepicker-cell>\n        </nb-list-item>\n      </nb-list>\n      <nb-list class=\"values-list\">\n        <nb-list-item\n          class=\"list-item\"\n          [class.selected]=\"isSelectedMinute(item.value)\"\n          *ngFor=\"let item of minutesColumnOptions; trackBy: trackByTimeValues\"\n        >\n          <nb-timepicker-cell\n            [value]=\"item.text\"\n            [selected]=\"isSelectedMinute(item.value)\"\n            (select)=\"setMinute(item.value)\"\n          >\n          </nb-timepicker-cell>\n        </nb-list-item>\n      </nb-list>\n      <nb-list *ngIf=\"showSeconds()\" class=\"values-list\">\n        <nb-list-item\n          class=\"list-item\"\n          [class.selected]=\"isSelectedSecond(item.value)\"\n          *ngFor=\"let item of secondsColumnOptions; trackBy: trackByTimeValues\"\n        >\n          <nb-timepicker-cell\n            [value]=\"item.text\"\n            [selected]=\"isSelectedSecond(item.value)\"\n            (select)=\"setSecond(item.value)\"\n          >\n          </nb-timepicker-cell>\n        </nb-list-item>\n      </nb-list>\n      <nb-list *ngIf=\"twelveHoursFormat\" class=\"values-list\">\n        <nb-list-item\n          class=\"list-item am-pm-item\"\n          [class.selected]=\"isSelectedDayPeriod(dayPeriod)\"\n          *ngFor=\"let dayPeriod of dayPeriodColumnOptions; trackBy: trackByDayPeriod\"\n        >\n          <nb-timepicker-cell\n            [value]=\"dayPeriod\"\n            [selected]=\"isSelectedDayPeriod(dayPeriod)\"\n            (select)=\"changeDayPeriod(dayPeriod)\"\n          >\n          </nb-timepicker-cell>\n        </nb-list-item>\n      </nb-list>\n    </ng-template>\n  </div>\n\n  <nb-card-footer *ngIf=\"showFooter\" class=\"actions-footer\">\n    <nb-calendar-actions\n      [applyButtonText]=\"applyButtonText\"\n      [currentTimeButtonText]=\"currentTimeButtonText\"\n      (setCurrentTime)=\"setCurrentTime()\"\n      (saveValue)=\"saveValue()\"\n    ></nb-calendar-actions>\n  </nb-card-footer>\n</nb-card>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Input,\n  OnInit,\n  ViewChild,\n} from '@angular/core';\nimport { NbCalendarComponent } from '../calendar/calendar.component';\nimport { NbSelectedTimePayload } from '../timepicker/model';\nimport { NbDateService } from '../calendar-kit/services/date.service';\nimport { NbCalendarTimeModelService } from '../calendar-kit/services/calendar-time-model.service';\nimport { NbCalendarSize } from '../calendar-kit/model';\nimport { NbPortalOutletDirective } from '../cdk/overlay/mapping';\nimport { NbTimePickerComponent } from '../timepicker/timepicker.component';\n\n@Component({\n    selector: 'nb-calendar-with-time',\n    template: `\n    <nb-card class=\"calendar-with-time\">\n      <nb-card-body class=\"picker-body\">\n        <nb-base-calendar\n          [boundingMonth]=\"boundingMonth\"\n          [startView]=\"startView\"\n          [date]=\"date\"\n          [min]=\"min\"\n          [max]=\"max\"\n          [filter]=\"filter\"\n          [dayCellComponent]=\"dayCellComponent\"\n          [monthCellComponent]=\"monthCellComponent\"\n          [yearCellComponent]=\"yearCellComponent\"\n          [size]=\"size\"\n          [visibleDate]=\"visibleDate\"\n          [showNavigation]=\"showNavigation\"\n          [showWeekNumber]=\"showWeekNumber\"\n          [weekNumberSymbol]=\"weekNumberSymbol\"\n          [firstDayOfWeek]=\"firstDayOfWeek\"\n          (dateChange)=\"onDateValueChange($event)\"\n        >\n        </nb-base-calendar>\n        <div\n          class=\"timepicker-section\"\n          [class.size-large]=\"isLarge()\"\n          [class.timepicker-single-column-width]=\"singleColumn\"\n          [class.timepicker-multiple-column-width]=\"!singleColumn\"\n        >\n          <div class=\"picker-title\">{{ title }}</div>\n          <nb-timepicker\n            (onSelectTime)=\"onTimeChange($event)\"\n            [date]=\"date\"\n            [twelveHoursFormat]=\"twelveHoursFormat\"\n            [showAmPmLabel]=\"showAmPmLabel\"\n            [withSeconds]=\"showSeconds()\"\n            [showFooter]=\"false\"\n            [singleColumn]=\"singleColumn\"\n            [step]=\"step\"\n          >\n          </nb-timepicker>\n          <ng-container nbPortalOutlet></ng-container>\n        </div>\n      </nb-card-body>\n      <nb-card-footer class=\"picker-footer\">\n        <nb-calendar-actions\n          [applyButtonText]=\"applyButtonText\"\n          [currentTimeButtonText]=\"currentTimeButtonText\"\n          [showCurrentTimeButton]=\"showCurrentTimeButton\"\n          (setCurrentTime)=\"saveCurrentTime()\"\n          (saveValue)=\"saveValue()\"\n        ></nb-calendar-actions>\n      </nb-card-footer>\n    </nb-card>\n  `,\n    styleUrls: ['./calendar-with-time-container.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarWithTimeComponent<D> extends NbCalendarComponent<D> implements OnInit, AfterViewInit {\n  /**\n   * Defines selected date.\n   * */\n  @Input() visibleDate: D;\n\n  /**\n   * Defines 12 hours format like '07:00 PM'.\n   * */\n  @Input() twelveHoursFormat: boolean;\n\n  /**\n   * Defines should show am/pm label if twelveHoursFormat enabled.\n   * */\n  @Input() showAmPmLabel: boolean;\n\n  /**\n   * Show seconds in timepicker.\n   * Ignored when singleColumn is true.\n   * */\n  @Input() withSeconds: boolean;\n\n  /**\n   * Show timepicker values in one column with 60 minutes step by default.\n   * */\n  @Input() singleColumn: boolean;\n\n  /**\n   * Defines minutes step when we use fill time format.\n   * If set to 20, it will be: '12:00, 12:20: 12:40, 13:00...'\n   * */\n  @Input() step: number;\n\n  /**\n   * Defines time format.\n   * */\n  @Input() timeFormat: string;\n\n  /**\n   * Defines text over the timepicker.\n   * */\n  @Input() title: string;\n\n  @Input() applyButtonText: string;\n\n  @Input() currentTimeButtonText: string;\n\n  @Input() showCurrentTimeButton: boolean;\n\n  @ViewChild(NbPortalOutletDirective) portalOutlet: NbPortalOutletDirective;\n  @ViewChild(NbTimePickerComponent) timepicker: NbTimePickerComponent<D>;\n\n  constructor(\n    protected dateService: NbDateService<D>,\n    public cd: ChangeDetectorRef,\n    protected calendarTimeModelService: NbCalendarTimeModelService<D>,\n  ) {\n    super();\n  }\n\n  ngOnInit(): void {\n    if (!this.date) {\n      this.date = this.calendarTimeModelService.getResetTime();\n    }\n  }\n\n  ngAfterViewInit() {\n    this.portalOutlet.attachTemplatePortal(this.timepicker.portal);\n  }\n\n  onDateValueChange(date: D): void {\n    const hours = this.dateService.getHours(this.date);\n    const minutes = this.dateService.getMinutes(this.date);\n    const seconds = this.dateService.getSeconds(this.date);\n    const milliseconds = this.dateService.getMilliseconds(this.date);\n\n    let newDate = this.dateService.setHours(date, hours);\n    newDate = this.dateService.setMinutes(newDate, minutes);\n    newDate = this.dateService.setMinutes(newDate, minutes);\n    newDate = this.dateService.setSeconds(newDate, seconds);\n    newDate = this.dateService.setMilliseconds(newDate, milliseconds);\n\n    this.date = newDate;\n  }\n\n  onTimeChange(selectedTime: NbSelectedTimePayload<D>): void {\n    let newDate = this.dateService.clone(this.date);\n\n    newDate = this.dateService.setHours(newDate, this.dateService.getHours(selectedTime.time));\n    newDate = this.dateService.setMinutes(newDate, this.dateService.getMinutes(selectedTime.time));\n    newDate = this.dateService.setSeconds(newDate, this.dateService.getSeconds(selectedTime.time));\n    newDate = this.dateService.setMilliseconds(newDate, this.dateService.getMilliseconds(selectedTime.time));\n\n    this.date = newDate;\n  }\n\n  saveValue(): void {\n    this.dateChange.emit(this.date);\n  }\n\n  saveCurrentTime(): void {\n    this.dateChange.emit(this.dateService.today());\n  }\n\n  showSeconds(): boolean {\n    return this.withSeconds && !this.singleColumn;\n  }\n\n  isLarge(): boolean {\n    return this.size === NbCalendarSize.LARGE;\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, ComponentRef, ViewChild } from '@angular/core';\n\nimport { NbComponentPortal } from '../cdk/overlay/mapping';\nimport { NbOverlayContainerComponent, NbPositionedContainerComponent } from '../cdk/overlay/overlay-container';\n\n\n@Component({\n    selector: 'nb-datepicker-container',\n    template: `\n    <nb-overlay-container></nb-overlay-container>\n  `,\n    standalone: false\n})\nexport class NbDatepickerContainerComponent extends NbPositionedContainerComponent {\n\n  // TODO static must be false as of Angular 9.0.0, issues/1514\n  @ViewChild(NbOverlayContainerComponent, { static: true }) overlayContainer: NbOverlayContainerComponent;\n\n  attach<T>(portal: NbComponentPortal<T>): ComponentRef<T> {\n    return this.overlayContainer.attachComponentPortal(portal);\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectorRef,\n  Directive,\n  ElementRef,\n  forwardRef,\n  Inject,\n  InjectionToken,\n  Input,\n  OnDestroy,\n  Type,\n} from '@angular/core';\nimport {\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator,\n  ValidatorFn,\n  Validators,\n} from '@angular/forms';\nimport { fromEvent, merge, Observable, Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, filter, map, pairwise, startWith, take, takeUntil, tap } from 'rxjs/operators';\n\nimport { NB_DOCUMENT } from '../../theme.options';\nimport { NbDateService } from '../calendar-kit/services/date.service';\n\n/**\n * The `NbDatepickerAdapter` instances provide way how to parse, format and validate\n * different date types.\n * */\nexport abstract class NbDatepickerAdapter<D> {\n  /**\n   * Picker component class.\n   * */\n  abstract picker: Type<any>;\n\n  /**\n   * Parse date string according to the format.\n   * */\n  abstract parse(value: string, format: string): D;\n\n  /**\n   * Format date according to the format.\n   * */\n  abstract format(value: D, format: string): string;\n\n  /**\n   * Validates date string according to the passed format.\n   * */\n  abstract isValid(value: string, format: string): boolean;\n}\n\n/**\n * Validators config that will be used by form control to perform proper validation.\n * */\nexport interface NbPickerValidatorConfig<D> {\n  /**\n   * Minimum date available in picker.\n   * */\n  min: D;\n\n  /**\n   * Maximum date available in picker.\n   * */\n  max: D;\n\n  /**\n   * Predicate that determines is value available for picking.\n   * */\n  filter: (D) => boolean;\n}\n\n/**\n * Datepicker is an control that can pick any values anyway.\n * It has to be bound to the datepicker directive through nbDatepicker input.\n * */\nexport abstract class NbDatepicker<T, D = T> {\n  /**\n   * HTML input element date format.\n   * */\n  abstract format: string;\n\n  abstract get value(): T;\n\n  abstract set value(value: T);\n\n  abstract get valueChange(): Observable<T>;\n\n  abstract get init(): Observable<void>;\n\n  /**\n   * Attaches datepicker to the native input element.\n   * */\n  abstract attach(hostRef: ElementRef);\n\n  /**\n   * Returns validator configuration based on the input properties.\n   * */\n  abstract getValidatorConfig(): NbPickerValidatorConfig<D>;\n\n  abstract show();\n\n  abstract hide();\n\n  abstract shouldHide(): boolean;\n\n  abstract get isShown(): boolean;\n\n  abstract get blur(): Observable<void>;\n\n  abstract get formatChanged$(): Observable<void>;\n}\n\nexport const NB_DATE_ADAPTER = new InjectionToken<NbDatepickerAdapter<any>>('Datepicker Adapter');\n\nexport const NB_DATE_SERVICE_OPTIONS = new InjectionToken('Date service options');\n\n/**\n * The `NbDatepickerDirective` is form control that gives you ability to select dates and ranges. The datepicker\n * is shown when input receives a `focus` event.\n *\n * ```html\n * <input [nbDatepicker]=\"datepicker\">\n * <nb-datepicker #datepicker></nb-datepicker>\n * ```\n *\n * @stacked-example(Showcase, datepicker/datepicker-showcase.component)\n *\n * ### Installation\n *\n * Import `NbDatepickerModule.forRoot()` to your root module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbDatepickerModule.forRoot(),\n *   ],\n * })\n * export class AppModule { }\n * ```\n * And `NbDatepickerModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbDatepickerModule,\n *   ],\n * })\n *\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * If you want to use range selection, you have to use `NbRangepickerComponent` instead:\n *\n * ```html\n * <input [nbDatepicker]=\"rangepicker\">\n * <nb-rangepicker #rangepicker></nb-rangepicker>\n * ```\n *\n * Both range and date pickers support all parameters as calendar, so, check `NbCalendarComponent` for additional\n * info.\n *\n * @stacked-example(Range showcase, datepicker/rangepicker-showcase.component)\n *\n * Datepicker is the form control so it can be bound with angular forms through ngModel and form controls.\n *\n * @stacked-example(Forms, datepicker/datepicker-forms.component)\n *\n * `NbDatepickerDirective` may be validated using `min` and `max` dates passed to the datepicker.\n *\n * @stacked-example(Validation, datepicker/datepicker-validation.component)\n *\n * Also `NbDatepickerDirective` may be filtered using `filter` predicate\n * that receives date object and has to return a boolean value.\n *\n * @stacked-example(Filter, datepicker/datepicker-filter.component)\n *\n * If you need to pick a time along with the date, you can use nb-date-timepicker\n *\n * ```html\n * <input nbInput placeholder=\"Pick Date\" [nbDatepicker]=\"dateTimePicker\">\n * <nb-date-timepicker withSeconds #dateTimePicker></nb-date-timepicker>\n * ```\n * @stacked-example(Date timepicker, datepicker/date-timepicker-showcase.component)\n *\n * A single column picker with options value as time and minute, so users won’t be able to pick\n * hours and minutes individually.\n *\n * @stacked-example(Date timepicker single column, datepicker/date-timepicker-single-column.component)\n\n * The `NbDatepickerComponent` supports date formatting:\n *\n * ```html\n * <input [nbDatepicker]=\"datepicker\">\n * <nb-datepicker #datepicker format=\"MM\\dd\\yyyy\"></nb-datepicker>\n * ```\n * <span id=\"formatting-issue\"></span>\n * ## Formatting Issue\n *\n * By default, datepicker uses angulars `LOCALE_ID` token for localization and `DatePipe` for dates formatting.\n * And native `Date.parse(...)` for dates parsing. But native `Date.parse` function doesn't support formats.\n * To provide custom formatting you have to use one of the following packages:\n *\n * - `@nebular/moment` - provides moment date adapter that uses moment for date objects. This means datepicker than\n * will operate only moment date objects. If you want to use it you have to install it: `npm i @nebular/moment`, and\n * import `NbMomentDateModule` from this package.\n *\n * - `@nebular/date-fns` - adapter for popular date-fns library. This way is preferred if you need only date formatting.\n * Because date-fns is treeshakable, tiny and operates native date objects. If you want to use it you have to\n * install it: `npm i @nebular/date-fns`, and import `NbDateFnsDateModule` from this package.\n *\n * ### NbDateFnsDateModule\n *\n * Format is required when using `NbDateFnsDateModule`. You can set it via `format` input on datepicker component:\n * ```html\n * <nb-datepicker format=\"dd.MM.yyyy\"></nb-datepicker>\n * ```\n * Also format can be set globally with `NbDateFnsDateModule.forRoot({ format: 'dd.MM.yyyy' })` and\n * `NbDateFnsDateModule.forChild({ format: 'dd.MM.yyyy' })` methods.\n *\n * Please note to use some of the formatting tokens you also need to pass\n * `{ useAdditionalWeekYearTokens: true, useAdditionalDayOfYearTokens: true }` to date-fns parse and format functions.\n * You can configure options passed this functions by setting `formatOptions` and\n * `parseOptions` of options object passed to `NbDateFnsDateModule.forRoot` and `NbDateFnsDateModule.forChild` methods.\n * ```ts\n * NbDateFnsDateModule.forRoot({\n *   parseOptions: { useAdditionalWeekYearTokens: true, useAdditionalDayOfYearTokens: true },\n *   formatOptions: { useAdditionalWeekYearTokens: true, useAdditionalDayOfYearTokens: true },\n * })\n * ```\n * Further info on `date-fns` formatting tokens could be found at\n * [date-fns docs](https://date-fns.org/v2.0.0-alpha.27/docs/Unicode-Tokens).\n *\n * You can also use `parseOptions` and `formatOptions` to provide locale.\n * ```ts\n * import { eo } from 'date-fns/locale';\n *\n * @NgModule({\n *   imports: [\n *     NbDateFnsDateModule.forRoot({\n *       parseOptions: { locale: eo },\n *       formatOptions: { locale: eo },\n *     }),\n *   ],\n * })\n * ```\n *\n * @styles\n *\n * datepicker-background-color:\n * datepicker-border-color:\n * datepicker-border-style:\n * datepicker-border-width:\n * datepicker-border-radius:\n * datepicker-shadow:\n * */\n@Directive({\n    selector: 'input[nbDatepicker]',\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => NbDatepickerDirective),\n            multi: true,\n        },\n        {\n            provide: NG_VALIDATORS,\n            useExisting: forwardRef(() => NbDatepickerDirective),\n            multi: true,\n        },\n    ],\n    standalone: false\n})\nexport class NbDatepickerDirective<D> implements OnDestroy, ControlValueAccessor, Validator {\n  /**\n   * Provides datepicker component.\n   * */\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('nbDatepicker')\n  set setPicker(picker: NbDatepicker<D>) {\n    this.picker = picker;\n    this.setupPicker();\n  }\n\n  protected pickerInputsChangedSubscription: Subscription | undefined;\n\n  /**\n   * Datepicker adapter.\n   * */\n  protected datepickerAdapter: NbDatepickerAdapter<D>;\n\n  /**\n   * Datepicker instance.\n   * */\n  protected picker: NbDatepicker<D>;\n  protected destroy$ = new Subject<void>();\n  protected isDatepickerReady: boolean = false;\n  protected queue: D | undefined;\n  protected onChange: (D) => void = () => {};\n  protected onTouched: () => void = () => {};\n\n  /**\n   * Form control validators will be called in validators context, so, we need to bind them.\n   * */\n  protected validator: ValidatorFn = Validators.compose(\n    [this.parseValidator, this.minValidator, this.maxValidator, this.filterValidator].map((fn) => fn.bind(this)),\n  );\n\n  constructor(\n    @Inject(NB_DOCUMENT) protected document,\n    @Inject(NB_DATE_ADAPTER) protected datepickerAdapters: NbDatepickerAdapter<D>[],\n    protected hostRef: ElementRef,\n    protected dateService: NbDateService<D>,\n    protected changeDetector: ChangeDetectorRef,\n  ) {\n    this.subscribeOnInputChange();\n  }\n\n  /**\n   * Returns html input element.\n   * */\n  get input(): HTMLInputElement {\n    return this.hostRef.nativeElement;\n  }\n\n  /**\n   * Returns host input value.\n   * */\n  get inputValue(): string {\n    return this.input.value;\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  /**\n   * Writes value in picker and html input element.\n   * */\n  writeValue(value: D) {\n    if (this.isDatepickerReady) {\n      this.writePicker(value);\n      this.writeInput(value);\n    } else {\n      this.queue = value;\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.input.disabled = isDisabled;\n  }\n\n  /**\n   * Form control validation based on picker validator config.\n   * */\n  validate(): ValidationErrors | null {\n    return this.validator(null);\n  }\n\n  /**\n   * Hides picker, focuses the input\n   */\n  protected hidePicker() {\n    this.input.focus();\n    this.picker.hide();\n  }\n\n  /**\n   * Validates that we can parse value correctly.\n   * */\n  protected parseValidator(): ValidationErrors | null {\n    /**\n     * Date services treat empty string as invalid date.\n     * That's why we're getting invalid formControl in case of empty input which is not required.\n     * */\n    if (this.inputValue === '') {\n      return null;\n    }\n\n    const isValid = this.datepickerAdapter.isValid(this.inputValue, this.picker.format);\n    return isValid ? null : { nbDatepickerParse: { value: this.inputValue } };\n  }\n\n  /**\n   * Validates passed value is greater than min.\n   * */\n  protected minValidator(): ValidationErrors | null {\n    const config = this.picker.getValidatorConfig();\n    const date = this.datepickerAdapter.parse(this.inputValue, this.picker.format);\n    return !config.min || !date || this.dateService.compareDates(config.min, date) <= 0\n      ? null\n      : { nbDatepickerMin: { min: config.min, actual: date } };\n  }\n\n  /**\n   * Validates passed value is smaller than max.\n   * */\n  protected maxValidator(): ValidationErrors | null {\n    const config = this.picker.getValidatorConfig();\n    const date = this.datepickerAdapter.parse(this.inputValue, this.picker.format);\n    return !config.max || !date || this.dateService.compareDates(config.max, date) >= 0\n      ? null\n      : { nbDatepickerMax: { max: config.max, actual: date } };\n  }\n\n  /**\n   * Validates passed value satisfy the filter.\n   * */\n  protected filterValidator(): ValidationErrors | null {\n    const config = this.picker.getValidatorConfig();\n    const date = this.datepickerAdapter.parse(this.inputValue, this.picker.format);\n    return !config.filter || !date || config.filter(date) ? null : { nbDatepickerFilter: true };\n  }\n\n  /**\n   * Chooses datepicker adapter based on passed picker component.\n   * */\n  protected chooseDatepickerAdapter() {\n    this.datepickerAdapter = this.datepickerAdapters.find(({ picker }) => this.picker instanceof picker);\n\n    if (this.noDatepickerAdapterProvided()) {\n      throw new Error('No datepickerAdapter provided for picker');\n    }\n  }\n\n  /**\n   * Attaches picker to the host input element and subscribes on value changes.\n   * */\n  protected setupPicker() {\n    this.chooseDatepickerAdapter();\n    this.picker.attach(this.hostRef);\n\n    if (this.inputValue) {\n      this.picker.value = this.datepickerAdapter.parse(this.inputValue, this.picker.format);\n    }\n\n    this.pickerInputsChangedSubscription?.unsubscribe();\n    this.pickerInputsChangedSubscription = this.picker.formatChanged$\n      .pipe(\n        map(() => this.picker.format),\n        startWith(this.picker.format),\n        distinctUntilChanged(),\n        pairwise(),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(([prevFormat, nextFormat]) => {\n        if (this.inputValue) {\n          const date = this.datepickerAdapter.parse(this.inputValue, prevFormat);\n          this.writeInput(date);\n        }\n      });\n\n    // In case datepicker component placed after the input with datepicker directive,\n    // we can't read `this.picker.format` on first change detection run,\n    // since it's not bound yet, so we have to wait for datepicker component initialization.\n    if (!this.isDatepickerReady) {\n      this.picker.init\n        .pipe(\n          take(1),\n          tap(() => (this.isDatepickerReady = true)),\n          filter(() => !!this.queue),\n          takeUntil(this.destroy$),\n        )\n        .subscribe(() => {\n          this.writeValue(this.queue);\n          this.changeDetector.detectChanges();\n          this.queue = undefined;\n        });\n    }\n\n    this.picker.valueChange.pipe(takeUntil(this.destroy$)).subscribe((value: D) => {\n      this.writePicker(value);\n      this.writeInput(value);\n      this.onChange(value);\n\n      if (this.picker.shouldHide()) {\n        this.hidePicker();\n      }\n    });\n\n    merge(\n      this.picker.blur,\n      fromEvent(this.input, 'blur').pipe(\n        filter(() => !this.picker.isShown && this.document.activeElement !== this.input),\n      ),\n    )\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.onTouched());\n  }\n\n  protected writePicker(value: D) {\n    this.picker.value = value;\n  }\n\n  protected writeInput(value: D) {\n    this.hostRef.nativeElement.value = this.datepickerAdapter.format(value, this.picker.format);\n  }\n\n  /**\n   * Validates if no datepicker adapter provided.\n   * */\n  protected noDatepickerAdapterProvided(): boolean {\n    return !this.datepickerAdapter || !(this.datepickerAdapter instanceof NbDatepickerAdapter);\n  }\n\n  protected subscribeOnInputChange() {\n    fromEvent(this.input, 'input')\n      .pipe(\n        map(() => this.inputValue),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((value: string) => this.handleInputChange(value));\n  }\n\n  /**\n   * Parses input value and write if it isn't null.\n   * */\n  protected handleInputChange(value: string) {\n    const date = this.parseInputValue(value);\n\n    this.onChange(date);\n    this.writePicker(date);\n  }\n\n  protected parseInputValue(value): D | null {\n    if (this.datepickerAdapter.isValid(value, this.picker.format)) {\n      return this.datepickerAdapter.parse(value, this.picker.format);\n    }\n\n    return null;\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  ComponentRef,\n  OnChanges,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnDestroy,\n  Output,\n  Type,\n  OnInit,\n  SimpleChanges,\n  Optional,\n} from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { Observable, ReplaySubject, Subject } from 'rxjs';\n\nimport { NbComponentPortal, NbOverlayRef } from '../cdk/overlay/mapping';\nimport {\n  NbAdjustableConnectedPositionStrategy,\n  NbAdjustment,\n  NbAdjustmentValues,\n  NbPosition,\n  NbPositionBuilderService,\n} from '../cdk/overlay/overlay-position';\nimport { NbOverlayService, patch } from '../cdk/overlay/overlay-service';\nimport { NbTrigger, NbTriggerStrategy, NbTriggerStrategyBuilderService } from '../cdk/overlay/overlay-trigger';\nimport { NbDatepickerContainerComponent } from './datepicker-container.component';\nimport { NB_DOCUMENT } from '../../theme.options';\nimport { NbCalendarRange, NbCalendarRangeComponent } from '../calendar/calendar-range.component';\nimport { NbCalendarComponent } from '../calendar/calendar.component';\nimport {\n  NbCalendarCell,\n  NbCalendarSize,\n  NbCalendarViewMode,\n  NbCalendarSizeValues,\n  NbCalendarViewModeValues,\n} from '../calendar-kit/model';\nimport { NbDateService } from '../calendar-kit/services/date.service';\nimport { NB_DATE_SERVICE_OPTIONS, NbDatepicker, NbPickerValidatorConfig } from './datepicker.directive';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\n\n/**\n * The `NbBasePicker` component concentrates overlay manipulation logic.\n * */\nexport abstract class NbBasePicker<D, T, P> extends NbDatepicker<T, D> {\n  /**\n   * Datepicker date format. Can be used only with date adapters (moment, date-fns) since native date\n   * object doesn't support formatting.\n   * */\n  abstract format: string;\n\n  /**\n   * Defines if we should render previous and next months\n   * in the current month view.\n   * */\n  abstract boundingMonth: boolean;\n\n  /**\n   * Defines starting view for calendar.\n   * */\n  abstract startView: NbCalendarViewMode;\n\n  /**\n   * Minimum available date for selection.\n   * */\n  abstract min: D;\n\n  /**\n   * Maximum available date for selection.\n   * */\n  abstract max: D;\n\n  /**\n   * Predicate that decides which cells will be disabled.\n   * */\n  abstract filter: (D) => boolean;\n\n  /**\n   * Custom day cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  abstract dayCellComponent: Type<NbCalendarCell<D, T>>;\n\n  /**\n   * Custom month cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  abstract monthCellComponent: Type<NbCalendarCell<D, T>>;\n\n  /**\n   * Custom year cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  abstract yearCellComponent: Type<NbCalendarCell<D, T>>;\n\n  /**\n   * Size of the calendar and entire components.\n   * Can be 'medium' which is default or 'large'.\n   * */\n  abstract size: NbCalendarSize;\n\n  /**\n   * Depending on this date a particular month is selected in the calendar\n   */\n  abstract visibleDate: D;\n\n  /**\n   * Hide picker when a date or a range is selected, `true` by default\n   * @type {boolean}\n   */\n  abstract hideOnSelect: boolean;\n\n  /**\n   * Determines should we show calendar navigation or not.\n   * @type {boolean}\n   */\n  abstract showNavigation: boolean;\n\n  /**\n   * Sets symbol used as a header for week numbers column\n   * */\n  abstract weekNumberSymbol: string;\n\n  /**\n   * Determines should we show week numbers column.\n   * False by default.\n   * */\n  abstract showWeekNumber: boolean;\n\n  /**\n   * Sets first day of the week, it can be 1 if week starts from monday and 0 if from sunday and so on.\n   * `undefined` means that default locale setting will be used.\n   * */\n  abstract firstDayOfWeek: number | undefined;\n\n  readonly formatChanged$: Subject<void> = new Subject();\n\n  /**\n   * Calendar component class that has to be instantiated inside overlay.\n   * */\n  protected abstract pickerClass: Type<P>;\n\n  /**\n   * Overlay reference object.\n   * */\n  protected ref: NbOverlayRef;\n\n  /**\n   * Datepicker container that contains instantiated picker.\n   * */\n  protected container: ComponentRef<NbDatepickerContainerComponent>;\n\n  /**\n   * Positioning strategy used by overlay.\n   * */\n  protected positionStrategy: NbAdjustableConnectedPositionStrategy;\n\n  /**\n   * Trigger strategy used by overlay\n   * */\n  protected triggerStrategy: NbTriggerStrategy;\n\n  /**\n   * HTML input reference to which datepicker connected.\n   * */\n  protected hostRef: ElementRef;\n\n  protected init$: ReplaySubject<void> = new ReplaySubject<void>();\n\n  /**\n   * Stream of picker changes. Required to be the subject because picker hides and shows and picker\n   * change stream becomes recreated.\n   * */\n  protected onChange$: Subject<T> = new Subject();\n\n  /**\n   * Reference to the picker instance itself.\n   * */\n  protected pickerRef: ComponentRef<any>;\n\n  protected overlayOffset = 8;\n\n  protected adjustment: NbAdjustment = NbAdjustment.COUNTERCLOCKWISE;\n\n  protected destroy$ = new Subject<void>();\n\n  /**\n   * Queue contains the last value that was applied to the picker when it was hidden.\n   * This value will be passed to the picker as soon as it shown.\n   * */\n  protected queue: T | undefined;\n\n  protected blur$: Subject<void> = new Subject<void>();\n\n  protected constructor(\n    protected overlay: NbOverlayService,\n    protected positionBuilder: NbPositionBuilderService,\n    protected triggerStrategyBuilder: NbTriggerStrategyBuilderService,\n    protected dateService: NbDateService<D>,\n    protected dateServiceOptions,\n  ) {\n    super();\n  }\n\n  /**\n   * Returns picker instance.\n   * */\n  get picker(): any {\n    return this.pickerRef && this.pickerRef.instance;\n  }\n\n  /**\n   * Stream of picker value changes.\n   * */\n  get valueChange(): Observable<T> {\n    return this.onChange$.asObservable();\n  }\n\n  get isShown(): boolean {\n    return this.ref && this.ref.hasAttached();\n  }\n\n  get init(): Observable<void> {\n    return this.init$.asObservable();\n  }\n\n  /**\n   * Emits when datepicker looses focus.\n   */\n  get blur(): Observable<void> {\n    return this.blur$.asObservable();\n  }\n\n  protected abstract get pickerValueChange(): Observable<T>;\n\n  /**\n   * Datepicker knows nothing about host html input element.\n   * So, attach method attaches datepicker to the host input element.\n   * */\n  attach(hostRef: ElementRef) {\n    this.hostRef = hostRef;\n    this.subscribeOnTriggers();\n  }\n\n  getValidatorConfig(): NbPickerValidatorConfig<D> {\n    return { min: this.min, max: this.max, filter: this.filter };\n  }\n\n  show() {\n    if (!this.ref) {\n      this.createOverlay();\n    }\n\n    this.openDatepicker();\n  }\n\n  shouldHide(): boolean {\n    return this.hideOnSelect && !!this.value;\n  }\n\n  hide() {\n    if (this.ref) {\n      this.ref.detach();\n    }\n\n    // save current value if picker was rendered\n    if (this.picker) {\n      this.queue = this.value;\n      this.pickerRef.destroy();\n      this.pickerRef = null;\n      this.container = null;\n    }\n  }\n\n  protected abstract writeQueue();\n\n  protected createOverlay() {\n    this.positionStrategy = this.createPositionStrategy();\n    this.ref = this.overlay.create({\n      positionStrategy: this.positionStrategy,\n      scrollStrategy: this.overlay.scrollStrategies.reposition(),\n    });\n    this.subscribeOnPositionChange();\n  }\n\n  protected openDatepicker() {\n    this.container = this.ref.attach(new NbComponentPortal(NbDatepickerContainerComponent, null, null));\n    this.instantiatePicker();\n    this.subscribeOnValueChange();\n    this.writeQueue();\n    this.patchWithInputs();\n    this.pickerRef.changeDetectorRef.markForCheck();\n  }\n\n  protected createPositionStrategy(): NbAdjustableConnectedPositionStrategy {\n    return this.positionBuilder\n      .connectedTo(this.hostRef)\n      .position(NbPosition.BOTTOM)\n      .offset(this.overlayOffset)\n      .adjustment(this.adjustment);\n  }\n\n  protected subscribeOnPositionChange() {\n    this.positionStrategy.positionChange\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((position: NbPosition) => patch(this.container, { position }));\n  }\n\n  protected createTriggerStrategy(): NbTriggerStrategy {\n    return this.triggerStrategyBuilder\n      .trigger(NbTrigger.FOCUS)\n      .host(this.hostRef.nativeElement)\n      .container(() => this.container)\n      .build();\n  }\n\n  protected subscribeOnTriggers() {\n    this.triggerStrategy = this.createTriggerStrategy();\n    this.triggerStrategy.show$.subscribe(() => this.show());\n    this.triggerStrategy.hide$.subscribe(() => {\n      this.blur$.next();\n      this.hide();\n    });\n  }\n\n  protected instantiatePicker() {\n    this.pickerRef = this.container.instance.attach(new NbComponentPortal(this.pickerClass, null, null));\n  }\n\n  /**\n   * Subscribes on picker value changes and emit data through this.onChange$ subject.\n   * */\n  protected subscribeOnValueChange() {\n    this.pickerValueChange.subscribe((date) => {\n      this.onChange$.next(date);\n    });\n  }\n\n  protected patchWithInputs() {\n    this.picker.boundingMonth = this.boundingMonth;\n    this.picker.startView = this.startView;\n    this.picker.min = this.min;\n    this.picker.max = this.max;\n    this.picker.filter = this.filter;\n    this.picker._cellComponent = this.dayCellComponent;\n    this.picker._monthCellComponent = this.monthCellComponent;\n    this.picker._yearCellComponent = this.yearCellComponent;\n    this.picker.size = this.size;\n    this.picker.showNavigation = this.showNavigation;\n    this.picker.visibleDate = this.visibleDate;\n    this.picker.showWeekNumber = this.showWeekNumber;\n    this.picker.weekNumberSymbol = this.weekNumberSymbol;\n    this.picker.firstDayOfWeek = this.firstDayOfWeek;\n  }\n\n  protected checkFormat() {\n    if (this.dateService.getId() === 'native' && this.format) {\n      throw new Error(\n        \"Can't format native date. To use custom formatting you have to install @nebular/moment or \" +\n          '@nebular/date-fns package and import NbMomentDateModule or NbDateFnsDateModule accordingly.' +\n          'More information at \"Formatting issue\" ' +\n          'https://akveo.github.io/nebular/docs/components/datepicker/overview#nbdatepickercomponent',\n      );\n    }\n\n    const isFormatSet = this.format || (this.dateServiceOptions && this.dateServiceOptions.format);\n    if (this.dateService.getId() === 'date-fns' && !isFormatSet) {\n      throw new Error('format is required when using NbDateFnsDateModule');\n    }\n  }\n}\n\n@Component({\n    template: '',\n    standalone: false\n})\nexport class NbBasePickerComponent<D, T, P> extends NbBasePicker<D, T, P> implements OnInit, OnChanges, OnDestroy {\n  /**\n   * Datepicker date format. Can be used only with date adapters (moment, date-fns) since native date\n   * object doesn't support formatting.\n   * */\n  @Input() format: string;\n\n  /**\n   * Defines if we should render previous and next months\n   * in the current month view.\n   * */\n  @Input() boundingMonth: boolean = true;\n\n  /**\n   * Defines starting view for calendar.\n   * */\n  @Input() startView: NbCalendarViewMode = NbCalendarViewMode.DATE;\n  static ngAcceptInputType_startView: NbCalendarViewModeValues;\n\n  /**\n   * Minimum available date for selection.\n   * */\n  @Input() min: D;\n\n  /**\n   * Maximum available date for selection.\n   * */\n  @Input() max: D;\n\n  /**\n   * Predicate that decides which cells will be disabled.\n   * */\n  @Input() filter: (D) => boolean;\n\n  /**\n   * Custom day cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input() dayCellComponent: Type<NbCalendarCell<D, T>>;\n\n  /**\n   * Custom month cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input() monthCellComponent: Type<NbCalendarCell<D, T>>;\n\n  /**\n   * Custom year cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input() yearCellComponent: Type<NbCalendarCell<D, T>>;\n\n  /**\n   * Size of the calendar and entire components.\n   * Can be 'medium' which is default or 'large'.\n   * */\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  /**\n   * Depending on this date a particular month is selected in the calendar\n   */\n  @Input() visibleDate: D;\n\n  /**\n   * Hide picker when a date or a range is selected, `true` by default\n   * @type {boolean}\n   */\n  @Input() hideOnSelect: boolean = true;\n\n  /**\n   * Determines should we show calendars navigation or not.\n   * @type {boolean}\n   */\n  @Input() showNavigation: boolean = true;\n\n  /**\n   * Sets symbol used as a header for week numbers column\n   * */\n  @Input() weekNumberSymbol: string = '#';\n\n  /**\n   * Determines should we show week numbers column.\n   * False by default.\n   * */\n  @Input()\n  get showWeekNumber(): boolean {\n    return this._showWeekNumber;\n  }\n  set showWeekNumber(value: boolean) {\n    this._showWeekNumber = convertToBoolProperty(value);\n  }\n  protected _showWeekNumber: boolean = false;\n  static ngAcceptInputType_showWeekNumber: NbBooleanInput;\n\n  @Input() firstDayOfWeek: number | undefined;\n\n  /**\n   * Determines picker overlay offset (in pixels).\n   * */\n  @Input() overlayOffset = 8;\n\n  @Input() adjustment: NbAdjustment = NbAdjustment.COUNTERCLOCKWISE;\n  static ngAcceptInputType_adjustment: NbAdjustmentValues;\n\n  constructor(\n    @Inject(NB_DOCUMENT) document,\n    positionBuilder: NbPositionBuilderService,\n    triggerStrategyBuilder: NbTriggerStrategyBuilderService,\n    overlay: NbOverlayService,\n    dateService: NbDateService<D>,\n    @Optional() @Inject(NB_DATE_SERVICE_OPTIONS) dateServiceOptions,\n  ) {\n    super(overlay, positionBuilder, triggerStrategyBuilder, dateService, dateServiceOptions);\n  }\n\n  ngOnInit() {\n    this.checkFormat();\n    this.init$.next();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.format) {\n      if (!changes.format.isFirstChange()) {\n        this.checkFormat();\n      }\n      this.formatChanged$.next();\n    }\n    if (this.picker) {\n      this.patchWithInputs();\n    }\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n    this.hide();\n    this.init$.complete();\n\n    if (this.ref) {\n      this.ref.dispose();\n    }\n\n    if (this.triggerStrategy) {\n      this.triggerStrategy.destroy();\n    }\n  }\n\n  protected pickerClass: Type<P>;\n\n  protected get pickerValueChange(): Observable<T> {\n    return undefined;\n  }\n\n  get value(): T {\n    return undefined;\n  }\n  set value(value: T) {}\n\n  protected writeQueue() {}\n}\n\n/**\n * The DatePicker components itself.\n * Provides a proxy to `NbCalendar` options as well as custom picker options.\n */\n@Component({\n    selector: 'nb-datepicker',\n    template: '',\n    standalone: false\n})\nexport class NbDatepickerComponent<D> extends NbBasePickerComponent<D, D, NbCalendarComponent<D>> {\n  protected pickerClass: Type<NbCalendarComponent<D>> = NbCalendarComponent;\n\n  /**\n   * Date which will be rendered as selected.\n   * */\n  @Input() set date(date: D) {\n    this.value = date;\n  }\n\n  /**\n   * Emits date when selected.\n   * */\n  @Output() get dateChange(): EventEmitter<D> {\n    return this.valueChange as EventEmitter<D>;\n  }\n\n  get value(): D {\n    return this.picker ? this.picker.date : undefined;\n  }\n\n  set value(date: D) {\n    if (!this.picker) {\n      this.queue = date;\n      return;\n    }\n\n    if (date) {\n      this.visibleDate = date;\n      this.picker.visibleDate = date;\n      this.picker.date = date;\n    }\n  }\n\n  protected get pickerValueChange(): Observable<D> {\n    return this.picker.dateChange;\n  }\n\n  protected writeQueue() {\n    if (this.queue) {\n      const date = this.queue;\n      this.queue = null;\n      this.value = date;\n    }\n  }\n}\n\n/**\n * The RangeDatePicker components itself.\n * Provides a proxy to `NbCalendarRange` options as well as custom picker options.\n */\n@Component({\n    selector: 'nb-rangepicker',\n    template: '',\n    standalone: false\n})\nexport class NbRangepickerComponent<D> extends NbBasePickerComponent<\n  D,\n  NbCalendarRange<D>,\n  NbCalendarRangeComponent<D>\n> {\n  protected pickerClass: Type<NbCalendarRangeComponent<D>> = NbCalendarRangeComponent;\n\n  /**\n   * Range which will be rendered as selected.\n   * */\n  @Input() set range(range: NbCalendarRange<D>) {\n    this.value = range;\n  }\n\n  /**\n   * Emits range when start selected and emits again when end selected.\n   * */\n  @Output() get rangeChange(): EventEmitter<NbCalendarRange<D>> {\n    return this.valueChange as EventEmitter<NbCalendarRange<D>>;\n  }\n\n  get value(): NbCalendarRange<D> {\n    return this.picker ? this.picker.range : undefined;\n  }\n\n  set value(range: NbCalendarRange<D>) {\n    if (!this.picker) {\n      this.queue = range;\n      return;\n    }\n\n    if (range) {\n      const visibleDate = range && range.start;\n      this.visibleDate = visibleDate;\n      this.picker.visibleDate = visibleDate;\n      this.picker.range = range;\n    }\n  }\n\n  protected get pickerValueChange(): Observable<NbCalendarRange<D>> {\n    return this.picker.rangeChange;\n  }\n\n  shouldHide(): boolean {\n    return super.shouldHide() && !!(this.value && this.value.start && this.value.end);\n  }\n\n  protected writeQueue() {\n    if (this.queue) {\n      const range = this.queue;\n      this.queue = null;\n      this.value = range;\n    }\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Inject,\n  Input,\n  OnInit,\n  Optional,\n  Output,\n  Type,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NB_DOCUMENT } from '../../theme.options';\nimport { NbPositionBuilderService } from '../cdk/overlay/overlay-position';\nimport { NbTriggerStrategyBuilderService } from '../cdk/overlay/overlay-trigger';\nimport { NbOverlayService } from '../cdk/overlay/overlay-service';\nimport { NbCalendarTimeModelService } from '../calendar-kit/services/calendar-time-model.service';\nimport { NbDateService } from '../calendar-kit/services/date.service';\nimport { NbCalendarWithTimeComponent } from './calendar-with-time.component';\nimport { NbBasePickerComponent } from './datepicker.component';\nimport { NB_DATE_SERVICE_OPTIONS } from './datepicker.directive';\n\n/**\n * The DateTimePicker component itself.\n * Provides a proxy to `NbCalendarWithTimeComponent` options as well as custom picker options.\n */\n@Component({\n    selector: 'nb-date-timepicker',\n    template: '',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbDateTimePickerComponent<D>\n  extends NbBasePickerComponent<D, D, NbCalendarWithTimeComponent<D>>\n  implements OnInit\n{\n  protected pickerClass: Type<NbCalendarWithTimeComponent<D>> = NbCalendarWithTimeComponent;\n\n  get value(): any {\n    return this.picker ? this.picker.date : undefined;\n  }\n  set value(date: any) {\n    if (!this.picker) {\n      this.queue = date;\n      return;\n    }\n\n    if (date) {\n      this.visibleDate = date;\n      this.picker.visibleDate = date;\n      this.picker.date = date;\n      this.picker.cd.markForCheck();\n    }\n  }\n\n  /**\n   * Defines minutes step when we use fill time format.\n   * If set to 20, it will be: '12:00, 12:20: 12:40, 13:00...'\n   * */\n  @Input() step: number;\n\n  @Input() title: string;\n  @Input() applyButtonText: string;\n  @Input() currentTimeButtonText: string;\n  @Input() showCurrentTimeButton = true;\n\n  /**\n   * Defines 12 hours format like '07:00 PM'.\n   * */\n  @Input()\n  get twelveHoursFormat(): boolean {\n    return this._twelveHoursFormat;\n  }\n  set twelveHoursFormat(value: boolean) {\n    this._twelveHoursFormat = convertToBoolProperty(value);\n  }\n  _twelveHoursFormat: boolean;\n  static ngAcceptInputType_twelveHoursFormat: NbBooleanInput;\n\n  /**\n   * Defines should show am/pm label if twelveHoursFormat enabled.\n   * */\n  @Input()\n  get showAmPmLabel(): boolean {\n    return this._showAmPmLabel;\n  }\n  set showAmPmLabel(value: boolean) {\n    this._showAmPmLabel = convertToBoolProperty(value);\n  }\n  protected _showAmPmLabel: boolean = true;\n  static ngAcceptInputType_showAmPmLabel: NbBooleanInput;\n\n  /**\n   * Show seconds in timepicker.\n   * Ignored when singleColumn is true.\n   * */\n  @Input()\n  get withSeconds(): boolean {\n    return this._withSeconds;\n  }\n  set withSeconds(value: boolean) {\n    this._withSeconds = convertToBoolProperty(value);\n  }\n  _withSeconds: boolean;\n  static ngAcceptInputType_withSeconds: NbBooleanInput;\n\n  /**\n   * Show timepicker values in one column with 60 minutes step by default.\n   * */\n  @Input()\n  get singleColumn(): boolean {\n    return this._singleColumn;\n  }\n  set singleColumn(value: boolean) {\n    this._singleColumn = convertToBoolProperty(value);\n  }\n  _singleColumn: boolean;\n  static ngAcceptInputType_singleColumn: NbBooleanInput;\n\n  /**\n   * Emits date with time when selected.\n   * */\n  @Output() get dateTimeChange(): EventEmitter<D> {\n    return this.valueChange as EventEmitter<D>;\n  }\n\n  constructor(\n    @Inject(NB_DOCUMENT) document,\n    positionBuilder: NbPositionBuilderService,\n    triggerStrategyBuilder: NbTriggerStrategyBuilderService,\n    overlay: NbOverlayService,\n    dateService: NbDateService<D>,\n    @Optional() @Inject(NB_DATE_SERVICE_OPTIONS) dateServiceOptions,\n    protected calendarWithTimeModelService: NbCalendarTimeModelService<D>,\n  ) {\n    super(document, positionBuilder, triggerStrategyBuilder, overlay, dateService, dateServiceOptions);\n  }\n\n  ngOnInit() {\n    this.format = this.format || this.buildTimeFormat();\n    this.init$.next();\n  }\n\n  protected patchWithInputs() {\n    this.picker.singleColumn = this.singleColumn;\n    this.picker.twelveHoursFormat = this.twelveHoursFormat;\n    this.picker.showAmPmLabel = this.showAmPmLabel;\n    this.picker.withSeconds = this.withSeconds;\n    this.picker.step = this.step;\n    this.picker.title = this.title;\n    this.picker.applyButtonText = this.applyButtonText;\n    this.picker.currentTimeButtonText = this.currentTimeButtonText;\n    this.picker.showCurrentTimeButton = this.showCurrentTimeButton;\n\n    if (this.twelveHoursFormat) {\n      this.picker.timeFormat = this.dateService.getTwelveHoursFormat();\n    } else {\n      this.picker.timeFormat =\n        this.withSeconds && !this.singleColumn\n          ? this.dateService.getTwentyFourHoursFormatWithSeconds()\n          : this.dateService.getTwentyFourHoursFormat();\n    }\n    super.patchWithInputs();\n\n    this.picker.cd.markForCheck();\n  }\n\n  protected get pickerValueChange(): Observable<any> {\n    return this.picker.dateChange;\n  }\n\n  protected writeQueue() {\n    if (this.queue) {\n      const date = this.queue;\n      this.queue = null;\n      this.value = date;\n    }\n  }\n\n  protected buildTimeFormat(): string {\n    if (this.singleColumn) {\n      return this.calendarWithTimeModelService.buildDateFormat(this.twelveHoursFormat);\n    } else {\n      return this.calendarWithTimeModelService.buildDateFormat(this.twelveHoursFormat, this.withSeconds);\n    }\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nexport function isUrlPathEqual(path, link) {\n  const locationPath = getPathPartOfUrl(path);\n  return link === locationPath;\n}\n\nexport function isUrlPathContain(path, link) {\n  const locationPath = getPathPartOfUrl(path);\n  const endOfUrlSegmentRegExp = /\\/|^$/;\n  return locationPath.startsWith(link) &&\n    locationPath.slice(link.length).charAt(0).search(endOfUrlSegmentRegExp) !== -1;\n}\n\nexport function getPathPartOfUrl(url): string {\n  return url.match(/.*?(?=[?;#]|$)/)[0];\n}\n\nexport function getFragmentPartOfUrl(url: string): string {\n  const matched = url.match(/#(.+)/);\n  return matched ? matched[1] : '';\n}\n\nexport function isFragmentEqual(path: string, fragment: string): boolean {\n  return getFragmentPartOfUrl(path) === fragment;\n}\n\nexport function isFragmentContain(path: string, fragment: string): boolean {\n  return getFragmentPartOfUrl(path).includes(fragment);\n}\n","import { Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nimport { filter, pairwise, startWith, map } from 'rxjs/operators';\nimport { getPathPartOfUrl } from '../menu/url-matching-helpers';\n\n/**\n * This service determines whether we should scroll the layout back to top.\n * This occurs when the page is changed, so when current url PATH is not equal to the previous one.\n *\n *  TODO: this is most likely a temporary solutions as recently Angular introduces ViewportScroll\n *  and scroll restoration process\n */\n@Injectable()\nexport class NbRestoreScrollTopHelper {\n\n  constructor(private router: Router) {\n  }\n\n  shouldRestore(): Observable<boolean> {\n    return this.router.events\n      .pipe(\n        startWith(null),\n        filter(event => event === null || event instanceof NavigationEnd),\n        pairwise(),\n        map(([prev, current]) => this.pageChanged(prev as NavigationEnd, current as NavigationEnd)),\n        filter(res => !!res),\n      );\n  }\n\n  private pageChanged(prev: NavigationEnd, current: NavigationEnd) {\n    return !prev || getPathPartOfUrl(prev.url) !== getPathPartOfUrl(current.url);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnDestroy,\n  Renderer2,\n  ViewChild,\n  ViewContainerRef,\n  Inject,\n  PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbThemeService } from '../../services/theme.service';\nimport { NbSpinnerService } from '../../services/spinner.service';\nimport { NbLayoutDirectionService } from '../../services/direction.service';\nimport { NbRestoreScrollTopHelper } from './restore-scroll-top.service';\nimport { NbScrollPosition, NbLayoutScrollService } from '../../services/scroll.service';\nimport { NbLayoutDimensions, NbLayoutRulerService } from '../../services/ruler.service';\nimport { NB_WINDOW, NB_DOCUMENT } from '../../theme.options';\nimport { NbOverlayContainerAdapter } from '../cdk/adapter/overlay-container-adapter';\n\n/**\n * Layout container component.\n * When using with Nebular Theme System it is required that all child components should be placed inside.\n *\n * Basic example of two column layout with header:\n *\n * @stacked-example(Showcase, layout/layout-showcase.component)\n *\n * Can contain the following components inside:\n *\n * ```html\n * <nb-layout>\n *  <nb-layout-header></nb-layout-header>\n *  <nb-layout-footer></nb-layout-footer>\n *  <nb-layout-column></nb-layout-column>\n *  <nb-sidebar></nb-sidebar>\n * </nb-layout>\n * ```\n * ### Installation\n *\n * Import `NbLayoutModule` to your app module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbLayoutModule,\n *   ],\n * })\n * export class AppModule { }\n * ```\n * ### Usage\n * By default the layout fills up the whole view-port.\n * The window scrollbars are disabled on the body and moved inside of the nb-layout, so that the scrollbars\n * won't mess with the fixed nb-header.\n *\n * The child components are projected into a flexible layout structure allowing to adjust the layout behavior\n * based on the settings provided.\n *\n * The layout content (columns) becomes centered when the window width is more than\n * the value specified in the theme variable `layout-content-width`.\n *\n * The layout also contains the area on the very top (the first child of the nb-layout), which could be used\n * to dynamically append some components like modals or spinners/loaders\n * so that they are located on top of the elements hierarchy.\n * More details are under the `ThemeService` section.\n *\n * The layout component is also responsible for changing application themes.\n * It listens to the `themeChange` event and change a theme CSS class appended to body.\n * Based on the class appended, specific CSS-theme is applied to the application.\n * More details of the Theme System could be found here [Enabling Theme System](#/docs/concepts/theme-system)\n *\n * A simple layout with footer:\n *\n * @stacked-example(Layout With Footer, layout/layout-w-footer.component)\n *\n * It is possible to ask the layout to center the columns (notice: we added a `center` attribute\n * to the layout:\n *\n * ```html\n * <nb-layout center>\n *   <nb-layout-header>Awesome Company</nb-layout-header>\n *\n *   <nb-layout-column>\n *     Hello World!\n *   </nb-layout-column>\n *\n *   <nb-layout-footer>Contact us</nb-layout-footer>\n * </nb-layout>\n * ```\n *\n * @styles\n *\n * layout-background-color:\n * layout-text-color:\n * layout-text-font-family:\n * layout-text-font-size:\n * layout-text-font-weight:\n * layout-text-line-height:\n * layout-min-height:\n * layout-content-width:\n * layout-window-mode-min-width:\n * layout-window-mode-background-color:\n * layout-window-mode-padding-top:\n * layout-window-shadow:\n * layout-padding:\n * layout-medium-padding:\n * layout-small-padding:\n * layout-scrollbar-background-color:\n * layout-scrollbar-color:\n * layout-scrollbar-width:\n */\n@Component({\n    selector: 'nb-layout',\n    styleUrls: ['./layout.component.scss'],\n    template: `\n    <div class=\"scrollable-container\" #scrollableContainer (scroll)=\"onScroll($event)\">\n      <div class=\"layout\" #layoutContainer>\n        <ng-content select=\"nb-layout-header:not([subheader])\"></ng-content>\n        <div class=\"layout-container\">\n          <ng-content select=\"nb-sidebar\"></ng-content>\n          <div class=\"content\" [class.center]=\"centerValue\">\n            <ng-content select=\"nb-layout-header[subheader]\"></ng-content>\n            <div class=\"columns\">\n              <ng-content select=\"nb-layout-column\"></ng-content>\n            </div>\n            <ng-content select=\"nb-layout-footer\"></ng-content>\n          </div>\n        </div>\n      </div>\n    </div>\n  `,\n    standalone: false\n})\nexport class NbLayoutComponent implements AfterViewInit, OnDestroy {\n  protected scrollBlockClass = 'nb-global-scrollblock';\n  protected isScrollBlocked = false;\n  protected scrollableContainerOverflowOldValue: string;\n  protected layoutPaddingOldValue: { left: string; right: string };\n\n  centerValue: boolean = false;\n  restoreScrollTopValue: boolean = true;\n\n  @HostBinding('class.window-mode') windowModeValue: boolean = false;\n  @HostBinding('class.with-scroll') withScrollValue: boolean = false;\n  @HostBinding('class.with-subheader') withSubheader: boolean = false;\n\n  /**\n   * Defines whether the layout columns will be centered after some width\n   * @param {boolean} val\n   */\n  @Input()\n  set center(val: boolean) {\n    this.centerValue = convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_center: NbBooleanInput;\n\n  /**\n   * Defines whether the layout enters a 'window' mode, when the layout content (including sidebars and fixed header)\n   * becomes centered by width with a margin from the top of the screen, like a floating window.\n   * Automatically enables `withScroll` mode, as in the window mode scroll must be inside the layout and cannot be on\n   * window. (TODO: check this)\n   * @param {boolean} val\n   */\n  @Input()\n  set windowMode(val: boolean) {\n    this.windowModeValue = convertToBoolProperty(val);\n    this.withScroll = this.windowModeValue;\n  }\n  static ngAcceptInputType_windowMode: NbBooleanInput;\n\n  /**\n   * Defines whether to move the scrollbars to layout or leave it at the body level.\n   * Automatically set to true when `windowMode` is enabled.\n   * @param {boolean} val\n   */\n  @Input()\n  set withScroll(val: boolean) {\n    this.withScrollValue = convertToBoolProperty(val);\n\n    // TODO: is this the best way of doing it? as we don't have access to body from theme styles\n    // TODO: add e2e test\n    const body = this.document.getElementsByTagName('body')[0];\n    if (this.withScrollValue) {\n      this.renderer.setStyle(body, 'overflow', 'hidden');\n    } else {\n      this.renderer.setStyle(body, 'overflow', 'initial');\n    }\n  }\n  static ngAcceptInputType_withScroll: NbBooleanInput;\n\n  /**\n   * Restores scroll to the top of the page after navigation\n   * @param {boolean} val\n   */\n  @Input()\n  set restoreScrollTop(val: boolean) {\n    this.restoreScrollTopValue = convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_restoreScrollTop: NbBooleanInput;\n\n  // TODO remove as of 5.0.0\n  @ViewChild('layoutTopDynamicArea', { read: ViewContainerRef }) veryTopRef: ViewContainerRef;\n\n  @ViewChild('scrollableContainer', { read: ElementRef, static: true })\n  scrollableContainerRef: ElementRef<HTMLElement>;\n\n  @ViewChild('layoutContainer', { read: ElementRef })\n  layoutContainerRef: ElementRef<HTMLElement>;\n\n  protected afterViewInit$ = new BehaviorSubject(null);\n\n  private destroy$ = new Subject<void>();\n\n  constructor(\n    protected themeService: NbThemeService,\n    protected spinnerService: NbSpinnerService,\n    protected elementRef: ElementRef,\n    protected renderer: Renderer2,\n    @Inject(NB_WINDOW) protected window,\n    @Inject(NB_DOCUMENT) protected document,\n    @Inject(PLATFORM_ID) protected platformId: Object,\n    protected layoutDirectionService: NbLayoutDirectionService,\n    protected scrollService: NbLayoutScrollService,\n    protected rulerService: NbLayoutRulerService,\n    protected scrollTop: NbRestoreScrollTopHelper,\n    protected overlayContainer: NbOverlayContainerAdapter,\n  ) {\n    this.registerAsOverlayContainer();\n\n    this.themeService\n      .onThemeChange()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((theme: any) => {\n        const body = this.document.getElementsByTagName('body')[0];\n        if (theme.previous) {\n          this.renderer.removeClass(body, `nb-theme-${theme.previous}`);\n        }\n        this.renderer.addClass(body, `nb-theme-${theme.name}`);\n      });\n\n    this.themeService\n      .onAppendLayoutClass()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((className: string) => {\n        this.renderer.addClass(this.elementRef.nativeElement, className);\n      });\n\n    this.themeService\n      .onRemoveLayoutClass()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((className: string) => {\n        this.renderer.removeClass(this.elementRef.nativeElement, className);\n      });\n\n    this.spinnerService.registerLoader(\n      new Promise<void>((resolve) => {\n        this.afterViewInit$.pipe(takeUntil(this.destroy$)).subscribe((_) => resolve());\n      }),\n    );\n    this.spinnerService.load();\n\n    this.rulerService\n      .onGetDimensions()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(({ listener }) => {\n        listener.next(this.getDimensions());\n        listener.complete();\n      });\n\n    this.scrollService\n      .onGetPosition()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(({ listener }) => {\n        listener.next(this.getScrollPosition());\n        listener.complete();\n      });\n\n    this.scrollTop\n      .shouldRestore()\n      .pipe(\n        filter(() => this.restoreScrollTopValue),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => {\n        this.scroll(0, 0);\n      });\n\n    this.scrollService\n      .onScrollableChange()\n      .pipe(filter(() => this.withScrollValue), takeUntil(this.destroy$))\n      .subscribe((scrollable: boolean) => {\n        /**\n         * In case when Nebular Layout custom scroll `withScroll` mode is enabled\n         * we need to disable default CDK scroll blocker (@link NbBlockScrollStrategyAdapter) on HTML element\n         * so that it won't add additional positioning.\n         */\n        if (scrollable) {\n          this.enableScroll();\n        } else {\n          this.blockScroll();\n        }\n      });\n\n    if (isPlatformBrowser(this.platformId)) {\n      // trigger first time so that after the change we have the initial value\n      this.themeService.changeWindowWidth(this.window.innerWidth);\n    }\n  }\n\n  ngAfterViewInit() {\n    this.layoutDirectionService\n      .onDirectionChange()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((direction) => (this.document.dir = direction));\n\n    this.scrollService\n      .onManualScroll()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(({ x, y }: NbScrollPosition) => this.scroll(x, y));\n\n    this.afterViewInit$.next(true);\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n    this.unregisterAsOverlayContainer();\n  }\n\n  @HostListener('window:scroll', ['$event'])\n  onScroll($event) {\n    this.scrollService.fireScrollChange($event);\n  }\n\n  @HostListener('window:resize', ['$event'])\n  onResize(event) {\n    this.themeService.changeWindowWidth(event.target.innerWidth);\n  }\n\n  /**\n   * Returns scroll and client height/width\n   *\n   * Depending on the current scroll mode (`withScroll=true`) returns sizes from the body element\n   * or from the `.scrollable-container`\n   * @returns {NbLayoutDimensions}\n   */\n  getDimensions(): NbLayoutDimensions {\n    let clientWidth,\n      clientHeight,\n      scrollWidth,\n      scrollHeight = 0;\n    if (this.withScrollValue) {\n      const container = this.scrollableContainerRef.nativeElement;\n      clientWidth = container.clientWidth;\n      clientHeight = container.clientHeight;\n      scrollWidth = container.scrollWidth;\n      scrollHeight = container.scrollHeight;\n    } else {\n      const { documentElement, body } = this.document;\n      clientWidth = documentElement.clientWidth || body.clientWidth;\n      clientHeight = documentElement.clientHeight || body.clientHeight;\n      scrollWidth = documentElement.scrollWidth || body.scrollWidth;\n      scrollHeight = documentElement.scrollHeight || body.scrollHeight;\n    }\n\n    return {\n      clientWidth,\n      clientHeight,\n      scrollWidth,\n      scrollHeight,\n    };\n  }\n\n  /**\n   * Returns scroll position of current scroll container.\n   *\n   * If `withScroll` = true, returns scroll position of the `.scrollable-container` element,\n   * otherwise - of the scrollable element of the window (which may be different depending of a browser)\n   *\n   * @returns {NbScrollPosition}\n   */\n  getScrollPosition(): NbScrollPosition {\n    if (!isPlatformBrowser(this.platformId)) {\n      return { x: 0, y: 0 };\n    }\n\n    if (this.withScrollValue) {\n      const container = this.scrollableContainerRef.nativeElement;\n      return { x: container.scrollLeft, y: container.scrollTop };\n    }\n\n    const documentRect = this.document.documentElement.getBoundingClientRect();\n\n    const x =\n      -documentRect.left ||\n      this.document.body.scrollLeft ||\n      this.window.scrollX ||\n      this.document.documentElement.scrollLeft ||\n      0;\n\n    const y =\n      -documentRect.top ||\n      this.document.body.scrollTop ||\n      this.window.scrollY ||\n      this.document.documentElement.scrollTop ||\n      0;\n\n    return { x, y };\n  }\n\n  protected registerAsOverlayContainer() {\n    if (this.overlayContainer.setContainer) {\n      this.overlayContainer.setContainer(this.elementRef.nativeElement);\n    }\n  }\n\n  protected unregisterAsOverlayContainer() {\n    if (this.overlayContainer.clearContainer) {\n      this.overlayContainer.clearContainer();\n    }\n  }\n\n  private scroll(x: number = null, y: number = null) {\n    const { x: currentX, y: currentY } = this.getScrollPosition();\n    x = x == null ? currentX : x;\n    y = y == null ? currentY : y;\n\n    if (!isPlatformBrowser(this.platformId)) {\n      return;\n    }\n    if (this.withScrollValue) {\n      const scrollable = this.scrollableContainerRef.nativeElement;\n      if (scrollable.scrollTo) {\n        scrollable.scrollTo(x, y);\n      } else {\n        scrollable.scrollLeft = x;\n        scrollable.scrollTop = y;\n      }\n    } else {\n      this.window.scrollTo(x, y);\n    }\n  }\n\n  // TODO: Extract into block scroll strategy\n  protected blockScroll() {\n    if (this.isScrollBlocked) {\n      return;\n    }\n\n    this.isScrollBlocked = true;\n\n    this.renderer.addClass(this.document.documentElement, this.scrollBlockClass);\n\n    const scrollableContainerElement = this.scrollableContainerRef.nativeElement;\n    const layoutElement = this.layoutContainerRef.nativeElement;\n\n    const layoutWithScrollWidth = layoutElement.clientWidth;\n    this.scrollableContainerOverflowOldValue = scrollableContainerElement.style.overflow;\n    scrollableContainerElement.style.overflow = 'hidden';\n    const layoutWithoutScrollWidth = layoutElement.clientWidth;\n    const scrollWidth = layoutWithoutScrollWidth - layoutWithScrollWidth;\n\n    if (!scrollWidth) {\n      return;\n    }\n\n    this.layoutPaddingOldValue = {\n      left: layoutElement.style.paddingLeft,\n      right: layoutElement.style.paddingRight,\n    };\n\n    if (this.layoutDirectionService.isLtr()) {\n      layoutElement.style.paddingRight = `${scrollWidth}px`;\n    } else {\n      layoutElement.style.paddingLeft = `${scrollWidth}px`;\n    }\n  }\n\n  private enableScroll() {\n    if (this.isScrollBlocked) {\n      this.isScrollBlocked = false;\n\n      this.renderer.removeClass(this.document.documentElement, this.scrollBlockClass);\n      this.scrollableContainerRef.nativeElement.style.overflow = this.scrollableContainerOverflowOldValue;\n\n      if (this.layoutPaddingOldValue) {\n        const layoutElement = this.layoutContainerRef.nativeElement;\n        layoutElement.style.paddingLeft = this.layoutPaddingOldValue.left;\n        layoutElement.style.paddingRight = this.layoutPaddingOldValue.right;\n        this.layoutPaddingOldValue = null;\n      }\n    }\n  }\n}\n\n/**\n * A container component which determines a content position inside of the layout.\n * The layout could contain unlimited columns (not including the sidebars).\n *\n * By default the columns are ordered from the left to the right,\n * but it's also possible to overwrite this behavior by setting a `left` attribute to the column,\n * moving it to the very first position:\n *\n * @stacked-example(Column Left, layout/layout-column-left.component)\n */\n@Component({\n    selector: 'nb-layout-column',\n    template: `<ng-content></ng-content>`,\n    standalone: false\n})\nexport class NbLayoutColumnComponent {\n  @HostBinding('class.left') leftValue: boolean;\n  @HostBinding('class.start') startValue: boolean;\n\n  /**\n   * Move the column to the very left position in the layout.\n   * @param {boolean} val\n   */\n  @Input()\n  set left(val: boolean) {\n    this.leftValue = convertToBoolProperty(val);\n    this.startValue = false;\n  }\n  static ngAcceptInputType_left: NbBooleanInput;\n\n  /**\n   * Make column first in the layout.\n   * @param {boolean} val\n   */\n  @Input()\n  set start(val: boolean) {\n    this.startValue = convertToBoolProperty(val);\n    this.leftValue = false;\n  }\n  static ngAcceptInputType_start: NbBooleanInput;\n}\n\n/**\n * Page header component.\n * Located on top of the page above the layout columns and sidebars.\n * Could be made `fixed` by setting the corresponding property. In the fixed mode the header becomes\n * sticky to the top of the nb-layout (to of the page). Here's an example:\n *\n * @stacked-example(Fixed Header, layout/layout-fixed-header.component)\n *\n * In a pair with sidebar it is possible to setup a configuration when header is placed on a side of the sidebar\n * and not on top of it. To achieve this simply put a `subheader` property to the header like this:\n * ```html\n * <nb-layout-header subheader></nb-layout-header>\n * ```\n * @stacked-example(Subheader, layout/layout-sidebar-subheader.component)\n * Note that in such configuration sidebar shadow is removed and header cannot be make `fixed`.\n *\n * Same way you can put both `fixed` and `clipped` headers adding creating a sub-header for your app:\n *\n * @stacked-example(Subheader, layout/layout-subheader.component)\n *\n * @styles\n *\n * header-background-color:\n * header-text-color:\n * header-text-font-family:\n * header-text-font-size:\n * header-text-font-weight:\n * header-text-line-height:\n * header-height:\n * header-padding:\n * header-shadow:\n */\n@Component({\n    selector: 'nb-layout-header',\n    template: `\n    <nav [class.fixed]=\"fixedValue\">\n      <ng-content></ng-content>\n    </nav>\n  `,\n    standalone: false\n})\nexport class NbLayoutHeaderComponent {\n  @HostBinding('class.fixed') fixedValue: boolean;\n  @HostBinding('class.subheader') subheaderValue: boolean;\n\n  constructor(private layout: NbLayoutComponent) {}\n\n  /**\n   * Makes the header sticky to the top of the nb-layout.\n   * @param {boolean} val\n   */\n  @Input()\n  set fixed(val: boolean) {\n    this.fixedValue = convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_fixed: NbBooleanInput;\n\n  /**\n   * Places header on a side of the sidebar, and not above.\n   * Disables fixed mode for this header and remove a shadow from the sidebar.\n   * @param {boolean} val\n   */\n  @Input()\n  set subheader(val: boolean) {\n    this.subheaderValue = convertToBoolProperty(val);\n    this.fixedValue = false;\n    this.layout.withSubheader = this.subheaderValue;\n  }\n  static ngAcceptInputType_subheader: NbBooleanInput;\n}\n\n/**\n * Page footer.\n * Located under the nb-layout content (specifically, under the columns).\n * Could be made `fixed`, becoming sticky to the bottom of the view port (window).\n *\n * @styles\n *\n * footer-background-color:\n * footer-text-color:\n * footer-text-font-family:\n * footer-text-font-size:\n * footer-text-font-weight:\n * footer-text-line-height:\n * footer-text-highlight-color:\n * footer-height:\n * footer-padding:\n * footer-divider-color:\n * footer-divider-style:\n * footer-divider-width:\n * footer-shadow:\n */\n@Component({\n    selector: 'nb-layout-footer',\n    template: `\n    <nav [class.fixed]=\"fixedValue\">\n      <ng-content></ng-content>\n    </nav>\n  `,\n    standalone: false\n})\nexport class NbLayoutFooterComponent {\n  @HostBinding('class.fixed') fixedValue: boolean;\n\n  /**\n   * Makes the footer sticky to the bottom of the window.\n   * @param {boolean} val\n   */\n  @Input()\n  set fixed(val: boolean) {\n    this.fixedValue = convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_fixed: NbBooleanInput;\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ChangeDetectorRef, Directive, OnDestroy, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { distinctUntilChanged, map, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { NbLayoutDirection, NbLayoutDirectionService } from '../../services/direction.service';\n\n@Directive()\nabstract class NbBaseLayoutDirectionDirective implements OnInit, OnDestroy {\n  protected destroy$ = new Subject<void>();\n\n  constructor(\n    protected templateRef: TemplateRef<any>,\n    protected viewContainer: ViewContainerRef,\n    protected cd: ChangeDetectorRef,\n    protected directionService: NbLayoutDirectionService,\n    protected directionToShow: NbLayoutDirection,\n  ) {}\n\n  ngOnInit(): void {\n    this.directionService\n      .onDirectionChange()\n      .pipe(\n        map((layoutDirection: NbLayoutDirection) => layoutDirection === this.directionToShow),\n        distinctUntilChanged(),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((shouldShow: boolean) => this.updateView<boolean>(shouldShow));\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  protected updateView<T>(shouldShow: T): void {\n    if (shouldShow && !this.viewContainer.length) {\n      this.viewContainer.createEmbeddedView(this.templateRef);\n      this.cd.markForCheck();\n    } else if (!shouldShow && this.viewContainer.length) {\n      this.viewContainer.clear();\n    }\n  }\n}\n\n/**\n * Apply `nbLtr` directive to the element you need to show only when layout direction is `LTR`.\n *\n * ```html\n * <div *nbLtr>This text is visible only when layout direction is LTR</div>\n * ```\n */\n@Directive({\n    selector: '[nbLtr]',\n    standalone: false\n})\nexport class NbLtrDirective extends NbBaseLayoutDirectionDirective {\n  constructor(\n    protected templateRef: TemplateRef<any>,\n    protected viewContainer: ViewContainerRef,\n    protected cd: ChangeDetectorRef,\n    protected directionService: NbLayoutDirectionService,\n  ) {\n    super(templateRef, viewContainer, cd, directionService, NbLayoutDirection.LTR);\n  }\n}\n\n/**\n * Apply `nbRtl` directive to the element you need to show only when layout direction is `RTL`.\n *\n * ```html\n * <div *nbRtl>This text is visible only when layout direction is RTL</div>\n * ```\n */\n@Directive({\n    selector: '[nbRtl]',\n    standalone: false\n})\nexport class NbRtlDirective extends NbBaseLayoutDirectionDirective {\n  constructor(\n    protected templateRef: TemplateRef<any>,\n    protected viewContainer: ViewContainerRef,\n    protected cd: ChangeDetectorRef,\n    protected directionService: NbLayoutDirectionService,\n  ) {\n    super(templateRef, viewContainer, cd, directionService, NbLayoutDirection.RTL);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\n\nimport {\n  NbLayoutComponent,\n  NbLayoutColumnComponent,\n  NbLayoutFooterComponent,\n  NbLayoutHeaderComponent,\n} from './layout.component';\n\nimport { NbRestoreScrollTopHelper } from './restore-scroll-top.service';\n\nimport { NbLtrDirective, NbRtlDirective } from './layout-direction.directive';\n\nconst NB_LAYOUT_COMPONENTS = [\n  NbLayoutComponent,\n  NbLayoutColumnComponent,\n  NbLayoutFooterComponent,\n  NbLayoutHeaderComponent,\n];\n\nconst NB_LAYOUT_DIRECTIVES = [NbLtrDirective, NbRtlDirective];\n\n@NgModule({\n  imports: [NbSharedModule],\n  declarations: [...NB_LAYOUT_COMPONENTS, ...NB_LAYOUT_DIRECTIVES],\n  providers: [NbRestoreScrollTopHelper],\n  exports: [...NB_LAYOUT_COMPONENTS, ...NB_LAYOUT_DIRECTIVES],\n})\nexport class NbLayoutModule {}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { Params, QueryParamsHandling } from '@angular/router';\nimport { Observable, BehaviorSubject, ReplaySubject, Subject } from 'rxjs';\nimport { share } from 'rxjs/operators';\nimport { isFragmentContain, isFragmentEqual, isUrlPathContain, isUrlPathEqual } from './url-matching-helpers';\nimport { NbIconConfig } from '../icon/icon.component';\nimport { NbBadge } from '../badge/badge.component';\n\nexport interface NbMenuBag {\n  tag: string;\n  item: NbMenuItem;\n}\n\nconst itemClick$ = new Subject<NbMenuBag>();\nconst addItems$ = new ReplaySubject<{ tag: string; items: NbMenuItem[] }>(1);\nconst navigateHome$ = new ReplaySubject<{ tag: string }>(1);\nconst getSelectedItem$ = new ReplaySubject<{ tag: string; listener: BehaviorSubject<NbMenuBag> }>(1);\nconst itemSelect$ = new ReplaySubject<NbMenuBag>(1);\nconst itemHover$ = new ReplaySubject<NbMenuBag>(1);\nconst submenuToggle$ = new ReplaySubject<NbMenuBag>(1);\nconst collapseAll$ = new ReplaySubject<{ tag: string }>(1);\n\nexport type NbMenuBadgeConfig = Omit<NbBadge, 'position'>;\n\n// TODO: check if we need both URL and LINK\n/**\n *\n *\n * Menu Item options example\n * @stacked-example(Menu Link Parameters, menu/menu-link-params.component)\n *\n *\n */\nexport class NbMenuItem {\n  /**\n   * Item Title\n   * @type {string}\n   */\n  title: string;\n  /**\n   * Item relative link (for routerLink)\n   * @type {string}\n   */\n  link?: string;\n  /**\n   * Item URL (absolute)\n   * @type {string}\n   */\n  url?: string;\n  /**\n   * Icon class name or icon config object\n   * @type {string | NbIconConfig}\n   */\n  icon?: string | NbIconConfig;\n  /**\n   * Expanded by default\n   * @type {boolean}\n   */\n  expanded?: boolean;\n  /**\n   * Badge component\n   * @type {boolean}\n   */\n  badge?: NbMenuBadgeConfig;\n  /**\n   * Children items\n   * @type {List<NbMenuItem>}\n   */\n  children?: NbMenuItem[];\n  /**\n   * HTML Link target\n   * @type {string}\n   */\n  target?: string;\n  /**\n   * Hidden Item\n   * @type {boolean}\n   */\n  hidden?: boolean;\n  /**\n   * Item is selected when partly or fully equal to the current url\n   * @type {string}\n   */\n  pathMatch?: 'full' | 'prefix' = 'full';\n  /**\n   * Where this is a home item\n   * @type {boolean}\n   */\n  home?: boolean;\n  /**\n   * Whether the item is just a group (non-clickable)\n   * @type {boolean}\n   */\n  group?: boolean;\n  /** Whether the item skipLocationChange is true or false\n   *@type {boolean}\n   */\n  skipLocationChange?: boolean;\n  /** Map of query parameters\n   *@type {Params}\n   */\n  queryParams?: Params;\n  queryParamsHandling?: QueryParamsHandling;\n  parent?: NbMenuItem;\n  selected?: boolean;\n  data?: any;\n  fragment?: string;\n  preserveFragment?: boolean;\n  /** The name of a role in the ARIA specification\n   * @type {string}\n   */\n  ariaRole?: string;\n\n  /**\n   * @returns item parents in top-down order\n   */\n  static getParents(item: NbMenuItem): NbMenuItem[] {\n    const parents = [];\n\n    let parent = item.parent;\n    while (parent) {\n      parents.unshift(parent);\n      parent = parent.parent;\n    }\n\n    return parents;\n  }\n\n  static isParent(item: NbMenuItem, possibleChild: NbMenuItem): boolean {\n    return possibleChild.parent ? possibleChild.parent === item || this.isParent(item, possibleChild.parent) : false;\n  }\n}\n\n// TODO: map select events to router change events\n// TODO: review the interface\n/**\n *\n *\n * Menu Service. Allows you to listen to menu events, or to interact with a menu.\n * @stacked-example(Menu Service, menu/menu-service.component)\n *\n *\n */\n@Injectable()\nexport class NbMenuService {\n  /**\n   * Add items to the end of the menu items list\n   * @param {List<NbMenuItem>} items\n   * @param {string} tag\n   */\n  addItems(items: NbMenuItem[], tag?: string) {\n    addItems$.next({ tag, items });\n  }\n\n  /**\n   * Collapses all menu items\n   * @param {string} tag\n   */\n  collapseAll(tag?: string) {\n    collapseAll$.next({ tag });\n  }\n\n  /**\n   * Navigate to the home menu item\n   * @param {string} tag\n   */\n  navigateHome(tag?: string) {\n    navigateHome$.next({ tag });\n  }\n\n  /**\n   * Returns currently selected item. Won't subscribe to the future events.\n   * @param {string} tag\n   * @returns {Observable<{tag: string; item: NbMenuItem}>}\n   */\n  getSelectedItem(tag?: string): Observable<NbMenuBag> {\n    const listener = new BehaviorSubject<NbMenuBag>(null);\n\n    getSelectedItem$.next({ tag, listener });\n\n    return listener.asObservable();\n  }\n\n  onItemClick(): Observable<NbMenuBag> {\n    return itemClick$.pipe(share());\n  }\n\n  onItemSelect(): Observable<NbMenuBag> {\n    return itemSelect$.pipe(share());\n  }\n\n  onItemHover(): Observable<NbMenuBag> {\n    return itemHover$.pipe(share());\n  }\n\n  onSubmenuToggle(): Observable<NbMenuBag> {\n    return submenuToggle$.pipe(share());\n  }\n}\n\n@Injectable()\nexport class NbMenuInternalService {\n  constructor(private location: Location) {}\n\n  prepareItems(items: NbMenuItem[]) {\n    const defaultItem = new NbMenuItem();\n    items.forEach((i) => {\n      this.applyDefaults(i, defaultItem);\n      this.setParent(i);\n    });\n  }\n\n  selectFromUrl(items: NbMenuItem[], tag: string, collapseOther: boolean = false) {\n    const selectedItem = this.findItemByUrl(items);\n    if (selectedItem) {\n      this.selectItem(selectedItem, items, collapseOther, tag);\n    }\n  }\n\n  selectItem(item: NbMenuItem, items: NbMenuItem[], collapseOther: boolean = false, tag: string) {\n    const unselectedItems = this.resetSelection(items);\n    const collapsedItems = collapseOther ? this.collapseItems(items) : [];\n\n    for (const parent of NbMenuItem.getParents(item)) {\n      parent.selected = true;\n      // emit event only for items that weren't selected before ('unselectedItems' contains items that were selected)\n      if (!unselectedItems.includes(parent)) {\n        this.itemSelect(parent, tag);\n      }\n\n      const wasNotExpanded = !parent.expanded;\n      parent.expanded = true;\n      const i = collapsedItems.indexOf(parent);\n      // emit event only for items that weren't expanded before.\n      // 'collapsedItems' contains items that were expanded, so no need to emit event.\n      // in case 'collapseOther' is false, 'collapsedItems' will be empty,\n      // so also check if item isn't expanded already ('wasNotExpanded').\n      if (i === -1 && wasNotExpanded) {\n        this.submenuToggle(parent, tag);\n      } else {\n        collapsedItems.splice(i, 1);\n      }\n    }\n\n    item.selected = true;\n    // emit event only for items that weren't selected before ('unselectedItems' contains items that were selected)\n    if (!unselectedItems.includes(item)) {\n      this.itemSelect(item, tag);\n    }\n\n    // remaining items which wasn't expanded back after expanding all currently selected items\n    for (const collapsedItem of collapsedItems) {\n      this.submenuToggle(collapsedItem, tag);\n    }\n  }\n\n  collapseAll(items: NbMenuItem[], tag: string, except?: NbMenuItem) {\n    const collapsedItems = this.collapseItems(items, except);\n\n    for (const item of collapsedItems) {\n      this.submenuToggle(item, tag);\n    }\n  }\n\n  onAddItem(): Observable<{ tag: string; items: NbMenuItem[] }> {\n    return addItems$.pipe(share());\n  }\n\n  onNavigateHome(): Observable<{ tag: string }> {\n    return navigateHome$.pipe(share());\n  }\n\n  onCollapseAll(): Observable<{ tag: string }> {\n    return collapseAll$.pipe(share());\n  }\n\n  onGetSelectedItem(): Observable<{ tag: string; listener: BehaviorSubject<NbMenuBag> }> {\n    return getSelectedItem$.pipe(share());\n  }\n\n  itemHover(item: NbMenuItem, tag?: string) {\n    itemHover$.next({ tag, item });\n  }\n\n  submenuToggle(item: NbMenuItem, tag?: string) {\n    submenuToggle$.next({ tag, item });\n  }\n\n  itemSelect(item: NbMenuItem, tag?: string) {\n    itemSelect$.next({ tag, item });\n  }\n\n  itemClick(item: NbMenuItem, tag?: string) {\n    itemClick$.next({ tag, item });\n  }\n\n  /**\n   * Unselect all given items deeply.\n   * @param items array of items to unselect.\n   * @returns items which selected value was changed.\n   */\n  private resetSelection(items: NbMenuItem[]): NbMenuItem[] {\n    const unselectedItems = [];\n\n    for (const item of items) {\n      if (item.selected) {\n        unselectedItems.push(item);\n      }\n      item.selected = false;\n\n      if (item.children) {\n        unselectedItems.push(...this.resetSelection(item.children));\n      }\n    }\n\n    return unselectedItems;\n  }\n\n  /**\n   * Collapse all given items deeply.\n   * @param items array of items to collapse.\n   * @param except menu item which shouldn't be collapsed, also disables collapsing for parents of this item.\n   * @returns items which expanded value was changed.\n   */\n  private collapseItems(items: NbMenuItem[], except?: NbMenuItem): NbMenuItem[] {\n    const collapsedItems = [];\n\n    for (const item of items) {\n      if (except && (item === except || NbMenuItem.isParent(item, except))) {\n        continue;\n      }\n\n      if (item.expanded) {\n        collapsedItems.push(item);\n      }\n      item.expanded = false;\n\n      if (item.children) {\n        collapsedItems.push(...this.collapseItems(item.children));\n      }\n    }\n\n    return collapsedItems;\n  }\n\n  private applyDefaults(item, defaultItem) {\n    const menuItem = { ...item };\n    Object.assign(item, defaultItem, menuItem);\n    item.children &&\n      item.children.forEach((child) => {\n        this.applyDefaults(child, defaultItem);\n      });\n  }\n\n  private setParent(item: NbMenuItem) {\n    item.children &&\n      item.children.forEach((child) => {\n        child.parent = item;\n        this.setParent(child);\n      });\n  }\n\n  /**\n   * Find deepest item which link matches current URL path.\n   * @param items array of items to search in.\n   * @returns found item of undefined.\n   */\n  private findItemByUrl(items: NbMenuItem[]): NbMenuItem | undefined {\n    let selectedItem;\n\n    items.some((item) => {\n      if (item.children) {\n        selectedItem = this.findItemByUrl(item.children);\n      }\n      if (!selectedItem && this.isSelectedInUrl(item)) {\n        selectedItem = item;\n      }\n\n      return selectedItem;\n    });\n\n    return selectedItem;\n  }\n\n  private isSelectedInUrl(item: NbMenuItem): boolean {\n    const exact: boolean = item.pathMatch === 'full';\n    const link: string = item.link;\n\n    const isSelectedInPath = exact\n      ? isUrlPathEqual(this.location.path(), link)\n      : isUrlPathContain(this.location.path(), link);\n\n    if (isSelectedInPath && item.fragment != null) {\n      return exact\n        ? isFragmentEqual(this.location.path(true), item.fragment)\n        : isFragmentContain(this.location.path(true), item.fragment);\n    }\n\n    return isSelectedInPath;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, HostBinding, Input } from '@angular/core';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { convertToBoolProperty } from '../helpers';\n\nexport type NbBadgePhysicalPosition = 'top left' | 'top right' | 'bottom left' | 'bottom right' | 'center right' | 'center left';\nexport type NbBadgeLogicalPosition = 'top start' | 'top end' | 'bottom start' | 'bottom end' | 'center start'| 'center end';\nexport type NbBadgePosition = NbBadgePhysicalPosition | NbBadgeLogicalPosition;\n\nexport interface NbBadge {\n  text?: string;\n  position?: NbBadgePosition;\n  status?: NbComponentOrCustomStatus;\n  dotMode?: boolean;\n}\n\n/**\n * Badge is a simple labeling component.\n * It can be used to add additional information to any content or highlight unread items.\n *\n * Element is absolute positioned, so parent should be\n * [positioned element](https://developer.mozilla.org/en-US/docs/Web/CSS/position).\n * It means parent `position` should be set to anything except `static`, e.g. `relative`,\n * `absolute`, `fixed`, or `sticky`.\n *\n * ### Installation\n *\n * Import `NbBadgeModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbBadgeModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Badge with default position and status(color):\n *\n * ```html\n * <nb-badge text=\"badgeText\"></nb-badge>\n * ```\n *\n * For example, badge can be placed into nb-card header:\n * @stacked-example(Showcase, badge/badge-showcase.component)\n *\n * Badge located on the bottom right with warning status:\n *\n * ```html\n * <nb-badge text=\"badgeText\" status=\"warning\" position=\"bottom right\">\n * </nb-badge>\n * ```\n *\n * @styles\n *\n * badge-border-radius:\n * badge-text-font-family:\n * badge-text-font-size:\n * badge-text-font-weight:\n * badge-text-line-height:\n * badge-padding:\n * badge-basic-background-color:\n * badge-basic-text-color:\n * badge-primary-background-color:\n * badge-primary-text-color:\n * badge-success-background-color:\n * badge-success-text-color:\n * badge-info-background-color:\n * badge-info-text-color:\n * badge-warning-background-color:\n * badge-warning-text-color:\n * badge-danger-background-color:\n * badge-danger-text-color:\n * badge-control-background-color:\n * badge-control-text-color:\n */\n@Component({\n    selector: 'nb-badge',\n    styleUrls: ['./badge.component.scss'],\n    template: `{{dotMode ? '' : text}}`,\n    standalone: false\n})\nexport class NbBadgeComponent implements NbBadge {\n\n  /**\n   * Text to display\n   * @type string\n   */\n  @Input() text: string = '';\n\n  /**\n   * Badge position\n   *\n   * Can be set to any class or to one of predefined positions:\n   * 'top left', 'top right', 'bottom left', 'bottom right',\n   * 'top start', 'top end', 'bottom start', 'bottom end'\n   * @type string\n   */\n  @Input()\n  get position(): NbBadgePosition {\n    return this._position;\n  }\n  set position(value: NbBadgePosition) {\n    this._position = value || this._defaultPosition;\n  }\n  protected _defaultPosition: NbBadgePosition = 'top right';\n  protected _position: NbBadgePosition = this._defaultPosition;\n\n  /**\n   * Shows badge as a dot. No text is shown.\n   * @type boolean\n   */\n  @Input()\n  @HostBinding('class.dot-mode')\n  get dotMode(): boolean {\n    return this._dotMode;\n  }\n  set dotMode(value: boolean) {\n    this._dotMode = convertToBoolProperty(value);\n  }\n  protected _dotMode: boolean;\n\n  /**\n   * Badge status (adds specific styles):\n   * 'basic', 'primary', 'info', 'success', 'warning', 'danger', 'control'\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  @HostBinding('class.status-primary')\n  get primary(): boolean {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-success')\n  get success(): boolean {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-info')\n  get info(): boolean {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning(): boolean {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger(): boolean {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic(): boolean {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control(): boolean {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class.position-top')\n  get top(): boolean {\n    return this.position.includes('top');\n  }\n\n  @HostBinding('class.position-right')\n  get right(): boolean {\n    return this.position.includes('right');\n  }\n\n  @HostBinding('class.position-bottom')\n  get bottom(): boolean {\n    return this.position.includes('bottom');\n  }\n\n  @HostBinding('class.position-left')\n  get left(): boolean {\n    return this.position.includes('left');\n  }\n\n  @HostBinding('class.position-start')\n  get start(): boolean {\n    return this.position.includes('start');\n  }\n\n  @HostBinding('class.position-end')\n  get end(): boolean {\n    return this.position.includes('end');\n  }\n\n  @HostBinding('class.position-center')\n  get center(): boolean {\n    return this.position.includes('center');\n  }\n\n  constructor(protected statusService: NbStatusService) {\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  OnInit,\n  OnDestroy,\n  AfterViewInit,\n  Inject,\n  DoCheck,\n  PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Router, NavigationEnd, NavigationExtras } from '@angular/router';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { takeUntil, filter, map } from 'rxjs/operators';\nimport { NbMenuInternalService, NbMenuItem, NbMenuBag, NbMenuService, NbMenuBadgeConfig } from './menu.service';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NB_WINDOW } from '../../theme.options';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { NbLayoutDirectionService } from '../../services/direction.service';\n\nexport enum NbToggleStates {\n  Expanded = 'expanded',\n  Collapsed = 'collapsed',\n}\n\n@Component({\n    selector: '[nbMenuItem]',\n    templateUrl: './menu-item.component.html',\n    animations: [\n        trigger('toggle', [\n            state(NbToggleStates.Collapsed, style({ height: '0', margin: '0' })),\n            state(NbToggleStates.Expanded, style({ height: '*' })),\n            transition(`${NbToggleStates.Collapsed} <=> ${NbToggleStates.Expanded}`, animate(300)),\n        ]),\n    ],\n    standalone: false\n})\nexport class NbMenuItemComponent implements DoCheck, AfterViewInit, OnDestroy {\n  @Input() menuItem = <NbMenuItem>null;\n  @Input() badge: NbMenuBadgeConfig;\n\n  @Output() hoverItem = new EventEmitter<any>();\n  @Output() toggleSubMenu = new EventEmitter<any>();\n  @Output() selectItem = new EventEmitter<any>();\n  @Output() itemClick = new EventEmitter<any>();\n\n  protected destroy$ = new Subject<void>();\n  toggleState: NbToggleStates;\n\n  constructor(protected menuService: NbMenuService,\n              protected directionService: NbLayoutDirectionService) {}\n\n  ngDoCheck() {\n    this.toggleState = this.menuItem.expanded ? NbToggleStates.Expanded : NbToggleStates.Collapsed;\n  }\n\n  ngAfterViewInit() {\n    this.menuService.onSubmenuToggle()\n      .pipe(\n        filter(({ item }) => item === this.menuItem),\n        map(({ item }: NbMenuBag) => item.expanded),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(isExpanded => this.toggleState = isExpanded ? NbToggleStates.Expanded : NbToggleStates.Collapsed);\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  onToggleSubMenu(item: NbMenuItem) {\n    this.toggleSubMenu.emit(item);\n  }\n\n  onHoverItem(item: NbMenuItem) {\n    this.hoverItem.emit(item);\n  }\n\n  onSelectItem(item: NbMenuItem) {\n    this.selectItem.emit(item);\n  }\n\n  onItemClick(item: NbMenuItem) {\n    this.itemClick.emit(item);\n  }\n\n  getExpandStateIcon(): string {\n    if (this.menuItem.expanded) {\n      return 'chevron-down-outline';\n    }\n\n    return this.directionService.isLtr()\n      ? 'chevron-left-outline'\n      : 'chevron-right-outline';\n  }\n}\n\n/**\n * Vertical menu component.\n *\n * Accepts a list of menu items and renders them accordingly. Supports multi-level menus.\n *\n * Basic example\n * @stacked-example(Showcase, menu/menu-showcase.component)\n *\n * ```ts\n * // ...\n * items: NbMenuItem[] = [\n *  {\n *    title: home,\n *    link: '/'\n *  },\n *  {\n *    title: dashboard,\n *    link: 'dashboard'\n *  }\n * ];\n * // ...\n * <nb-menu [items]=\"items\"></nb-menu>\n * ```\n * ### Installation\n *\n * Import `NbMenuModule.forRoot()` to your app module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbMenuModule.forRoot(),\n *   ],\n * })\n * export class AppModule { }\n * ```\n * and `NbMenuModule` to your feature module where the component should be shown:\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbMenuModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Two-level menu example\n * @stacked-example(Two Levels, menu/menu-children.component)\n *\n *\n * Autocollapse menu example\n * @stacked-example(Autocollapse Menu, menu/menu-autocollapse.component)\n *\n * Menu badge\n * @stacked-example(Menu item badge, menu/menu-badge.component)\n *\n * @styles\n *\n * menu-background-color:\n * menu-text-color:\n * menu-text-font-family:\n * menu-text-font-size:\n * menu-text-font-weight:\n * menu-text-line-height:\n * menu-group-text-color:\n * menu-item-border-radius:\n * menu-item-padding:\n * menu-item-hover-background-color:\n * menu-item-hover-cursor:\n * menu-item-hover-text-color:\n * menu-item-icon-hover-color:\n * menu-item-active-background-color:\n * menu-item-active-text-color:\n * menu-item-icon-active-color:\n * menu-item-icon-color:\n * menu-item-icon-margin:\n * menu-item-icon-width:\n * menu-item-divider-color:\n * menu-item-divider-style:\n * menu-item-divider-width:\n * menu-submenu-background-color:\n * menu-submenu-text-color:\n * menu-submenu-margin:\n * menu-submenu-padding:\n * menu-submenu-item-border-color:\n * menu-submenu-item-border-style:\n * menu-submenu-item-border-width:\n * menu-submenu-item-border-radius:\n * menu-submenu-item-padding:\n * menu-submenu-item-hover-background-color:\n * menu-submenu-item-hover-border-color:\n * menu-submenu-item-hover-text-color:\n * menu-submenu-item-icon-hover-color:\n * menu-submenu-item-active-background-color:\n * menu-submenu-item-active-border-color:\n * menu-submenu-item-active-text-color:\n * menu-submenu-item-icon-active-color:\n * menu-submenu-item-active-hover-background-color:\n * menu-submenu-item-active-hover-border-color:\n * menu-submenu-item-active-hover-text-color:\n * menu-submenu-item-icon-active-hover-color:\n */\n@Component({\n    selector: 'nb-menu',\n    styleUrls: ['./menu.component.scss'],\n    template: `\n    <ul class=\"menu-items\">\n      <ng-container *ngFor=\"let item of items\">\n        <li nbMenuItem *ngIf=\"!item.hidden\"\n            [menuItem]=\"item\"\n            [badge]=\"item.badge\"\n            [class.menu-group]=\"item.group\"\n            (hoverItem)=\"onHoverItem($event)\"\n            (toggleSubMenu)=\"onToggleSubMenu($event)\"\n            (selectItem)=\"onSelectItem($event)\"\n            (itemClick)=\"onItemClick($event)\"\n            class=\"menu-item\">\n        </li>\n      </ng-container>\n    </ul>\n  `,\n    standalone: false\n})\nexport class NbMenuComponent implements OnInit, AfterViewInit, OnDestroy {\n\n  /**\n   * Tags a menu with some ID, can be later used in the menu service\n   * to determine which menu triggered the action, if multiple menus exist on the page.\n   *\n   * @type {string}\n   */\n  @Input() tag: string;\n\n  /**\n   * List of menu items.\n   * @type List<NbMenuItem> | List<any> | any\n   */\n  @Input() items: NbMenuItem[];\n\n  /**\n   * Collapse all opened submenus on the toggle event\n   * Default value is \"false\"\n   * @type boolean\n   */\n  @Input()\n  get autoCollapse(): boolean {\n    return this._autoCollapse;\n  }\n  set autoCollapse(value: boolean) {\n    this._autoCollapse = convertToBoolProperty(value);\n  }\n  protected _autoCollapse: boolean = false;\n  static ngAcceptInputType_autoCollapse: NbBooleanInput;\n\n  protected destroy$ = new Subject<void>();\n\n  constructor(@Inject(NB_WINDOW) protected window,\n              @Inject(PLATFORM_ID) protected platformId,\n              protected menuInternalService: NbMenuInternalService,\n              protected router: Router) {\n  }\n\n  ngOnInit() {\n    this.menuInternalService.prepareItems(this.items);\n\n    this.menuInternalService\n      .onAddItem()\n      .pipe(\n        filter((data: { tag: string; items: NbMenuItem[] }) => this.compareTag(data.tag)),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(data => this.onAddItem(data));\n\n    this.menuInternalService\n      .onNavigateHome()\n      .pipe(\n        filter((data: { tag: string }) => this.compareTag(data.tag)),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.navigateHome());\n\n    this.menuInternalService\n      .onGetSelectedItem()\n      .pipe(\n        filter((data: { tag: string; listener: BehaviorSubject<NbMenuBag> }) => this.compareTag(data.tag)),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((data: { tag: string; listener: BehaviorSubject<NbMenuBag> }) => {\n        data.listener.next({ tag: this.tag, item: this.getSelectedItem(this.items) });\n      });\n\n    this.menuInternalService\n      .onCollapseAll()\n      .pipe(\n        filter((data: { tag: string }) => this.compareTag(data.tag)),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.collapseAll());\n\n    this.router.events\n      .pipe(\n        filter(event => event instanceof NavigationEnd),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => {\n        this.menuInternalService.selectFromUrl(this.items, this.tag, this.autoCollapse);\n      });\n  }\n\n  ngAfterViewInit() {\n    setTimeout(() => this.menuInternalService.selectFromUrl(this.items, this.tag, this.autoCollapse));\n  }\n\n  onAddItem(data: { tag: string; items: NbMenuItem[] }) {\n    this.items.push(...data.items);\n\n    this.menuInternalService.prepareItems(this.items);\n    this.menuInternalService.selectFromUrl(this.items, this.tag, this.autoCollapse);\n  }\n\n  onHoverItem(item: NbMenuItem) {\n    this.menuInternalService.itemHover(item, this.tag);\n  }\n\n  onToggleSubMenu(item: NbMenuItem) {\n    if (this.autoCollapse) {\n      this.menuInternalService.collapseAll(this.items, this.tag, item);\n    }\n    item.expanded = !item.expanded;\n    this.menuInternalService.submenuToggle(item, this.tag);\n  }\n\n  // TODO: is not fired on page reload\n  onSelectItem(item: NbMenuItem) {\n    this.menuInternalService.selectItem(item, this.items, this.autoCollapse, this.tag);\n  }\n\n  onItemClick(item: NbMenuItem) {\n    this.menuInternalService.itemClick(item, this.tag);\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  protected navigateHome() {\n    const homeItem = this.getHomeItem(this.items);\n\n    if (homeItem) {\n      if (homeItem.link) {\n        const extras: NavigationExtras = {\n          queryParams: homeItem.queryParams,\n          queryParamsHandling: homeItem.queryParamsHandling,\n          fragment: homeItem.fragment,\n          preserveFragment: homeItem.preserveFragment,\n        };\n        this.router.navigate([homeItem.link], extras);\n      }\n\n      if (homeItem.url && isPlatformBrowser(this.platformId)) {\n        this.window.location.href = homeItem.url;\n      }\n    }\n  }\n\n  protected collapseAll() {\n    this.menuInternalService.collapseAll(this.items, this.tag);\n  }\n\n  protected getHomeItem(items: NbMenuItem[]): NbMenuItem {\n    for (const item of items) {\n      if (item.home) {\n        return item;\n      }\n\n      const homeItem = item.children && this.getHomeItem(item.children);\n      if (homeItem) {\n        return homeItem;\n      }\n    }\n\n    return undefined;\n  }\n\n  protected compareTag(tag: string) {\n    return !tag || tag === this.tag;\n  }\n\n  protected getSelectedItem(items: NbMenuItem[]): NbMenuItem {\n    let selected = null;\n    items.forEach((item: NbMenuItem) => {\n      if (item.selected) {\n        selected = item;\n      }\n      if (item.selected && item.children && item.children.length > 0) {\n        selected = this.getSelectedItem(item.children);\n      }\n    });\n    return selected;\n  }\n}\n","<span *ngIf=\"menuItem.group\">\n  <nb-icon class=\"menu-icon\" [config]=\"menuItem.icon\" *ngIf=\"menuItem.icon\"></nb-icon>\n  {{ menuItem.title }}\n</span>\n<a\n  *ngIf=\"menuItem.link && !menuItem.url && !menuItem.children && !menuItem.group\"\n  [routerLink]=\"menuItem.link\"\n  [queryParams]=\"menuItem.queryParams\"\n  [fragment]=\"menuItem.fragment\"\n  [queryParamsHandling]=\"menuItem.queryParamsHandling\"\n  [preserveFragment]=\"menuItem.preserveFragment\"\n  [skipLocationChange]=\"menuItem.skipLocationChange\"\n  [attr.target]=\"menuItem.target\"\n  [attr.title]=\"menuItem.title\"\n  [attr.role]=\"menuItem.ariaRole\"\n  [class.active]=\"menuItem.selected\"\n  (mouseenter)=\"onHoverItem(menuItem)\"\n  (click)=\"onItemClick(menuItem)\"\n>\n  <nb-icon class=\"menu-icon\" [config]=\"menuItem.icon\" *ngIf=\"menuItem.icon\"></nb-icon>\n  <span class=\"menu-title\">{{ menuItem.title }}</span>\n  <ng-container *ngIf=\"badge\" [ngTemplateOutlet]=\"badgeTemplate\"></ng-container>\n</a>\n<a\n  *ngIf=\"menuItem.url && !menuItem.children && !menuItem.link && !menuItem.group\"\n  [attr.href]=\"menuItem.url\"\n  [attr.target]=\"menuItem.target\"\n  [attr.title]=\"menuItem.title\"\n  [attr.role]=\"menuItem.ariaRole\"\n  [class.active]=\"menuItem.selected\"\n  (mouseenter)=\"onHoverItem(menuItem)\"\n  (click)=\"onSelectItem(menuItem)\"\n>\n  <nb-icon class=\"menu-icon\" [config]=\"menuItem.icon\" *ngIf=\"menuItem.icon\"></nb-icon>\n  <span class=\"menu-title\">{{ menuItem.title }}</span>\n  <ng-container *ngIf=\"badge\" [ngTemplateOutlet]=\"badgeTemplate\"></ng-container>\n</a>\n<a\n  *ngIf=\"!menuItem.children && !menuItem.link && !menuItem.url && !menuItem.group\"\n  [attr.target]=\"menuItem.target\"\n  [attr.title]=\"menuItem.title\"\n  [attr.role]=\"menuItem.ariaRole\"\n  [class.active]=\"menuItem.selected\"\n  (mouseenter)=\"onHoverItem(menuItem)\"\n  (click)=\"$event.preventDefault(); onItemClick(menuItem)\"\n>\n  <nb-icon class=\"menu-icon\" [config]=\"menuItem.icon\" *ngIf=\"menuItem.icon\"></nb-icon>\n  <span class=\"menu-title\">{{ menuItem.title }}</span>\n  <ng-container *ngIf=\"badge\" [ngTemplateOutlet]=\"badgeTemplate\"></ng-container>\n</a>\n<a\n  *ngIf=\"menuItem.children\"\n  (click)=\"$event.preventDefault(); onToggleSubMenu(menuItem)\"\n  [attr.target]=\"menuItem.target\"\n  [attr.title]=\"menuItem.title\"\n  [attr.aria-expanded]=\"menuItem.expanded ?? false\"\n  [attr.role]=\"menuItem.ariaRole\"\n  [class.active]=\"menuItem.selected\"\n  (mouseenter)=\"onHoverItem(menuItem)\"\n  href=\"#\"\n>\n  <nb-icon class=\"menu-icon\" [config]=\"menuItem.icon\" *ngIf=\"menuItem.icon\"></nb-icon>\n  <span class=\"menu-title\">{{ menuItem.title }}</span>\n  <ng-container *ngIf=\"badge\" [ngTemplateOutlet]=\"badgeTemplate\"></ng-container>\n  <nb-icon class=\"expand-state\" [icon]=\"getExpandStateIcon()\" pack=\"nebular-essentials\"></nb-icon>\n</a>\n<ul\n  *ngIf=\"menuItem.children\"\n  [class.collapsed]=\"!(menuItem.children && menuItem.expanded)\"\n  [class.expanded]=\"menuItem.expanded\"\n  [@toggle]=\"toggleState\"\n  class=\"menu-items\"\n>\n  <ng-container *ngFor=\"let item of menuItem.children\">\n    <li\n      nbMenuItem\n      *ngIf=\"!item.hidden\"\n      [menuItem]=\"item\"\n      [badge]=\"item.badge\"\n      [class.menu-group]=\"item.group\"\n      (hoverItem)=\"onHoverItem($event)\"\n      (toggleSubMenu)=\"onToggleSubMenu($event)\"\n      (selectItem)=\"onSelectItem($event)\"\n      (itemClick)=\"onItemClick($event)\"\n      class=\"menu-item\"\n    ></li>\n  </ng-container>\n</ul>\n\n<ng-template #badgeTemplate>\n  <nb-badge [text]=\"badge.text\" [dotMode]=\"badge.dotMode\" [status]=\"badge.status\"> </nb-badge>\n</ng-template>\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { NbBadgeComponent } from './badge.component';\n\n@NgModule({\n  exports: [ NbBadgeComponent ],\n  declarations: [ NbBadgeComponent ],\n})\nexport class NbBadgeModule { }\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbMenuComponent, NbMenuItemComponent } from './menu.component';\nimport { NbMenuService, NbMenuInternalService } from './menu.service';\nimport { NbIconModule } from '../icon/icon.module';\nimport { NbBadgeModule } from '../badge/badge.module';\n\nconst nbMenuComponents = [NbMenuComponent, NbMenuItemComponent];\n\nconst NB_MENU_PROVIDERS = [NbMenuService, NbMenuInternalService];\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n    NbIconModule,\n    NbBadgeModule,\n  ],\n  declarations: [...nbMenuComponents],\n  exports: [...nbMenuComponents],\n})\nexport class NbMenuModule {\n  static forRoot(): ModuleWithProviders<NbMenuModule> {\n    return {\n      ngModule: NbMenuModule,\n      providers: [\n        ...NB_MENU_PROVIDERS,\n      ],\n    };\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'nbMergeConfigs',\n    standalone: false\n})\nexport class NbMergeConfigsPipe implements PipeTransform {\n  transform<Config>(...configs: Config[]): Config {\n    return Object.assign({}, ...configs);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, Input, Output, EventEmitter, HostBinding } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbIconConfig } from '../icon/icon.component';\n\nexport interface NbRouteTab {\n  route?: RouterLink['routerLink'] | undefined;\n  title?: string | undefined;\n  icon?: string | NbIconConfig | undefined;\n  disabled?: boolean | undefined;\n  responsive?: boolean | undefined;\n  queryParams?: RouterLink['queryParams'] | undefined;\n  queryParamsHandling?: RouterLink['queryParamsHandling'] | undefined;\n  fragment?: RouterLink['fragment'] | undefined;\n  preserveFragment?: RouterLink['preserveFragment'] | undefined;\n  skipLocationChange?: RouterLink['skipLocationChange'] | undefined;\n  replaceUrl?: RouterLink['replaceUrl'] | undefined;\n  state?: RouterLink['state'] | undefined;\n  activeLinkOptions?: RouterLinkActive['routerLinkActiveOptions'] | undefined;\n}\n\n/**\n * Route tabset components.\n * Renders tabs inside of a router-outlet.\n *\n * ```ts\n *  tabs = [\n *  {\n *    title: 'Route tab #1',\n *    route: '/pages/description',\n *    icon: 'home',\n *    responsive: true, // hide title before `$tabset-tab-text-hide-breakpoint` value\n *  },\n *  {\n *    title: 'Route tab #2',\n *    route: '/pages/images',\n *    }\n *  ];\n *\n *  <nb-route-tabset [tabs]=\"tabs\"></nb-route-tabset>\n * ```\n * ### Installation\n *\n * Import `NbRouteTabsetModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbRouteTabsetModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n *\n * @stacked-example(Route Tabset, tabset/route-tabset-showcase.component)\n *\n * @styles\n *\n * route-tabset-background-color:\n * route-tabset-border-radius:\n * route-tabset-shadow:\n * route-tabset-tab-background-color:\n * route-tabset-tab-padding:\n * route-tabset-tab-text-color:\n * route-tabset-tab-text-font-family:\n * route-tabset-tab-text-font-size:\n * route-tabset-tab-text-font-weight:\n * route-tabset-tab-text-line-height:\n * route-tabset-tab-text-transform:\n * route-tabset-tab-underline-width:\n * route-tabset-tab-underline-color:\n * route-tabset-tab-active-background-color:\n * route-tabset-tab-active-text-color:\n * route-tabset-tab-active-underline-color:\n * route-tabset-tab-focus-background-color:\n * route-tabset-tab-focus-text-color:\n * route-tabset-tab-focus-underline-color:\n * route-tabset-tab-hover-background-color:\n * route-tabset-tab-hover-text-color:\n * route-tabset-tab-hover-underline-color:\n * route-tabset-tab-disabled-background-color:\n * route-tabset-tab-disabled-text-color:\n * route-tabset-tab-disabled-underline-color:\n * route-tabset-divider-color:\n * route-tabset-divider-style:\n * route-tabset-divider-width:\n * route-tabset-scrollbar-color:\n * route-tabset-scrollbar-background-color:\n * route-tabset-scrollbar-width:\n */\n@Component({\n    selector: 'nb-route-tabset',\n    styleUrls: ['./route-tabset.component.scss'],\n    template: `\n    <ul class=\"route-tabset\">\n      <ng-container *ngFor=\"let tab of tabs\">\n        <li\n          *ngIf=\"tab.disabled; else enabled\"\n          [class.responsive]=\"tab.responsive\"\n          class=\"route-tab disabled\"\n          tabindex=\"-1\"\n        >\n          <a tabindex=\"-1\" class=\"tab-link\">\n            <nb-icon *ngIf=\"tab.icon\" [config]=\"tab.icon\"></nb-icon>\n            <span *ngIf=\"tab.title\" class=\"tab-text\">{{ tab.title }}</span>\n          </a>\n        </li>\n\n        <ng-template #enabled>\n          <li\n            routerLinkActive=\"active\"\n            [routerLinkActiveOptions]=\"activeLinkOptions | nbMergeConfigs: tab.activeLinkOptions\"\n            class=\"route-tab\"\n          >\n            <a\n              (click)=\"selectTab(tab)\"\n              [routerLink]=\"tab.route\"\n              [class.responsive]=\"tab.responsive\"\n              [queryParams]=\"tab.queryParams\"\n              [queryParamsHandling]=\"tab.queryParamsHandling\"\n              [fragment]=\"tab.fragment\"\n              [preserveFragment]=\"tab.preserveFragment\"\n              [skipLocationChange]=\"tab.skipLocationChange\"\n              [replaceUrl]=\"tab.replaceUrl\"\n              [state]=\"tab.state\"\n              class=\"tab-link\"\n            >\n              <nb-icon *ngIf=\"tab.icon\" [config]=\"tab.icon\"></nb-icon>\n              <span *ngIf=\"tab.title\" class=\"tab-text\">{{ tab.title }}</span>\n            </a>\n          </li>\n        </ng-template>\n      </ng-container>\n    </ul>\n    <router-outlet></router-outlet>\n  `,\n    standalone: false\n})\nexport class NbRouteTabsetComponent {\n  @HostBinding('class.full-width') fullWidthValue: boolean = false;\n\n  /**\n   * Tabs configuration\n   */\n  @Input() tabs: NbRouteTab[];\n\n  /**\n   * Options passed to `routerLinkActiveOptions` directive which set on tab links.\n   * `{ exact: true }` by default.\n   */\n  @Input() activeLinkOptions: RouterLinkActive['routerLinkActiveOptions'] = { exact: true };\n\n  /**\n   * Take full width of a parent\n   * @param {boolean} val\n   */\n  @Input()\n  set fullWidth(val: boolean) {\n    this.fullWidthValue = convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_fullWidth: NbBooleanInput;\n\n  /**\n   * Emits when tab is selected\n   * @type {EventEmitter<NbRouteTab>}\n   */\n  @Output() changeTab = new EventEmitter<NbRouteTab>();\n\n  selectTab(tab: NbRouteTab) {\n    this.changeTab.emit(tab);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\n\nimport { NbRouteTabsetComponent } from './route-tabset.component';\nimport { NbMergeConfigsPipe } from './merge-configs.pipe';\nimport { NbIconModule } from '../icon/icon.module';\n\n@NgModule({\n  imports: [NbSharedModule, NbIconModule],\n  declarations: [NbRouteTabsetComponent, NbMergeConfigsPipe],\n  exports: [NbRouteTabsetComponent],\n})\nexport class NbRouteTabsetModule {}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Subject, Observable, Observer, ReplaySubject } from 'rxjs';\nimport { share, refCount, publish } from 'rxjs/operators';\nimport { NbSidebarResponsiveState, NbSidebarState } from './sidebar.component';\n\nexport const getSidebarState$ = new Subject<{ tag: string, observer: Observer<NbSidebarState> }>();\nexport const getSidebarResponsiveState$ = new Subject<{ tag: string, observer: Observer<NbSidebarResponsiveState> }>();\n\n/**\n * Sidebar service.\n *\n * Root module service to control the sidebar from any part of the app.\n *\n * Allows you to change sidebar state dynamically from any part of the app:\n * @stacked-example(Sidebar State, sidebar/sidebar-toggle.component)\n */\n@Injectable()\nexport class NbSidebarService {\n\n  private toggle$ = new Subject<{ compact: boolean, tag: string }>();\n  private expand$ = new Subject<{ tag: string }>();\n  private collapse$ = new Subject<{ tag: string }>();\n  private compact$ = new Subject<{ tag: string }>();\n\n  /**\n   * Subscribe to toggle events\n   *\n   * @returns Observable<{ compact: boolean, tag: string }>\n   */\n  onToggle(): Observable<{ compact: boolean, tag: string }> {\n    return this.toggle$.pipe(share());\n  }\n\n  /**\n   * Subscribe to expand events\n   * @returns Observable<{ tag: string }>\n   */\n  onExpand(): Observable<{ tag: string }> {\n    return this.expand$.pipe(share());\n  }\n\n  /**\n   * Subscribe to collapse evens\n   * @returns Observable<{ tag: string }>\n   */\n  onCollapse(): Observable<{ tag: string }> {\n    return this.collapse$.pipe(share());\n  }\n\n  /**\n   * Subscribe to compact evens\n   * @returns Observable<{ tag: string }>\n   */\n  onCompact(): Observable<{ tag: string }> {\n    return this.compact$.pipe(share());\n  }\n\n  /**\n   * Toggle a sidebar\n   * @param {boolean} compact\n   * @param {string} tag If you have multiple sidebars on the page, mark them with `tag` input property and pass it here\n   * to specify which sidebar you want to control\n   */\n  toggle(compact = false, tag?: string) {\n    this.toggle$.next({ compact, tag });\n  }\n\n  /**\n   * Expands a sidebar\n   * @param {string} tag If you have multiple sidebars on the page, mark them with `tag` input property and pass it here\n   * to specify which sidebar you want to control\n   */\n  expand(tag?: string) {\n    this.expand$.next({ tag });\n  }\n\n  /**\n   * Collapses a sidebar\n   * @param {string} tag If you have multiple sidebars on the page, mark them with `tag` input property and pass it here\n   * to specify which sidebar you want to control\n   */\n  collapse(tag?: string) {\n    this.collapse$.next({ tag });\n  }\n\n  /**\n   * Makes sidebar compact\n   * @param {string} tag If you have multiple sidebars on the page, mark them with `tag` input property and pass it here\n   * to specify which sidebar you want to control\n   */\n  compact(tag?: string) {\n    this.compact$.next({ tag });\n  }\n\n  /**\n   * Returns sidebar state observable which emits once\n   * @param {string} tag If you have multiple sidebars on the page, mark them with `tag` input property and pass it here\n   * to specify which sidebar state you need\n   */\n  getSidebarState(tag?: string): Observable<NbSidebarState> {\n    const observer = new ReplaySubject<NbSidebarState>(1);\n    getSidebarState$.next({ observer, tag });\n    return observer.pipe(publish(), refCount());\n  }\n\n  /**\n   * Returns sidebar state observable which emits once\n   * @param {string} tag If you have multiple sidebars on the page, mark them with `tag` input property and pass it here\n   * to specify which sidebar responsive state you need\n   */\n  getSidebarResponsiveState(tag?: string): Observable<NbSidebarResponsiveState> {\n    const observer = new ReplaySubject<NbSidebarResponsiveState>();\n    getSidebarResponsiveState$.next({ observer, tag });\n    return observer.pipe(publish(), refCount());\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n} from '@angular/core';\nimport { combineLatest, Observable, Subject } from 'rxjs';\nimport { takeUntil, filter, map, startWith } from 'rxjs/operators';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbThemeService } from '../../services/theme.service';\nimport { NbMediaBreakpoint } from '../../services/breakpoints.service';\nimport { NbSidebarService, getSidebarState$, getSidebarResponsiveState$ } from './sidebar.service';\n\nexport type NbSidebarState = 'expanded' | 'collapsed' | 'compacted';\nexport type NbSidebarResponsiveState = 'mobile' | 'tablet' | 'pc';\n\n/**\n * Sidebar header container.\n *\n * Placeholder which contains a sidebar header content,\n * placed at the very top of the sidebar outside of the scroll area.\n */\n@Component({\n    selector: 'nb-sidebar-header',\n    template: ` <ng-content></ng-content> `,\n    standalone: false\n})\nexport class NbSidebarHeaderComponent {}\n\n/**\n * Sidebar footer container.\n *\n * Placeholder which contains a sidebar footer content,\n * placed at the very bottom of the sidebar outside of the scroll area.\n */\n@Component({\n    selector: 'nb-sidebar-footer',\n    template: ` <ng-content></ng-content> `,\n    standalone: false\n})\nexport class NbSidebarFooterComponent {}\n\n/**\n * Layout sidebar component.\n *\n * @stacked-example(Showcase, sidebar/sidebar-showcase.component)\n *\n * ### Installation\n *\n * Import `NbSidebarModule.forRoot()` to your app module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbSidebarModule.forRoot(),\n *   ],\n * })\n * export class AppModule { }\n * ```\n * and `NbSidebarModule` to your feature module where the component should be shown:\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbSidebarModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Sidebar can be placed on the left or the right side of the layout,\n * or on start/end position of layout (depends on document direction, left to right or right to left)\n * It can be fixed (shown above the content) or can push the layout when opened.\n *\n * There are three states - `expanded`, `collapsed`, `compacted`.\n * By default sidebar content is fixed and saves its position while the page is being scrolled.\n *\n * Compacted sidebar example:\n * @stacked-example(Compacted Sidebar, sidebar/sidebar-compacted.component)\n *\n * Sidebar also supports a `responsive` behavior, listening to window size change and changing its size respectably.\n *\n * In a pair with header it is possible to setup a configuration when header is placed on a side of the sidebar\n * and not on top of it. To achieve this simply put a `subheader` property to the header like this:\n * ```html\n * <nb-layout-header subheader></nb-layout-header>\n * ```\n * @stacked-example(Subheader, layout/layout-sidebar-subheader.component)\n * Note that in such configuration sidebar shadow is removed and header cannot be make `fixed`.\n *\n * @additional-example(Right Sidebar, sidebar/sidebar-right.component)\n * @additional-example(Fixed Sidebar, sidebar/sidebar-fixed.component)\n *\n * @styles\n *\n * sidebar-background-color:\n * sidebar-text-color:\n * sidebar-text-font-family:\n * sidebar-text-font-size:\n * sidebar-text-font-weight:\n * sidebar-text-line-height:\n * sidebar-height:\n * sidebar-width:\n * sidebar-width-compact:\n * sidebar-padding:\n * sidebar-header-height:\n * sidebar-footer-height:\n * sidebar-shadow:\n * sidebar-menu-item-highlight-color:\n * sidebar-scrollbar-background-color:\n * sidebar-scrollbar-color:\n * sidebar-scrollbar-width:\n */\n@Component({\n    selector: 'nb-sidebar',\n    styleUrls: ['./sidebar.component.scss'],\n    template: `\n    <div class=\"main-container\" [class.main-container-fixed]=\"containerFixedValue\">\n      <ng-content select=\"nb-sidebar-header\"></ng-content>\n      <div class=\"scrollable\" (click)=\"onClick($event)\">\n        <ng-content></ng-content>\n      </div>\n      <ng-content select=\"nb-sidebar-footer\"></ng-content>\n    </div>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbSidebarComponent implements OnInit, OnDestroy {\n  protected readonly responsiveValueChange$: Subject<boolean> = new Subject<boolean>();\n  protected responsiveState: NbSidebarResponsiveState = 'pc';\n\n  protected destroy$ = new Subject<void>();\n\n  containerFixedValue: boolean = true;\n\n  @HostBinding('class.fixed') fixedValue: boolean = false;\n  @HostBinding('class.right') rightValue: boolean = false;\n  @HostBinding('class.left') leftValue: boolean = true;\n  @HostBinding('class.start') startValue: boolean = false;\n  @HostBinding('class.end') endValue: boolean = false;\n\n  @HostBinding('class.expanded')\n  get expanded() {\n    return this.state === 'expanded';\n  }\n  @HostBinding('class.collapsed')\n  get collapsed() {\n    return this.state === 'collapsed';\n  }\n  @HostBinding('class.compacted')\n  get compacted() {\n    return this.state === 'compacted';\n  }\n\n  /**\n   * Places sidebar on the right side\n   * @type {boolean}\n   */\n  @Input()\n  set right(val: boolean) {\n    this.rightValue = convertToBoolProperty(val);\n    this.leftValue = !this.rightValue;\n    this.startValue = false;\n    this.endValue = false;\n  }\n  static ngAcceptInputType_right: NbBooleanInput;\n\n  /**\n   * Places sidebar on the left side\n   * @type {boolean}\n   */\n  @Input()\n  set left(val: boolean) {\n    this.leftValue = convertToBoolProperty(val);\n    this.rightValue = !this.leftValue;\n    this.startValue = false;\n    this.endValue = false;\n  }\n  static ngAcceptInputType_left: NbBooleanInput;\n\n  /**\n   * Places sidebar on the start edge of layout\n   * @type {boolean}\n   */\n  @Input()\n  set start(val: boolean) {\n    this.startValue = convertToBoolProperty(val);\n    this.endValue = !this.startValue;\n    this.leftValue = false;\n    this.rightValue = false;\n  }\n  static ngAcceptInputType_start: NbBooleanInput;\n\n  /**\n   * Places sidebar on the end edge of layout\n   * @type {boolean}\n   */\n  @Input()\n  set end(val: boolean) {\n    this.endValue = convertToBoolProperty(val);\n    this.startValue = !this.endValue;\n    this.leftValue = false;\n    this.rightValue = false;\n  }\n  static ngAcceptInputType_end: NbBooleanInput;\n\n  /**\n   * Makes sidebar fixed (shown above the layout content)\n   * @type {boolean}\n   */\n  @Input()\n  set fixed(val: boolean) {\n    this.fixedValue = convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_fixed: NbBooleanInput;\n\n  /**\n   * Makes sidebar container fixed\n   * @type {boolean}\n   */\n  @Input()\n  set containerFixed(val: boolean) {\n    this.containerFixedValue = convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_containerFixed: NbBooleanInput;\n\n  /**\n   * Initial sidebar state, `expanded`|`collapsed`|`compacted`\n   * @type {string}\n   */\n  @Input()\n  get state(): NbSidebarState {\n    return this._state;\n  }\n  set state(value: NbSidebarState) {\n    this._state = value;\n  }\n  protected _state: NbSidebarState = 'expanded';\n\n  /**\n   * Makes sidebar listen to media query events and change its behaviour\n   * @type {boolean}\n   */\n  @Input()\n  get responsive(): boolean {\n    return this._responsive;\n  }\n  set responsive(value: boolean) {\n    if (this.responsive !== convertToBoolProperty(value)) {\n      this._responsive = !this.responsive;\n      this.responsiveValueChange$.next(this.responsive);\n    }\n  }\n  protected _responsive: boolean = false;\n  static ngAcceptInputType_responsive: NbBooleanInput;\n\n  /**\n   * Tags a sidebar with some ID, can be later used in the sidebar service\n   * to determine which sidebar triggered the action, if multiple sidebars exist on the page.\n   *\n   * @type {string}\n   */\n  @Input() tag: string;\n\n  // TODO: get width by the key and define only max width for the tablets and mobiles\n  /**\n   * Controls on which screen sizes sidebar should be switched to compacted state.\n   * Works only when responsive mode is on.\n   * Default values are `['xs', 'is', 'sm', 'md', 'lg']`.\n   *\n   * @type string[]\n   */\n  @Input() compactedBreakpoints: string[] = ['xs', 'is', 'sm', 'md', 'lg'];\n\n  /**\n   * Controls on which screen sizes sidebar should be switched to collapsed state.\n   * Works only when responsive mode is on.\n   * Default values are `['xs', 'is']`.\n   *\n   * @type string[]\n   */\n  @Input() collapsedBreakpoints: string[] = ['xs', 'is'];\n\n  /**\n   * Emits whenever sidebar state change.\n   */\n  @Output() readonly stateChange = new EventEmitter<NbSidebarState>();\n\n  /**\n   * Emits whenever sidebar responsive state change.\n   */\n  @Output() readonly responsiveStateChange = new EventEmitter<NbSidebarResponsiveState>();\n\n  constructor(\n    private sidebarService: NbSidebarService,\n    private themeService: NbThemeService,\n    private element: ElementRef,\n    private cd: ChangeDetectorRef,\n  ) {}\n\n  ngOnInit() {\n    this.sidebarService\n      .onToggle()\n      .pipe(\n        filter(({ tag }) => !this.tag || this.tag === tag),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(({ compact }) => this.toggle(compact));\n\n    this.sidebarService\n      .onExpand()\n      .pipe(\n        filter(({ tag }) => !this.tag || this.tag === tag),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.expand());\n\n    this.sidebarService\n      .onCollapse()\n      .pipe(\n        filter(({ tag }) => !this.tag || this.tag === tag),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.collapse());\n\n    this.sidebarService\n      .onCompact()\n      .pipe(\n        filter(({ tag }) => !this.tag || this.tag === tag),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.compact());\n\n    getSidebarState$\n      .pipe(\n        filter(({ tag }) => !this.tag || this.tag === tag),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(({ observer }) => observer.next(this.state));\n\n    getSidebarResponsiveState$\n      .pipe(\n        filter(({ tag }) => !this.tag || this.tag === tag),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(({ observer }) => observer.next(this.responsiveState));\n\n    this.responsiveValueChange$\n      .pipe(\n        filter((responsive: boolean) => !responsive),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.expand());\n\n    this.subscribeToMediaQueryChange();\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  // TODO: this is more of a workaround, should be a better way to make components communicate to each other\n  onClick(event): void {\n    const menu = this.element.nativeElement.querySelector('nb-menu');\n\n    if (menu && menu.contains(event.target)) {\n      const link = this.getMenuLink(event.target);\n\n      if (link && link.nextElementSibling && link.nextElementSibling.classList.contains('menu-items')) {\n        this.sidebarService.expand(this.tag);\n      }\n    }\n  }\n\n  /**\n   * Collapses the sidebar\n   */\n  collapse() {\n    this.updateState('collapsed');\n  }\n\n  /**\n   * Expands the sidebar\n   */\n  expand() {\n    this.updateState('expanded');\n  }\n\n  /**\n   * Compacts the sidebar (minimizes)\n   */\n  compact() {\n    this.updateState('compacted');\n  }\n\n  /**\n   * Toggles sidebar state (expanded|collapsed|compacted)\n   * @param {boolean} compact If true, then sidebar state will be changed between expanded & compacted,\n   * otherwise - between expanded & collapsed. False by default.\n   *\n   * Toggle sidebar state\n   *\n   * ```ts\n   * this.sidebar.toggle(true);\n   * ```\n   */\n  toggle(compact: boolean = false) {\n    if (this.responsive) {\n      if (this.responsiveState === 'mobile') {\n        compact = false;\n      }\n    }\n\n    if (this.state === 'compacted' || this.state === 'collapsed') {\n      this.updateState('expanded');\n    } else {\n      this.updateState(compact ? 'compacted' : 'collapsed');\n    }\n  }\n\n  protected subscribeToMediaQueryChange() {\n    combineLatest([\n      this.responsiveValueChange$.pipe(startWith(this.responsive)),\n      this.themeService.onMediaQueryChange() as Observable<[NbMediaBreakpoint, NbMediaBreakpoint]>,\n    ])\n      .pipe(\n        filter(([responsive]) => responsive),\n        map(([, breakpoints]) => breakpoints),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(([prev, current]: [NbMediaBreakpoint, NbMediaBreakpoint]) => {\n        const isCollapsed = this.collapsedBreakpoints.includes(current.name);\n        const isCompacted = this.compactedBreakpoints.includes(current.name);\n\n        let newResponsiveState;\n\n        if (isCompacted) {\n          this.fixed = this.containerFixedValue;\n          this.compact();\n          newResponsiveState = 'tablet';\n        }\n        if (isCollapsed) {\n          this.fixed = true;\n          this.collapse();\n          newResponsiveState = 'mobile';\n        }\n        if (!isCollapsed && !isCompacted && (!prev.width || prev.width < current.width)) {\n          this.expand();\n          this.fixed = false;\n          newResponsiveState = 'pc';\n        }\n\n        if (newResponsiveState && newResponsiveState !== this.responsiveState) {\n          this.responsiveState = newResponsiveState;\n          this.responsiveStateChange.emit(this.responsiveState);\n          this.cd.markForCheck();\n        }\n      });\n  }\n\n  protected getMenuLink(element: HTMLElement): HTMLElement | undefined {\n    if (!element || element.tagName.toLowerCase() === 'nb-menu') {\n      return undefined;\n    }\n\n    if (element.tagName.toLowerCase() === 'a') {\n      return element;\n    }\n\n    return this.getMenuLink(element.parentElement);\n  }\n\n  protected updateState(state: NbSidebarState): void {\n    if (this.state !== state) {\n      this.state = state;\n      this.stateChange.emit(this.state);\n      this.cd.markForCheck();\n    }\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\n\nimport {\n  NbSidebarComponent,\n  NbSidebarFooterComponent,\n  NbSidebarHeaderComponent,\n} from './sidebar.component';\n\nimport { NbSidebarService } from './sidebar.service';\n\nconst NB_SIDEBAR_COMPONENTS = [\n  NbSidebarComponent,\n  NbSidebarFooterComponent,\n  NbSidebarHeaderComponent,\n];\n\nconst NB_SIDEBAR_PROVIDERS = [\n  NbSidebarService,\n];\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n  ],\n  declarations: [\n    ...NB_SIDEBAR_COMPONENTS,\n  ],\n  exports: [\n    ...NB_SIDEBAR_COMPONENTS,\n  ],\n})\nexport class NbSidebarModule {\n  static forRoot(): ModuleWithProviders<NbSidebarModule> {\n    return {\n      ngModule: NbSidebarModule,\n      providers: [\n        ...NB_SIDEBAR_PROVIDERS,\n      ],\n    };\n  }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n/**\n * Directive to wrap tab lazy content.\n * */\n@Directive({\n    selector: '[nbTabContent]',\n    standalone: false\n})\nexport class NbTabContentDirective {\n  constructor(public templateRef: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n    selector: '[nbTabTitle]',\n    standalone: false\n})\nexport class NbTabTitleDirective {\n  constructor(public templateRef: TemplateRef<any>) {}\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { map, delay, filter, takeUntil } from 'rxjs/operators';\nimport {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ContentChildren,\n  QueryList,\n  AfterContentInit,\n  HostBinding,\n  ChangeDetectorRef,\n  ContentChild,\n  OnDestroy,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subject } from 'rxjs';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbBadgePosition } from '../badge/badge.component';\nimport { NbIconConfig } from '../icon/icon.component';\nimport { NbTabContentDirective } from './tab-content.directive';\nimport { NbTabTitleDirective } from './tab-title.directive';\n\n/**\n * Specific tab container.\n *\n * ```ts\n * <nb-tab tabTitle=\"Users\"\n *   badgeText=\"99+\"\n *   badgeStatus=\"danger\">\n *   <p>List of <strong>users</strong>.</p>\n * </nb-tab>\n * ```\n */\n@Component({\n    selector: 'nb-tab',\n    template: `\n    <ng-container\n      *ngIf=\"tabContentDirective; else projectedContent\"\n      [ngTemplateOutlet]=\"tabContentDirective.templateRef\"\n    ></ng-container>\n\n    <ng-template #projectedContent>\n      <ng-content></ng-content>\n    </ng-template>\n  `,\n    standalone: false\n})\nexport class NbTabComponent {\n  @ContentChild(NbTabContentDirective) tabContentDirective: NbTabContentDirective;\n  @ContentChild(NbTabTitleDirective) tabTitleDirective: NbTabTitleDirective;\n\n  /**\n   * Tab title\n   * @type {string}\n   */\n  @Input() tabTitle: string;\n\n  /**\n   * Tab id\n   * @type {string}\n   */\n  @Input() tabId: string;\n\n  /**\n   * Use badge dot mode\n   * @type {boolean}\n   */\n  @Input()\n  get badgeDot(): boolean {\n    return this._badgeDot;\n  }\n  set badgeDot(val: boolean) {\n    this._badgeDot = convertToBoolProperty(val);\n  }\n  protected _badgeDot: boolean;\n  static ngAcceptInputType_badgeDot: NbBooleanInput;\n\n  /**\n   * Tab icon name or icon config object\n   * @type {string | NbIconConfig}\n   */\n  @Input() tabIcon: string | NbIconConfig;\n\n  /**\n   * Item is disabled and cannot be opened.\n   * @type {boolean}\n   */\n  @Input('disabled')\n  @HostBinding('class.disabled')\n  get disabled(): boolean {\n    return this.disabledValue;\n  }\n  set disabled(val: boolean) {\n    this.disabledValue = convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  /**\n   * Show only icons when width is smaller than `tabs-icon-only-max-width`\n   * @type {boolean}\n   */\n  @Input()\n  set responsive(val: boolean) {\n    this.responsiveValue = convertToBoolProperty(val);\n  }\n  get responsive() {\n    return this.responsiveValue;\n  }\n  static ngAcceptInputType_responsive: NbBooleanInput;\n\n  /**\n   * Makes this tab a link that initiates navigation to a route\n   * @type string\n   */\n  @Input() route: string;\n\n  @HostBinding('class.content-active')\n  activeValue: boolean = false;\n\n  responsiveValue: boolean = false;\n  disabledValue = false;\n\n  /**\n   * Specifies active tab\n   * @returns {boolean}\n   */\n  @Input()\n  get active() {\n    return this.activeValue;\n  }\n  set active(val: boolean) {\n    this.activeValue = convertToBoolProperty(val);\n    if (this.activeValue) {\n      this.init = true;\n    }\n  }\n  static ngAcceptInputType_active: NbBooleanInput;\n\n  /**\n   * Lazy load content before tab selection\n   * @docs-private\n   * @deprecated This setting never worked. Wrap content into a `nbTabContent` to make it lazy.\n   * @breaking-change Remove 12.0.0\n   */\n  @Input()\n  set lazyLoad(val: boolean) {\n    this.init = convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_lazyLoad: NbBooleanInput;\n\n  /**\n   * Badge text to display\n   * @type string\n   */\n  @Input() badgeText: string;\n\n  /**\n   * Badge status (adds specific styles):\n   * 'primary', 'info', 'success', 'warning', 'danger'\n   * @param {string} val\n   */\n  @Input() badgeStatus: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Badge position.\n   * Can be set to any class or to one of predefined positions:\n   * 'top left', 'top right', 'bottom left', 'bottom right',\n   * 'top start', 'top end', 'bottom start', 'bottom end'\n   * @type string\n   */\n  @Input() badgePosition: NbBadgePosition;\n\n  /**\n   * @deprecated\n   * @breaking-change Remove 12.0.0\n   * @docs-private\n   */\n  init: boolean = false;\n}\n\n// TODO: Combine tabset with route-tabset, so that we can:\n// - have similar interface\n// - easy to migrate from one to another\n// - can mix them both (route/content tab)\n/**\n *\n * Dynamic tabset component.\n * @stacked-example(Showcase, tabset/tabset-showcase.component)\n *\n * Basic tabset example\n *\n * ```html\n * <nb-tabset>\n *  <nb-tab tabTitle=\"Simple Tab #1\">\n *    Tab content 1\n *  </nb-tab>\n *  <nb-tab tabTitle=\"Simple Tab #2\">\n *    Tab content 2\n *  </nb-tab>\n * </nb-tabset>\n * ```\n *\n * ### Installation\n *\n * Import `NbTabsetModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbTabsetModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * It is also possible to set a badge to a particular tab:\n * @stacked-example(Tab With Badge, tabset/tabset-badge.component)\n *\n * and we can set it to full a width of a parent component\n * @stacked-example(Full Width, tabset/tabset-width.component)\n *\n * `tabIcon` should be used to add an icon to the tab. Icon can also be combined with title.\n * `responsive` tab property if set allows you to hide the title on smaller screens\n * (`$tabset-tab-text-hide-breakpoint` variable) for better responsive behaviour.\n * You can open the following example and make\n * your screen smaller - titles will be hidden in the last tabset in the list:\n * @stacked-example(Icon, tabset/tabset-icon.component)\n *\n * It is also possible to disable a tab using `disabled` property:\n * @stacked-example(Disabled Tab, tabset/tabset-disabled.component)\n *\n * By default, the tab contents instantiated straightaway. To make tab contents load lazy,\n * declare the body of a tab in a template with `nbTabContent` directive.\n * ```html\n * <nb-tabset>\n *   <nb-tab>\n *     <some-component *nbTabContent>Lazy content</some-component>\n *   </nb-tab>\n *   <nb-tab>\n *     <ng-template nbTabContent>\n *       Lazy content with template syntax\n *     </ng-template>\n *   </nb-tab>\n * </nb-tabset>\n * ```\n *\n * You can provide a template as a tab title via `<ng-template nbTabTitle>`:\n * @stacked-example(Tab title template, tabset/tabset-template-title.component)\n *\n * @styles\n *\n * tabset-background-color:\n * tabset-border-radius:\n * tabset-shadow:\n * tabset-tab-background-color:\n * tabset-tab-padding:\n * tabset-tab-text-color:\n * tabset-tab-text-font-family:\n * tabset-tab-text-font-size:\n * tabset-tab-text-font-weight:\n * tabset-tab-text-line-height:\n * tabset-tab-text-transform:\n * tabset-tab-underline-width:\n * tabset-tab-underline-color:\n * tabset-tab-active-background-color:\n * tabset-tab-active-text-color:\n * tabset-tab-active-underline-color:\n * tabset-tab-focus-background-color:\n * tabset-tab-focus-text-color:\n * tabset-tab-focus-underline-color:\n * tabset-tab-hover-background-color:\n * tabset-tab-hover-text-color:\n * tabset-tab-hover-underline-color:\n * tabset-tab-disabled-background-color:\n * tabset-tab-disabled-text-color:\n * tabset-tab-disabled-underline-color:\n * tabset-divider-color:\n * tabset-divider-style:\n * tabset-divider-width:\n * tabset-content-background-color:\n * tabset-content-padding:\n * tabset-content-text-color:\n * tabset-content-text-font-family:\n * tabset-content-text-font-size:\n * tabset-content-text-font-weight:\n * tabset-content-text-line-height:\n * tabset-scrollbar-color:\n * tabset-scrollbar-background-color:\n * tabset-scrollbar-width:\n */\n@Component({\n    selector: 'nb-tabset',\n    styleUrls: ['./tabset.component.scss'],\n    template: `\n    <ul class=\"tabset\">\n      <li\n        *ngFor=\"let tab of tabs\"\n        (click)=\"selectTab(tab)\"\n        (keyup.space)=\"selectTab(tab)\"\n        (keyup.enter)=\"selectTab(tab)\"\n        [class.responsive]=\"tab.responsive\"\n        [class.active]=\"tab.active\"\n        [class.disabled]=\"tab.disabled\"\n        [attr.tabindex]=\"tab.disabled ? -1 : 0\"\n        [attr.data-tab-id]=\"tab.tabId\"\n        class=\"tab\"\n      >\n        <a href (click)=\"$event.preventDefault()\" tabindex=\"-1\" class=\"tab-link\">\n          <nb-icon *ngIf=\"tab.tabIcon\" [config]=\"tab.tabIcon\"></nb-icon>\n          <ng-container\n            *ngIf=\"tab.tabTitleDirective; else textTitleTemplate\"\n            [ngTemplateOutlet]=\"tab.tabTitleDirective.templateRef\"\n          ></ng-container>\n          <ng-template #textTitleTemplate>\n            <span class=\"tab-text\">{{ tab.tabTitle }}</span>\n          </ng-template>\n        </a>\n        <nb-badge\n          *ngIf=\"tab.badgeText || tab.badgeDot\"\n          [text]=\"tab.badgeText\"\n          [dotMode]=\"tab.badgeDot\"\n          [status]=\"tab.badgeStatus\"\n          [position]=\"tab.badgePosition\"\n        >\n        </nb-badge>\n      </li>\n    </ul>\n    <ng-content select=\"nb-tab\"></ng-content>\n  `,\n    standalone: false\n})\nexport class NbTabsetComponent implements AfterContentInit, OnDestroy {\n  @ContentChildren(NbTabComponent) tabs: QueryList<NbTabComponent>;\n\n  @HostBinding('class.full-width')\n  fullWidthValue: boolean = false;\n\n  /**\n   * Take full width of a parent\n   * @param {boolean} val\n   */\n  @Input()\n  set fullWidth(val: boolean) {\n    this.fullWidthValue = convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_fullWidth: NbBooleanInput;\n\n  /**\n   * If specified - tabset listens to this parameter and selects corresponding tab.\n   * @type {string}\n   */\n  @Input() routeParam: string;\n\n  /**\n   * Emits when tab is selected\n   * @type EventEmitter<any>\n   */\n  @Output() changeTab = new EventEmitter<any>();\n\n  private destroy$: Subject<void> = new Subject<void>();\n\n  constructor(private route: ActivatedRoute, private changeDetectorRef: ChangeDetectorRef) {}\n\n  // TODO: refactoring this component, avoid change detection loop\n  ngAfterContentInit() {\n    this.route.params\n      .pipe(\n        map((params: any) =>\n          this.tabs.find((tab) => (this.routeParam ? tab.route === params[this.routeParam] : tab.active)),\n        ),\n        delay(0),\n        map((tab: NbTabComponent) => tab || this.tabs.first),\n        filter((tab: NbTabComponent) => !!tab),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((tabToSelect: NbTabComponent) => {\n        this.selectTab(tabToSelect);\n        this.changeDetectorRef.markForCheck();\n      });\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  // TODO: navigate to routeParam\n  selectTab(selectedTab: NbTabComponent) {\n    if (!selectedTab.disabled) {\n      this.tabs.forEach((tab) => (tab.active = tab === selectedTab));\n      this.changeTab.emit(selectedTab);\n    }\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\n\nimport { NbTabsetComponent, NbTabComponent } from './tabset.component';\nimport { NbBadgeModule } from '../badge/badge.module';\nimport { NbIconModule } from '../icon/icon.module';\nimport { NbTabContentDirective } from './tab-content.directive';\nimport { NbTabTitleDirective } from './tab-title.directive';\n\nconst NB_TABSET_COMPONENTS = [NbTabsetComponent, NbTabComponent];\n\nconst NB_TABSET_DIRECTIVES = [NbTabContentDirective, NbTabTitleDirective];\n\n@NgModule({\n  imports: [NbSharedModule, NbBadgeModule, NbIconModule],\n  declarations: [...NB_TABSET_COMPONENTS, ...NB_TABSET_DIRECTIVES],\n  exports: [...NB_TABSET_COMPONENTS, ...NB_TABSET_DIRECTIVES],\n})\nexport class NbTabsetModule {}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, HostBinding, Input } from '@angular/core';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentShape } from '../component-shape';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbBadgePosition } from '../badge/badge.component';\n\n/**\n * Represents a component showing a user avatar (picture) with a user name on the right.\n * @stacked-example(Showcase, user/user-showcase.component)\n *\n * ```ts\n *   <nb-user name=\"John Doe\" title=\"Engineer\"></nb-user>\n * ```\n *\n * ### Installation\n *\n * Import `NbUserModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbUserModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Available in multiple sizes:\n * @stacked-example(Multiple Sizes, user/user-sizes.component)\n *\n *\n * You can hide unnecessary captions (name, title or both):\n * @stacked-example(Hide captions in user component, user/user-hide-captions.component)\n *\n *\n * You can set custom avatar background-color, user image (as link or BASE64 string) and disable user initials:\n * @stacked-example(Avatar image settings, user/user-avatar-settings.component)\n *\n * Component shape could be controlled with `shape` input.\n * @stacked-example(Shapes, user/user-shape.component)\n *\n * @styles\n *\n * user-picture-box-background-color:\n * user-picture-box-border-color:\n * user-picture-box-border-width:\n * user-initials-text-color:\n * user-initials-text-font-family:\n * user-initials-text-font-weight:\n * user-name-text-color:\n * user-name-text-font-family:\n * user-name-text-font-weight:\n * user-title-text-color:\n * user-title-text-font-family:\n * user-title-text-font-weight:\n * user-rectangle-border-radius:\n * user-semi-round-border-radius:\n * user-round-border-radius:\n * user-tiny-height:\n * user-tiny-width:\n * user-tiny-initials-text-font-size:\n * user-tiny-initials-text-line-height:\n * user-tiny-name-text-font-size:\n * user-tiny-name-text-line-height:\n * user-tiny-title-text-font-size:\n * user-tiny-title-text-line-height:\n * user-small-height:\n * user-small-width:\n * user-small-initials-text-font-size:\n * user-small-initials-text-line-height:\n * user-small-name-text-font-size:\n * user-small-name-text-line-height:\n * user-small-title-text-font-size:\n * user-small-title-text-line-height:\n * user-medium-height:\n * user-medium-width:\n * user-medium-initials-text-font-size:\n * user-medium-initials-text-line-height:\n * user-medium-name-text-font-size:\n * user-medium-name-text-line-height:\n * user-medium-title-text-font-size:\n * user-medium-title-text-line-height:\n * user-large-height:\n * user-large-width:\n * user-large-initials-text-font-size:\n * user-large-initials-text-line-height:\n * user-large-name-text-font-size:\n * user-large-name-text-line-height:\n * user-large-title-text-font-size:\n * user-large-title-text-line-height:\n * user-giant-height:\n * user-giant-width:\n * user-giant-initials-text-font-size:\n * user-giant-initials-text-line-height:\n * user-giant-name-text-font-size:\n * user-giant-name-text-line-height:\n * user-giant-title-text-font-size:\n * user-giant-title-text-line-height:\n */\n@Component({\n    selector: 'nb-user',\n    styleUrls: ['./user.component.scss'],\n    templateUrl: './user.component.html',\n    standalone: false\n})\nexport class NbUserComponent {\n\n  imageBackgroundStyle: SafeStyle;\n\n  /**\n   * Specifies a name to be shown on the right of a user picture\n   * @type string\n   */\n  @Input() name: string = 'Anonymous';\n\n  /**\n   * Specifies a title to be shown under the **name**\n   * @type string\n   */\n  @Input() title: string;\n\n  /**\n   * Absolute path to a user picture or base64 image.\n   * User name initials will be shown if no picture specified (JD for John Doe).\n   * @type string\n   */\n  @Input()\n  set picture(value: string) {\n    this.imageBackgroundStyle = value ? this.domSanitizer.bypassSecurityTrustStyle(`url(${value})`) : null;\n  }\n\n  /**\n   * Color of the area shown when no picture specified\n   * @type string\n   */\n  @Input() color: string;\n\n  /**\n   * Size of the component.\n   * Possible values: `tiny`, `small`, `medium` (default), `large`, 'giant'.\n   */\n  @Input() size: NbComponentSize = 'medium';\n\n  /**\n   * Shape of the picture box.\n   * Possible values: `rectangle`, `semi-round`, `round`.\n   */\n  @Input() shape: NbComponentShape = 'round';\n\n  /**\n   * Whether to show a user name or not\n   */\n  @Input()\n  get showName(): boolean {\n    return this._showName;\n  }\n  set showName(val: boolean) {\n    this._showName = convertToBoolProperty(val);\n  }\n  private _showName: boolean = true;\n  static ngAcceptInputType_showName: NbBooleanInput;\n\n  /**\n   * Whether to show a user title or not\n   * @type boolean\n   */\n  @Input()\n  get showTitle(): boolean {\n    return this._showTitle;\n  }\n  set showTitle(val: boolean) {\n    this._showTitle = convertToBoolProperty(val);\n  }\n  private _showTitle: boolean = true;\n  static ngAcceptInputType_showTitle: NbBooleanInput;\n\n  /**\n   * Whether to show a user initials (if no picture specified) or not\n   * @type boolean\n   */\n  @Input()\n  get showInitials(): boolean {\n    return this._showInitials;\n  }\n  set showInitials(val: boolean) {\n    this._showInitials = convertToBoolProperty(val);\n  }\n  private _showInitials: boolean = true;\n  static ngAcceptInputType_showInitials: NbBooleanInput;\n\n  /**\n   * Whether to show only a picture or also show the name and title\n   * @type boolean\n   */\n  @Input()\n  get onlyPicture(): boolean {\n    return !this.showName && !this.showTitle;\n  }\n  set onlyPicture(val: boolean) {\n    this.showName = this.showTitle = !convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_onlyPicture: NbBooleanInput;\n\n  /**\n   * Badge text to display\n   * @type string\n   */\n  @Input() badgeText: string;\n\n  /**\n   * Badge status (adds specific styles):\n   * `primary`, `info`, `success`, `warning`, `danger`\n   * @param {string} val\n   */\n  @Input() badgeStatus: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Badge position.\n   * Can be set to any class or to one of predefined positions:\n   * 'top left', 'top right', 'bottom left', 'bottom right',\n   * 'top start', 'top end', 'bottom start', 'bottom end'\n   * @type string\n   */\n  @Input() badgePosition: NbBadgePosition;\n\n  @HostBinding('class.size-tiny')\n  get tiny(): boolean {\n    return this.size === 'tiny';\n  }\n\n  @HostBinding('class.size-small')\n  get small(): boolean {\n    return this.size === 'small';\n  }\n\n  @HostBinding('class.size-medium')\n  get medium(): boolean {\n    return this.size === 'medium';\n  }\n\n  @HostBinding('class.size-large')\n  get large(): boolean {\n    return this.size === 'large';\n  }\n\n  @HostBinding('class.size-giant')\n  get giant(): boolean {\n    return this.size === 'giant';\n  }\n\n  @HostBinding('class.shape-rectangle')\n  get rectangle(): boolean {\n    return this.shape === 'rectangle';\n  }\n\n  @HostBinding('class.shape-semi-round')\n  get semiRound(): boolean {\n    return this.shape === 'semi-round';\n  }\n\n  @HostBinding('class.shape-round')\n  get round(): boolean {\n    return this.shape === 'round';\n  }\n\n  constructor(private domSanitizer: DomSanitizer) { }\n\n  getInitials(): string {\n    if (this.name) {\n      const names = this.name.split(' ');\n\n      return names.map(n => n.charAt(0)).splice(0, 2).join('').toUpperCase();\n    }\n\n    return '';\n  }\n}\n","<div class=\"user-container\">\n  <div *ngIf=\"imageBackgroundStyle\" class=\"user-picture image\" [style.background-image]=\"imageBackgroundStyle\">\n    <nb-badge *ngIf=\"badgeText\" [text]=\"badgeText\" [status]=\"badgeStatus\" [position]=\"badgePosition\"></nb-badge>\n  </div>\n  <div *ngIf=\"!imageBackgroundStyle\" class=\"user-picture initials\" [style.background-color]=\"color\">\n    <ng-container *ngIf=\"showInitials\">\n      {{ getInitials() }}\n    </ng-container>\n    <nb-badge *ngIf=\"badgeText\" [text]=\"badgeText\" [status]=\"badgeStatus\" [position]=\"badgePosition\"></nb-badge>\n  </div>\n\n  <div class=\"info-container\">\n    <div *ngIf=\"showName && name\" class=\"user-name\">{{ name }}</div>\n    <div *ngIf=\"showTitle && title\" class=\"user-title\">{{ title }}</div>\n  </div>\n</div>\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\n\nimport {\n  NbUserComponent,\n} from './user.component';\nimport { NbBadgeModule } from '../badge/badge.module';\n\nconst NB_USER_COMPONENTS = [\n  NbUserComponent,\n];\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n    NbBadgeModule,\n  ],\n  declarations: [\n    ...NB_USER_COMPONENTS,\n  ],\n  exports: [\n    ...NB_USER_COMPONENTS,\n  ],\n})\nexport class NbUserModule { }\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, HostBinding, Input } from '@angular/core';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbBadgePosition } from '../badge/badge.component';\nimport { NbIconConfig } from '../icon/icon.component';\n\n/**\n * Action item, display a link with an icon, or any other content provided instead.\n */\n@Component({\n    selector: 'nb-action',\n    styleUrls: ['./action.component.scss'],\n    template: `\n    <ng-container *ngIf=\"icon; else projectedContent\">\n      <a class=\"icon-container\"\n         [routerLink]=\"link\"\n         [title]=\"title\"\n         *ngIf=\"link\">\n        <nb-icon [config]=\"icon\"></nb-icon>\n        <ng-container [ngTemplateOutlet]=\"badgeTemplate\"></ng-container>\n      </a>\n      <a class=\"icon-container\"\n         [href]=\"href\"\n         [title]=\"title\"\n         *ngIf=\"href && !link\">\n        <nb-icon [config]=\"icon\"></nb-icon>\n        <ng-container [ngTemplateOutlet]=\"badgeTemplate\"></ng-container>\n      </a>\n      <a class=\"icon-container\"\n         href=\"#\"\n         [title]=\"title\"\n         *ngIf=\"!href && !link\"\n         (click)=\"$event.preventDefault()\">\n        <nb-icon [config]=\"icon\"></nb-icon>\n        <ng-container [ngTemplateOutlet]=\"badgeTemplate\"></ng-container>\n      </a>\n    </ng-container>\n\n    <ng-template #projectedContent>\n      <ng-content></ng-content>\n      <ng-container [ngTemplateOutlet]=\"badgeTemplate\"></ng-container>\n    </ng-template>\n    <ng-template #badgeTemplate>\n      <nb-badge *ngIf=\"badgeText || badgeDot\"\n                [text]=\"badgeText\"\n                [dotMode]=\"badgeDot\"\n                [status]=\"badgeStatus\"\n                [position]=\"badgePosition\">\n      </nb-badge>\n    </ng-template>\n  `,\n    standalone: false\n})\nexport class NbActionComponent {\n\n  /**\n   * Router link to use\n   * @type string\n   */\n  @Input() link: string;\n\n  /**\n   * Regular HREF link\n   * @type: string\n   */\n  @Input() href: string;\n\n  /**\n   * Optional title for mouseover\n   * @type string\n   */\n  @Input() title: string = '';\n\n  /**\n   * Icon name or config object\n   * @type {string | NbIconConfig}\n   */\n  @Input() icon: string | NbIconConfig;\n\n  /**\n   * Visually disables the item\n   * @type boolean\n   */\n  @Input()\n  @HostBinding('class.disabled')\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = convertToBoolProperty(value);\n  }\n  protected _disabled: boolean = false;\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  /**\n   * Use badge dot mode\n   * @type boolean\n   */\n  @Input()\n  get badgeDot(): boolean {\n    return this._badgeDot;\n  }\n  set badgeDot(value: boolean) {\n    this._badgeDot = convertToBoolProperty(value);\n  }\n  protected _badgeDot: boolean;\n  static ngAcceptInputType_badgeDot: NbBooleanInput;\n\n  /**\n   * Badge text to display\n   * @type string\n   */\n  @Input() badgeText: string;\n\n  /**\n   * Badge status (adds specific styles):\n   * 'basic', 'primary', 'info', 'success', 'warning', 'danger', 'control'\n   * @param {string} val\n   */\n  @Input() badgeStatus: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Badge position.\n   * Can be set to any class or to one of predefined positions:\n   * 'top left', 'top right', 'bottom left', 'bottom right',\n   * 'top start', 'top end', 'bottom start', 'bottom end'\n   * @type string\n   */\n  @Input() badgePosition: NbBadgePosition;\n}\n\n/**\n * Shows a horizontal list of actions, available in multiple sizes.\n * Aligns items vertically.\n *\n * @stacked-example(Showcase, action/action-showcase.component)\n *\n * Basic actions setup:\n * ```html\n * <nb-actions size=\"small\">\n *   <nb-action icon=\"nb-search\"></nb-action>\n *   <nb-action icon=\"nb-power-circled\"></nb-action>\n *   <nb-action icon=\"nb-person\"></nb-action>\n * </nb-actions>\n * ```\n * ### Installation\n *\n * Import `NbActionsModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbActionsModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Multiple sizes example:\n * @stacked-example(Multiple Sizes, action/action-sizes.component)\n *\n * It is also possible to specify a `badge` value:\n *\n * @stacked-example(Action Badge, action/action-badge.component)\n *\n * and we can set it to full a width of a parent component\n * @stacked-example(Full Width, action/action-width.component)\n *\n * Action dot mode\n * @stacked-example(Action badge in dot mode, action/action-dot-mode.component)\n *\n * @styles\n *\n * actions-background-color:\n * actions-divider-color:\n * actions-divider-style:\n * actions-divider-width:\n * actions-icon-color:\n * actions-text-color:\n * actions-text-font-family:\n * actions-text-font-weight:\n * actions-text-line-height:\n * actions-disabled-icon-color:\n * actions-disabled-text-color:\n * actions-tiny-height:\n * actions-tiny-icon-height:\n * actions-tiny-padding:\n * actions-tiny-text-font-size:\n * actions-small-height:\n * actions-small-icon-height:\n * actions-small-padding:\n * actions-small-text-font-size:\n * actions-medium-height:\n * actions-medium-icon-height:\n * actions-medium-padding:\n * actions-medium-text-font-size:\n * actions-large-height:\n * actions-large-icon-height:\n * actions-large-padding:\n * actions-large-text-font-size:\n * actions-giant-height:\n * actions-giant-icon-height:\n * actions-giant-padding:\n * actions-giant-text-font-size:\n */\n@Component({\n    selector: 'nb-actions',\n    styleUrls: ['./actions.component.scss'],\n    template: `\n    <ng-content select=\"nb-action\"></ng-content>\n  `,\n    standalone: false\n})\nexport class NbActionsComponent {\n\n  /**\n   * Size of the component: 'tiny', 'small' (default), 'medium', 'large', 'giant'\n   */\n  @Input()\n  get size(): NbComponentSize {\n    return this._size;\n  }\n  set size(value: NbComponentSize) {\n    this._size = value;\n  }\n  protected _size: NbComponentSize = 'small';\n\n  /**\n   * Component will fill full width of the container\n   */\n  @Input()\n  @HostBinding('class.full-width')\n  get fullWidth(): boolean {\n    return this._fullWidth;\n  }\n  set fullWidth(value: boolean) {\n    this._fullWidth = convertToBoolProperty(value);\n  }\n  protected _fullWidth: boolean = false;\n  static ngAcceptInputType_fullWidth: NbBooleanInput;\n\n  @HostBinding('class.size-tiny')\n  get tiny(): boolean {\n    return this.size === 'tiny';\n  }\n\n  @HostBinding('class.size-small')\n  get small(): boolean {\n    return this.size === 'small';\n  }\n\n  @HostBinding('class.size-medium')\n  get medium(): boolean {\n    return this.size === 'medium';\n  }\n\n  @HostBinding('class.size-large')\n  get large(): boolean {\n    return this.size === 'large';\n  }\n\n  @HostBinding('class.size-giant')\n  get giant(): boolean {\n    return this.size === 'giant';\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\n\nimport { NbActionComponent, NbActionsComponent } from './actions.component';\n\nimport { NbBadgeModule } from '../badge/badge.module';\nimport { NbIconModule } from '../icon/icon.module';\n\nconst NB_ACTIONS_COMPONENTS = [\n  NbActionComponent,\n  NbActionsComponent,\n];\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n    NbBadgeModule,\n    NbIconModule,\n  ],\n  declarations: [\n    ...NB_ACTIONS_COMPONENTS,\n  ],\n  exports: [\n    ...NB_ACTIONS_COMPONENTS,\n  ],\n})\nexport class NbActionsModule { }\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\nimport { share } from 'rxjs/operators';\n\n/**\n * Search component service, connects your code to a page-level search component.\n */\n@Injectable()\nexport class NbSearchService {\n  private searchSubmittings$ = new Subject<{ term: string, tag?: string }>();\n  private searchActivations$ = new Subject<{ searchType: string, tag?: string }>();\n  private searchDeactivations$ = new Subject<{ searchType: string, tag?: string }>();\n  private searchInput$ = new Subject<{ term: string, tag?: string }>();\n\n  /***\n   * Activate (open) search component\n   * @param {string} searchType\n   * @param {string} tag\n   */\n  activateSearch(searchType: string, tag?: string) {\n    this.searchActivations$.next({ searchType, tag });\n  }\n\n  /**\n   * Deactibate (close) search component\n   * @param {string} searchType\n   * @param {string} tag\n   */\n  deactivateSearch(searchType: string, tag?: string) {\n    this.searchDeactivations$.next({ searchType, tag });\n  }\n\n  /**\n   * Trigger search submit\n   * @param {string} term\n   * @param {string} tag\n   */\n  submitSearch(term: string, tag?: string) {\n    this.searchSubmittings$.next({ term, tag });\n  }\n\n  /**\n   * Trigger search submit by input event\n   * @param {string} term\n   * @param {string} tag\n   */\n  searchInput(term: string, tag?: string) {\n    this.searchInput$.next({term, tag});\n  }\n\n  /**\n   * Subscribe to 'activate' event\n   * @returns Observable<{searchType: string; tag?: string}>\n   */\n  onSearchActivate(): Observable<{ searchType: string, tag?: string }> {\n    return this.searchActivations$.pipe(share());\n  }\n\n  /**\n   * Subscribe to 'deactivate' event\n   * @returns Observable<{searchType: string; tag?: string}>\n   */\n  onSearchDeactivate(): Observable<{ searchType: string, tag?: string }> {\n    return this.searchDeactivations$.pipe(share());\n  }\n\n  /**\n   * Subscribe to 'submit' event (when submit button clicked)\n   * @returns Observable<{term: string; tag?: string}>\n   */\n  onSearchSubmit(): Observable<{ term: string, tag?: string }> {\n    return this.searchSubmittings$.pipe(share());\n  }\n\n  /**\n   * Subscribe to input event\n   * @returns Observable<{term: string; tag?: string}>\n   */\n  onSearchInput(): Observable<{ term: string, tag?: string }> {\n    return this.searchInput$.pipe(share());\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\n\nimport { of as observableOf, Subject } from 'rxjs';\nimport { filter, delay, takeUntil } from 'rxjs/operators';\n\nimport { NbSearchService } from './search.service';\nimport { NbThemeService } from '../../services/theme.service';\nimport { NbOverlayService } from '../cdk/overlay/overlay-service';\nimport { NbOverlayRef, NbPortalDirective } from '../cdk/overlay/mapping';\n\n/**\n * search-field-component is used under the hood by nb-search component\n * can't be used itself\n */\n@Component({\n    selector: 'nb-search-field',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    styleUrls: [\n        'styles/search.component.modal-zoomin.scss',\n        'styles/search.component.layout-rotate.scss',\n        'styles/search.component.modal-move.scss',\n        'styles/search.component.curtain.scss',\n        'styles/search.component.column-curtain.scss',\n        'styles/search.component.modal-drop.scss',\n        'styles/search.component.modal-half.scss',\n    ],\n    template: `\n    <div class=\"search\" (keyup.esc)=\"emitClose()\">\n      <button (click)=\"emitClose()\" nbButton ghost class=\"close-button\">\n        <nb-icon icon=\"close-outline\" pack=\"nebular-essentials\"></nb-icon>\n      </button>\n      <div class=\"form-wrapper\">\n        <form class=\"form\" (keyup.enter)=\"submitSearch(searchInput.value)\">\n          <div class=\"form-content\">\n            <input class=\"search-input\"\n                   #searchInput\n                   (input)=\"emitSearchInput(searchInput.value)\"\n                   autocomplete=\"off\"\n                   [attr.placeholder]=\"placeholder\"\n                   tabindex=\"-1\"\n                   (blur)=\"focusInput()\"/>\n          </div>\n          <span class=\"info\">{{ hint }}</span>\n        </form>\n      </div>\n    </div>\n  `,\n    standalone: false\n})\nexport class NbSearchFieldComponent implements OnChanges, AfterViewInit {\n\n  static readonly TYPE_MODAL_ZOOMIN = 'modal-zoomin';\n  static readonly TYPE_ROTATE_LAYOUT = 'rotate-layout';\n  static readonly TYPE_MODAL_MOVE = 'modal-move';\n  static readonly TYPE_CURTAIN = 'curtain';\n  static readonly TYPE_COLUMN_CURTAIN = 'column-curtain';\n  static readonly TYPE_MODAL_DROP = 'modal-drop';\n  static readonly TYPE_MODAL_HALF = 'modal-half';\n\n  @Input() type: string;\n  @Input() placeholder: string;\n  @Input() hint: string;\n  @Input() show = false;\n\n  @Output() close = new EventEmitter();\n  @Output() search = new EventEmitter();\n  @Output() searchInput = new EventEmitter();\n\n  @ViewChild('searchInput') inputElement: ElementRef<HTMLInputElement>;\n\n  @HostBinding('class.show')\n  get showClass() {\n    return this.show;\n  }\n\n  @HostBinding('class.modal-zoomin')\n  get modalZoomin() {\n    return this.type === NbSearchFieldComponent.TYPE_MODAL_ZOOMIN;\n  }\n\n  @HostBinding('class.rotate-layout')\n  get rotateLayout() {\n    return this.type === NbSearchFieldComponent.TYPE_ROTATE_LAYOUT;\n  }\n\n  @HostBinding('class.modal-move')\n  get modalMove() {\n    return this.type === NbSearchFieldComponent.TYPE_MODAL_MOVE;\n  }\n\n  @HostBinding('class.curtain')\n  get curtain() {\n    return this.type === NbSearchFieldComponent.TYPE_CURTAIN;\n  }\n\n  @HostBinding('class.column-curtain')\n  get columnCurtain() {\n    return this.type === NbSearchFieldComponent.TYPE_COLUMN_CURTAIN;\n  }\n\n  @HostBinding('class.modal-drop')\n  get modalDrop() {\n    return this.type === NbSearchFieldComponent.TYPE_MODAL_DROP;\n  }\n\n  @HostBinding('class.modal-half')\n  get modalHalf() {\n    return this.type === NbSearchFieldComponent.TYPE_MODAL_HALF;\n  }\n\n  ngOnChanges({ show }: SimpleChanges) {\n    const becameHidden = !show.isFirstChange() && show.currentValue === false;\n    if (becameHidden && this.inputElement) {\n      this.inputElement.nativeElement.value = '';\n    }\n\n    this.focusInput();\n  }\n\n  ngAfterViewInit() {\n    this.focusInput();\n  }\n\n  emitClose() {\n    this.close.emit();\n  }\n\n  submitSearch(term) {\n    if (term) {\n      this.search.emit(term);\n    }\n  }\n\n  emitSearchInput(term: string) {\n    this.searchInput.emit(term);\n  }\n\n  focusInput() {\n    if (this.show && this.inputElement) {\n      this.inputElement.nativeElement.focus();\n    }\n  }\n}\n\nexport type NbSearchType = 'modal-zoomin' | 'rotate-layout' | 'modal-move' |\n  'curtain' | 'column-curtain' | 'modal-drop' | 'modal-half';\n\n/**\n * Beautiful full-page search control.\n *\n * @stacked-example(Showcase, search/search-showcase.component)\n *\n * Basic setup:\n *\n * ```ts\n *  <nb-search type=\"rotate-layout\"></nb-search>\n * ```\n * ### Installation\n *\n * Import `NbSearchModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbSearchModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Several animation types are available:\n * modal-zoomin, rotate-layout, modal-move, curtain, column-curtain, modal-drop, modal-half\n *\n * It is also possible to handle search event using `NbSearchService`:\n *\n * @stacked-example(Search Event, search/search-event.component)\n *\n * @styles\n *\n * search-background-color:\n * search-divider-color:\n * search-divider-style:\n * search-divider-width:\n * search-extra-background-color:\n * search-text-color:\n * search-text-font-family:\n * search-text-font-size:\n * search-text-font-weight:\n * search-text-line-height:\n * search-placeholder-text-color:\n * search-info-text-color:\n * search-info-text-font-family:\n * search-info-text-font-size:\n * search-info-text-font-weight:\n * search-info-text-line-height:\n */\n@Component({\n    selector: 'nb-search',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    styleUrls: ['styles/search.component.scss'],\n    template: `\n    <button #searchButton class=\"start-search\" (click)=\"emitActivate()\" nbButton ghost>\n      <nb-icon icon=\"search-outline\" pack=\"nebular-essentials\"></nb-icon>\n    </button>\n    <nb-search-field\n      *nbPortal\n      [show]=\"showSearchField\"\n      [type]=\"type\"\n      [placeholder]=\"placeholder\"\n      [hint]=\"hint\"\n      (search)=\"search($event)\"\n      (searchInput)=\"emitInput($event)\"\n      (close)=\"emitDeactivate()\">\n    </nb-search-field>\n  `,\n    standalone: false\n})\nexport class NbSearchComponent implements OnInit, OnDestroy {\n\n  private destroy$ = new Subject<void>();\n  private overlayRef: NbOverlayRef;\n  showSearchField = false;\n\n  /**\n   * Tags a search with some ID, can be later used in the search service\n   * to determine which search component triggered the action, if multiple searches exist on the page.\n   *\n   * @type {string}\n   */\n  @Input() tag: string;\n\n  /**\n   * Search input placeholder\n   * @type {string}\n   */\n  @Input() placeholder: string = 'Search...';\n\n  /**\n   * Hint showing under the input field to improve user experience\n   *\n   * @type {string}\n   */\n  @Input() hint: string = 'Hit enter to search';\n\n  /**\n   * Search design type, available types are\n   * modal-zoomin, rotate-layout, modal-move, curtain, column-curtain, modal-drop, modal-half\n   * @type {string}\n   */\n  @Input() type: NbSearchType;\n\n  @ViewChild(NbPortalDirective) searchFieldPortal: NbPortalDirective;\n  @ViewChild('searchButton', { read: ElementRef }) searchButton: ElementRef<HTMLElement>;\n\n  constructor(\n    private searchService: NbSearchService,\n    private themeService: NbThemeService,\n    private router: Router,\n    private overlayService: NbOverlayService,\n    private changeDetector: ChangeDetectorRef,\n  ) {}\n\n  ngOnInit() {\n    this.router.events\n      .pipe(\n        filter(event => event instanceof NavigationEnd),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.hideSearch());\n\n    this.searchService.onSearchActivate()\n      .pipe(\n        filter(data => !this.tag || data.tag === this.tag),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.openSearch());\n\n    this.searchService.onSearchDeactivate()\n      .pipe(\n        filter(data => !this.tag || data.tag === this.tag),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.hideSearch());\n  }\n\n  ngOnDestroy() {\n    if (this.overlayRef && this.overlayRef.hasAttached()) {\n      this.removeLayoutClasses();\n      this.overlayRef.detach();\n    }\n\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  openSearch() {\n    if (!this.overlayRef) {\n      this.overlayRef = this.overlayService.create();\n      this.overlayRef.attach(this.searchFieldPortal);\n    }\n\n    this.themeService.appendLayoutClass(this.type);\n    observableOf(null).pipe(delay(0)).subscribe(() => {\n      this.themeService.appendLayoutClass('with-search');\n      this.showSearchField = true;\n      this.changeDetector.detectChanges();\n    });\n  }\n\n  hideSearch() {\n    this.removeLayoutClasses();\n    this.showSearchField = false;\n    this.changeDetector.detectChanges();\n    this.searchButton.nativeElement.focus();\n  }\n\n  search(term) {\n    this.searchService.submitSearch(term, this.tag);\n    this.hideSearch();\n  }\n\n  emitInput(term: string) {\n    this.searchService.searchInput(term, this.tag);\n  }\n\n  emitActivate() {\n    this.searchService.activateSearch(this.type, this.tag);\n  }\n\n  emitDeactivate() {\n    this.searchService.deactivateSearch(this.type, this.tag);\n  }\n\n  private removeLayoutClasses() {\n    this.themeService.removeLayoutClass('with-search');\n    observableOf(null).pipe(delay(500)).subscribe(() => {\n      this.themeService.removeLayoutClass(this.type);\n    });\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbIconModule } from '../icon/icon.module';\nimport { NbButtonModule } from '../button/button.module';\n\nimport { NbSearchComponent, NbSearchFieldComponent } from './search.component';\nimport { NbSearchService } from './search.service';\n\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n    NbOverlayModule,\n    NbIconModule,\n    NbButtonModule,\n  ],\n  declarations: [\n    NbSearchComponent,\n    NbSearchFieldComponent,\n  ],\n  exports: [\n    NbSearchComponent,\n    NbSearchFieldComponent,\n  ],\n  providers: [\n    NbSearchService,\n  ],\n})\nexport class NbSearchModule {\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  Input,\n  HostBinding,\n  forwardRef,\n  ChangeDetectorRef,\n  Output,\n  EventEmitter,\n  ChangeDetectionStrategy,\n  Renderer2,\n  ElementRef,\n  AfterViewInit,\n  NgZone,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\n\n/**\n * Styled checkbox component\n *\n * @stacked-example(Showcase, checkbox/checkbox-showcase.component)\n *\n * ### Installation\n *\n * Import `NbCheckboxComponent` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbCheckboxModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Checkbox is available in multiple colors using `status` property:\n * @stacked-example(Colored Checkboxes, checkbox/checkbox-status.component)\n *\n * Indeterminate state is also supported:\n * @stacked-example(Indeterminate Checkbox, checkbox/checkbox-indeterminate.component)\n *\n * Checkbox can be disabled via `disabled` attribute.\n * @stacked-example(Disabled Checkbox, checkbox/checkbox-disabled.component)\n *\n * @styles\n *\n * checkbox-height:\n * checkbox-width:\n * checkbox-border-style:\n * checkbox-border-width:\n * checkbox-border-radius:\n * checkbox-outline-width:\n * checkbox-outline-color:\n * checkbox-text-font-family:\n * checkbox-text-font-size:\n * checkbox-text-font-weight:\n * checkbox-text-line-height:\n * checkbox-text-space:\n * checkbox-padding:\n * checkbox-focus-inset-shadow-length:\n * checkbox-basic-text-color:\n * checkbox-basic-background-color:\n * checkbox-basic-border-color:\n * checkbox-basic-checked-background-color:\n * checkbox-basic-checked-border-color:\n * checkbox-basic-checked-checkmark-color:\n * checkbox-basic-indeterminate-background-color:\n * checkbox-basic-indeterminate-border-color:\n * checkbox-basic-indeterminate-checkmark-color:\n * checkbox-basic-focus-background-color:\n * checkbox-basic-focus-border-color:\n * checkbox-basic-focus-checked-background-color:\n * checkbox-basic-focus-checked-border-color:\n * checkbox-basic-hover-background-color:\n * checkbox-basic-hover-border-color:\n * checkbox-basic-hover-checked-background-color:\n * checkbox-basic-hover-checked-border-color:\n * checkbox-basic-active-background-color:\n * checkbox-basic-active-border-color:\n * checkbox-basic-active-checked-background-color:\n * checkbox-basic-active-checked-border-color:\n * checkbox-basic-disabled-background-color:\n * checkbox-basic-disabled-border-color:\n * checkbox-basic-disabled-checkmark-color:\n * checkbox-basic-disabled-text-color:\n * checkbox-basic-disabled-checked-background-color:\n * checkbox-primary-text-color:\n * checkbox-primary-background-color:\n * checkbox-primary-border-color:\n * checkbox-primary-checked-background-color:\n * checkbox-primary-checked-border-color:\n * checkbox-primary-checked-checkmark-color:\n * checkbox-primary-indeterminate-background-color:\n * checkbox-primary-indeterminate-border-color:\n * checkbox-primary-indeterminate-checkmark-color:\n * checkbox-primary-focus-background-color:\n * checkbox-primary-focus-border-color:\n * checkbox-primary-focus-checked-background-color:\n * checkbox-primary-focus-checked-border-color:\n * checkbox-primary-hover-background-color:\n * checkbox-primary-hover-border-color:\n * checkbox-primary-hover-checked-background-color:\n * checkbox-primary-hover-checked-border-color:\n * checkbox-primary-active-background-color:\n * checkbox-primary-active-border-color:\n * checkbox-primary-active-checked-background-color:\n * checkbox-primary-active-checked-border-color:\n * checkbox-primary-disabled-background-color:\n * checkbox-primary-disabled-border-color:\n * checkbox-primary-disabled-checkmark-color:\n * checkbox-primary-disabled-text-color:\n * checkbox-primary-disabled-checked-background-color:\n * checkbox-success-text-color:\n * checkbox-success-background-color:\n * checkbox-success-border-color:\n * checkbox-success-checked-background-color:\n * checkbox-success-checked-border-color:\n * checkbox-success-checked-checkmark-color:\n * checkbox-success-indeterminate-background-color:\n * checkbox-success-indeterminate-border-color:\n * checkbox-success-indeterminate-checkmark-color:\n * checkbox-success-focus-background-color:\n * checkbox-success-focus-border-color:\n * checkbox-success-focus-checked-background-color:\n * checkbox-success-focus-checked-border-color:\n * checkbox-success-hover-background-color:\n * checkbox-success-hover-border-color:\n * checkbox-success-hover-checked-background-color:\n * checkbox-success-hover-checked-border-color:\n * checkbox-success-active-background-color:\n * checkbox-success-active-border-color:\n * checkbox-success-active-checked-background-color:\n * checkbox-success-active-checked-border-color:\n * checkbox-success-disabled-background-color:\n * checkbox-success-disabled-border-color:\n * checkbox-success-disabled-checkmark-color:\n * checkbox-success-disabled-text-color:\n * checkbox-success-disabled-checked-background-color:\n * checkbox-info-text-color:\n * checkbox-info-background-color:\n * checkbox-info-border-color:\n * checkbox-info-checked-background-color:\n * checkbox-info-checked-border-color:\n * checkbox-info-checked-checkmark-color:\n * checkbox-info-indeterminate-background-color:\n * checkbox-info-indeterminate-border-color:\n * checkbox-info-indeterminate-checkmark-color:\n * checkbox-info-focus-background-color:\n * checkbox-info-focus-border-color:\n * checkbox-info-focus-checked-background-color:\n * checkbox-info-focus-checked-border-color:\n * checkbox-info-hover-background-color:\n * checkbox-info-hover-border-color:\n * checkbox-info-hover-checked-background-color:\n * checkbox-info-hover-checked-border-color:\n * checkbox-info-active-background-color:\n * checkbox-info-active-border-color:\n * checkbox-info-active-checked-background-color:\n * checkbox-info-active-checked-border-color:\n * checkbox-info-disabled-background-color:\n * checkbox-info-disabled-border-color:\n * checkbox-info-disabled-checkmark-color:\n * checkbox-info-disabled-text-color:\n * checkbox-info-disabled-checked-background-color:\n * checkbox-warning-text-color:\n * checkbox-warning-background-color:\n * checkbox-warning-border-color:\n * checkbox-warning-checked-background-color:\n * checkbox-warning-checked-border-color:\n * checkbox-warning-checked-checkmark-color:\n * checkbox-warning-indeterminate-background-color:\n * checkbox-warning-indeterminate-border-color:\n * checkbox-warning-indeterminate-checkmark-color:\n * checkbox-warning-focus-background-color:\n * checkbox-warning-focus-border-color:\n * checkbox-warning-focus-checked-background-color:\n * checkbox-warning-focus-checked-border-color:\n * checkbox-warning-hover-background-color:\n * checkbox-warning-hover-border-color:\n * checkbox-warning-hover-checked-background-color:\n * checkbox-warning-hover-checked-border-color:\n * checkbox-warning-active-background-color:\n * checkbox-warning-active-border-color:\n * checkbox-warning-active-checked-background-color:\n * checkbox-warning-active-checked-border-color:\n * checkbox-warning-disabled-background-color:\n * checkbox-warning-disabled-border-color:\n * checkbox-warning-disabled-checkmark-color:\n * checkbox-warning-disabled-text-color:\n * checkbox-warning-disabled-checked-background-color:\n * checkbox-danger-text-color:\n * checkbox-danger-background-color:\n * checkbox-danger-border-color:\n * checkbox-danger-checked-background-color:\n * checkbox-danger-checked-border-color:\n * checkbox-danger-checked-checkmark-color:\n * checkbox-danger-indeterminate-background-color:\n * checkbox-danger-indeterminate-border-color:\n * checkbox-danger-indeterminate-checkmark-color:\n * checkbox-danger-focus-background-color:\n * checkbox-danger-focus-border-color:\n * checkbox-danger-focus-checked-background-color:\n * checkbox-danger-focus-checked-border-color:\n * checkbox-danger-hover-background-color:\n * checkbox-danger-hover-border-color:\n * checkbox-danger-hover-checked-background-color:\n * checkbox-danger-hover-checked-border-color:\n * checkbox-danger-active-background-color:\n * checkbox-danger-active-border-color:\n * checkbox-danger-active-checked-background-color:\n * checkbox-danger-active-checked-border-color:\n * checkbox-danger-disabled-background-color:\n * checkbox-danger-disabled-border-color:\n * checkbox-danger-disabled-checkmark-color:\n * checkbox-danger-disabled-text-color:\n * checkbox-danger-disabled-checked-background-color:\n * checkbox-control-text-color:\n * checkbox-control-background-color:\n * checkbox-control-border-color:\n * checkbox-control-checked-background-color:\n * checkbox-control-checked-border-color:\n * checkbox-control-checked-checkmark-color:\n * checkbox-control-indeterminate-background-color:\n * checkbox-control-indeterminate-border-color:\n * checkbox-control-indeterminate-checkmark-color:\n * checkbox-control-focus-background-color:\n * checkbox-control-focus-border-color:\n * checkbox-control-focus-checked-background-color:\n * checkbox-control-focus-checked-border-color:\n * checkbox-control-hover-background-color:\n * checkbox-control-hover-border-color:\n * checkbox-control-hover-checked-background-color:\n * checkbox-control-hover-checked-border-color:\n * checkbox-control-active-background-color:\n * checkbox-control-active-border-color:\n * checkbox-control-active-checked-background-color:\n * checkbox-control-active-checked-border-color:\n * checkbox-control-disabled-background-color:\n * checkbox-control-disabled-border-color:\n * checkbox-control-disabled-checkmark-color:\n * checkbox-control-disabled-text-color:\n * checkbox-control-disabled-checked-background-color:\n */\n@Component({\n    selector: 'nb-checkbox',\n    template: `\n    <label class=\"label\">\n      <input type=\"checkbox\" class=\"native-input visually-hidden\"\n             [disabled]=\"disabled\"\n             [checked]=\"checked\"\n             (change)=\"updateValueAndIndeterminate($event)\"\n             (blur)=\"setTouched()\"\n             (click)=\"$event.stopPropagation()\"\n             [indeterminate]=\"indeterminate\">\n      <span [class.indeterminate]=\"indeterminate\" [class.checked]=\"checked\" class=\"custom-checkbox\">\n        <nb-icon *ngIf=\"indeterminate\" icon=\"minus-bold-outline\" pack=\"nebular-essentials\" class=\"custom-checkbox-icon\"></nb-icon>\n        <nb-icon *ngIf=\"checked && !indeterminate\" icon=\"checkmark-bold-outline\" pack=\"nebular-essentials\" class=\"custom-checkbox-icon\"></nb-icon>\n      </span>\n      <span class=\"text\">\n        <ng-content></ng-content>\n      </span>\n    </label>\n  `,\n    styleUrls: [`./checkbox.component.scss`],\n    providers: [{\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => NbCheckboxComponent),\n            multi: true,\n        }],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCheckboxComponent implements AfterViewInit, ControlValueAccessor {\n\n  onChange: any = () => { };\n  onTouched: any = () => { };\n\n  @Input()\n  get checked(): boolean {\n    return this._checked;\n  }\n  set checked(value: boolean) {\n    this._checked = convertToBoolProperty(value);\n  }\n  private _checked: boolean = false;\n  static ngAcceptInputType_checked: NbBooleanInput;\n\n  /**\n   * Controls input disabled state\n   */\n  @Input()\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = convertToBoolProperty(value);\n  }\n  private _disabled: boolean = false;\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  /**\n   * Checkbox status.\n   * Possible values are: `basic`, `primary`, `success`, `warning`, `danger`, `info`, `control`.\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Controls checkbox indeterminate state\n   */\n  @Input()\n  get indeterminate(): boolean {\n    return this._indeterminate;\n  }\n  set indeterminate(value: boolean) {\n    this._indeterminate = convertToBoolProperty(value);\n  }\n  private _indeterminate: boolean = false;\n  static ngAcceptInputType_indeterminate: NbBooleanInput;\n\n  /**\n   * Output when checked state is changed by a user\n   * @type EventEmitter<boolean>\n   */\n  @Output() checkedChange = new EventEmitter<boolean>();\n\n  @HostBinding('class.status-primary')\n  get primary() {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-success')\n  get success() {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning() {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger() {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-info')\n  get info() {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic() {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control() {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  constructor(\n    private changeDetector: ChangeDetectorRef,\n    private renderer: Renderer2,\n    private hostElement: ElementRef<HTMLElement>,\n    private zone: NgZone,\n    private statusService: NbStatusService,\n  ) {}\n\n  ngAfterViewInit() {\n    // TODO: #2254\n    this.zone.runOutsideAngular(() => setTimeout(() => {\n      this.renderer.addClass(this.hostElement.nativeElement, 'nb-transition');\n    }));\n  }\n\n  registerOnChange(fn: any) {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any) {\n    this.onTouched = fn;\n  }\n\n  writeValue(val: any) {\n    this._checked = val;\n    this.changeDetector.markForCheck();\n  }\n\n  setDisabledState(val: boolean) {\n    this.disabled = convertToBoolProperty(val);\n    this.changeDetector.markForCheck();\n  }\n\n  setTouched() {\n    this.onTouched();\n  }\n\n  updateValueAndIndeterminate(event: Event): void {\n    const input = (event.target as HTMLInputElement);\n    this.checked = input.checked;\n    this.checkedChange.emit(this.checked);\n    this.onChange(this.checked);\n    this.indeterminate = input.indeterminate;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbIconModule } from '../icon/icon.module';\nimport { NbCheckboxComponent } from './checkbox.component';\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n    NbIconModule,\n  ],\n  declarations: [NbCheckboxComponent],\n  exports: [NbCheckboxComponent],\n})\nexport class NbCheckboxModule { }\n","import { ComponentRef, Injectable, NgZone, Type } from '@angular/core';\nimport { filter, takeUntil, distinctUntilChanged, take } from 'rxjs/operators';\nimport { Subject, BehaviorSubject, Observable, merge } from 'rxjs';\n\nimport { NbAdjustableConnectedPositionStrategy, NbPosition } from '../overlay-position';\n\nimport { NbRenderableContainer } from '../overlay-container';\nimport { createContainer, NbOverlayContent, NbOverlayService, patch } from '../overlay-service';\nimport { NbOverlayRef, NbOverlayContainer, NbOverlayConfig } from '../mapping';\n\nexport interface NbDynamicOverlayController {\n  show();\n  hide();\n  toggle();\n  rebuild();\n}\n\n@Injectable()\nexport class NbDynamicOverlay {\n  protected ref: NbOverlayRef;\n  protected container: ComponentRef<NbRenderableContainer>;\n  protected componentType: Type<NbRenderableContainer>;\n  protected context: Object = {};\n  protected content: NbOverlayContent;\n  protected positionStrategy: NbAdjustableConnectedPositionStrategy;\n  protected overlayConfig: NbOverlayConfig = {};\n  protected lastAppliedPosition: NbPosition;\n  protected disabled = false;\n\n  protected positionStrategyChange$ = new Subject<void>();\n  protected isShown$ = new BehaviorSubject<boolean>(false);\n  protected destroy$ = new Subject<void>();\n  protected overlayDestroy$ = new Subject<NbOverlayRef>();\n\n  get isAttached(): boolean {\n    return this.ref && this.ref.hasAttached();\n  }\n\n  get isShown(): Observable<boolean> {\n    return this.isShown$.pipe(distinctUntilChanged());\n  }\n\n  constructor(\n    protected overlay: NbOverlayService,\n    protected zone: NgZone,\n    protected overlayContainer: NbOverlayContainer,\n  ) {}\n\n  create(\n    componentType: Type<NbRenderableContainer>,\n    content: NbOverlayContent,\n    context: Object,\n    positionStrategy: NbAdjustableConnectedPositionStrategy,\n    overlayConfig: NbOverlayConfig = {},\n    disabled = false,\n  ) {\n    this.setContentAndContext(content, context);\n    this.setComponent(componentType);\n    this.setPositionStrategy(positionStrategy);\n    this.setOverlayConfig(overlayConfig);\n    this.setDisabled(disabled);\n\n    return this;\n  }\n\n  setContent(content: NbOverlayContent) {\n    this.content = content;\n\n    if (this.container) {\n      this.updateContext();\n    }\n    this.updatePosition();\n  }\n\n  setContext(context: Object) {\n    this.context = context;\n\n    if (this.container) {\n      this.updateContext();\n    }\n    this.updatePosition();\n  }\n\n  setContentAndContext(content: NbOverlayContent, context: Object) {\n    this.content = content;\n    this.context = context;\n    if (this.container) {\n      this.updateContext();\n    }\n    this.updatePosition();\n  }\n\n  setComponent(componentType: Type<NbRenderableContainer>) {\n    this.componentType = componentType;\n\n    // in case the component is shown we recreate it and show it back\n    const wasAttached = this.isAttached;\n    this.disposeOverlayRef();\n    if (wasAttached) {\n      this.show();\n    }\n  }\n\n  setPositionStrategy(positionStrategy: NbAdjustableConnectedPositionStrategy) {\n    this.positionStrategyChange$.next();\n\n    this.positionStrategy = positionStrategy;\n\n    this.positionStrategy.positionChange\n      .pipe(\n        filter(() => !!this.container),\n        takeUntil(merge(this.positionStrategyChange$, this.destroy$)),\n      )\n      .subscribe((position: NbPosition) => {\n        this.lastAppliedPosition = position;\n        patch(this.container, { position });\n      });\n\n    if (this.ref) {\n      this.ref.updatePositionStrategy(this.positionStrategy);\n    }\n  }\n\n  setOverlayConfig(overlayConfig: NbOverlayConfig) {\n    this.overlayConfig = overlayConfig;\n\n    const wasAttached = this.isAttached;\n    this.disposeOverlayRef();\n    if (wasAttached) {\n      this.show();\n    }\n  }\n\n  setDisabled(disabled: boolean) {\n    if (disabled && this.isShown$.value) {\n      this.hide();\n    }\n    this.disabled = disabled;\n  }\n\n  show() {\n    if (this.disabled) {\n      return;\n    }\n\n    if (!this.ref) {\n      this.createOverlay();\n    }\n\n    this.renderContainer();\n\n    if (!this.hasOverlayInContainer()) {\n      // Dispose overlay ref as it refers to the old overlay container and create new by calling `show`\n      this.disposeOverlayRef();\n      return this.show();\n    }\n\n    this.isShown$.next(true);\n  }\n\n  hide() {\n    if (!this.ref) {\n      return;\n    }\n\n    this.ref.detach();\n    this.container = null;\n\n    this.isShown$.next(false);\n  }\n\n  toggle() {\n    if (this.isAttached) {\n      this.hide();\n    } else {\n      this.show();\n    }\n  }\n\n  dispose() {\n    this.destroy$.next();\n    this.destroy$.complete();\n    this.hide();\n    this.disposeOverlayRef();\n    this.isShown$.complete();\n    this.positionStrategyChange$.complete();\n    this.overlayDestroy$.complete();\n  }\n\n  getContainer() {\n    return this.container;\n  }\n\n  protected createOverlay() {\n    this.ref = this.overlay.create({\n      positionStrategy: this.positionStrategy,\n      scrollStrategy: this.overlay.scrollStrategies.reposition(),\n      ...this.overlayConfig,\n    });\n    this.updatePositionWhenStable(this.ref);\n  }\n\n  protected renderContainer() {\n    const containerContext = this.createContainerContext();\n    if (!this.container) {\n      this.container = createContainer(this.ref, this.componentType, containerContext);\n    }\n    this.container.instance.renderContent();\n  }\n\n  protected updateContext() {\n    const containerContext = this.createContainerContext();\n    Object.assign(this.container.instance, containerContext);\n    this.container.instance.renderContent();\n    this.container.changeDetectorRef.detectChanges();\n  }\n\n  protected createContainerContext(): Object {\n    return {\n      content: this.content,\n      context: this.context,\n      position: this.lastAppliedPosition,\n    };\n  }\n\n  /**\n   * Dimensions of the container may change after content update. So we listen to zone.stable event to\n   * reposition the container.\n   */\n  protected updatePositionWhenStable(overlay: NbOverlayRef) {\n    const overlayDestroy$ = this.overlayDestroy$.pipe(\n      filter((destroyedOverlay: NbOverlayRef) => destroyedOverlay === overlay),\n    );\n\n    this.zone.onStable.pipe(take(1), takeUntil(merge(this.destroy$, overlayDestroy$))).subscribe(() => this.updatePosition());\n  }\n\n  protected updatePosition() {\n    if (this.ref) {\n      this.ref.updatePosition();\n    }\n  }\n\n  protected hasOverlayInContainer(): boolean {\n    return this.overlayContainer.getContainerElement().contains(this.ref.hostElement);\n  }\n\n  protected disposeOverlayRef() {\n    if (this.ref) {\n      this.ref.dispose();\n      this.overlayDestroy$.next(this.ref);\n      this.ref = null;\n      this.container = null;\n    }\n  }\n}\n","import { ElementRef, Injectable, SimpleChange, Type } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { skip, takeUntil } from 'rxjs/operators';\n\nimport { NbTrigger, NbTriggerStrategy, NbTriggerStrategyBuilderService } from '../overlay-trigger';\nimport {\n  NbAdjustableConnectedPositionStrategy,\n  NbAdjustment,\n  NbPosition,\n  NbPositionBuilderService,\n} from '../overlay-position';\nimport { NbRenderableContainer } from '../overlay-container';\nimport { NbOverlayContent } from '../overlay-service';\nimport { NbDynamicOverlay } from './dynamic-overlay';\nimport { NbOverlayConfig } from '../mapping';\nimport { NbLayoutDirectionService } from '../../../../services/direction.service';\n\nexport class NbDynamicOverlayChange extends SimpleChange {\n  constructor(previousValue: any, currentValue: any, firstChange: boolean = false) {\n    super(previousValue, currentValue, firstChange);\n  }\n\n  isChanged(): boolean {\n    return this.currentValue !== this.previousValue;\n  }\n}\n\n@Injectable()\nexport class NbDynamicOverlayHandler {\n  protected _componentType: Type<NbRenderableContainer>;\n  protected _host: ElementRef;\n  protected _context: Object = {};\n  protected _content: NbOverlayContent;\n  protected _trigger: NbTrigger = NbTrigger.NOOP;\n  protected _disabled: boolean = false;\n  protected _position: NbPosition = NbPosition.TOP;\n  protected _adjustment: NbAdjustment = NbAdjustment.NOOP;\n  protected _offset: number = 15;\n  protected _overlayConfig: NbOverlayConfig = {};\n\n  protected dynamicOverlay: NbDynamicOverlay;\n  protected triggerStrategy: NbTriggerStrategy;\n\n  protected positionStrategy: NbAdjustableConnectedPositionStrategy;\n\n  protected changes: { [key: string]: NbDynamicOverlayChange } = {};\n\n  protected destroy$ = new Subject<void>();\n\n  constructor(\n    private positionBuilder: NbPositionBuilderService,\n    private triggerStrategyBuilder: NbTriggerStrategyBuilderService,\n    private dynamicOverlayService: NbDynamicOverlay,\n    private directionService: NbLayoutDirectionService,\n  ) {}\n\n  host(host: ElementRef) {\n    this.changes.host = new NbDynamicOverlayChange(this._host, host);\n    this._host = host;\n    return this;\n  }\n\n  trigger(trigger: NbTrigger) {\n    this.changes.trigger = new NbDynamicOverlayChange(this._trigger, trigger);\n    this._trigger = trigger;\n    return this;\n  }\n\n  disabled(disabled: boolean) {\n    this.changes.disabled = new NbDynamicOverlayChange(this._disabled, disabled);\n    this._disabled = disabled;\n    return this;\n  }\n\n  position(position: NbPosition) {\n    this.changes.position = new NbDynamicOverlayChange(this._position, position);\n    this._position = position;\n    return this;\n  }\n\n  adjustment(adjustment: NbAdjustment) {\n    this.changes.adjustment = new NbDynamicOverlayChange(this._adjustment, adjustment);\n    this._adjustment = adjustment;\n    return this;\n  }\n\n  componentType(componentType: Type<NbRenderableContainer>) {\n    this.changes.componentType = new NbDynamicOverlayChange(this._componentType, componentType);\n    this._componentType = componentType;\n    return this;\n  }\n\n  content(content: NbOverlayContent) {\n    this.changes.content = new NbDynamicOverlayChange(this._content, content);\n    this._content = content;\n    return this;\n  }\n\n  context(context: {}) {\n    this.changes.context = new NbDynamicOverlayChange(this._context, context);\n    this._context = context;\n    return this;\n  }\n\n  offset(offset: number) {\n    this.changes.offset = new NbDynamicOverlayChange(this._offset, offset);\n    this._offset = offset;\n    return this;\n  }\n\n  overlayConfig(overlayConfig: NbOverlayConfig) {\n    this.changes.overlayConfig = new NbDynamicOverlayChange(this._overlayConfig, overlayConfig);\n    this._overlayConfig = overlayConfig;\n    return this;\n  }\n\n  build() {\n    if (!this._componentType || !this._host) {\n      throw Error(`NbDynamicOverlayHandler: at least 'componentType' and 'host' should be\n      passed before building a dynamic overlay.`);\n    }\n    this.dynamicOverlay = this.dynamicOverlayService.create(\n      this._componentType,\n      this._content,\n      this._context,\n      this.createPositionStrategy(),\n      this._overlayConfig,\n      this._disabled,\n    );\n\n    this.connect();\n    this.clearChanges();\n\n    return this.dynamicOverlay;\n  }\n\n  rebuild() {\n    /**\n     * we should not throw here\n     * as we use rebuilt in lifecycle hooks\n     * which it could be called before the build\n     * so we just ignore this call\n     */\n    if (!this.dynamicOverlay) {\n      return undefined;\n    }\n\n    if (this.isPositionStrategyUpdateRequired()) {\n      this.dynamicOverlay.setPositionStrategy(this.createPositionStrategy());\n    }\n\n    if (this.isTriggerStrategyUpdateRequired()) {\n      this.connect();\n    }\n\n    if (this.isContainerRerenderRequired()) {\n      this.dynamicOverlay.setContentAndContext(this._content, this._context);\n    }\n\n    if (this.isComponentTypeUpdateRequired()) {\n      this.dynamicOverlay.setComponent(this._componentType);\n    }\n\n    if (this.isOverlayConfigUpdateRequired()) {\n      this.dynamicOverlay.setOverlayConfig(this._overlayConfig);\n    }\n\n    if (this.isDisabledUpdated()) {\n      this.dynamicOverlay.setDisabled(this._disabled);\n    }\n\n    this.clearChanges();\n    return this.dynamicOverlay;\n  }\n\n  connect() {\n    if (!this.dynamicOverlay) {\n      throw new Error(`NbDynamicOverlayHandler: cannot connect to DynamicOverlay\n      as it is not created yet. Call build() first`);\n    }\n    this.disconnect();\n    this.subscribeOnTriggers(this.dynamicOverlay);\n    this.subscribeOnDirectionChange();\n  }\n\n  disconnect() {\n    if (this.triggerStrategy) {\n      this.triggerStrategy.destroy();\n    }\n  }\n\n  destroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n\n    this.disconnect();\n    this.clearChanges();\n    if (this.dynamicOverlay) {\n      this.dynamicOverlay.dispose();\n    }\n  }\n\n  protected createPositionStrategy() {\n    return this.positionBuilder\n      .connectedTo(this._host)\n      .position(this._position)\n      .adjustment(this._adjustment)\n      .offset(this._offset)\n      .direction(this.directionService.getDirection());\n  }\n\n  protected subscribeOnTriggers(dynamicOverlay: NbDynamicOverlay) {\n    this.triggerStrategy = this.triggerStrategyBuilder\n      .trigger(this._trigger)\n      .host(this._host.nativeElement)\n      .container(() => dynamicOverlay.getContainer())\n      .build();\n\n    this.triggerStrategy.show$.subscribe(() => dynamicOverlay.show());\n    this.triggerStrategy.hide$.subscribe(() => dynamicOverlay.hide());\n  }\n\n  protected subscribeOnDirectionChange() {\n    this.directionService\n      .onDirectionChange()\n      .pipe(skip(1), takeUntil(this.destroy$))\n      .subscribe(() => {\n        this.dynamicOverlay.setPositionStrategy(this.createPositionStrategy());\n      });\n  }\n\n  protected isContainerRerenderRequired() {\n    return this.isContentUpdated() || this.isContextUpdated() || this.isPositionStrategyUpdateRequired();\n  }\n\n  protected isPositionStrategyUpdateRequired(): boolean {\n    return this.isAdjustmentUpdated() || this.isPositionUpdated() || this.isOffsetUpdated() || this.isHostUpdated();\n  }\n\n  protected isTriggerStrategyUpdateRequired(): boolean {\n    return this.isTriggerUpdated() || this.isHostUpdated();\n  }\n\n  protected isComponentTypeUpdateRequired(): boolean {\n    return this.isComponentTypeUpdated();\n  }\n\n  private isOverlayConfigUpdateRequired(): boolean {\n    return this.isOverlayConfigUpdated();\n  }\n\n  protected isComponentTypeUpdated(): boolean {\n    return this.changes.componentType && this.changes.componentType.isChanged();\n  }\n\n  protected isContentUpdated(): boolean {\n    return this.changes.content && this.changes.content.isChanged();\n  }\n\n  protected isContextUpdated(): boolean {\n    return this.changes.context && this.changes.context.isChanged();\n  }\n\n  protected isAdjustmentUpdated(): boolean {\n    return this.changes.adjustment && this.changes.adjustment.isChanged();\n  }\n\n  protected isPositionUpdated(): boolean {\n    return this.changes.position && this.changes.position.isChanged();\n  }\n\n  protected isHostUpdated(): boolean {\n    return this.changes.host && this.changes.host.isChanged();\n  }\n\n  protected isTriggerUpdated(): boolean {\n    return this.changes.trigger && this.changes.trigger.isChanged();\n  }\n\n  protected isOffsetUpdated(): boolean {\n    return this.changes.offset && this.changes.offset.isChanged();\n  }\n\n  protected isOverlayConfigUpdated(): boolean {\n    return this.changes.overlayConfig && this.changes.overlayConfig.isChanged();\n  }\n\n  protected isDisabledUpdated(): boolean {\n    return this.changes.disabled && this.changes.disabled.isChanged();\n  }\n\n  protected clearChanges() {\n    this.changes = {};\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  Input,\n  TemplateRef,\n  Type,\n  ViewChild,\n} from '@angular/core';\nimport { NbComponentPortal, NbTemplatePortal } from '../cdk/overlay/mapping';\nimport {\n  NbOverlayContainerComponent,\n  NbPositionedContainerComponent,\n  NbRenderableContainer,\n} from '../cdk/overlay/overlay-container';\n\n\n/**\n * Overlay container.\n * Renders provided content inside.\n *\n * @styles\n *\n * popover-text-color:\n * popover-text-font-family:\n * popover-text-font-size:\n * popover-text-font-weight:\n * popover-text-line-height:\n * popover-background-color:\n * popover-border-width:\n * popover-border-color:\n * popover-border-radius:\n * popover-shadow:\n * popover-arrow-size:\n * popover-padding:\n * */\n@Component({\n    selector: 'nb-popover',\n    styleUrls: ['./popover.component.scss'],\n    template: `\n    <span class=\"arrow\"></span>\n    <nb-overlay-container></nb-overlay-container>\n  `,\n    standalone: false\n})\nexport class NbPopoverComponent extends NbPositionedContainerComponent implements NbRenderableContainer {\n  @ViewChild(NbOverlayContainerComponent) overlayContainer: NbOverlayContainerComponent;\n\n  @Input() content: any;\n  @Input() context: Object;\n\n  renderContent() {\n    this.detachContent();\n    this.attachContent();\n  }\n\n  protected detachContent() {\n    this.overlayContainer.detach();\n  }\n\n  protected attachContent() {\n    if (this.content instanceof TemplateRef) {\n      this.attachTemplate();\n    } else if (this.content instanceof Type) {\n      this.attachComponent();\n    } else {\n      this.attachString();\n    }\n  }\n\n  protected attachTemplate() {\n    this.overlayContainer\n      .attachTemplatePortal(new NbTemplatePortal(this.content, null, <any>{ $implicit: this.context }));\n  }\n\n  protected attachComponent() {\n    const portal = new NbComponentPortal(this.content, null, null);\n    const ref = this.overlayContainer.attachComponentPortal(portal, this.context);\n    ref.changeDetectorRef.detectChanges();\n  }\n\n  protected attachString() {\n    this.overlayContainer.attachStringContent(this.content);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  EventEmitter,\n} from '@angular/core';\n\nimport { NbDynamicOverlay, NbDynamicOverlayController } from '../cdk/overlay/dynamic/dynamic-overlay';\nimport { NbDynamicOverlayHandler } from '../cdk/overlay/dynamic/dynamic-overlay-handler';\nimport { NbAdjustment, NbPosition, NbPositionValues, NbAdjustmentValues } from '../cdk/overlay/overlay-position';\nimport { NbOverlayContent } from '../cdk/overlay/overlay-service';\nimport { NbTrigger, NbTriggerValues } from '../cdk/overlay/overlay-trigger';\nimport { NbOverlayConfig } from '../cdk/overlay/mapping';\nimport { NbPopoverComponent } from './popover.component';\nimport { takeUntil, skip } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\n/**\n * Powerful popover directive, which provides the best UX for your users.\n *\n * @stacked-example(Showcase, popover/popover-showcase.component)\n *\n * Popover can accept different content such as:\n * TemplateRef\n *\n * ```html\n * <button [nbPopover]=\"templateRef\"></button>\n * <ng-template #templateRef>\n *   <span>Hello, Popover!</span>\n * </ng-template>\n * ```\n * ### Installation\n *\n * Import `NbPopoverModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbPopoverModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Custom components\n *\n * ```html\n * <button [nbPopover]=\"MyPopoverComponent\"></button>\n * ```\n *\n * Both custom components and templateRef popovers can receive *contentContext* property\n * that will be passed to the content props.\n *\n * Primitive types\n *\n * ```html\n * <button nbPopover=\"Hello, Popover!\"></button>\n * ```\n *\n * Popover has different placements, such as: top, bottom, left, right, start and end\n * which can be used as following:\n *\n * @stacked-example(Placements, popover/popover-placements.component)\n *\n * By default popover will try to adjust itself to maximally fit viewport\n * and provide the best user experience. It will try to change position of the popover container.\n * If you want to disable this behaviour set it `noop`.\n *\n * ```html\n * <button nbPopover=\"Hello, Popover!\" nbPopoverAdjustment=\"noop\"></button>\n * ```\n *\n * Popover has a number of triggers which provides an ability to show and hide the component in different ways:\n *\n * - Click mode shows the component when a user clicks on the host element and hides when the user clicks\n * somewhere on the document outside the component.\n * - Hint provides capability to show the component when the user hovers over the host element\n * and hide when the user hovers out of the host.\n * - Hover works like hint mode with one exception - when the user moves mouse from host element to\n * the container element the component remains open, so that it is possible to interact with it content.\n * - Focus mode is applied when user focuses the element.\n * - Noop mode - the component won't react to the user interaction.\n *\n * @stacked-example(Available Triggers, popover/popover-modes.component.html)\n *\n * Noop mode is especially useful when you need to control Popover programmatically, for example show/hide\n * as a result of some third-party action, like HTTP request or validation check:\n *\n * @stacked-example(Manual Control, popover/popover-noop.component)\n *\n * Below are examples for manual popover settings control, both via template binding and code.\n * @stacked-example(Popover Settings, popover/popover-dynamic.component)\n *\n * Please note, while manipulating Popover setting via code, you need to call `rebuild()` method to apply the settings\n * changed.\n * @stacked-example(Popover Settings Code, popover/popover-dynamic-code.component)\n *\n * @additional-example(Template Ref, popover/popover-template-ref.component)\n * @additional-example(Custom Component, popover/popover-custom-component.component)\n * */\n@Directive({\n    selector: '[nbPopover]',\n    exportAs: 'nbPopover',\n    providers: [NbDynamicOverlayHandler, NbDynamicOverlay],\n    standalone: false\n})\nexport class NbPopoverDirective implements NbDynamicOverlayController, OnChanges, AfterViewInit, OnDestroy, OnInit {\n  protected popoverComponent = NbPopoverComponent;\n  protected dynamicOverlay: NbDynamicOverlay;\n  protected destroy$ = new Subject<void>();\n\n  /**\n   * Popover content which will be rendered in NbArrowedOverlayContainerComponent.\n   * Available content: template ref, component and any primitive.\n   * */\n  @Input('nbPopover')\n  content: NbOverlayContent;\n\n  /**\n   * Container content context. Will be applied to the rendered component.\n   * */\n  @Input('nbPopoverContext')\n  context: Object = {};\n\n  /**\n   * Position will be calculated relatively host element based on the position.\n   * Can be top, right, bottom, left, start or end.\n   * */\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('nbPopoverPlacement')\n  position: NbPosition = NbPosition.TOP;\n  static ngAcceptInputType_position: NbPositionValues;\n\n  /**\n   * Container position will be changes automatically based on this strategy if container can't fit view port.\n   * Set this property to `noop` value if you want to disable automatically adjustment.\n   * Available values: `clockwise` (default), `counterclockwise`, `vertical`, `horizontal`, `noop`.\n   * */\n  @Input('nbPopoverAdjustment')\n  get adjustment(): NbAdjustment {\n    return this._adjustment;\n  }\n  set adjustment(value: NbAdjustment) {\n    this._adjustment = value;\n  }\n  protected _adjustment: NbAdjustment = NbAdjustment.CLOCKWISE;\n  static ngAcceptInputType_adjustment: NbAdjustmentValues;\n\n  /**\n   * Describes when the container will be shown.\n   * Available options: `click`, `hover`, `hint`, `focus` and `noop`\n   * */\n  @Input('nbPopoverTrigger')\n  trigger: NbTrigger = NbTrigger.CLICK;\n  static ngAcceptInputType_trigger: NbTriggerValues;\n\n  /**\n   * Sets popover offset\n   * */\n  @Input('nbPopoverOffset')\n  offset = 15;\n\n  /** Disables the display of the tooltip. */\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('nbTooltipDisabled') disabled: boolean = false;\n\n  @Input('nbPopoverClass')\n  get popoverClass(): string {\n    return this._popoverClass;\n  }\n  set popoverClass(value: string) {\n    if (value !== this.popoverClass) {\n      this._popoverClass = value;\n      this.overlayConfig = { panelClass: this.popoverClass };\n    }\n  }\n  _popoverClass: string = '';\n\n  @Output()\n  nbPopoverShowStateChange = new EventEmitter<{ isShown: boolean }>();\n\n  protected overlayConfig: NbOverlayConfig = { panelClass: this.popoverClass };\n\n  get isShown(): boolean {\n    return !!(this.dynamicOverlay && this.dynamicOverlay.isAttached);\n  }\n\n  constructor(protected hostRef: ElementRef, protected dynamicOverlayHandler: NbDynamicOverlayHandler) {}\n\n  ngOnInit() {\n    this.dynamicOverlayHandler.host(this.hostRef).componentType(this.popoverComponent);\n  }\n\n  ngOnChanges() {\n    this.rebuild();\n  }\n\n  ngAfterViewInit() {\n    this.dynamicOverlay = this.configureDynamicOverlay().build();\n\n    this.dynamicOverlay.isShown\n      .pipe(skip(1), takeUntil(this.destroy$))\n      .subscribe((isShown: boolean) => this.nbPopoverShowStateChange.emit({ isShown }));\n  }\n\n  rebuild() {\n    this.dynamicOverlay = this.configureDynamicOverlay().rebuild();\n  }\n\n  show() {\n    this.dynamicOverlay.show();\n  }\n\n  hide() {\n    this.dynamicOverlay.hide();\n  }\n\n  toggle() {\n    this.dynamicOverlay.toggle();\n  }\n\n  ngOnDestroy() {\n    this.dynamicOverlayHandler.destroy();\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  protected configureDynamicOverlay() {\n    return this.dynamicOverlayHandler\n      .position(this.position)\n      .trigger(this.trigger)\n      .disabled(this.disabled)\n      .offset(this.offset)\n      .adjustment(this.adjustment)\n      .content(this.content)\n      .context(this.context)\n      .overlayConfig(this.overlayConfig);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbPopoverDirective } from './popover.directive';\nimport { NbPopoverComponent } from './popover.component';\n\n\n@NgModule({\n  imports: [NbOverlayModule],\n  declarations: [NbPopoverDirective, NbPopoverComponent],\n  exports: [NbPopoverDirective],\n})\nexport class NbPopoverModule {\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, Input } from '@angular/core';\n\nimport { NbMenuItem } from '../../components/menu/menu.service';\nimport { NbPositionedContainerComponent, NbRenderableContainer } from '../cdk/overlay/overlay-container';\n\n/**\n * Context menu component used as content within NbContextMenuDirective.\n *\n * @styles\n *\n * context-menu-background-color:\n * context-menu-border-color:\n * context-menu-border-style:\n * context-menu-border-width:\n * context-menu-border-radius:\n * context-menu-text-align:\n * context-menu-min-width:\n * context-menu-max-width:\n * context-menu-shadow:\n * */\n@Component({\n    selector: 'nb-context-menu',\n    template: `\n    <nb-menu class=\"context-menu\" [items]=\"context.items\" [tag]=\"context.tag\"></nb-menu>\n  `,\n    standalone: false\n})\nexport class NbContextMenuComponent extends NbPositionedContainerComponent implements NbRenderableContainer {\n\n  @Input() items: NbMenuItem[] = [];\n  @Input() tag: string;\n\n  @Input()\n  context: { items: NbMenuItem[], tag?: string } = { items: [] };\n\n\n  /**\n   * The method is empty since we don't need to do anything additionally\n   * render is handled by change detection\n   */\n  renderContent() {}\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterViewInit,\n  ComponentRef,\n  Directive,\n  ElementRef,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n} from '@angular/core';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { NbDynamicOverlay, NbDynamicOverlayController } from '../cdk/overlay/dynamic/dynamic-overlay';\nimport { NbDynamicOverlayHandler } from '../cdk/overlay/dynamic/dynamic-overlay-handler';\nimport { NbOverlayConfig, NbOverlayRef } from '../cdk/overlay/mapping';\nimport { NbAdjustableConnectedPositionStrategy, NbAdjustment, NbPosition } from '../cdk/overlay/overlay-position';\nimport { NbTrigger, NbTriggerValues } from '../cdk/overlay/overlay-trigger';\nimport { NbContextMenuComponent } from './context-menu.component';\nimport { NbMenuItem, NbMenuService } from '../menu/menu.service';\n\nexport interface NbContextMenuContext {\n  items: NbMenuItem[];\n  tag: string;\n  position: NbPosition;\n}\n\n/**\n * Full featured context menu directive.\n *\n * @stacked-example(Showcase, context-menu/context-menu-showcase.component)\n *\n * Just pass menu items array:\n *\n * ```html\n * <button [nbContextMenu]=\"items\"></button>\n * ...\n * items = [{ title: 'Profile' }, { title: 'Log out' }];\n * ```\n * ### Installation\n *\n * Import `NbContextMenuModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbContextMenuModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * Also make sure `NbMenuModule` is imported to your `app.module`.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbMenuModule.forRoot(),\n *   ],\n * })\n * export class AppModule { }\n * ```\n *\n * ### Usage\n *\n * If you want to handle context menu clicks you have to pass `nbContextMenuTag`\n * param and register to events using NbMenuService.\n * `NbContextMenu` renders plain `NbMenu` inside, so\n * you have to work with it just like with `NbMenu` component:\n *\n * @stacked-example(Menu item click, context-menu/context-menu-click.component)\n *\n * Context menu has different placements, such as: top, bottom, left and right\n * which can be used as following:\n *\n * ```html\n * <button [nbContextMenu]=\"items\" nbContextMenuPlacement=\"right\"></button>\n * ```\n *\n * ```ts\n * items = [{ title: 'Profile' }, { title: 'Log out' }];\n * ```\n *\n * By default context menu will try to adjust itself to maximally fit viewport\n * and provide the best user experience. It will try to change position of the context menu.\n * If you wanna disable this behaviour just set it falsy value.\n *\n * ```html\n * <button [nbContextMenu]=\"items\" nbContextMenuAdjustment=\"counterclockwise\"></button>\n * ```\n *\n * ```ts\n * items = [{ title: 'Profile' }, { title: 'Log out' }];\n * ```\n * Context menu has a number of triggers which provides an ability to show and hide the component in different ways:\n *\n * - Click mode shows the component when a user clicks on the host element and hides when the user clicks\n * somewhere on the document outside the component.\n * - Hint provides capability to show the component when the user hovers over the host element\n * and hide when the user hovers out of the host.\n * - Hover works like hint mode with one exception - when the user moves mouse from host element to\n * the container element the component remains open, so that it is possible to interact with it content.\n * - Focus mode is applied when user focuses the element.\n * - Noop mode - the component won't react to the user interaction.\n *\n * @stacked-example(Available Triggers, context-menu/context-menu-modes.component.html)\n *\n * Noop mode is especially useful when you need to control Popover programmatically, for example show/hide\n * as a result of some third-party action, like HTTP request or validation check:\n *\n * @stacked-example(Manual Control, context-menu/context-menu-noop.component)\n *\n * @stacked-example(Manual Control, context-menu/context-menu-right-click.component)\n * */\n@Directive({\n    selector: '[nbContextMenu]',\n    providers: [NbDynamicOverlayHandler, NbDynamicOverlay],\n    standalone: false\n})\nexport class NbContextMenuDirective implements NbDynamicOverlayController, OnChanges, AfterViewInit, OnDestroy, OnInit {\n\n  @HostBinding('class.context-menu-host')\n  contextMenuHost = true;\n\n  /**\n   * Position will be calculated relatively host element based on the position.\n   * Can be top, right, bottom and left.\n   * */\n  @Input('nbContextMenuPlacement')\n  get position(): NbPosition {\n    return this._position;\n  }\n  set position(value: NbPosition) {\n    if (value !== this.position) {\n      this._position = value;\n      this.updateOverlayContext();\n    }\n  }\n  _position: NbPosition = NbPosition.BOTTOM;\n\n  /**\n   * Container position will be changes automatically based on this strategy if container can't fit view port.\n   * Set this property to any falsy value if you want to disable automatically adjustment.\n   * Available values: clockwise, counterclockwise.\n   * */\n  @Input('nbContextMenuAdjustment')\n  adjustment: NbAdjustment = NbAdjustment.CLOCKWISE;\n\n  /**\n   * Set NbMenu tag, which helps identify menu when working with NbMenuService.\n   * */\n  @Input('nbContextMenuTag')\n  get tag(): string {\n    return this._tag;\n  }\n  set tag(value: string) {\n    if (value !== this.tag) {\n      this._tag = value;\n      this.updateOverlayContext();\n    }\n  }\n  _tag: string;\n\n  /**\n   * Basic menu items, will be passed to the internal NbMenuComponent.\n   * */\n  @Input('nbContextMenu')\n  get items(): NbMenuItem[] {\n    return this._items;\n  }\n  set items(items: NbMenuItem[]) {\n    this.validateItems(items);\n    this._items = items;\n    this.updateOverlayContext();\n  };\n\n  /**\n   * Describes when the container will be shown.\n   * Available options: `click`, `hover`, `hint`, `focus` and `noop`\n   * */\n  @Input('nbContextMenuTrigger')\n  trigger: NbTrigger = NbTrigger.CLICK;\n  static ngAcceptInputType_trigger: NbTriggerValues;\n\n  @Input('nbContextMenuClass')\n  get contextMenuClass(): string {\n    return this._contextMenuClass;\n  }\n  set contextMenuClass(value: string) {\n    if (value !== this.contextMenuClass) {\n      this._contextMenuClass = value;\n      this.overlayConfig = { panelClass: this.contextMenuClass };\n    }\n  }\n  _contextMenuClass: string = '';\n\n  protected ref: NbOverlayRef;\n  protected container: ComponentRef<any>;\n  protected positionStrategy: NbAdjustableConnectedPositionStrategy;\n  protected overlayConfig: NbOverlayConfig = { panelClass: this.contextMenuClass } ;\n  protected overlayContext: NbContextMenuContext = { items: this.items, tag: this.tag, position: this.position };\n  protected destroy$ = new Subject<void>();\n  private _items: NbMenuItem[] = [];\n\n  private dynamicOverlay: NbDynamicOverlay;\n\n  constructor(private hostRef: ElementRef,\n              private menuService: NbMenuService,\n              private dynamicOverlayHandler: NbDynamicOverlayHandler) {\n  }\n\n  ngOnInit() {\n    this.dynamicOverlayHandler\n      .host(this.hostRef)\n      .componentType(NbContextMenuComponent);\n  }\n\n  ngOnChanges() {\n    this.rebuild();\n  }\n\n  ngAfterViewInit() {\n    this.dynamicOverlay = this.configureDynamicOverlay()\n      .build();\n    this.subscribeOnItemClick();\n  }\n\n  rebuild() {\n    this.dynamicOverlay = this.configureDynamicOverlay()\n      .rebuild();\n  }\n\n  show() {\n    this.dynamicOverlay.show();\n  }\n\n  hide() {\n    this.dynamicOverlay.hide();\n  }\n\n  toggle() {\n    this.dynamicOverlay.toggle();\n  }\n\n  ngOnDestroy() {\n    this.dynamicOverlayHandler.destroy();\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  protected configureDynamicOverlay() {\n    return this.dynamicOverlayHandler\n      .position(this.position)\n      .trigger(this.trigger)\n      .adjustment(this.adjustment)\n      .context(this.overlayContext)\n      .overlayConfig(this.overlayConfig);\n  }\n\n  /*\n   * NbMenuComponent will crash if don't pass menu items to it.\n   * So, we just validating them and throw custom obvious error.\n   * */\n  private validateItems(items: NbMenuItem[]) {\n    if (!items || !items.length) {\n      throw Error(`List of menu items expected, but given: ${items}`)\n    }\n  }\n\n  private subscribeOnItemClick() {\n    this.menuService.onItemClick()\n      .pipe(\n        filter(({ tag }) => tag === this.tag && this.trigger !== NbTrigger.NOOP),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.hide());\n  }\n\n  protected updateOverlayContext() {\n    this.overlayContext = { items: this.items, position: this.position, tag: this.tag };\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbContextMenuDirective } from './context-menu.directive';\nimport { NbContextMenuComponent } from './context-menu.component';\nimport { NbMenuModule } from '../menu/menu.module';\n\n\n@NgModule({\n  imports: [CommonModule, NbOverlayModule, NbMenuModule],\n  exports: [NbContextMenuDirective],\n  declarations: [NbContextMenuDirective, NbContextMenuComponent],\n})\nexport class NbContextMenuModule {\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, HostBinding, Input } from '@angular/core';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentOrCustomStatus } from '../component-status';\n\n/**\n * Progress Bar is a component for indicating progress.\n *\n * Simple usage:\n *\n * ```html\n * <nb-progress-bar [value]=\"50\"></nb-progress-bar>\n * ```\n * ### Installation\n *\n * Import `NbProgressBarModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbProgressBarModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Progress bar accepts property `value` in range 0-100\n * @stacked-example(Progress bar, progress-bar/progress-bar-showcase.component)\n *\n * Progress bar background could be configured by providing a `status` property:\n * @stacked-example(Progress bar status, progress-bar/progress-bar-status.component)\n *\n * Progress bar size (height and font-size) could be configured by providing a `size` property:\n * @stacked-example(Progress bar size, progress-bar/progress-bar-size.component)\n *\n * `displayValue` property shows current value inside progress bar. It's also possible to add custom text inside:\n * @stacked-example(Progress bar value, progress-bar/progress-bar-value.component)\n *\n * Progress bar supports `width` and `background-color` transition:\n * @stacked-example(Progress bar interactive, progress-bar/progress-bar-interactive.component)\n *\n * @styles\n *\n * progress-bar-animation-duration:\n * progress-bar-border-radius:\n * progress-bar-text-font-family:\n * progress-bar-tiny-height:\n * progress-bar-tiny-text-font-size:\n * progress-bar-tiny-text-font-weight:\n * progress-bar-tiny-text-line-height:\n * progress-bar-small-height:\n * progress-bar-small-text-font-size:\n * progress-bar-small-text-font-weight:\n * progress-bar-small-text-line-height:\n * progress-bar-medium-height:\n * progress-bar-medium-text-font-size:\n * progress-bar-medium-text-font-weight:\n * progress-bar-medium-text-line-height:\n * progress-bar-large-height:\n * progress-bar-large-text-font-size:\n * progress-bar-large-text-font-weight:\n * progress-bar-large-text-line-height:\n * progress-bar-giant-height:\n * progress-bar-giant-text-font-size:\n * progress-bar-giant-text-font-weight:\n * progress-bar-giant-text-line-height:\n * progress-bar-basic-background-color:\n * progress-bar-basic-filled-background-color:\n * progress-bar-basic-text-color:\n * progress-bar-primary-background-color:\n * progress-bar-primary-filled-background-color:\n * progress-bar-primary-text-color:\n * progress-bar-success-background-color:\n * progress-bar-success-filled-background-color:\n * progress-bar-success-text-color:\n * progress-bar-info-background-color:\n * progress-bar-info-filled-background-color:\n * progress-bar-info-text-color:\n * progress-bar-warning-background-color:\n * progress-bar-warning-filled-background-color:\n * progress-bar-warning-text-color:\n * progress-bar-danger-background-color:\n * progress-bar-danger-filled-background-color:\n * progress-bar-danger-text-color:\n * progress-bar-control-background-color:\n * progress-bar-control-filled-background-color:\n * progress-bar-control-text-color:\n */\n@Component({\n    selector: 'nb-progress-bar',\n    styleUrls: ['./progress-bar.component.scss'],\n    template: `\n    <div class=\"progress-container\">\n      <div class=\"progress-value\" [style.width.%]=\"value\">\n        <span *ngIf=\"displayValue\">{{ value }}%</span>\n        <ng-content></ng-content>\n      </div>\n    </div>\n  `,\n    standalone: false\n})\nexport class NbProgressBarComponent {\n\n  /**\n   * Progress bar value in percent (0 - 100)\n   */\n  @Input() value: number = 0;\n\n  /**\n   * Progress bar background (`basic` (default), `primary`, `info`, `success`, `warning`, `danger`, `control`)\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Progress bar size (`tiny`, `small`, `medium` (default), `large`, `giant`)\n   */\n  @Input() size: NbComponentSize = 'medium';\n\n  /**\n   * Displays value inside progress bar\n   */\n  @Input() displayValue: boolean = false;\n\n  @HostBinding('class.size-tiny')\n  get tiny(): boolean {\n    return this.size === 'tiny';\n  }\n\n  @HostBinding('class.size-small')\n  get small(): boolean {\n    return this.size === 'small';\n  }\n\n  @HostBinding('class.size-medium')\n  get medium(): boolean {\n    return this.size === 'medium';\n  }\n\n  @HostBinding('class.size-large')\n  get large(): boolean {\n    return this.size === 'large';\n  }\n\n  @HostBinding('class.size-giant')\n  get giant(): boolean {\n    return this.size === 'giant';\n  }\n\n  @HostBinding('class.status-primary')\n  get primary(): boolean {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-success')\n  get success(): boolean {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-info')\n  get info(): boolean {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning(): boolean {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger(): boolean {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic(): boolean {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control(): boolean {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  constructor(protected statusService: NbStatusService) {\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbProgressBarComponent } from './progress-bar.component';\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n  ],\n  declarations: [NbProgressBarComponent],\n  exports: [NbProgressBarComponent],\n})\nexport class NbProgressBarModule { }\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, Input, HostBinding, Output, EventEmitter } from '@angular/core';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentOrCustomStatus, NbComponentStatus } from '../component-status';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\n\n\n/**\n * Alert component.\n *\n * Basic alert example:\n * @stacked-example(Showcase, alert/alert-showcase.component)\n *\n * Alert configuration:\n *\n * ```html\n * <nb-alert status=\"success\">\n *   You have been successfully authenticated!\n * </nb-alert>\n * ```\n * ### Installation\n *\n * Import `NbAlertModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbAlertModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Alert could additionally have a `close` button when `closable` property is set:\n * ```html\n * <nb-alert status=\"success\" closable (close)=\"onClose()\">\n *   You have been successfully authenticated!\n * </nb-alert>\n * ```\n *\n * Colored alerts could be simply configured by providing a `status` property:\n * @stacked-example(Alert status, alert/alert-colors.component)\n *\n * It is also possible to assign an `accent` property for a slight alert highlight\n * as well as combine it with `status`:\n * @stacked-example(Alert accent, alert/alert-accents.component)\n *\n * And `outline` property:\n * @stacked-example(Outline Alert, alert/alert-outline.component)\n *\n * @additional-example(Multiple Sizes, alert/alert-sizes.component)\n *\n * @styles\n *\n * alert-border-radius:\n * alert-bottom-margin:\n * alert-padding:\n * alert-scrollbar-color:\n * alert-scrollbar-background-color:\n * alert-scrollbar-width:\n * alert-shadow:\n * alert-text-font-family:\n * alert-text-font-size:\n * alert-text-font-weight:\n * alert-text-line-height:\n * alert-closable-start-padding:\n * alert-tiny-height:\n * alert-small-height:\n * alert-medium-height:\n * alert-medium-padding:\n * alert-large-height:\n * alert-giant-height:\n * alert-basic-background-color:\n * alert-basic-text-color:\n * alert-primary-background-color:\n * alert-primary-text-color:\n * alert-success-background-color:\n * alert-success-text-color:\n * alert-info-background-color:\n * alert-info-text-color:\n * alert-warning-background-color:\n * alert-warning-text-color:\n * alert-danger-background-color:\n * alert-danger-text-color:\n * alert-control-background-color:\n * alert-control-text-color:\n * alert-accent-basic-color:\n * alert-accent-primary-color:\n * alert-accent-info-color:\n * alert-accent-success-color:\n * alert-accent-warning-color:\n * alert-accent-danger-color:\n * alert-accent-control-color:\n * alert-outline-width:\n * alert-outline-basic-color:\n * alert-outline-primary-color:\n * alert-outline-info-color:\n * alert-outline-success-color:\n * alert-outline-warning-color:\n * alert-outline-danger-color:\n * alert-outline-control-color:\n */\n@Component({\n    selector: 'nb-alert',\n    styleUrls: ['./alert.component.scss'],\n    template: `\n    <button *ngIf=\"closable\" type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"onClose()\">\n      <span aria-hidden=\"true\">&times;</span>\n    </button>\n    <ng-content></ng-content>\n  `,\n    standalone: false\n})\nexport class NbAlertComponent {\n\n  /**\n   * Alert size, available sizes:\n   * `tiny`, `small`, `medium`, `large`, `giant`\n   * Unset by default.\n   */\n  @Input() size: '' | NbComponentSize = '';\n\n  /**\n   * Alert status (adds specific styles):\n   * `basic` (default), `primary`, `success`, `info`, `warning`, `danger`, `control`.\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Alert accent (color of the top border):\n   * `basic`, `primary`, `success`, `info`, `warning`, `danger`, `control`.\n   * Unset by default.\n   */\n  @Input() accent: '' | NbComponentStatus = '';\n\n  /**\n   * Alert outline (color of the border):\n   * `basic`, `primary`, `success`, `info`, `warning`, `danger`, `control`.\n   * Unset by default.\n   */\n  @Input() outline: '' | NbComponentStatus = '';\n\n  /**\n   * Shows `close` icon\n   */\n  @Input()\n  @HostBinding('class.closable')\n  get closable(): boolean {\n    return this._closable;\n  }\n  set closable(value: boolean) {\n    this._closable = convertToBoolProperty(value);\n  }\n  protected _closable: boolean = false;\n  static ngAcceptInputType_closable: NbBooleanInput;\n\n  /**\n   * Emits when chip is removed\n   * @type EventEmitter<any>\n   */\n  @Output() close = new EventEmitter();\n\n  constructor(protected statusService: NbStatusService) {\n  }\n\n  /**\n   * Emits the removed chip event\n   */\n  onClose() {\n    this.close.emit();\n  }\n\n  @HostBinding('class.size-tiny')\n  get tiny() {\n    return this.size === 'tiny';\n  }\n\n  @HostBinding('class.size-small')\n  get small() {\n    return this.size === 'small';\n  }\n\n  @HostBinding('class.size-medium')\n  get medium() {\n    return this.size === 'medium';\n  }\n\n  @HostBinding('class.size-large')\n  get large() {\n    return this.size === 'large';\n  }\n\n  @HostBinding('class.size-giant')\n  get giant() {\n    return this.size === 'giant';\n  }\n\n  @HostBinding('class.status-primary')\n  get primary() {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-success')\n  get success() {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-info')\n  get info() {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning() {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger() {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic() {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control() {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class.accent-primary')\n  get primaryAccent() {\n    return this.accent === 'primary';\n  }\n\n  @HostBinding('class.accent-success')\n  get successAccent() {\n    return this.accent === 'success';\n  }\n\n  @HostBinding('class.accent-info')\n  get infoAccent() {\n    return this.accent === 'info';\n  }\n\n  @HostBinding('class.accent-warning')\n  get warningAccent() {\n    return this.accent === 'warning';\n  }\n\n  @HostBinding('class.accent-danger')\n  get dangerAccent() {\n    return this.accent === 'danger';\n  }\n\n  @HostBinding('class.accent-basic')\n  get basicAccent() {\n    return this.accent === 'basic';\n  }\n\n  @HostBinding('class.accent-control')\n  get controlAccent() {\n    return this.accent === 'control';\n  }\n\n  @HostBinding('class.outline-primary')\n  get primaryOutline() {\n    return this.outline === 'primary';\n  }\n\n  @HostBinding('class.outline-success')\n  get successOutline() {\n    return this.outline === 'success';\n  }\n\n  @HostBinding('class.outline-info')\n  get infoOutline() {\n    return this.outline === 'info';\n  }\n\n  @HostBinding('class.outline-warning')\n  get warningOutline() {\n    return this.outline === 'warning';\n  }\n\n  @HostBinding('class.outline-danger')\n  get dangerOutline() {\n    return this.outline === 'danger';\n  }\n\n  @HostBinding('class.outline-basic')\n  get basicOutline() {\n    return this.outline === 'basic';\n  }\n\n  @HostBinding('class.outline-control')\n  get controlOutline() {\n    return this.outline === 'control';\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\n\nimport { NbAlertComponent } from './alert.component';\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n  ],\n  declarations: [\n    NbAlertComponent,\n  ],\n  exports: [\n    NbAlertComponent,\n  ],\n})\nexport class NbAlertModule {\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable } from '@angular/core';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbComponentSize } from '../component-size';\nimport { Observable } from 'rxjs';\n\n/*\n * Class used as injection token to provide form element.\n **/\n@Injectable()\nexport abstract class NbFormFieldControl {\n  status$: Observable<NbComponentOrCustomStatus>;\n  size$: Observable<NbComponentSize>;\n  focused$: Observable<boolean>;\n  disabled$: Observable<boolean>;\n  fullWidth$: Observable<boolean>;\n}\n\n/*\n * Optional config to be provided on NbFormFieldControl to alter default settings.\n **/\n@Injectable()\nexport class NbFormFieldControlConfig {\n  supportsPrefix = true;\n  supportsSuffix = true;\n}\n\nexport interface NbFormControlState {\n  status: NbComponentOrCustomStatus;\n  size: NbComponentSize;\n  fullWidth: boolean;\n  focused: boolean;\n  disabled: boolean;\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Directive,\n  Input,\n  HostBinding,\n  OnDestroy,\n  OnInit,\n  ElementRef,\n  SimpleChanges,\n  OnChanges,\n  DoCheck,\n  AfterViewInit,\n  Renderer2,\n  NgZone,\n} from '@angular/core';\nimport { Subject, BehaviorSubject } from 'rxjs';\nimport { map, finalize, takeUntil } from 'rxjs/operators';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentShape } from '../component-shape';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbFormFieldControl } from '../form-field/form-field-control';\nimport { NbFocusMonitor } from '../cdk/a11y/a11y.module';\n\n/**\n * Basic input directive.\n *\n * ```html\n * <input nbInput></input>\n * ```\n *\n * ### Installation\n *\n * Import `NbInputModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbInputModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Default input size is `medium`:\n * @stacked-example(Showcase, input/input-showcase.component)\n *\n * Inputs are available in multiple colors using `status` property:\n * @stacked-example(Input Colors, input/input-colors.component)\n *\n * There are three input sizes:\n *\n * @stacked-example(Input Sizes, input/input-sizes.component)\n *\n * Inputs available in different shapes, which could be combined with the other properties:\n * @stacked-example(Input Shapes, input/input-shapes.component)\n *\n * `nbInput` could be applied to the following selectors - `input`, `textarea`:\n * @stacked-example(Input Elements, input/input-types.component)\n *\n * You can add `fullWidth` attribute to make element fill container:\n * @stacked-example(Full width inputs, input/input-full-width.component)\n *\n * Or you can bind control with form controls or ngModel:\n * @stacked-example(Input form binding, input/input-form.component)\n *\n * Use `<nb-form-field>` to add custom content to the input field.\n * First import `NbFormFieldModule`. Then put the input field and custom content into\n * `<nb-form-field>` and add `nbPrefix` or `nbSuffix` directive to the custom content.\n * `nbPrefix` puts content before input and `nbSuffix` after.\n *\n * @stacked-example(Input with icon, form-field/form-field-input.component)\n * @stacked-example(Input with button, form-field/form-field-password.component)\n *\n * @styles\n *\n * input-border-style:\n * input-border-width:\n * input-outline-color:\n * input-outline-width:\n * input-placeholder-text-font-family:\n * input-text-font-family:\n * input-basic-text-color:\n * input-basic-placeholder-text-color:\n * input-basic-background-color:\n * input-basic-border-color:\n * input-basic-focus-background-color:\n * input-basic-focus-border-color:\n * input-basic-hover-background-color:\n * input-basic-hover-border-color:\n * input-basic-disabled-background-color:\n * input-basic-disabled-border-color:\n * input-basic-disabled-text-color:\n * input-basic-disabled-placeholder-text-color:\n * input-primary-text-color:\n * input-primary-placeholder-text-color:\n * input-primary-background-color:\n * input-primary-border-color:\n * input-primary-focus-background-color:\n * input-primary-focus-border-color:\n * input-primary-hover-background-color:\n * input-primary-hover-border-color:\n * input-primary-disabled-background-color:\n * input-primary-disabled-border-color:\n * input-primary-disabled-text-color:\n * input-primary-disabled-placeholder-text-color:\n * input-success-text-color:\n * input-success-placeholder-text-color:\n * input-success-background-color:\n * input-success-border-color:\n * input-success-focus-background-color:\n * input-success-focus-border-color:\n * input-success-hover-background-color:\n * input-success-hover-border-color:\n * input-success-disabled-background-color:\n * input-success-disabled-border-color:\n * input-success-disabled-text-color:\n * input-success-disabled-placeholder-text-color:\n * input-info-text-color:\n * input-info-placeholder-text-color:\n * input-info-background-color:\n * input-info-border-color:\n * input-info-focus-background-color:\n * input-info-focus-border-color:\n * input-info-hover-background-color:\n * input-info-hover-border-color:\n * input-info-disabled-background-color:\n * input-info-disabled-border-color:\n * input-info-disabled-text-color:\n * input-info-disabled-placeholder-text-color:\n * input-warning-text-color:\n * input-warning-placeholder-text-color:\n * input-warning-background-color:\n * input-warning-border-color:\n * input-warning-focus-background-color:\n * input-warning-focus-border-color:\n * input-warning-hover-background-color:\n * input-warning-hover-border-color:\n * input-warning-disabled-background-color:\n * input-warning-disabled-border-color:\n * input-warning-disabled-text-color:\n * input-warning-disabled-placeholder-text-color:\n * input-danger-text-color:\n * input-danger-placeholder-text-color:\n * input-danger-background-color:\n * input-danger-border-color:\n * input-danger-focus-background-color:\n * input-danger-focus-border-color:\n * input-danger-hover-background-color:\n * input-danger-hover-border-color:\n * input-danger-disabled-background-color:\n * input-danger-disabled-border-color:\n * input-danger-disabled-text-color:\n * input-danger-disabled-placeholder-text-color:\n * input-control-text-color:\n * input-control-placeholder-text-color:\n * input-control-background-color:\n * input-control-border-color:\n * input-control-focus-background-color:\n * input-control-focus-border-color:\n * input-control-hover-background-color:\n * input-control-hover-border-color:\n * input-control-disabled-background-color:\n * input-control-disabled-border-color:\n * input-control-disabled-text-color:\n * input-control-disabled-placeholder-text-color:\n * input-rectangle-border-radius:\n * input-semi-round-border-radius:\n * input-round-border-radius:\n * input-tiny-text-font-size:\n * input-tiny-text-font-weight:\n * input-tiny-text-line-height:\n * input-tiny-placeholder-text-font-size:\n * input-tiny-placeholder-text-font-weight:\n * input-tiny-placeholder-text-line-height:\n * input-tiny-padding:\n * input-tiny-max-width:\n * input-small-text-font-size:\n * input-small-text-font-weight:\n * input-small-text-line-height:\n * input-small-placeholder-text-font-size:\n * input-small-placeholder-text-font-weight:\n * input-small-placeholder-text-line-height:\n * input-small-padding:\n * input-small-max-width:\n * input-medium-text-font-size:\n * input-medium-text-font-weight:\n * input-medium-text-line-height:\n * input-medium-placeholder-text-font-size:\n * input-medium-placeholder-text-font-weight:\n * input-medium-placeholder-text-line-height:\n * input-medium-padding:\n * input-medium-max-width:\n * input-large-text-font-size:\n * input-large-text-font-weight:\n * input-large-text-line-height:\n * input-large-placeholder-text-font-size:\n * input-large-placeholder-text-font-weight:\n * input-large-placeholder-text-line-height:\n * input-large-padding:\n * input-large-max-width:\n * input-giant-text-font-size:\n * input-giant-text-font-weight:\n * input-giant-text-line-height:\n * input-giant-placeholder-text-font-size:\n * input-giant-placeholder-text-font-weight:\n * input-giant-placeholder-text-line-height:\n * input-giant-padding:\n * input-giant-max-width:\n */\n@Directive({\n    selector: 'input[nbInput],textarea[nbInput]',\n    providers: [\n        { provide: NbFormFieldControl, useExisting: NbInputDirective },\n    ],\n    standalone: false\n})\nexport class NbInputDirective implements DoCheck, OnChanges, OnInit, AfterViewInit, OnDestroy, NbFormFieldControl {\n\n  protected destroy$ = new Subject<void>();\n\n  /**\n   * Field size modifications. Possible values: `small`, `medium` (default), `large`.\n   */\n  @Input()\n  fieldSize: NbComponentSize = 'medium';\n\n  /**\n   * Field status (adds specific styles):\n   * `basic`, `primary`, `info`, `success`, `warning`, `danger`, `control`\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Field shapes modifications. Possible values: `rectangle` (default), `round`, `semi-round`.\n   */\n  @Input()\n  shape: NbComponentShape = 'rectangle';\n\n  /**\n   * If set element will fill container. `false` by default.\n   */\n  @Input()\n  @HostBinding('class.input-full-width')\n  get fullWidth(): boolean {\n    return this._fullWidth;\n  }\n  set fullWidth(value: boolean) {\n    this._fullWidth = convertToBoolProperty(value);\n  }\n  private _fullWidth = false;\n  static ngAcceptInputType_fullWidth: NbBooleanInput;\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  constructor(\n    protected elementRef: ElementRef<HTMLInputElement | HTMLTextAreaElement>,\n    protected focusMonitor: NbFocusMonitor,\n    protected renderer: Renderer2,\n    protected zone: NgZone,\n    protected statusService: NbStatusService,\n  ) {\n  }\n\n  ngDoCheck() {\n    const isDisabled = this.elementRef.nativeElement.disabled;\n    if (isDisabled !== this.disabled$.value) {\n      this.disabled$.next(isDisabled);\n    }\n  }\n\n  ngOnChanges({ status, fieldSize, fullWidth }: SimpleChanges) {\n    if (status) {\n      this.status$.next(this.status);\n    }\n    if (fieldSize) {\n      this.size$.next(this.fieldSize);\n    }\n    if (fullWidth) {\n      this.fullWidth$.next(this.fullWidth);\n    }\n  }\n\n  ngOnInit() {\n    this.focusMonitor.monitor(this.elementRef)\n      .pipe(\n        map(origin => !!origin),\n        finalize(() => this.focusMonitor.stopMonitoring(this.elementRef)),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(this.focused$);\n  }\n\n  ngAfterViewInit() {\n    // TODO: #2254\n    this.zone.runOutsideAngular(() => setTimeout(() => {\n      this.renderer.addClass(this.elementRef.nativeElement, 'nb-transition');\n    }));\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n  }\n\n  @HostBinding('class.size-tiny')\n  get tiny() {\n    return this.fieldSize === 'tiny';\n  }\n\n  @HostBinding('class.size-small')\n  get small() {\n    return this.fieldSize === 'small';\n  }\n\n  @HostBinding('class.size-medium')\n  get medium() {\n    return this.fieldSize === 'medium';\n  }\n\n  @HostBinding('class.size-large')\n  get large() {\n    return this.fieldSize === 'large';\n  }\n\n  @HostBinding('class.size-giant')\n  get giant() {\n    return this.fieldSize === 'giant';\n  }\n\n  @HostBinding('class.status-primary')\n  get primary() {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-info')\n  get info() {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-success')\n  get success() {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning() {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger() {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic() {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control() {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class.shape-rectangle')\n  get rectangle() {\n    return this.shape === 'rectangle';\n  }\n\n  @HostBinding('class.shape-semi-round')\n  get semiRound() {\n    return this.shape === 'semi-round';\n  }\n\n  @HostBinding('class.shape-round')\n  get round() {\n    return this.shape === 'round';\n  }\n\n  /*\n   * @docs-private\n   **/\n  status$ = new BehaviorSubject<NbComponentOrCustomStatus>(this.status);\n\n  /*\n   * @docs-private\n   **/\n  size$ = new BehaviorSubject<NbComponentSize>(this.fieldSize);\n\n  /*\n   * @docs-private\n   **/\n  focused$ = new BehaviorSubject<boolean>(false);\n\n  /*\n   * @docs-private\n   **/\n  disabled$ = new BehaviorSubject<boolean>(false);\n\n  /*\n   * @docs-private\n   **/\n  fullWidth$ = new BehaviorSubject<boolean>(this.fullWidth);\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  Output,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { NbComponentOrCustomStatus } from '../component-status';\n\n/**\n * Chat form component.\n *\n * Show a message form with a send message button.\n *\n * ```ts\n * <nb-chat-form showButton=\"true\" buttonIcon=\"nb-send\">\n * </nb-chat-form>\n * ```\n *\n * When `[dropFiles]=\"true\"` handles files drag&drop with a file preview.\n *\n * Drag & drop available for files and images:\n * @stacked-example(Drag & Drop Chat, chat/chat-drop.component)\n *\n * New message could be tracked outside by using `(send)` output.\n *\n * ```ts\n * <nb-chat-form (send)=\"onNewMessage($event)\">\n * </nb-chat-form>\n *\n * // ...\n *\n * onNewMessage({ message: string, files: any[] }) {\n *   this.service.sendToServer(message, files);\n * }\n * ```\n */\n@Component({\n    selector: 'nb-chat-form',\n    template: `\n    <div class=\"dropped-files\" *ngIf=\"droppedFiles?.length\">\n      <ng-container *ngFor=\"let file of droppedFiles\">\n        <div *ngIf=\"file.urlStyle\" [style.background-image]=\"file.urlStyle\">\n          <span class=\"remove\" (click)=\"removeFile(file)\">&times;</span>\n        </div>\n\n        <div *ngIf=\"!file.urlStyle\">\n          <nb-icon icon=\"file-text-outline\" pack=\"nebular-essentials\"></nb-icon>\n          <span class=\"remove\" (click)=\"removeFile(file)\">&times;</span>\n        </div>\n      </ng-container>\n    </div>\n    <div class=\"message-row\">\n      <input\n        nbInput\n        fullWidth\n        [status]=\"getInputStatus()\"\n        (focus)=\"inputFocus = true\"\n        (blur)=\"inputFocus = false\"\n        (mouseenter)=\"inputHover = true\"\n        (mouseleave)=\"inputHover = false\"\n        [(ngModel)]=\"message\"\n        (ngModelChange)=\"onModelChange($event)\"\n        [class.with-button]=\"showButton\"\n        type=\"text\"\n        placeholder=\"{{ fileOver ? dropFilePlaceholder : messagePlaceholder }}\"\n        (keyup.enter)=\"sendMessage()\"\n      />\n      <button\n        nbButton\n        [status]=\"getButtonStatus()\"\n        *ngIf=\"showButton\"\n        [class.with-icon]=\"!buttonTitle\"\n        (click)=\"sendMessage()\"\n        class=\"send-button\"\n      >\n        <nb-icon *ngIf=\"!buttonTitle; else title\" [icon]=\"buttonIcon\" pack=\"nebular-essentials\"></nb-icon>\n        <ng-template #title>{{ buttonTitle }}</ng-template>\n      </button>\n    </div>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbChatFormComponent {\n  status: NbComponentOrCustomStatus = 'basic';\n  inputFocus: boolean = false;\n  inputHover: boolean = false;\n\n  droppedFiles: any[] = [];\n  imgDropTypes = ['image/png', 'image/jpeg', 'image/gif'];\n\n  /**\n   * Predefined message text\n   * @type {string}\n   */\n  @Input() message: string = '';\n\n  /**\n   * Message placeholder text\n   * @type {string}\n   */\n  @Input() messagePlaceholder: string = 'Type a message';\n  /**\n   * Send button title\n   * @type {string}\n   */\n  @Input() buttonTitle: string = '';\n\n  /**\n   * Send button icon, shown if `buttonTitle` is empty\n   * @type {string}\n   */\n  @Input() buttonIcon: string = 'paper-plane-outline';\n\n  /**\n   * Show send button\n   * @type {boolean}\n   */\n  @Input() showButton: boolean = true;\n\n  /**\n   * Show send button\n   * @type {boolean}\n   */\n  @Input() dropFiles: boolean = false;\n\n  /**\n   * File drop placeholder text\n   * @type {string}\n   */\n  @Input() dropFilePlaceholder: string = 'Drop file to send';\n\n  /**\n   *\n   * @type {EventEmitter<{ message: string, files: File[] }>}\n   */\n  @Output() send = new EventEmitter<{ message: string; files: File[] }>();\n\n  /**\n   * Emits when message input value has been changed\n   * @type {EventEmitter<string>}\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() onInputChange = new EventEmitter<string>();\n\n  @HostBinding('class.file-over') fileOver = false;\n\n  constructor(protected cd: ChangeDetectorRef, protected domSanitizer: DomSanitizer) {}\n\n  @HostListener('drop', ['$event'])\n  onDrop(event: any) {\n    if (this.dropFiles) {\n      event.preventDefault();\n      event.stopPropagation();\n\n      this.fileOver = false;\n      if (event.dataTransfer && event.dataTransfer.files) {\n        for (const file of event.dataTransfer.files) {\n          const res = file;\n\n          if (this.imgDropTypes.includes(file.type)) {\n            const fr = new FileReader();\n            fr.onload = (e: any) => {\n              res.src = e.target.result;\n              res.urlStyle = this.domSanitizer.bypassSecurityTrustStyle(`url(${res.src})`);\n              this.cd.detectChanges();\n            };\n\n            fr.readAsDataURL(file);\n          }\n          this.droppedFiles.push(res);\n        }\n      }\n    }\n  }\n\n  removeFile(file) {\n    const index = this.droppedFiles.indexOf(file);\n    if (index >= 0) {\n      this.droppedFiles.splice(index, 1);\n    }\n  }\n\n  @HostListener('dragover', ['$event'])\n  onDragOver(event: DragEvent) {\n    event.preventDefault();\n    event.stopPropagation();\n    if (this.dropFiles) {\n      this.fileOver = true;\n    }\n  }\n\n  @HostListener('dragleave', ['$event'])\n  onDragLeave(event: DragEvent) {\n    event.preventDefault();\n    event.stopPropagation();\n    if (this.dropFiles) {\n      this.fileOver = false;\n    }\n  }\n\n  sendMessage() {\n    if (this.droppedFiles.length || String(this.message).trim().length) {\n      this.send.emit({ message: this.message, files: this.droppedFiles });\n      this.message = '';\n      this.droppedFiles = [];\n    }\n  }\n\n  setStatus(status: NbComponentOrCustomStatus): void {\n    if (this.status !== status) {\n      this.status = status;\n      this.cd.detectChanges();\n    }\n  }\n\n  getInputStatus(): NbComponentOrCustomStatus {\n    if (this.fileOver) {\n      return this.getHighlightStatus();\n    }\n\n    if (this.inputFocus || this.inputHover) {\n      return this.status;\n    }\n\n    return 'basic';\n  }\n\n  getButtonStatus(): NbComponentOrCustomStatus {\n    return this.getHighlightStatus();\n  }\n\n  protected getHighlightStatus(): NbComponentOrCustomStatus {\n    if (this.status === 'basic' || this.status === 'control') {\n      return 'primary';\n    }\n\n    return this.status;\n  }\n\n  onModelChange(value: string): void {\n    this.onInputChange.emit(value);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { NbChatCustomMessageDirective } from './chat-custom-message.directive';\n\n/**\n * `NbCustomMessageService` is used to store instances of `NbChatCustomMessageDirective`s which\n * were provided in the chat component.\n */\n@Injectable()\nexport class NbChatCustomMessageService {\n  protected readonly customMessages = new Map<string, NbChatCustomMessageDirective>();\n\n  register(type: string, instance: NbChatCustomMessageDirective): void {\n    this.customMessages.set(type, instance);\n  }\n\n  unregister(type: string): boolean {\n    return this.customMessages.delete(type);\n  }\n\n  getInstance(type: string): NbChatCustomMessageDirective | undefined {\n    return this.customMessages.get(type);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n/**\n * Chat message component.\n */\n@Component({\n    selector: 'nb-chat-message-text',\n    template: `\n    <p class=\"sender\" *ngIf=\"sender || date\">{{ sender }} <time>{{ date  | date: dateFormat }}</time></p>\n    <p class=\"text\" *ngIf=\"message\">{{ message }}</p>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbChatMessageTextComponent {\n\n  /**\n   * Message sender\n   * @type {string}\n   */\n  @Input() sender: string;\n\n  /**\n   * Message sender\n   * @type {string}\n   */\n  @Input() message: string;\n\n  /**\n   * Message send date\n   * @type {Date}\n   */\n  @Input() date: Date;\n\n  /**\n   * Message send date format, default 'shortTime'\n   * @type {string}\n   */\n  @Input() dateFormat: string = 'shortTime';\n\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nexport interface NbChatMessageFileIconPreview {\n  url: string;\n  icon: string;\n}\nexport interface NbChatMessageFileImagePreview {\n  url: string;\n  type: string;\n}\nexport type NbChatMessageFile = NbChatMessageFileIconPreview | NbChatMessageFileImagePreview;\n\n/**\n * Chat message component.\n */\n@Component({\n    selector: 'nb-chat-message-file',\n    template: `\n    <nb-chat-message-text [sender]=\"sender\" [date]=\"date\" [dateFormat]=\"dateFormat\" [message]=\"message\">\n      {{ message }}\n    </nb-chat-message-text>\n\n    <ng-container *ngIf=\"readyFiles?.length > 1\">\n      <div class=\"message-content-group\">\n        <a *ngFor=\"let file of readyFiles\" [href]=\"file.url\" target=\"_blank\">\n          <nb-icon [icon]=\"file.icon\" *ngIf=\"!file.urlStyle && file.icon\"></nb-icon>\n          <div *ngIf=\"file.urlStyle\" [style.background-image]=\"file.urlStyle\"></div>\n        </a>\n      </div>\n    </ng-container>\n\n    <ng-container *ngIf=\"readyFiles?.length === 1\">\n      <a [href]=\"readyFiles[0].url\" target=\"_blank\">\n        <nb-icon [icon]=\"readyFiles[0].icon\" *ngIf=\"!readyFiles[0].urlStyle && readyFiles[0].icon\"></nb-icon>\n        <div *ngIf=\"readyFiles[0].urlStyle\" [style.background-image]=\"readyFiles[0].urlStyle\"></div>\n      </a>\n    </ng-container>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbChatMessageFileComponent {\n\n  readyFiles: any[];\n\n  /**\n   * Message sender\n   * @type {string}\n   */\n  @Input() message: string;\n\n  /**\n   * Message sender\n   * @type {string}\n   */\n  @Input() sender: string;\n\n  /**\n   * Message send date\n   * @type {Date}\n   */\n  @Input() date: Date;\n\n  /**\n   * Message send date format, default 'shortTime'\n   * @type {string}\n   */\n  @Input() dateFormat: string = 'shortTime';\n\n  /**\n   * Message file path\n   * @type {Date}\n   */\n  @Input()\n  set files(files: NbChatMessageFile[]) {\n    this.readyFiles = (files || []).map((file: any) => {\n      const isImage = this.isImage(file);\n      return {\n        ...file,\n        urlStyle: isImage && this.domSanitizer.bypassSecurityTrustStyle(`url(${file.url})`),\n        isImage: isImage,\n      };\n    });\n    this.cd.detectChanges();\n  }\n\n  constructor(protected cd: ChangeDetectorRef, protected domSanitizer: DomSanitizer) {\n  }\n\n\n  isImage(file: NbChatMessageFile): boolean {\n    const type = (file as NbChatMessageFileImagePreview).type;\n    if (type) {\n      return [ 'image/png', 'image/jpeg', 'image/gif' ].includes(type);\n    }\n    return false;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n/**\n * Chat message component.\n */\n@Component({\n    selector: 'nb-chat-message-quote',\n    template: `\n    <p class=\"sender\" *ngIf=\"sender || date\">{{ sender }} <time>{{ date | date: dateFormat }}</time></p>\n    <p class=\"quote\">\n      {{ quote }}\n    </p>\n    <nb-chat-message-text [message]=\"message\">\n      {{ message }}\n    </nb-chat-message-text>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbChatMessageQuoteComponent {\n\n  /**\n   * Message sender\n   * @type {string}\n   */\n  @Input() message: string;\n\n  /**\n   * Message sender\n   * @type {string}\n   */\n  @Input() sender: string;\n\n  /**\n   * Message send date\n   * @type {Date}\n   */\n  @Input() date: Date;\n\n /**\n   * Message send date format, default 'shortTime'\n   * @type {string}\n   */\n  @Input() dateFormat: string = 'shortTime';\n\n  /**\n   * Quoted message\n   * @type {Date}\n   */\n  @Input() quote: string;\n\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nexport class NbChatOptions {\n  messageGoogleMapKey?: string;\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NbChatOptions } from './chat.options';\n\n/**\n * Chat message component.\n */\n@Component({\n    selector: 'nb-chat-message-map',\n    template: `\n    <nb-chat-message-file [files]=\"[file]\" [message]=\"message\" [sender]=\"sender\" [date]=\"date\"\n     [dateFormat]=\"dateFormat\"></nb-chat-message-file>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbChatMessageMapComponent {\n\n  /**\n   * Message sender\n   * @type {string}\n   */\n  @Input() message: string;\n\n  /**\n   * Message sender\n   * @type {string}\n   */\n  @Input() sender: string;\n\n  /**\n   * Message send date\n   * @type {Date}\n   */\n  @Input() date: Date;\n\n  /**\n   * Message send date format, default 'shortTime'\n   * @type {string}\n   */\n  @Input() dateFormat: string = 'shortTime';\n\n  /**\n   * Map latitude\n   * @type {number}\n   */\n  @Input() latitude: number;\n\n  /**\n   * Map longitude\n   * @type {number}\n   */\n  @Input() longitude: number;\n\n  get file() {\n    return {\n      // eslint-disable-next-line max-len\n      url: `https://maps.googleapis.com/maps/api/staticmap?center=${this.latitude},${this.longitude}&zoom=12&size=400x400&key=${this.mapKey}`,\n      type: 'image/png',\n      icon: 'location',\n    };\n  }\n\n  mapKey: string;\n\n  constructor(options: NbChatOptions) {\n    this.mapKey = options.messageGoogleMapKey;\n  }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { SafeStyle } from '@angular/platform-browser';\n\n@Component({\n    selector: 'nb-chat-avatar',\n    template: `\n    <ng-container *ngIf=\"!avatarStyle\">\n      {{ initials }}\n    </ng-container>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbChatAvatarComponent {\n\n  @Input() initials: string;\n\n  @Input()\n  @HostBinding('style.background-image')\n  avatarStyle: SafeStyle;\n\n  @HostBinding('class.avatar')\n  readonly avatarClass = true;\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ChangeDetectionStrategy, Component, HostBinding, Input, TemplateRef } from '@angular/core';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbChatMessageFile } from './chat-message-file.component';\nimport { NbChatCustomMessageService } from './chat-custom-message.service';\nimport { NbChatCustomMessageDirective } from './chat-custom-message.directive';\n\n/**\n * Chat message component.\n *\n * Multiple message types are available through a `type` property, such as\n * - text - simple text message\n * - file - could be a file preview or a file icon\n * if multiple files are provided grouped files are shown\n * - quote - quotes a message with specific quote styles\n * - map - shows a google map picture by provided [latitude] and [longitude] properties\n *\n * @stacked-example(Available Types, chat/chat-message-types-showcase.component)\n *\n * Message with attached files:\n * ```html\n * <nb-chat-message\n *   type=\"file\"\n *   [files]=\"[ { url: '...' } ]\"\n *   message=\"Hello world!\">\n * </nb-chat-message>\n * ```\n *\n * Map message:\n * ```html\n * <nb-chat-message\n *   type=\"map\"\n *   [latitude]=\"53.914\"\n *   [longitude]=\"27.59\"\n *   message=\"Here I am\">\n * </nb-chat-message>\n * ```\n *\n * @styles\n *\n * chat-message-background:\n * chat-message-text-color:\n * chat-message-reply-background-color:\n * chat-message-reply-text-color:\n * chat-message-avatar-background-color:\n * chat-message-sender-text-color:\n * chat-message-quote-background-color:\n * chat-message-quote-text-color:\n * chat-message-file-text-color:\n * chat-message-file-background-color:\n */\n@Component({\n    selector: 'nb-chat-message',\n    template: `\n    <nb-chat-avatar *ngIf=\"notReply\" [initials]=\"getInitials()\" [avatarStyle]=\"avatarStyle\"> </nb-chat-avatar>\n\n    <div class=\"message\">\n      <ng-container [ngSwitch]=\"type\" *ngIf=\"_isBuiltInMessageType(); else customTemplate\">\n        <nb-chat-message-file\n          *ngSwitchCase=\"'file'\"\n          [sender]=\"sender\"\n          [date]=\"date\"\n          [dateFormat]=\"dateFormat\"\n          [message]=\"message\"\n          [files]=\"files\"\n        >\n        </nb-chat-message-file>\n\n        <nb-chat-message-quote\n          *ngSwitchCase=\"'quote'\"\n          [sender]=\"sender\"\n          [date]=\"date\"\n          [dateFormat]=\"dateFormat\"\n          [message]=\"message\"\n          [quote]=\"quote\"\n        >\n        </nb-chat-message-quote>\n\n        <nb-chat-message-map\n          *ngSwitchCase=\"'map'\"\n          [sender]=\"sender\"\n          [date]=\"date\"\n          [message]=\"message\"\n          [latitude]=\"latitude\"\n          [longitude]=\"longitude\"\n        >\n        </nb-chat-message-map>\n\n        <nb-chat-message-text\n          *ngSwitchDefault\n          [sender]=\"sender\"\n          [date]=\"date\"\n          [dateFormat]=\"dateFormat\"\n          [message]=\"message\"\n        >\n        </nb-chat-message-text>\n      </ng-container>\n    </div>\n\n    <ng-template #customTemplate>\n      <nb-chat-message-text [sender]=\"sender\" [date]=\"date\" [dateFormat]=\"dateFormat\" [message]=\"message\">\n      </nb-chat-message-text>\n      <div\n        [class.nb-custom-message]=\"_areDefaultStylesEnabled()\"\n        [class.nb-custom-message-no-space]=\"_addNoSpaceClass\"\n        [class.nb-custom-message-reply]=\"_addReplyClass\"\n        [class.nb-custom-message-not-reply]=\"_addNotReplyClass\"\n        [class.nb-custom-message-full-width]=\"!_areDefaultStylesEnabled()\"\n      >\n        <ng-container [ngTemplateOutlet]=\"_getTemplate()\" [ngTemplateOutletContext]=\"_getTemplateContext()\">\n        </ng-container>\n      </div>\n    </ng-template>\n  `,\n    animations: [\n        trigger('flyInOut', [\n            state('in', style({ transform: 'translateX(0)' })),\n            transition('void => *', [style({ transform: 'translateX(-100%)' }), animate(80)]),\n            transition('* => void', [animate(80, style({ transform: 'translateX(100%)' }))]),\n        ]),\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbChatMessageComponent {\n  protected readonly builtInMessageTypes: string[] = ['text', 'file', 'map', 'quote'];\n\n  avatarStyle: SafeStyle;\n\n  get _addReplyClass(): boolean {\n    return this._areDefaultStylesEnabled() && this.reply;\n  }\n\n  get _addNotReplyClass(): boolean {\n    return this._areDefaultStylesEnabled() && this.notReply;\n  }\n\n  get _addNoSpaceClass(): boolean {\n    return this._areDefaultStylesEnabled() && !this.message;\n  }\n\n  @HostBinding('@flyInOut')\n  get flyInOut() {\n    return true;\n  }\n\n  @HostBinding('class.not-reply')\n  get notReply() {\n    return !this.reply;\n  }\n\n  /**\n   * Determines if a message is a reply\n   */\n  @Input()\n  @HostBinding('class.reply')\n  get reply(): boolean {\n    return this._reply;\n  }\n  set reply(value: boolean) {\n    this._reply = convertToBoolProperty(value);\n  }\n  protected _reply: boolean = false;\n  static ngAcceptInputType_reply: NbBooleanInput;\n\n  /**\n   * Message sender\n   * @type {string}\n   */\n  @Input() message: string;\n\n  /**\n   * Message sender\n   * @type {string}\n   */\n  @Input() sender: string;\n\n  /**\n   * Message send date\n   * @type {Date}\n   */\n  @Input() date: Date;\n\n  /**\n   * Message send date format, default 'shortTime'\n   * @type {string}\n   */\n  @Input() dateFormat: string;\n\n  /**\n   * Array of files `{ url: 'file url', icon: 'file icon class' }`\n   */\n  @Input() files: NbChatMessageFile[];\n\n  /**\n   * Quoted message text\n   * @type {string}\n   */\n  @Input() quote: string;\n\n  /**\n   * Map latitude\n   * @type {number}\n   */\n  @Input() latitude: number;\n\n  /**\n   * Map longitude\n   * @type {number}\n   */\n  @Input() longitude: number;\n\n  /**\n   * Message send avatar\n   * @type {string}\n   */\n  @Input()\n  set avatar(value: string) {\n    this.avatarStyle = value ? this.domSanitizer.bypassSecurityTrustStyle(`url(${value})`) : null;\n  }\n\n  /**\n   * Message type, available options `text|file|map|quote`\n   * @type {string}\n   */\n  @Input() type: string;\n\n  /**\n   * Data which will be set as custom message template context\n   * @type {any}\n   */\n  @Input() customMessageData: any;\n\n  constructor(protected domSanitizer: DomSanitizer, protected customMessageService: NbChatCustomMessageService) {}\n\n  getInitials(): string {\n    if (this.sender) {\n      const names = this.sender.split(' ');\n      return names\n        .map((n) => n.charAt(0))\n        .splice(0, 2)\n        .join('')\n        .toUpperCase();\n    }\n    return '';\n  }\n\n  _isBuiltInMessageType(): boolean {\n    // Unset type defaults to \"text\" type\n    return this.type == null || this.builtInMessageTypes.includes(this.type);\n  }\n\n  _getTemplate(): TemplateRef<any> {\n    const customMessage = this.getCustomMessage(this.type);\n    return customMessage.templateRef;\n  }\n\n  _getTemplateContext(): { $implicit: any; isReply: boolean } {\n    return { $implicit: this.customMessageData, isReply: this.reply };\n  }\n\n  _areDefaultStylesEnabled(): boolean {\n    const customMessageDirective = this.getCustomMessage(this.type);\n    return !customMessageDirective.noStyles;\n  }\n\n  protected getCustomMessage(type: string): NbChatCustomMessageDirective {\n    const customMessageDirective = this.customMessageService.getInstance(type);\n    if (!customMessageDirective) {\n      throw new Error(\n        `nb-chat: Can't find template for custom type '${type}'. ` +\n          `Make sure you provide it in the chat component with *nbCustomMessage='${type}'.`,\n      );\n    }\n    return customMessageDirective;\n  }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n    selector: `[nbChatTitle]`,\n    standalone: false\n})\nexport class NbChatTitleDirective {\n  @Input() context: Object = {};\n\n  constructor(public templateRef: TemplateRef<any>) {}\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  Input,\n  HostBinding,\n  ViewChild,\n  ElementRef,\n  ContentChildren,\n  QueryList,\n  AfterViewInit,\n  ContentChild,\n  SimpleChanges,\n  AfterContentInit,\n  OnChanges,\n} from '@angular/core';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbChatFormComponent } from './chat-form.component';\nimport { NbChatMessageComponent } from './chat-message.component';\nimport { NbChatCustomMessageService } from './chat-custom-message.service';\nimport { NbChatTitleDirective } from './chat-title.directive';\n\n/**\n * Conversational UI collection - a set of components for chat-like UI construction.\n *\n * Main features:\n * - different message types support (text, image, file, file group, map, etc)\n * - drag & drop for images and files with preview\n * - different UI styles\n * - custom action buttons (coming soon)\n *\n * Here's a complete example build in a bot-like app. Type `help` to be able to receive different message types.\n * Enjoy the conversation and the beautiful UI.\n * @stacked-example(Showcase, chat/chat-showcase.component)\n *\n * Basic chat configuration and usage:\n * ```ts\n * <nb-chat title=\"Nebular Conversational UI\">\n *       <nb-chat-message *ngFor=\"let msg of messages\"\n *                        [type]=\"msg.type\"\n *                        [message]=\"msg.text\"\n *                        [reply]=\"msg.reply\"\n *                        [sender]=\"msg.user.name\"\n *                        [date]=\"msg.date\"\n *                        [files]=\"msg.files\"\n *                        [quote]=\"msg.quote\"\n *                        [latitude]=\"msg.latitude\"\n *                        [longitude]=\"msg.longitude\"\n *                        [avatar]=\"msg.user.avatar\">\n *   </nb-chat-message>\n *\n *   <nb-chat-form (send)=\"sendMessage($event)\" [dropFiles]=\"true\">\n *   </nb-chat-form>\n * </nb-chat>\n * ```\n * ### Installation\n *\n * Import `NbChatModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbChatModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n *\n * If you need to provide an API key for a `map` message type (which is required by Google Maps)\n * you may use `NbChatModule.forRoot({ ... })` call if this is a global app configuration\n * or `NbChatModule.forChild({ ... })` for a feature module configuration:\n *\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbChatModule.forRoot({ messageGoogleMapKey: 'MAP_KEY' }),\n *   ],\n * })\n * export class AppModule { }\n * ```\n *\n * ### Usage\n *\n * There are three main components:\n * ```ts\n * <nb-chat>\n * </nb-chat> // chat container\n *\n * <nb-chat-form>\n * </nb-chat-form> // chat form with drag&drop files feature\n *\n * <nb-chat-message>\n * </nb-chat-message> // chat message, available multiple types\n * ```\n *\n * You could provide a title template via the `nbChatTitle` directive. It overrides `title` input.\n * @stacked-example(Custom template as a title, chat/chat-template-title.component)\n *\n * Two users conversation showcase:\n * @stacked-example(Conversation, chat/chat-conversation-showcase.component)\n *\n * Chat UI is also available in different colors by specifying a `[status]` input:\n *\n * @stacked-example(Colored Chat, chat/chat-colors.component)\n *\n * Also it is possible to configure sizes through `[size]` input:\n *\n * @stacked-example(Chat Sizes, chat/chat-sizes.component)\n *\n * # Custom message types\n *\n * Besides built-in message types, you could provide custom ones with their own template to render.\n * As an example, let's add the `link` message type.\n * <br>\n * First, you need to provide a template for the `link` message type:\n * ```html\n * <nb-chat>\n *   <a *nbCustomMessage=\"'link'\" href=\"https://example.com\">example.com</a>\n * </nb-chat>\n * ```\n * Then, add the `nb-chat-message` component with the `link` type:\n * ```html\n * <nb-chat>\n *   <a *nbCustomMessage=\"'link'\" href=\"https://example.com\">example.com</a>\n *   <nb-chat-message type=\"link\"></nb-chat-message>\n * </nb-chat>\n * ```\n *\n * <div class=\"note note-warning\">\n *   <div class=\"note-title\">Important!</div>\n *   <div class=\"note-body\">\n *     Custom chat messages must be defined before the `nb-chat-message`.\n *   </div>\n * </div>\n *\n * Custom message templates could have arbitrary data associated with them. Let's extract hardcoded link\n * href and text. To pass some data to the custom message template, use the `customMessageData` input\n * of the `nb-chat-message` component:\n * ```html\n * ...\n * <nb-chat-message type=\"link\" [customMessageData]=\"{ href: 'https://example.com', text: 'example.com' }\">\n * </nb-chat-message>\n * ...\n * ```\n * When `customMessageData` is set, this object would become a template context and you'll be able\n * to reference it via `let varName` syntax:\n * ```html\n * <a *nbCustomMessage=\"'link'; let data\" [href]=\"data.href\">{{ data.text }}</a>\n * ```\n *\n * That's it, full example will look like this:\n * ```html\n * <nb-chat title=\"Nebular Conversational UI\">\n *   <a *nbCustomMessage=\"'link'; let data\" [href]=\"data.href\">{{ data.text }}</a>\n *   <nb-chat-message type=\"link\" [customMessageData]=\"{ href: 'https://example.com', text: 'example.com' }\">\n *   </nb-chat-message>\n * </nb-chat>\n * ```\n *\n * If you want to style your custom template from the ground up you could turn off generic message styling\n * (such as round borders, color, background, etc.) via the `noStyles` input:\n * ```html\n *   <div *nbCustomMessage=\"'my-custom-type'; noStyles: true\">...</div>\n * ```\n * When you decide to use your own styles, the `isReply` property of the custom message template context\n * would come in handy. This property allows you to determine whether the message is a reply or not.\n * For example, to change link text color (as replies have a different background):\n * ```html\n * <a *nbCustomMessage=\"'link'; let data; let isReply=isReply\"\n *    [href]=\"data.href\"\n *    [class.link-control]=\"!isReply\">\n *   {{ data.label }}\n * </a>\n * ```\n *\n * Below, you could find a more complex example with multiple custom message types:\n * @stacked-example(Custom message, chat/chat-custom-message.component)\n *\n * @styles\n *\n * chat-background-color:\n * chat-border:\n * chat-border-radius:\n * chat-shadow:\n * chat-padding:\n * chat-scrollbar-color:\n * chat-scrollbar-background-color:\n * chat-scrollbar-width:\n * chat-text-color:\n * chat-text-font-family:\n * chat-text-font-size:\n * chat-text-font-weight:\n * chat-text-line-height:\n * chat-header-text-font-family:\n * chat-header-text-font-size:\n * chat-header-text-font-weight:\n * chat-header-text-line-height:\n * chat-tiny-height:\n * chat-small-height:\n * chat-medium-height:\n * chat-large-height:\n * chat-giant-height:\n * chat-basic-background-color:\n * chat-basic-text-color:\n * chat-primary-background-color:\n * chat-primary-text-color:\n * chat-success-background-color:\n * chat-success-text-color:\n * chat-info-background-color:\n * chat-info-text-color:\n * chat-warning-background-color:\n * chat-warning-text-color:\n * chat-danger-background-color:\n * chat-danger-text-color:\n * chat-control-background-color:\n * chat-control-text-color:\n * chat-divider-color:\n * chat-divider-style:\n * chat-divider-width:\n * chat-message-background:\n * chat-message-text-color:\n * chat-message-reply-background-color:\n * chat-message-reply-text-color:\n * chat-message-avatar-background-color:\n * chat-message-sender-text-color:\n * chat-message-quote-background-color:\n * chat-message-quote-text-color:\n * chat-message-file-text-color:\n * chat-message-file-background-color:\n */\n@Component({\n    selector: 'nb-chat',\n    styleUrls: ['./chat.component.scss'],\n    template: `\n    <div class=\"header\">\n      <ng-container\n        *ngIf=\"titleTemplate; else textTitleTemplate\"\n        [ngTemplateOutlet]=\"titleTemplate.templateRef\"\n        [ngTemplateOutletContext]=\"{ $implicit: titleTemplate.context }\"\n      >\n      </ng-container>\n      <ng-template #textTitleTemplate>\n        {{ title }}\n      </ng-template>\n    </div>\n\n    <div class=\"scrollable\" #scrollable>\n      <div class=\"messages\">\n        <ng-content select=\"nb-chat-message\"></ng-content>\n        <p class=\"no-messages\" *ngIf=\"!messages?.length\">{{ noMessagesPlaceholder }}</p>\n      </div>\n    </div>\n    <div class=\"form\">\n      <ng-content select=\"nb-chat-form\"></ng-content>\n    </div>\n  `,\n    providers: [NbChatCustomMessageService],\n    standalone: false\n})\nexport class NbChatComponent implements OnChanges, AfterContentInit, AfterViewInit {\n  @Input() title: string;\n\n  /**\n   * Chat size, available sizes:\n   * `tiny`, `small`, `medium`, `large`, `giant`\n   */\n  @Input() size: NbComponentSize;\n\n  /**\n   * Chat status color (adds specific styles):\n   * `basic` (default), `primary`, `success`, `info`, `warning`, `danger`, `control`.\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  @Input() noMessagesPlaceholder: string = 'No messages yet.';\n\n  /**\n   * Scroll chat to the bottom of the list when a new message arrives\n   */\n  @Input()\n  get scrollBottom(): boolean {\n    return this._scrollBottom;\n  }\n  set scrollBottom(value: boolean) {\n    this._scrollBottom = convertToBoolProperty(value);\n  }\n  protected _scrollBottom: boolean = true;\n  static ngAcceptInputType_scrollBottom: NbBooleanInput;\n\n  @ViewChild('scrollable') scrollable: ElementRef;\n  @ContentChildren(NbChatMessageComponent) messages: QueryList<NbChatMessageComponent>;\n  @ContentChild(NbChatFormComponent) chatForm: NbChatFormComponent;\n  @ContentChild(NbChatTitleDirective) titleTemplate: NbChatTitleDirective;\n\n  constructor(protected statusService: NbStatusService) {}\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('status' in changes) {\n      this.updateFormStatus();\n    }\n  }\n\n  ngAfterContentInit() {\n    this.updateFormStatus();\n  }\n\n  ngAfterViewInit() {\n    this.messages.changes.subscribe((messages) => {\n      this.messages = messages;\n      this.updateView();\n    });\n\n    this.updateView();\n  }\n\n  updateView() {\n    if (this.scrollBottom) {\n      this.scrollListBottom();\n    }\n  }\n\n  scrollListBottom() {\n    this.scrollable.nativeElement.scrollTop = this.scrollable.nativeElement.scrollHeight;\n  }\n\n  protected updateFormStatus(): void {\n    if (this.chatForm) {\n      this.chatForm.setStatus(this.status);\n    }\n  }\n\n  @HostBinding('class.size-tiny')\n  get tiny(): boolean {\n    return this.size === 'tiny';\n  }\n\n  @HostBinding('class.size-small')\n  get small(): boolean {\n    return this.size === 'small';\n  }\n\n  @HostBinding('class.size-medium')\n  get medium(): boolean {\n    return this.size === 'medium';\n  }\n\n  @HostBinding('class.size-large')\n  get large(): boolean {\n    return this.size === 'large';\n  }\n\n  @HostBinding('class.size-giant')\n  get giant(): boolean {\n    return this.size === 'giant';\n  }\n\n  @HostBinding('class.status-primary')\n  get primary(): boolean {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-success')\n  get success(): boolean {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-info')\n  get info(): boolean {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning(): boolean {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger(): boolean {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic(): boolean {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control(): boolean {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbInputDirective } from './input.directive';\n\nconst NB_INPUT_COMPONENTS = [\n  NbInputDirective,\n];\n\n@NgModule({\n  imports: [ NbSharedModule ],\n  declarations: NB_INPUT_COMPONENTS,\n  exports: NB_INPUT_COMPONENTS,\n})\nexport class NbInputModule {}\n","import { Directive, Input, OnDestroy, OnInit, TemplateRef } from '@angular/core';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbChatCustomMessageService } from './chat-custom-message.service';\n\nfunction throwCustomMessageTypeIsRequired(): void {\n  throw new Error('[nbCustomMessage]: custom message type is required.');\n}\n\n/**\n * `[nbCustomMessage]` directive should be used as a structural directive or should be applied to the `ng-template`:\n *\n * ```html\n * <div *nbCustomMessage=\"'my-custom-type'; let data\">\n *   <!-- custom message -->\n * </div>\n * ```\n * or\n * ```html\n * <ng-template nbCustomMessage='my-custom-type' let-data>\n *   <!-- custom message -->\n * </ng-template>\n * ```\n */\n@Directive({\n    selector: `[nbCustomMessage]`,\n    standalone: false\n})\nexport class NbChatCustomMessageDirective implements OnInit, OnDestroy {\n  /**\n   * Defines a message type which should rendered with the custom message template.\n   * @type {string}\n   */\n  @Input()\n  get nbCustomMessage(): string {\n    return this._type;\n  }\n  set nbCustomMessage(value: string) {\n    this._type = value;\n  }\n  protected _type: string;\n\n  get type(): string {\n    return this._type;\n  }\n\n  /**\n   * Disables generic message styles, such as round corners, text color, background, etc.,\n   * so a custom message could be styled from the ground up.\n   *\n   * @type {boolean}\n   */\n  @Input()\n  set nbCustomMessageNoStyles(value: boolean) {\n    this._noStyles = convertToBoolProperty(value);\n  }\n  get nbCustomMessageNoStyles(): boolean {\n    return this._noStyles;\n  }\n  protected _noStyles: boolean = false;\n  static ngAcceptInputType_noStyles: NbBooleanInput;\n\n  get noStyles(): boolean {\n    return this.nbCustomMessageNoStyles;\n  }\n\n  constructor(public templateRef: TemplateRef<any>, protected customMessageService: NbChatCustomMessageService) {}\n\n  ngOnInit() {\n    if (!this._type) {\n      throwCustomMessageTypeIsRequired();\n    }\n    this.customMessageService.register(this.type, this);\n  }\n\n  ngOnDestroy() {\n    this.customMessageService.unregister(this.type);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbButtonModule } from '../button/button.module';\nimport { NbInputModule } from '../input/input.module';\nimport { NbIconModule } from '../icon/icon.module';\n\nimport { NbChatComponent } from './chat.component';\nimport { NbChatMessageComponent } from './chat-message.component';\nimport { NbChatFormComponent } from './chat-form.component';\nimport { NbChatMessageTextComponent } from './chat-message-text.component';\nimport { NbChatMessageFileComponent } from './chat-message-file.component';\nimport { NbChatMessageQuoteComponent } from './chat-message-quote.component';\nimport { NbChatMessageMapComponent } from './chat-message-map.component';\nimport { NbChatOptions } from './chat.options';\nimport { NbChatAvatarComponent } from './chat-avatar.component';\nimport { NbChatCustomMessageDirective } from './chat-custom-message.directive';\nimport { NbChatTitleDirective } from './chat-title.directive';\n\nconst NB_CHAT_COMPONENTS = [\n  NbChatComponent,\n  NbChatMessageComponent,\n  NbChatFormComponent,\n  NbChatMessageTextComponent,\n  NbChatMessageFileComponent,\n  NbChatMessageQuoteComponent,\n  NbChatMessageMapComponent,\n  NbChatAvatarComponent,\n];\n\nconst NB_CHAT_DIRECTIVES = [NbChatCustomMessageDirective, NbChatTitleDirective];\n\n@NgModule({\n  imports: [NbSharedModule, NbIconModule, NbInputModule, NbButtonModule],\n  declarations: [...NB_CHAT_COMPONENTS, ...NB_CHAT_DIRECTIVES],\n  exports: [...NB_CHAT_COMPONENTS, ...NB_CHAT_DIRECTIVES],\n})\nexport class NbChatModule {\n  static forRoot(options?: NbChatOptions): ModuleWithProviders<NbChatModule> {\n    return {\n      ngModule: NbChatModule,\n      providers: [{ provide: NbChatOptions, useValue: options || {} }],\n    };\n  }\n\n  static forChild(options?: NbChatOptions): ModuleWithProviders<NbChatModule> {\n    return {\n      ngModule: NbChatModule,\n      providers: [{ provide: NbChatOptions, useValue: options || {} }],\n    };\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, HostBinding, Input } from '@angular/core';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentOrCustomStatus } from '../component-status';\n\n/**\n * Styled spinner component\n *\n * @styles\n *\n * spinner-text-color:\n * spinner-text-font-family:\n * spinner-text-font-size:\n * spinner-text-font-weight:\n * spinner-text-line-height:\n * spinner-basic-background-color:\n * spinner-basic-circle-filled-color:\n * spinner-basic-circle-empty-color:\n * spinner-primary-background-color:\n * spinner-primary-circle-filled-color:\n * spinner-primary-circle-empty-color:\n * spinner-info-background-color:\n * spinner-info-circle-filled-color:\n * spinner-info-circle-empty-color:\n * spinner-success-background-color:\n * spinner-success-circle-filled-color:\n * spinner-success-circle-empty-color:\n * spinner-warning-background-color:\n * spinner-warning-circle-filled-color:\n * spinner-warning-circle-empty-color:\n * spinner-danger-background-color:\n * spinner-danger-circle-filled-color:\n * spinner-danger-circle-empty-color:\n * spinner-control-background-color:\n * spinner-control-circle-filled-color:\n * spinner-control-circle-empty-color:\n * spinner-height-tiny:\n * spinner-height-small:\n * spinner-height-medium:\n * spinner-height-large:\n * spinner-height-giant:\n */\n@Component({\n    selector: 'nb-spinner',\n    template: `\n    <span class=\"spin-circle\"></span>\n    <span class=\"message\" *ngIf=\"message\">{{ message }}</span>\n  `,\n    styleUrls: ['./spinner.component.scss'],\n    standalone: false\n})\nexport class NbSpinnerComponent {\n\n  /**\n   * Loading text that is shown near the icon\n   * @type string\n   */\n  @Input()\n  message: string = 'Loading...';\n\n  /**\n   * Spinner size, available sizes:\n   * tiny, small, medium, large, giant\n   * @param {string} value\n   */\n  @Input()\n  size: NbComponentSize = 'medium';\n\n  /**\n   * Spinner status (adds specific styles):\n   * `basic`, `primary`, `info`, `success`, `warning`, `danger`, `control`.\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  @HostBinding('class.size-tiny')\n  get tiny() {\n    return this.size === 'tiny';\n  }\n\n  @HostBinding('class.size-small')\n  get small() {\n    return this.size === 'small';\n  }\n\n  @HostBinding('class.size-medium')\n  get medium() {\n    return this.size === 'medium';\n  }\n\n  @HostBinding('class.size-large')\n  get large() {\n    return this.size === 'large';\n  }\n\n  @HostBinding('class.size-giant')\n  get giant() {\n    return this.size === 'giant';\n  }\n\n  @HostBinding('class.status-primary')\n  get primary() {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-info')\n  get info() {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-success')\n  get success() {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning() {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger() {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic() {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control() {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  constructor(protected statusService: NbStatusService) {\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ComponentRef,\n  Directive,\n  ElementRef,\n  Input,\n  Renderer2,\n  ViewContainerRef,\n  HostBinding,\n} from '@angular/core';\n\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbSpinnerComponent } from './spinner.component';\n\n/**\n * Styled spinner directive\n *\n * @stacked-example(Spinner Showcase, spinner/spinner-card.component)\n *\n *\n * ```ts\n * <nb-card [nbSpinner]=\"loading\" nbSpinnerStatus=\"danger\">\n *   <nb-card-body>Card Content</nb-card-body>\n * </nb-card>\n * ```\n *\n * ### Installation\n *\n * Import `NbSpinnerModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbSpinnerModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Could be colored using `status` property\n *\n * @stacked-example(Spinner Colors, spinner/spinner-colors.component)\n *\n * Available in different sizes with `size` property:\n *\n * @stacked-example(Spinner Sizes, spinner/spinner-sizes.component)\n *\n * It is also possible to place it into the button:\n * @stacked-example(Buttons with spinner, spinner/spinner-button.component)\n *\n * Or tabs:\n * @stacked-example(Spinner in tabs, spinner/spinner-tabs.component)\n */\n@Directive({\n    selector: '[nbSpinner]',\n    standalone: false\n})\nexport class NbSpinnerDirective {\n\n  spinner: ComponentRef<NbSpinnerComponent>;\n\n  /**\n   * Spinner message shown next to the icon\n   * @type {string}\n   */\n  @Input('nbSpinnerMessage') spinnerMessage: string;\n\n  /**\n   * Spinner status color\n   * `basic`, `primary`, `info`, `success`, `warning`, `danger`, `control`.\n   */\n  @Input('nbSpinnerStatus') spinnerStatus: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Spinner size. Possible values: `tiny`, `small`, `medium` (default), `large`, `giant`\n   */\n  @Input('nbSpinnerSize') spinnerSize: NbComponentSize = 'medium';\n\n  /**\n   * Directive value - show or hide spinner\n   * @param {boolean} val\n   */\n  @Input('nbSpinner')\n  set nbSpinner(val: boolean) {\n    if (val) {\n      this.show();\n    } else {\n      this.hide();\n    }\n  }\n\n  @HostBinding('class.nb-spinner-container') isSpinnerExist = false;\n\n  constructor(private directiveView: ViewContainerRef,\n              private renderer: Renderer2,\n              private directiveElement: ElementRef) {\n  }\n\n  hide() {\n    if (this.isSpinnerExist) {\n      this.directiveView.remove();\n      this.isSpinnerExist = false;\n    }\n  }\n\n  show() {\n    if (!this.isSpinnerExist) {\n      this.spinner = this.directiveView.createComponent(NbSpinnerComponent);\n      this.setInstanceInputs(this.spinner.instance);\n      this.spinner.changeDetectorRef.detectChanges();\n      this.renderer.appendChild(this.directiveElement.nativeElement, this.spinner.location.nativeElement);\n      this.isSpinnerExist = true;\n    }\n  }\n\n  setInstanceInputs(instance: NbSpinnerComponent) {\n    instance.message = this.spinnerMessage\n    typeof this.spinnerStatus !== 'undefined' && (instance.status = this.spinnerStatus);\n    typeof this.spinnerSize !== 'undefined' && (instance.size = this.spinnerSize);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbSpinnerComponent } from './spinner.component';\nimport { NbSpinnerDirective } from './spinner.directive';\n\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n  ],\n  exports: [NbSpinnerComponent, NbSpinnerDirective],\n  declarations: [NbSpinnerComponent, NbSpinnerDirective],\n})\nexport class NbSpinnerModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const NB_STEPPER = new InjectionToken('Nebular Stepper Component');\n","import { Component, Inject, Input, TemplateRef, ViewChild } from '@angular/core';\nimport { NbStepperComponent } from './stepper.component';\nimport { NB_STEPPER } from './stepper-tokens';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\n\n/**\n * Component intended to be used within  the `<nb-stepper>` component.\n * Container for a step\n */\n@Component({\n    selector: 'nb-step',\n    template: `\n    <ng-template>\n      <ng-content></ng-content>\n    </ng-template>\n  `,\n    standalone: false\n})\nexport class NbStepComponent {\n\n  protected stepper: NbStepperComponent;\n\n  // TODO static must be false as of Angular 9.0.0, issues/1514\n  /**\n   * Step content\n   *\n   * @type {TemplateRef}\n   */\n  @ViewChild(TemplateRef, { static: true }) content: TemplateRef<any>;\n\n  /**\n   * Top level abstract control of the step\n   */\n  @Input() stepControl?: { valid: boolean | null, reset: () => void };\n\n  /**\n   * Step label\n   *\n   * @type {string|TemplateRef<any>}\n   */\n  @Input() label: string|TemplateRef<any>;\n\n  /**\n   * Whether step will be displayed in wizard\n   *\n   * @type {boolean}\n   */\n  @Input()\n  get hidden(): boolean {\n    return this._hidden;\n  }\n  set hidden(value: boolean) {\n    this._hidden = convertToBoolProperty(value);\n  }\n  protected _hidden = false;\n  static ngAcceptInputType_hidden: NbBooleanInput;\n\n  /**\n   * Check that label is a TemplateRef.\n   *\n   * @return boolean\n   * */\n  get isLabelTemplate(): boolean {\n    return this.label instanceof TemplateRef;\n  }\n\n  /**\n   * Whether step is marked as completed.\n   *\n   * @type {boolean}\n   */\n  @Input()\n  get completed(): boolean {\n    return this._completed || this.isCompleted;\n  }\n  set completed(value: boolean) {\n    this._completed = convertToBoolProperty(value);\n  }\n  protected _completed: boolean = false;\n  static ngAcceptInputType_completed: NbBooleanInput;\n\n  protected get isCompleted() {\n    return this.stepControl ? this.stepControl.valid && this.interacted : this.interacted;\n  }\n\n  interacted = false;\n\n  constructor(@Inject(NB_STEPPER) stepper) {\n    this.stepper = stepper;\n  }\n\n  /**\n   * Mark step as selected\n   * */\n  select(): void {\n    this.stepper.selected = this;\n  }\n\n  /**\n   * Reset step and stepControl state\n   * */\n  reset(): void {\n    this.interacted = false;\n    if (this.stepControl) {\n      this.stepControl.reset();\n    }\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  ContentChildren,\n  EventEmitter,\n  HostBinding,\n  Input,\n  Output,\n  QueryList,\n  TemplateRef,\n} from '@angular/core';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NB_STEPPER } from './stepper-tokens';\nimport { NbStepComponent } from './step.component';\n\nexport type NbStepperOrientation = 'vertical' | 'horizontal';\n\nexport interface NbStepChangeEvent {\n  index: number;\n  step: NbStepComponent;\n  previouslySelectedIndex: number;\n  previouslySelectedStep: NbStepComponent;\n}\n\n/**\n * Stepper component\n *\n * @stacked-example(Showcase, stepper/stepper-showcase.component)\n *\n * ### Installation\n *\n * Import `NbStepperModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbStepperModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * If step label is string you can pass it as `label` attribute. Otherwise ng-template should be used:\n * ```html\n * // ...\n * <nb-stepper orientation=\"horizontal\">\n *   <nb-step label=\"step number one\">\n *       // ... step content here\n *   </nb-step>\n *   <nb-step label=\"stepLabel\">\n *       <ng-template #stepLabel>\n *           <div>\n *               step number two\n *           </div>\n *       </ng-template>\n *       // ... step content here\n *   </nb-step>\n * </nb-stepper>\n * ```\n *\n * When linear mode enabled user can't move forward unless current step is complete.\n * @stacked-example(Linear, stepper/stepper-linear.component)\n *\n * Specify `[stepControl]=\"form\"` and stepper allow go to the next step only if form is valid.\n * You can disable it via `linear` mode setting.\n * ```html\n * // ...\n * <nb-stepper  orientation=\"horizontal\">\n *   <nb-step label=\"step number one\" [stepControl]=\"form\">\n *     <form [formGroup]=\"form\">\n *       // ...\n *     </form>\n *   </nb-step>\n *    // ...\n * </nb-stepper>\n * ```\n *\n * @stacked-example(Validation, stepper/stepper-validation.component)\n *\n * Stepper component has two layout options - `vertical` & `horizontal`\n * @stacked-example(Vertical, stepper/stepper-vertical.component)\n *\n * `disableStepNavigation` disables navigation by clicking on steps, so user can navigate only using\n * 'nbStepperPrevious' and 'nbStepperNext' buttons.\n * @stacked-example(Disabled steps navigation, stepper/stepper-disabled-step-nav.component)\n *\n * Use `stepChange` output to listening to step change event. This event emits `NbStepChangeEvent` object.\n * @stacked-example(Step change event, stepper/stepper-step-change-event.component)\n *\n * @styles\n *\n * stepper-step-text-color:\n * stepper-step-text-font-family:\n * stepper-step-text-font-size:\n * stepper-step-text-font-weight:\n * stepper-step-text-line-height:\n * stepper-step-active-text-color:\n * stepper-step-completed-text-color:\n * stepper-step-index-border-color:\n * stepper-step-index-border-style:\n * stepper-step-index-border-width:\n * stepper-step-index-border-radius:\n * stepper-step-index-width:\n * stepper-step-index-active-border-color:\n * stepper-step-index-completed-background-color:\n * stepper-step-index-completed-border-color:\n * stepper-step-index-completed-text-color:\n * stepper-connector-background-color:\n * stepper-connector-completed-background-color:\n * stepper-horizontal-connector-margin:\n * stepper-vertical-connector-margin:\n * stepper-step-content-padding:\n */\n@Component({\n    selector: 'nb-stepper',\n    styleUrls: ['./stepper.component.scss'],\n    templateUrl: './stepper.component.html',\n    providers: [{ provide: NB_STEPPER, useExisting: NbStepperComponent }],\n    standalone: false\n})\nexport class NbStepperComponent {\n  /**\n   * Selected step index\n   */\n  @Input()\n  get selectedIndex() {\n    return this._selectedIndex;\n  }\n  set selectedIndex(index: number) {\n    if (!this.steps) {\n      this._selectedIndex = index;\n      return;\n    }\n\n    this.markCurrentStepInteracted();\n    if (this.canBeSelected(index)) {\n      const previouslySelectedIndex = this._selectedIndex;\n      const previouslySelectedStep = this.selected;\n      this._selectedIndex = index;\n\n      this.stepChange.emit({\n        index: this.selectedIndex,\n        step: this.selected,\n        previouslySelectedIndex,\n        previouslySelectedStep,\n      });\n    }\n  }\n\n  protected _selectedIndex: number = 0;\n\n  /**\n   * Disables navigation by clicking on steps. False by default\n   * @param {boolean} value\n   */\n  @Input()\n  set disableStepNavigation(value: boolean) {\n    this._disableStepNavigation = convertToBoolProperty(value);\n  }\n  get disableStepNavigation(): boolean {\n    return this._disableStepNavigation;\n  }\n  protected _disableStepNavigation: boolean = false;\n  static ngAcceptInputType_disableStepNavigation: NbBooleanInput;\n\n  /**\n   * Selected step component\n   */\n  @Input()\n  get selected(): NbStepComponent {\n    return this.steps ? this.steps.toArray()[this.selectedIndex] : undefined;\n  }\n  set selected(step: NbStepComponent) {\n    if (!this.steps) {\n      return;\n    }\n    this.selectedIndex = this.steps.toArray().indexOf(step);\n  }\n\n  /**\n   * Stepper orientation - `horizontal`|`vertical`\n   */\n  @Input() orientation: NbStepperOrientation = 'horizontal';\n\n  /**\n   * Allow moving forward only if the current step is complete\n   * @default true\n   */\n  @Input()\n  set linear(value: boolean) {\n    this._linear = convertToBoolProperty(value);\n  }\n  get linear(): boolean {\n    return this._linear;\n  }\n  protected _linear = true;\n  static ngAcceptInputType_linear: NbBooleanInput;\n\n  /**\n   * Emits when step changed\n   * @type {EventEmitter<NbStepChangeEvent>}\n   */\n  @Output() stepChange = new EventEmitter<NbStepChangeEvent>();\n\n  @HostBinding('class.vertical')\n  get vertical() {\n    return this.orientation === 'vertical';\n  }\n  @HostBinding('class.horizontal')\n  get horizontal() {\n    return this.orientation === 'horizontal';\n  }\n\n  @ContentChildren(NbStepComponent) steps: QueryList<NbStepComponent>;\n\n  /**\n   * Navigate to next step\n   * */\n  next() {\n    this.selectedIndex = Math.min(this.selectedIndex + 1, this.steps.length - 1);\n  }\n\n  /**\n   * Navigate to previous step\n   * */\n  previous() {\n    this.selectedIndex = Math.max(this.selectedIndex - 1, 0);\n  }\n\n  /**\n   * Select step if navigation is not disabled\n   * @param { NbStepComponent } step\n   */\n  changeStep(step: NbStepComponent) {\n    if (!this.disableStepNavigation) {\n      step.select();\n    }\n  }\n\n  /**\n   * Reset stepper and stepControls to initial state\n   * */\n  reset() {\n    const previouslySelectedIndex = this.selectedIndex;\n    const previouslySelectedStep = this.selected;\n\n    this._selectedIndex = 0;\n    this.steps.forEach((step) => step.reset());\n\n    this.stepChange.emit({\n      index: this.selectedIndex,\n      step: this.selected,\n      previouslySelectedIndex,\n      previouslySelectedStep,\n    });\n  }\n\n  isStepSelected(step: NbStepComponent) {\n    return this.selected === step;\n  }\n\n  /*\n   * @docs-private\n   **/\n  getStepTemplate(step: NbStepComponent): TemplateRef<any> | null {\n    if (step.isLabelTemplate) {\n      return step.label as TemplateRef<any>;\n    }\n    return null;\n  }\n\n  protected isStepValid(index: number): boolean {\n    return this.steps.toArray()[index].completed;\n  }\n\n  protected canBeSelected(indexToCheck: number): boolean {\n    const noSteps = !this.steps || this.steps.length === 0;\n    if (noSteps || indexToCheck < 0 || indexToCheck >= this.steps.length || indexToCheck === this.selectedIndex) {\n      return false;\n    }\n\n    if (indexToCheck <= this.selectedIndex || !this.linear) {\n      return true;\n    }\n\n    let isAllStepsValid = true;\n    for (let i = this.selectedIndex; i < indexToCheck; i++) {\n      if (!this.isStepValid(i)) {\n        isAllStepsValid = false;\n        break;\n      }\n    }\n    return isAllStepsValid;\n  }\n\n  protected markCurrentStepInteracted() {\n    if (this.selected) {\n      this.selected.interacted = true;\n    }\n  }\n}\n","<ng-template><ng-content select=\"nb-step\"></ng-content></ng-template>\n<div class=\"header\">\n  <ng-container *ngFor=\"let step of steps; let index = index; let first = first\">\n\n    <div *ngIf=\"!first && !step.hidden\"\n         [class.connector-past]=\"index <= selectedIndex\"\n         class=\"connector\"></div>\n\n    <div *ngIf=\"!step.hidden\" class=\"step\"\n         [class.selected]=\"isStepSelected(step)\"\n         [class.completed]=\"!isStepSelected(step) && step.completed\"\n         [class.noninteractive]=\"disableStepNavigation\"\n         (click)=\"changeStep(step)\">\n      <div class=\"label-index\">\n        <span *ngIf=\"!step.completed || isStepSelected(step)\">{{ index + 1 }}</span>\n        <nb-icon *ngIf=\"!isStepSelected(step) && step.completed\" icon=\"checkmark-outline\" pack=\"nebular-essentials\">\n        </nb-icon>\n      </div>\n      <div class=\"label\">\n        <ng-container *ngIf=\"step.isLabelTemplate\">\n          <ng-container *ngTemplateOutlet=\"getStepTemplate(step)\"></ng-container>\n        </ng-container>\n        <span *ngIf=\"!step.isLabelTemplate\">{{ step.label }}</span>\n      </div>\n    </div>\n  </ng-container>\n</div>\n<div class=\"step-content\">\n  <ng-container [ngTemplateOutlet]=\"selected?.content\"></ng-container>\n</div>\n","import { NbStepperComponent } from './stepper.component';\nimport { Directive, HostBinding, HostListener, Input } from '@angular/core';\n\n@Directive({\n    selector: 'button[nbStepperNext]',\n    standalone: false\n})\nexport class NbStepperNextDirective {\n\n  @Input() @HostBinding('attr.type') type: string = 'submit';\n\n  constructor(protected stepper: NbStepperComponent) {\n  }\n\n  @HostListener('click')\n  onClick() {\n    this.stepper.next();\n  }\n}\n\n@Directive({\n    selector: 'button[nbStepperPrevious]',\n    standalone: false\n})\nexport class NbStepperPreviousDirective {\n\n  @Input() @HostBinding('attr.type') type: string = 'button';\n\n  constructor(protected stepper: NbStepperComponent) {\n  }\n\n  @HostListener('click')\n  onClick() {\n    this.stepper.previous();\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbStepperComponent } from './stepper.component';\nimport { NbStepComponent } from './step.component';\nimport { NbStepperNextDirective, NbStepperPreviousDirective } from './stepper-button.directive';\nimport { NbIconModule } from '../icon/icon.module';\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n    NbIconModule,\n  ],\n  declarations: [\n    NbStepperComponent,\n    NbStepComponent,\n    NbStepperNextDirective,\n    NbStepperPreviousDirective,\n  ],\n  exports: [\n    NbStepperComponent,\n    NbStepComponent,\n    NbStepperNextDirective,\n    NbStepperPreviousDirective,\n  ],\n})\nexport class NbStepperModule {\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\n\n/**\n * An accordion allows to toggle the display of sections of content\n *\n * Basic example\n * @stacked-example(Showcase, accordion/accordion-showcase.component)\n *\n * ```ts\n * <nb-accordion>\n *  <nb-accordion-item>\n *   <nb-accordion-item-header>Product Details</nb-accordion-item-header>\n *   <nb-accordion-item-body>\n *     Item Content\n *   </nb-accordion-item-body>\n *  </nb-accordion-item>\n * </nb-accordion>\n * ```\n * ### Installation\n *\n * Import `NbAccordionModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbAccordionModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * With `multi` mode accordion can have multiple items expanded:\n * @stacked-example(Multiple expanded items, accordion/accordion-multi.component)\n *\n * `NbAccordionItemComponent` has several methods, for example it is possible to trigger item click/toggle:\n * @stacked-example(Expand API, accordion/accordion-toggle.component)\n *\n * @styles\n *\n * accordion-border-radius:\n * accordion-padding:\n * accordion-shadow:\n * accordion-header-text-color:\n * accordion-header-text-font-family:\n * accordion-header-text-font-size:\n * accordion-header-text-font-weight:\n * accordion-header-text-line-height:\n * accordion-header-disabled-text-color:\n * accordion-header-border-color:\n * accordion-header-border-style:\n * accordion-header-border-width:\n * accordion-item-background-color:\n * accordion-item-text-color:\n * accordion-item-text-font-family:\n * accordion-item-text-font-size:\n * accordion-item-text-font-weight:\n * accordion-item-text-line-height:\n */\n@Component({\n    selector: 'nb-accordion',\n    template: `\n    <ng-content select=\"nb-accordion-item\"></ng-content>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbAccordionComponent {\n\n  openCloseItems = new Subject<boolean>();\n\n  /**\n   *  Allow multiple items to be expanded at the same time.\n   * @type {boolean}\n   */\n  @Input('multi')\n  get multi(): boolean {\n    return this.multiValue;\n  }\n  set multi(val: boolean) {\n    this.multiValue = convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_multi: NbBooleanInput;\n\n  private multiValue = false;\n\n  /**\n   * Opens all enabled accordion items.\n   */\n  openAll() {\n    if (this.multi) {\n      this.openCloseItems.next(false);\n    }\n  }\n\n  /**\n   * Closes all enabled accordion items.\n   */\n  closeAll() {\n    this.openCloseItems.next(true);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Input,\n  Output,\n  EventEmitter,\n  SimpleChanges,\n  HostBinding,\n  Host,\n  OnInit,\n  OnChanges,\n  OnDestroy,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NbAccordionComponent } from './accordion.component';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\n\n/**\n * Component intended to be used within `<nb-accordion>` component\n */\n@Component({\n    selector: 'nb-accordion-item',\n    styleUrls: ['./accordion-item.component.scss'],\n    template: `\n    <ng-content select=\"nb-accordion-item-header\"></ng-content>\n    <ng-content select=\"nb-accordion-item-body\"></ng-content>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbAccordionItemComponent implements OnInit, OnChanges, OnDestroy {\n\n  /**\n   * Item is collapse (`true` by default)\n   * @type {boolean}\n   */\n  @Input('collapsed')\n  @HostBinding('class.collapsed')\n  get collapsed(): boolean {\n    return this.collapsedValue;\n  }\n  set collapsed(val: boolean) {\n    this.collapsedValue = convertToBoolProperty(val);\n    this.collapsedChange.emit(this.collapsedValue);\n    this.invalidate();\n  }\n  static ngAcceptInputType_collapsed: NbBooleanInput;\n\n  /**\n   * Item is expanded (`false` by default)\n   * @type {boolean}\n   */\n  @Input('expanded')\n  @HostBinding('class.expanded')\n  get expanded(): boolean {\n    return !this.collapsed;\n  }\n  set expanded(val: boolean) {\n    this.collapsedValue = !convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_expanded: NbBooleanInput;\n\n  /**\n   * Item is disabled and cannot be opened.\n   * @type {boolean}\n   */\n  @Input('disabled')\n  @HostBinding('class.disabled')\n  get disabled(): boolean {\n    return this.disabledValue;\n  }\n  set disabled(val: boolean) {\n    this.disabledValue = convertToBoolProperty(val);\n    this.invalidate();\n  }\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  /**\n   * Emits whenever the expanded state of the accordion changes.\n   * Primarily used to facilitate two-way binding.\n   */\n  @Output() collapsedChange = new EventEmitter<boolean>();\n\n  accordionItemInvalidate = new Subject<boolean>();\n\n  private collapsedValue = true;\n  private disabledValue = false;\n  private destroy$ = new Subject<void>();\n\n  constructor(@Host() private accordion: NbAccordionComponent, private cd: ChangeDetectorRef) {\n  }\n\n  /**\n   * Open/close the item\n   */\n  toggle() {\n    if (!this.disabled) {\n      // we need this temporary variable as `openCloseItems.next` will change current value we need to save\n      const willSet = !this.collapsed;\n\n      if (!this.accordion.multi) {\n        this.accordion.openCloseItems.next(true);\n      }\n      this.collapsed = willSet;\n    }\n  }\n\n  /**\n   * Open the item.\n   */\n  open() {\n    !this.disabled && (this.collapsed = false);\n  }\n\n  /**\n   * Collapse the item.\n   */\n  close() {\n    !this.disabled && (this.collapsed = true);\n  }\n\n  ngOnInit() {\n    this.accordion.openCloseItems\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(collapsed => {\n        !this.disabled && (this.collapsed = collapsed);\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    this.accordionItemInvalidate.next(true);\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n    this.accordionItemInvalidate.complete();\n  }\n\n  private invalidate() {\n    this.accordionItemInvalidate.next(true);\n    this.cd.markForCheck();\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  ChangeDetectionStrategy,\n  Host,\n  ChangeDetectorRef,\n  OnInit,\n  OnDestroy,\n} from '@angular/core';\nimport { trigger, state, style, animate, transition } from '@angular/animations';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { NbAccordionItemComponent } from './accordion-item.component';\n\nconst accordionItemBodyTrigger = trigger('accordionItemBody', [\n  state(\n    'collapsed',\n    style({\n      overflow: 'hidden',\n      visibility: 'hidden',\n      height: 0,\n    }),\n  ),\n  state(\n    'expanded',\n    style({\n      overflow: 'hidden',\n      visibility: 'visible',\n    }),\n  ),\n  transition('collapsed => expanded', animate('100ms ease-in')),\n  transition('expanded => collapsed', animate('100ms ease-out')),\n]);\n\n/**\n * Component intended to be used within `<nb-accordion-item>` component\n */\n@Component({\n    selector: 'nb-accordion-item-body',\n    template: `\n    <div [@accordionItemBody]=\"{ value: state }\">\n      <div class=\"item-body\">\n        <ng-content></ng-content>\n      </div>\n    </div>\n  `,\n    animations: [accordionItemBodyTrigger],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbAccordionItemBodyComponent implements OnInit, OnDestroy {\n  private destroy$ = new Subject<void>();\n\n  constructor(@Host() private accordionItem: NbAccordionItemComponent, private cd: ChangeDetectorRef) {}\n\n  get state(): string {\n    return this.accordionItem.collapsed ? 'collapsed' : 'expanded';\n  }\n\n  ngOnInit() {\n    this.accordionItem.accordionItemInvalidate\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.cd.markForCheck());\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  ChangeDetectionStrategy,\n  Host,\n  HostBinding,\n  HostListener,\n  OnInit,\n  OnDestroy,\n  ChangeDetectorRef,\n} from '@angular/core';\nimport { trigger, state, style, animate, transition } from '@angular/animations';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { NbAccordionItemComponent } from './accordion-item.component';\n\n/**\n * Component intended to be used within `<nb-accordion-item>` component\n */\n@Component({\n    selector: 'nb-accordion-item-header',\n    styleUrls: ['./accordion-item-header.component.scss'],\n    template: `\n    <ng-content select=\"nb-accordion-item-title\"></ng-content>\n    <ng-content select=\"nb-accordion-item-description\"></ng-content>\n    <ng-content></ng-content>\n    <nb-icon icon=\"chevron-down-outline\"\n             pack=\"nebular-essentials\"\n             [@expansionIndicator]=\"state\"\n             *ngIf=\"!disabled\"\n             class=\"expansion-indicator\">\n    </nb-icon>\n  `,\n    animations: [\n        trigger('expansionIndicator', [\n            state('expanded', style({\n                transform: 'rotate(180deg)',\n            })),\n            transition('collapsed => expanded', animate('100ms ease-in')),\n            transition('expanded => collapsed', animate('100ms ease-out')),\n        ]),\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbAccordionItemHeaderComponent implements OnInit, OnDestroy {\n\n  @HostBinding('class.accordion-item-header-collapsed')\n  get isCollapsed(): boolean {\n    return this.accordionItem.collapsed;\n  }\n\n  @HostBinding('class.accordion-item-header-expanded')\n  @HostBinding('attr.aria-expanded')\n  get expanded(): boolean {\n    return !this.accordionItem.collapsed;\n  }\n\n  // issue #794\n  @HostBinding('attr.tabindex')\n  get tabbable(): string {\n    return this.accordionItem.disabled ? '-1' : '0';\n  }\n\n  @HostBinding('attr.aria-disabled')\n  get disabled(): boolean {\n    return this.accordionItem.disabled;\n  }\n\n  @HostListener('click')\n  @HostListener('keydown.space')\n  @HostListener('keydown.enter')\n  toggle() {\n    this.accordionItem.toggle();\n  }\n\n  get state(): string {\n    if (this.isCollapsed) {\n      return 'collapsed';\n    }\n    return 'expanded';\n  }\n\n  private destroy$ = new Subject<void>();\n  constructor(@Host() private accordionItem: NbAccordionItemComponent, private cd: ChangeDetectorRef) {\n  }\n\n  ngOnInit() {\n    this.accordionItem.accordionItemInvalidate\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.cd.markForCheck());\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { NbIconModule } from '../icon/icon.module';\nimport { NbAccordionComponent } from './accordion.component';\nimport { NbAccordionItemComponent } from './accordion-item.component';\nimport { NbAccordionItemHeaderComponent } from './accordion-item-header.component';\nimport { NbAccordionItemBodyComponent } from './accordion-item-body.component';\n\nconst NB_ACCORDION_COMPONENTS = [\n  NbAccordionComponent,\n  NbAccordionItemComponent,\n  NbAccordionItemHeaderComponent,\n  NbAccordionItemBodyComponent,\n];\n\n@NgModule({\n  imports: [CommonModule, NbIconModule],\n  exports: [...NB_ACCORDION_COMPONENTS],\n  declarations: [...NB_ACCORDION_COMPONENTS],\n  providers: [],\n})\nexport class NbAccordionModule {}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { InjectionToken } from '@angular/core';\nimport { NbButtonGroupComponent } from './button-group.component';\n\nexport const NB_BUTTON_GROUP = new InjectionToken<NbButtonGroupComponent>('NB_BUTTON_GROUP');\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectorRef,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Inject,\n  Input,\n  NgZone,\n  Optional,\n  Output,\n  Renderer2,\n} from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbButton, NbButtonAppearance } from '../button/base-button';\nimport { NB_BUTTON_GROUP } from './button-group-injection-tokens';\n\nexport type NbButtonToggleAppearance = Exclude<NbButtonAppearance, 'hero'>;\n\nexport interface NbButtonToggleChange {\n  source: NbButtonToggleDirective;\n  pressed: boolean;\n}\n\n/**\n * `[nbButtonToggle]` is a directive to add a `pressed` state to a button.\n */\n@Directive({\n    selector: 'button[nbButtonToggle]',\n    providers: [{ provide: NbButton, useExisting: NbButtonToggleDirective }],\n    exportAs: 'nbButtonToggle',\n    standalone: false\n})\nexport class NbButtonToggleDirective extends NbButton {\n  protected readonly _pressedChange$ = new Subject<NbButtonToggleChange>();\n\n  get pressedChange$(): Observable<NbButtonToggleChange> {\n    return this._pressedChange$.asObservable();\n  }\n\n  @Input() appearance: NbButtonToggleAppearance = 'filled';\n\n  /**\n   * A value associated with the button.\n   */\n  @Input() value: any;\n\n  /**\n   * Controls button pressed state\n   **/\n  @Input()\n  @HostBinding('attr.aria-pressed')\n  get pressed(): boolean {\n    return this._pressed;\n  }\n  set pressed(value: boolean) {\n    if (this.pressed !== convertToBoolProperty(value)) {\n      this._pressed = !this.pressed;\n      this.pressedChange.emit(this.pressed);\n      this._pressedChange$.next({ source: this, pressed: this.pressed });\n    }\n  }\n  protected _pressed: boolean = false;\n  static ngAcceptInputType_pressed: NbBooleanInput;\n\n  /**\n   * Emits whenever button pressed state change\n   **/\n  @Output() readonly pressedChange = new EventEmitter<boolean>();\n\n  @HostBinding('class.status-basic')\n  get basic(): boolean {\n    // By design, all toggle buttons should have a `basic` status when not pressed.\n    return !this.pressed;\n  }\n\n  @HostBinding('class.status-primary')\n  get primary(): boolean {\n    return this.pressed && (this.status === 'basic' || this.status === 'primary');\n  }\n\n  @HostBinding('class.status-success')\n  get success(): boolean {\n    return this.pressed && this.status === 'success';\n  }\n\n  @HostBinding('class.status-info')\n  get info(): boolean {\n    return this.pressed && this.status === 'info';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning(): boolean {\n    return this.pressed && this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger(): boolean {\n    return this.pressed && this.status === 'danger';\n  }\n\n  @HostBinding('class.status-control')\n  get control(): boolean {\n    return this.pressed && this.status === 'control';\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  @HostListener('click')\n  onClick(): void {\n    // Don't remove the pressed state of the button in single-toggle button-groups\n    if (this.buttonGroup?.multiple || !this.pressed) {\n      this.pressed = !this.pressed;\n    }\n  }\n\n  constructor(\n    protected renderer: Renderer2,\n    protected hostElement: ElementRef<HTMLElement>,\n    protected cd: ChangeDetectorRef,\n    protected zone: NgZone,\n    protected statusService: NbStatusService,\n    @Optional() @Inject(NB_BUTTON_GROUP) protected buttonGroup?,\n  ) {\n    super(renderer, hostElement, cd, zone, statusService);\n  }\n\n  /**\n   * @docs-private\n   */\n  _updatePressed(value: boolean) {\n    this.pressed = value;\n    this.cd.markForCheck();\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  Output,\n  QueryList,\n  SimpleChanges,\n} from '@angular/core';\nimport { from, merge, Observable, Subject } from 'rxjs';\nimport { debounceTime, filter, startWith, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentShape } from '../component-shape';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbButton } from '../button/base-button';\nimport { NbButtonToggleAppearance, NbButtonToggleChange, NbButtonToggleDirective } from './button-toggle.directive';\nimport { NB_BUTTON_GROUP } from './button-group-injection-tokens';\n\n/**\n * `<nb-button-group>` visually groups buttons together and allow to control buttons properties and the state as a\n * group.\n * @stacked-example(Button Group Showcase, button-group/button-group-showcase.component)\n *\n * ### Installation\n *\n * Import `NbButtonGroupModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbButtonGroupModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n *\n * ### Usage\n *\n * You can use `<nb-button-group>` to group a series of `[nbButton]` or `[nbButtonToggle]` components.\n * @stacked-example(Button and Button Toggle Groups, button-group/button-and-button-toggle-groups.component)\n *\n * For a group of multiple `[nbButtonToggle]` you also can control multi-selection behavior. By default, the group\n * component allows only one pressed button toggle at a time (similar to the radio group). To be able to keep multiple\n * toggles pressed, you need to add `multiple` attributes to the `<nb-button-toggle>`.\n * @stacked-example(Button Group Multiple, button-group/button-group-multiple.component)\n *\n * To know which buttons are currently pressed listen to `(valueChange)` on the `nb-button-group`. Event\n * contains an array of values of currently pressed button toggles. You can assign a value to the\n * `[nbButtonToggle]` via the `value` input.\n * @stacked-example(Button Group Value Change, button-group/button-group-value-change.component)\n *\n * To disable a group of buttons, add a `disabled` attribute to the `<nb-button-group>`.\n * @stacked-example(Button Group Disabled, button-group/button-group-disabled.component)\n *\n * The group component controls all visual attributes of buttons such as `appearance`, `status`, `size`, `shape`.\n * You can change it via the appropriate attributes.\n *\n * Button group appearances:\n * @stacked-example(Button Group Appearances, button-group/button-group-appearances.component)\n *\n * Button group statuses:\n * @stacked-example(Button Group Statuses, button-group/button-group-statuses.component)\n *\n * Button group sizes:\n * @stacked-example(Button Group Sizes, button-group/button-group-sizes.component)\n *\n * Buttons group shapes:\n * @additional-example(Button Group Shapes, button-group/button-group-shapes.component)\n *\n * @styles\n *\n * button-group-filled-button-basic-text-color:\n * button-group-filled-button-primary-text-color:\n * button-group-filled-button-success-text-color:\n * button-group-filled-button-info-text-color:\n * button-group-filled-button-warning-text-color:\n * button-group-filled-button-danger-text-color:\n * button-group-filled-button-control-text-color:\n * button-group-filled-basic-divider-color:\n * button-group-filled-primary-divider-color:\n * button-group-filled-success-divider-color:\n * button-group-filled-info-divider-color:\n * button-group-filled-warning-divider-color:\n * button-group-filled-danger-divider-color:\n * button-group-filled-control-divider-color:\n * button-group-ghost-divider-color:\n **/\n@Component({\n    selector: 'nb-button-group',\n    template: ` <ng-content></ng-content> `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [{ provide: NB_BUTTON_GROUP, useExisting: NbButtonGroupComponent }],\n    standalone: false\n})\nexport class NbButtonGroupComponent implements OnChanges, AfterContentInit {\n  protected lastEmittedValue: any[] = [];\n\n  protected readonly destroy$: Subject<void> = new Subject<void>();\n  protected readonly buttonsChange$ = new Subject<NbButton[]>();\n\n  @ContentChildren(NbButton) readonly buttons: QueryList<NbButton>;\n\n  /**\n   * Button group size, available sizes:\n   * `tiny`, `small`, `medium`, `large`, `giant`\n   */\n  @Input() size: NbComponentSize = 'medium';\n\n  /**\n   * Button group status (adds specific styles):\n   * `basic`, `primary`, `info`, `success`, `warning`, `danger`, `control`\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Button group shapes: `rectangle`, `round`, `semi-round`\n   */\n  @Input() shape: NbComponentShape = 'rectangle';\n\n  /**\n   * Button group appearance: `filled`, `outline`, `ghost`\n   */\n  @Input() appearance: NbButtonToggleAppearance = 'filled';\n\n  @Input()\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value: boolean) {\n    if (this.disabled !== convertToBoolProperty(value)) {\n      this._disabled = !this.disabled;\n    }\n  }\n  protected _disabled = false;\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  /**\n   * Allows to keep multiple button toggles pressed. Off by default.\n   */\n  @Input()\n  get multiple(): boolean {\n    return this._multiple;\n  }\n  set multiple(value: boolean) {\n    this._multiple = convertToBoolProperty(value);\n  }\n  protected _multiple: boolean = false;\n  static ngAcceptInputType_multiple: NbBooleanInput;\n\n  /**\n   * Sets `filled` appearance\n   */\n  @Input()\n  get filled(): boolean {\n    return this.appearance === 'filled';\n  }\n  set filled(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'filled';\n    }\n  }\n  static ngAcceptInputType_filled: NbBooleanInput;\n\n  /**\n   * Sets `outline` appearance\n   */\n  @Input()\n  get outline(): boolean {\n    return this.appearance === 'outline';\n  }\n  set outline(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'outline';\n    }\n  }\n  static ngAcceptInputType_outline: NbBooleanInput;\n\n  /**\n   * Sets `ghost` appearance\n   */\n  @Input()\n  get ghost(): boolean {\n    return this.appearance === 'ghost';\n  }\n  set ghost(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'ghost';\n    }\n  }\n  static ngAcceptInputType_ghost: NbBooleanInput;\n\n  /**\n   * Emits when `nbButtonToggle` pressed state change. `$event` contains an array of the currently pressed button\n   * toggles.\n   */\n  @Output() valueChange = new EventEmitter<any[]>();\n\n  @HostBinding('attr.role') role = 'group';\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  constructor(protected cd: ChangeDetectorRef, protected statusService: NbStatusService) {}\n\n  ngOnChanges({ size, status, shape, multiple, filled, outline, ghost, disabled }: SimpleChanges) {\n    if (size || status || shape || multiple || filled || outline || ghost || disabled) {\n      this.syncButtonsProperties(this.buttons?.toArray() || []);\n    }\n  }\n\n  ngAfterContentInit(): void {\n    this.buttonsChange$.pipe(takeUntil(this.destroy$)).subscribe((buttons: NbButton[]) => {\n      this.listenButtonPressedState(buttons);\n      this.syncButtonsProperties(buttons);\n    });\n\n    this.buttons.changes\n      .pipe(\n        // `buttons.changes` emit during change detection run after projected content already was initialized.\n        // So at this time, it's too late to update projected buttons properties as updating bindings after\n        // initialization doesn't make sense. Changes won't be picked up and should cause an \"expression changed\" error.\n        // Instead, we wrap the new buttons list into a promise to defer update to the following microtask and also to\n        // trigger change detection one more time.\n        switchMap((buttons: QueryList<NbButton>) => from(Promise.resolve(buttons.toArray()))),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(this.buttonsChange$);\n\n    this.buttonsChange$.next(this.buttons.toArray());\n  }\n\n  protected listenButtonPressedState(buttons: NbButton[]): void {\n    const toggleButtons: NbButtonToggleDirective[] = buttons.filter((button: NbButton) => {\n      return button instanceof NbButtonToggleDirective;\n    }) as NbButtonToggleDirective[];\n\n    if (!toggleButtons.length) {\n      return;\n    }\n\n    const buttonsPressedChange$: Observable<NbButtonToggleChange>[] = toggleButtons.map(\n      (button: NbButtonToggleDirective) => button.pressedChange$,\n    );\n\n    merge(...buttonsPressedChange$)\n      .pipe(\n        filter(({ pressed }: NbButtonToggleChange) => !this.multiple && pressed),\n        takeUntil(merge(this.buttonsChange$, this.destroy$)),\n      )\n      .subscribe(({ source }: NbButtonToggleChange) => {\n        toggleButtons\n          .filter((button: NbButtonToggleDirective) => button !== source)\n          .forEach((button: NbButtonToggleDirective) => button._updatePressed(false));\n      });\n\n    merge(...buttonsPressedChange$)\n      .pipe(\n        // Use startWith to emit if some buttons are initially pressed.\n        startWith(''),\n        // Use debounce to emit change once when pressed state change in multiple button toggles.\n        debounceTime(0),\n        takeUntil(merge(this.buttonsChange$, this.destroy$)),\n      )\n      .subscribe(() => this.emitCurrentValue(toggleButtons));\n  }\n\n  protected syncButtonsProperties(buttons: NbButton[]): void {\n    buttons.forEach((button: NbButton) => {\n      button.updateProperties({\n        appearance: this.appearance,\n        size: this.size,\n        status: this.status,\n        shape: this.shape,\n        disabled: this.disabled,\n      });\n    });\n  }\n\n  protected emitCurrentValue(toggleButtons: NbButtonToggleDirective[]): void {\n    const pressedToggleValues = toggleButtons\n      .filter((b: NbButtonToggleDirective) => b.pressed && typeof b.value !== 'undefined')\n      .map((b: NbButtonToggleDirective) => b.value);\n\n    // Prevent multiple emissions of empty value.\n    if (pressedToggleValues.length === 0 && this.lastEmittedValue.length === 0) {\n      return;\n    }\n\n    this.valueChange.emit(pressedToggleValues);\n    this.lastEmittedValue = pressedToggleValues;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { NbButtonGroupComponent } from './button-group.component';\nimport { NbButtonToggleDirective } from './button-toggle.directive';\n\n@NgModule({\n  declarations: [ NbButtonGroupComponent, NbButtonToggleDirective ],\n  exports: [ NbButtonGroupComponent, NbButtonToggleDirective ],\n})\nexport class NbButtonGroupModule { }\n","import {\n  Directive,\n  ContentChildren,\n  QueryList,\n  Input,\n  ElementRef,\n  AfterViewInit,\n  OnDestroy,\n  Output,\n  EventEmitter,\n} from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { NbListItemComponent } from './list.component';\n\n/**\n * List pager directive\n *\n * Directive allows you to determine page of currently viewing items.\n *\n */\n@Directive({\n    selector: '[nbListPageTracker]',\n    standalone: false\n})\nexport class NbListPageTrackerDirective implements AfterViewInit, OnDestroy {\n  private destroy$ = new Subject<void>();\n\n  private observer: IntersectionObserver;\n  private currentPage: number;\n\n  /**\n   * Items per page.\n   */\n  @Input()\n  pageSize: number;\n\n  /**\n   * Page to start counting with.\n   */\n  @Input()\n  startPage: number = 1;\n\n  /**\n   * Emits when another page become visible.\n   */\n  @Output()\n  pageChange = new EventEmitter<number>();\n\n  @ContentChildren(NbListItemComponent, { read: ElementRef })\n  listItems: QueryList<ElementRef>;\n\n  constructor() {\n    this.observer = new IntersectionObserver((entries) => this.checkForPageChange(entries), { threshold: 0.5 });\n  }\n\n  ngAfterViewInit() {\n    if (this.listItems && this.listItems.length) {\n      this.observeItems();\n    }\n\n    this.listItems.changes.pipe(takeUntil(this.destroy$)).subscribe(() => this.observeItems());\n  }\n\n  ngOnDestroy() {\n    this.observer.disconnect && this.observer.disconnect();\n  }\n\n  private observeItems() {\n    this.listItems.forEach((i) => this.observer.observe(i.nativeElement));\n  }\n\n  private checkForPageChange(entries: IntersectionObserverEntry[]) {\n    const mostVisiblePage = this.findMostVisiblePage(entries);\n\n    if (mostVisiblePage && this.currentPage !== mostVisiblePage) {\n      this.currentPage = mostVisiblePage;\n      this.pageChange.emit(this.currentPage);\n    }\n  }\n\n  private findMostVisiblePage(entries: IntersectionObserverEntry[]): number | null {\n    const intersectionRatioByPage = new Map<number, number>();\n\n    for (const entry of entries) {\n      if (entry.intersectionRatio < 0.5) {\n        continue;\n      }\n\n      const elementIndex = this.elementIndex(entry.target);\n      if (elementIndex === -1) {\n        continue;\n      }\n      const page = this.startPage + Math.floor(elementIndex / this.pageSize);\n\n      let ratio = entry.intersectionRatio;\n      if (intersectionRatioByPage.has(page)) {\n        ratio += intersectionRatioByPage.get(page);\n      }\n      intersectionRatioByPage.set(page, ratio);\n    }\n\n    let maxRatio = 0;\n    let mostVisiblePage;\n    intersectionRatioByPage.forEach((ratio, page) => {\n      if (ratio > maxRatio) {\n        maxRatio = ratio;\n        mostVisiblePage = page;\n      }\n    });\n\n    return mostVisiblePage;\n  }\n\n  private elementIndex(element: Element): number {\n    return element.parentElement && element.parentElement.children\n      ? Array.from(element.parentElement.children).indexOf(element)\n      : -1;\n  }\n}\n","import {\n  Directive,\n  Input,\n  HostListener,\n  ElementRef,\n  EventEmitter,\n  Output,\n  OnDestroy,\n  AfterViewInit,\n  ContentChildren,\n  QueryList,\n} from '@angular/core';\nimport { Observable, forkJoin, of as observableOf, interval, timer, Subject, merge, BehaviorSubject } from 'rxjs';\nimport { filter, switchMap, map, takeUntil, take, throttle } from 'rxjs/operators';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbLayoutScrollService } from '../../services/scroll.service';\nimport { NbLayoutRulerService } from '../../services/ruler.service';\nimport { NbListItemComponent } from './list.component';\n\nexport class NbScrollableContainerDimensions {\n  scrollTop: number;\n  scrollHeight: number;\n  clientHeight: number;\n}\n\n/**\n * Infinite List Directive\n *\n * ```html\n *  <nb-list nbInfiniteList [threshold]=\"500\" (bottomThreshold)=\"loadNext()\">\n *    <nb-list-item *ngFor=\"let item of items\"></nb-list-item>\n *  </nb-list>\n * ```\n *\n * @stacked-example(Simple infinite list, infinite-list/infinite-list-showcase.component)\n *\n * Directive will notify when list scrolled up or down to a given threshold.\n * By default it listen to scroll of list on which applied, but also can be set to listen to window scroll.\n *\n * @stacked-example(Scroll modes, infinite-list/infinite-list-scroll-modes.component)\n *\n * To improve UX of infinite lists, it's better to keep current page in url,\n * so user able to return to the last viewed page or to share a link to this page.\n * `nbListPageTracker` directive will help you to know, what page user currently viewing.\n * Just put it on a list, set page size and it will calculate page that currently in viewport.\n * You can [open the example](example/infinite-list/infinite-news-list.component)\n * in a new tab to check out this feature.\n *\n * @stacked-example(Infinite list with pager, infinite-list/infinite-news-list.component)\n *\n * @stacked-example(Infinite list with placeholders at the top, infinite-list/infinite-list-placeholders.component)\n *\n */\n@Directive({\n    selector: '[nbInfiniteList]',\n    standalone: false\n})\nexport class NbInfiniteListDirective implements AfterViewInit, OnDestroy {\n  private destroy$ = new Subject<void>();\n  private lastScrollPosition;\n  windowScroll = false;\n  private get elementScroll() {\n    return !this.windowScroll;\n  }\n  private elementScroll$ = new Subject<void>();\n  private windowScroll$ = this.scrollService.onScroll().pipe(filter(() => this.windowScroll));\n  private bottomThreshold$ = new Subject<void>();\n  private topThreshold$ = new Subject<void>();\n  private throttleTime$ = new BehaviorSubject<number>(0);\n\n  /**\n   * Threshold after which event load more event will be emited.\n   * In pixels.\n   */\n  @Input()\n  threshold: number;\n\n  /**\n   * Prevent subsequent bottom/topThreshold emissions for specified duration after emitting once.\n   * In milliseconds.\n   */\n  @Input()\n  set throttleTime(value: number) {\n    this.throttleTime$.next(value);\n  }\n  get throttleTime() {\n    return this.throttleTime$.value;\n  }\n\n  /**\n   * By default component observes list scroll position.\n   * If set to `true`, component will observe position of page scroll instead.\n   */\n  @Input()\n  set listenWindowScroll(value) {\n    this.windowScroll = convertToBoolProperty(value);\n  }\n  static ngAcceptInputType_listenWindowScroll: NbBooleanInput;\n\n  /**\n   * Emits when distance between list bottom and current scroll position is less than threshold.\n   */\n  @Output()\n  bottomThreshold = new EventEmitter(true);\n\n  /**\n   * Emits when distance between list top and current scroll position is less than threshold.\n   */\n  @Output()\n  topThreshold = new EventEmitter(true);\n\n  @HostListener('scroll')\n  onElementScroll() {\n    if (this.elementScroll) {\n      this.elementScroll$.next();\n    }\n  }\n\n  @ContentChildren(NbListItemComponent) listItems: QueryList<NbListItemComponent>;\n\n  constructor(\n    private elementRef: ElementRef,\n    private scrollService: NbLayoutScrollService,\n    private dimensionsService: NbLayoutRulerService,\n  ) {}\n\n  ngAfterViewInit() {\n    merge(this.windowScroll$, this.elementScroll$)\n      .pipe(\n        switchMap(() => this.getContainerDimensions()),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((dimensions) => this.checkPosition(dimensions));\n\n    this.throttleTime$\n      .pipe(\n        switchMap(() => this.topThreshold$.pipe(throttle(() => interval(this.throttleTime)))),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => {\n        this.topThreshold.emit();\n      });\n\n    this.throttleTime$\n      .pipe(\n        switchMap(() => this.bottomThreshold$.pipe(throttle(() => interval(this.throttleTime)))),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => {\n        this.bottomThreshold.emit();\n      });\n\n    this.listItems.changes\n      .pipe(\n        // For some reason, changes are emitted before list item removed from dom,\n        // so dimensions will be incorrect.\n        // Check every 50ms for a second if dom and query are in sync.\n        // Once they synchronized, we can get proper dimensions.\n        switchMap(() =>\n          interval(50).pipe(\n            filter(() => this.inSyncWithDom()),\n            take(1),\n            takeUntil(timer(1000)),\n          ),\n        ),\n        switchMap(() => this.getContainerDimensions()),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((dimensions) => this.checkPosition(dimensions));\n\n    this.getContainerDimensions().subscribe((dimensions) => this.checkPosition(dimensions));\n  }\n\n  ngOnDestroy() {\n    this.topThreshold$.complete();\n    this.bottomThreshold$.complete();\n    this.elementScroll$.complete();\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  checkPosition({ scrollHeight, scrollTop, clientHeight }: NbScrollableContainerDimensions) {\n    const initialCheck = this.lastScrollPosition == null;\n    const manualCheck = this.lastScrollPosition === scrollTop;\n    const scrollUp = scrollTop < this.lastScrollPosition;\n    const scrollDown = scrollTop > this.lastScrollPosition;\n    const distanceToBottom = scrollHeight - scrollTop - clientHeight;\n\n    if ((initialCheck || manualCheck || scrollDown) && distanceToBottom <= this.threshold) {\n      this.bottomThreshold$.next();\n    }\n\n    if ((initialCheck || scrollUp) && scrollTop <= this.threshold) {\n      this.topThreshold$.next();\n    }\n\n    this.lastScrollPosition = scrollTop;\n  }\n\n  private getContainerDimensions(): Observable<NbScrollableContainerDimensions> {\n    if (this.elementScroll) {\n      const { scrollTop, scrollHeight, clientHeight } = this.elementRef.nativeElement;\n      return observableOf({ scrollTop, scrollHeight, clientHeight });\n    }\n\n    return forkJoin([this.scrollService.getPosition(), this.dimensionsService.getDimensions()]).pipe(\n      map(([scrollPosition, dimensions]) => ({\n        scrollTop: scrollPosition.y,\n        scrollHeight: dimensions.scrollHeight,\n        clientHeight: dimensions.clientHeight,\n      })),\n    );\n  }\n\n  private inSyncWithDom(): boolean {\n    return this.elementRef.nativeElement.children.length === this.listItems.length;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { NbListComponent, NbListItemComponent } from './list.component';\nimport { NbListPageTrackerDirective } from './list-page-tracker.directive';\nimport { NbInfiniteListDirective } from './infinite-list.directive';\n\nconst components = [\n  NbListComponent,\n  NbListItemComponent,\n  NbListPageTrackerDirective,\n  NbInfiniteListDirective,\n];\n\n@NgModule({\n  declarations: components,\n  exports: components,\n})\nexport class NbListModule {}\n","import { Injectable } from '@angular/core';\nimport { Directionality } from '@angular/cdk/bidi';\n\n@Injectable()\nexport class NbDirectionality extends Directionality {}\n","import { NgModule } from '@angular/core';\nimport { BidiModule, Directionality } from '@angular/cdk/bidi';\nimport { NbDirectionality } from './bidi-service';\n\n@NgModule({\n  providers: [\n    { provide: NbDirectionality, useExisting: Directionality },\n  ],\n})\nexport class NbBidiModule extends BidiModule {}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license infornbion.\n */\n\nimport { Directive, ElementRef, InjectionToken, Input } from '@angular/core';\nimport {\n  CdkCell,\n  CdkCellDef,\n  CdkColumnDef,\n  CdkFooterCell,\n  CdkFooterCellDef,\n  CdkHeaderCell,\n  CdkHeaderCellDef,\n} from '@angular/cdk/table';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n/**\n * Cell definition for the nb-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\n@Directive({\n    selector: '[nbCellDef]',\n    providers: [{ provide: CdkCellDef, useExisting: NbCellDefDirective }],\n    standalone: false\n})\nexport class NbCellDefDirective extends CdkCellDef {}\n\n/**\n * Header cell definition for the nb-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\n@Directive({\n    selector: '[nbHeaderCellDef]',\n    providers: [{ provide: CdkHeaderCellDef, useExisting: NbHeaderCellDefDirective }],\n    standalone: false\n})\nexport class NbHeaderCellDefDirective extends CdkHeaderCellDef {}\n\n/**\n * Footer cell definition for the nb-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\n@Directive({\n    selector: '[nbFooterCellDef]',\n    providers: [{ provide: CdkFooterCellDef, useExisting: NbFooterCellDefDirective }],\n    standalone: false\n})\nexport class NbFooterCellDefDirective extends CdkFooterCellDef {}\n\nexport const NB_SORT_HEADER_COLUMN_DEF = new InjectionToken('NB_SORT_HEADER_COLUMN_DEF');\n\n/**\n * Column definition for the nb-table.\n * Defines a set of cells available for a table column.\n */\n@Directive({\n    selector: '[nbColumnDef]',\n    providers: [\n        { provide: CdkColumnDef, useExisting: NbColumnDefDirective },\n        { provide: NB_SORT_HEADER_COLUMN_DEF, useExisting: NbColumnDefDirective },\n    ],\n    standalone: false\n})\nexport class NbColumnDefDirective extends CdkColumnDef {\n  private _hasStickyCellChanged = false;\n\n  /** Unique name for this column. */\n  @Input('nbColumnDef')\n  get name(): string {\n    return this._name;\n  }\n  set name(value: string) {\n    this._setNameInput(value);\n  }\n\n  /** Whether this column should be sticky positioned at the start of the row */\n  @Input()\n  get sticky(): boolean {\n    return this._stickyCell;\n  }\n  set sticky(value: boolean) {\n    if (value !== this._stickyCell) {\n      this._stickyCell = value;\n      this._hasStickyCellChanged = true;\n    }\n  }\n  private _stickyCell = false;\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    const prevValue = this._stickyEnd;\n    this._stickyEnd = coerceBooleanProperty(value);\n    this._hasStickyCellChanged = prevValue !== this._stickyEnd;\n  }\n\n  /** Whether the sticky state has changed. */\n  hasStickyChanged(): boolean {\n    const hasStickyChanged = this._hasStickyCellChanged;\n    this.resetStickyChanged();\n    return hasStickyChanged;\n  }\n\n  /** Resets the sticky changed state. */\n  resetStickyChanged(): void {\n    this._hasStickyCellChanged = false;\n  }\n}\n\n/** Header cell template container that adds the right classes and role. */\n@Directive({\n    selector: 'nb-header-cell, th[nbHeaderCell]',\n    host: {\n        class: 'nb-header-cell',\n        role: 'columnheader',\n    },\n    standalone: false\n})\nexport class NbHeaderCellDirective extends CdkHeaderCell {\n  constructor(columnDef: NbColumnDefDirective, elementRef: ElementRef<HTMLElement>) {\n    super(columnDef, elementRef);\n    elementRef.nativeElement.classList.add(`nb-column-${columnDef.cssClassFriendlyName}`);\n  }\n}\n\n/** Footer cell template container that adds the right classes and role. */\n@Directive({\n    selector: 'nb-footer-cell, td[nbFooterCell]',\n    host: {\n        class: 'nb-footer-cell',\n        role: 'gridcell',\n    },\n    standalone: false\n})\nexport class NbFooterCellDirective extends CdkFooterCell {\n  constructor(columnDef: NbColumnDefDirective, elementRef: ElementRef) {\n    super(columnDef, elementRef);\n    elementRef.nativeElement.classList.add(`nb-column-${columnDef.cssClassFriendlyName}`);\n  }\n}\n\n/** Cell template container that adds the right classes and role. */\n@Directive({\n    selector: 'nb-cell, td[nbCell]',\n    host: {\n        class: 'nb-cell',\n        role: 'gridcell',\n    },\n    standalone: false\n})\nexport class NbCellDirective extends CdkCell {\n  constructor(columnDef: NbColumnDefDirective, elementRef: ElementRef<HTMLElement>) {\n    super(columnDef, elementRef);\n    elementRef.nativeElement.classList.add(`nb-column-${columnDef.cssClassFriendlyName}`);\n  }\n}\n","import { DataSource } from '@angular/cdk/table';\n\nexport abstract class NbDataSource<T> extends DataSource<T> {}\n","import { Component, Directive, Input } from '@angular/core';\nimport {\n  CdkFooterRow,\n  CdkFooterRowDef,\n  CdkHeaderRow,\n  CdkHeaderRowDef,\n  CdkRow,\n  CdkRowDef,\n  CdkCellOutlet,\n  DataRowOutlet,\n  HeaderRowOutlet,\n  FooterRowOutlet,\n  NoDataRowOutlet,\n} from '@angular/cdk/table';\n\n@Directive({\n    selector: '[nbRowOutlet]',\n    providers: [{ provide: DataRowOutlet, useExisting: NbDataRowOutletDirective }],\n    standalone: false\n})\nexport class NbDataRowOutletDirective extends DataRowOutlet {}\n\n@Directive({\n    selector: '[nbHeaderRowOutlet]',\n    providers: [{ provide: HeaderRowOutlet, useExisting: NbHeaderRowOutletDirective }],\n    standalone: false\n})\nexport class NbHeaderRowOutletDirective extends HeaderRowOutlet {}\n\n@Directive({\n    selector: '[nbFooterRowOutlet]',\n    providers: [{ provide: FooterRowOutlet, useExisting: NbFooterRowOutletDirective }],\n    standalone: false\n})\nexport class NbFooterRowOutletDirective extends FooterRowOutlet {}\n\n@Directive({\n    selector: '[nbNoDataRowOutlet]',\n    providers: [{ provide: NoDataRowOutlet, useExisting: NbNoDataRowOutletDirective }],\n    standalone: false\n})\nexport class NbNoDataRowOutletDirective extends NoDataRowOutlet {}\n\n@Directive({\n    selector: '[nbCellOutlet]',\n    providers: [{ provide: CdkCellOutlet, useExisting: NbCellOutletDirective }],\n    standalone: false\n})\nexport class NbCellOutletDirective extends CdkCellOutlet {}\n\n/**\n * Header row definition for the nb-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\n@Directive({\n    selector: '[nbHeaderRowDef]',\n    providers: [{ provide: CdkHeaderRowDef, useExisting: NbHeaderRowDefDirective }],\n    standalone: false\n})\nexport class NbHeaderRowDefDirective extends CdkHeaderRowDef {\n  private _hasStickyRowChanged = false;\n\n  @Input('nbHeaderRowDef') columns: Iterable<string>;\n  @Input('nbHeaderRowDefSticky')\n  get sticky(): boolean {\n    return this._stickyRow;\n  }\n  set sticky(value: boolean) {\n    if (value !== this._stickyRow) {\n      this._stickyRow = value;\n      this._hasStickyRowChanged = true;\n    }\n  }\n  private _stickyRow = false;\n\n  hasStickyChanged(): boolean {\n    const hasStickyChanged = this._hasStickyRowChanged;\n    this.resetStickyChanged();\n    return hasStickyChanged;\n  }\n\n  /** Resets the sticky changed state. */\n  resetStickyChanged(): void {\n    this._hasStickyRowChanged = false;\n  }\n}\n\n/**\n * Footer row definition for the nb-table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\n@Directive({\n    selector: '[nbFooterRowDef]',\n    providers: [{ provide: CdkFooterRowDef, useExisting: NbFooterRowDefDirective }],\n    standalone: false\n})\nexport class NbFooterRowDefDirective extends CdkFooterRowDef {\n  private _hasStickyRowChanged = false;\n\n  @Input('nbFooterRowDef') columns: Iterable<string>;\n  @Input('nbFooterRowDefSticky')\n  get sticky(): boolean {\n    return this._stickyRow;\n  }\n  set sticky(value: boolean) {\n    if (value !== this._stickyRow) {\n      this._stickyRow = value;\n      this._hasStickyRowChanged = true;\n    }\n  }\n  private _stickyRow = false;\n\n  /** Whether the sticky state has changed. */\n  hasStickyChanged(): boolean {\n    const hasStickyChanged = this._hasStickyRowChanged;\n    this.resetStickyChanged();\n    return hasStickyChanged;\n  }\n\n  /** Resets the sticky changed state. */\n  resetStickyChanged(): void {\n    this._hasStickyRowChanged = false;\n  }\n}\n\n/**\n * Data row definition for the nb-table.\n * Captures the data row's template and other 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: '[nbRowDef]',\n    providers: [{ provide: CdkRowDef, useExisting: NbRowDefDirective }],\n    standalone: false\n})\nexport class NbRowDefDirective<T> extends CdkRowDef<T> {\n  @Input('nbRowDefColumns') columns: Iterable<string>;\n  @Input('nbRowDefWhen') when: (index: number, rowData: T) => boolean;\n}\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n    selector: 'nb-header-row, tr[nbHeaderRow]',\n    template: ` <ng-container nbCellOutlet></ng-container>`,\n    host: {\n        class: 'nb-header-row',\n        role: 'row',\n    },\n    providers: [{ provide: CdkHeaderRow, useExisting: NbHeaderRowComponent }],\n    standalone: false\n})\nexport class NbHeaderRowComponent extends CdkHeaderRow {}\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n    selector: 'nb-footer-row, tr[nbFooterRow]',\n    template: ` <ng-container nbCellOutlet></ng-container>`,\n    host: {\n        class: 'nb-footer-row',\n        role: 'row',\n    },\n    providers: [{ provide: CdkFooterRow, useExisting: NbFooterRowComponent }],\n    standalone: false\n})\nexport class NbFooterRowComponent extends CdkFooterRow {}\n\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n    selector: 'nb-row, tr[nbRow]',\n    template: ` <ng-container nbCellOutlet></ng-container>`,\n    host: {\n        class: 'nb-row',\n        role: 'row',\n    },\n    providers: [{ provide: CdkRow, useExisting: NbRowComponent }],\n    standalone: false\n})\nexport class NbRowComponent extends CdkRow {}\n","import {\n  CdkCell,\n  CdkCellDef,\n  CdkColumnDef,\n  CdkFooterCell,\n  CdkFooterCellDef,\n  CdkFooterRow,\n  CdkFooterRowDef,\n  CdkHeaderCell,\n  CdkHeaderCellDef,\n  CdkHeaderRow,\n  CdkHeaderRowDef,\n  CdkRow,\n  CdkRowDef,\n  RowContext,\n  STICKY_POSITIONING_LISTENER,\n} from '@angular/cdk/table';\n\nexport const NbCdkRowDef = CdkRowDef;\nexport const NbCdkRow = CdkRow;\nexport const NbCdkCellDef = CdkCellDef;\n\nexport const NbCdkHeaderRowDef = CdkHeaderRowDef;\nexport const NbCdkHeaderRow = CdkHeaderRow;\nexport const NbCdkHeaderCellDef = CdkHeaderCellDef;\n\nexport const NbCdkFooterRowDef = CdkFooterRowDef;\nexport const NbCdkFooterRow = CdkFooterRow;\nexport const NbCdkFooterCellDef = CdkFooterCellDef;\n\nexport const NbCdkColumnDef = CdkColumnDef;\n\nexport const NbCdkCell = CdkCell;\nexport const NbCdkHeaderCell = CdkHeaderCell;\nexport const NbCdkFooterCell = CdkFooterCell;\n\nexport type NbRowContext<T> = RowContext<T>;\n\nexport const NB_STICKY_POSITIONING_LISTENER = STICKY_POSITIONING_LISTENER;\n","import {\n  Attribute,\n  ChangeDetectorRef,\n  ElementRef,\n  Inject,\n  IterableDiffers,\n  NgModule,\n  Component,\n  Optional,\n  Provider,\n  SkipSelf,\n} from '@angular/core';\nimport {\n  CdkTable,\n  CdkTableModule,\n  RenderRow,\n  RowContext,\n  StickyPositioningListener,\n} from '@angular/cdk/table';\nimport { _DisposeViewRepeaterStrategy, _VIEW_REPEATER_STRATEGY, _ViewRepeater } from '@angular/cdk/collections';\n\nimport { NbBidiModule } from '../bidi/bidi.module';\nimport { NbDirectionality } from '../bidi/bidi-service';\nimport { NbPlatform } from '../platform/platform-service';\nimport { NB_DOCUMENT } from '../../../theme.options';\nimport { NbViewportRulerAdapter } from '../adapter/viewport-ruler-adapter';\nimport { NB_STICKY_POSITIONING_LISTENER } from '../../cdk/table/type-mappings';\nimport {\n  NbCellDefDirective,\n  NbCellDirective,\n  NbColumnDefDirective,\n  NbFooterCellDefDirective,\n  NbFooterCellDirective,\n  NbHeaderCellDefDirective,\n  NbHeaderCellDirective,\n} from './cell';\nimport {\n  NbCellOutletDirective,\n  NbDataRowOutletDirective,\n  NbFooterRowOutletDirective,\n  NbHeaderRowOutletDirective,\n  NbFooterRowComponent,\n  NbFooterRowDefDirective,\n  NbHeaderRowComponent,\n  NbHeaderRowDefDirective,\n  NbRowComponent,\n  NbRowDefDirective,\n  NbNoDataRowOutletDirective,\n} from './row';\n\nexport const NB_TABLE_TEMPLATE = `\n  <ng-container nbHeaderRowOutlet></ng-container>\n  <ng-container nbRowOutlet></ng-container>\n  <ng-container nbNoDataRowOutlet></ng-container>\n  <ng-container nbFooterRowOutlet></ng-container>\n`;\n\nexport const NB_VIEW_REPEATER_STRATEGY = _VIEW_REPEATER_STRATEGY;\n\nexport const NB_TABLE_PROVIDERS: Provider[] = [\n  { provide: NB_VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n];\n\n@Component({\n    selector: 'nb-table-not-implemented',\n    template: ``,\n    providers: NB_TABLE_PROVIDERS,\n    standalone: false\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class NbTable<T> extends CdkTable<T> {\n  constructor(\n    differs: IterableDiffers,\n    changeDetectorRef: ChangeDetectorRef,\n    elementRef: ElementRef,\n    @Attribute('role') role: string,\n    dir: NbDirectionality,\n    @Inject(NB_DOCUMENT) document: any,\n    platform: NbPlatform,\n    @Inject(_VIEW_REPEATER_STRATEGY)\n    protected readonly _viewRepeater: _ViewRepeater<T, RenderRow<T>, RowContext<T>>,\n    _viewportRuler: NbViewportRulerAdapter,\n    @Optional() @SkipSelf() @Inject(NB_STICKY_POSITIONING_LISTENER)\n    protected readonly _stickyPositioningListener: StickyPositioningListener,\n  ) {\n    super(differs, changeDetectorRef, elementRef, role, dir, document, platform, _viewRepeater,\n          _viewportRuler, _stickyPositioningListener);\n  }\n}\n\nconst COMPONENTS = [\n  NbTable,\n\n  // Template defs\n  NbHeaderCellDefDirective,\n  NbHeaderRowDefDirective,\n  NbColumnDefDirective,\n  NbCellDefDirective,\n  NbRowDefDirective,\n  NbFooterCellDefDirective,\n  NbFooterRowDefDirective,\n\n  // Outlets\n  NbDataRowOutletDirective,\n  NbHeaderRowOutletDirective,\n  NbFooterRowOutletDirective,\n  NbNoDataRowOutletDirective,\n  NbCellOutletDirective,\n\n  // Cell directives\n  NbHeaderCellDirective,\n  NbCellDirective,\n  NbFooterCellDirective,\n\n  // Row directives\n  NbHeaderRowComponent,\n  NbRowComponent,\n  NbFooterRowComponent,\n];\n\n@NgModule({\n  imports: [ NbBidiModule ],\n  declarations: [ ...COMPONENTS ],\n  exports: [ ...COMPONENTS ],\n})\nexport class NbTableModule extends CdkTableModule {}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { InjectionToken, ViewContainerRef } from '@angular/core';\n\n\nexport const NB_DIALOG_CONFIG = new InjectionToken<NbDialogConfig>('Default dialog options');\n\n/**\n * Describes all available options that may be passed to the NbDialogService.\n * */\nexport class NbDialogConfig<D = any> {\n  /**\n   * If true than overlay will render backdrop under a dialog.\n   * */\n  hasBackdrop: boolean = true;\n\n  /**\n   * Class that'll be assigned to the backdrop element.\n   * */\n  backdropClass: string = 'overlay-backdrop';\n\n  /**\n   * Class that'll be assigned to the dialog overlay.\n   * */\n  dialogClass: string = '';\n\n  /**\n   * If true then mouse clicks by backdrop will close a dialog.\n   * */\n  closeOnBackdropClick: boolean = true;\n\n  /**\n   * If true then escape press will close a dialog.\n   * */\n  closeOnEsc: boolean = true;\n\n  /**\n   * Disables scroll on content under dialog if true and does nothing otherwise.\n   * */\n  hasScroll: boolean = false;\n\n  /**\n   * Focuses dialog automatically after open if true.\n   * */\n  autoFocus: boolean = true;\n\n  /**\n   * Where the attached component should live in Angular's *logical* component tree.\n   * This affects what is available for injection and the change detection order for the\n   * component instantiated inside of the dialog. This does not affect where the dialog\n   * content will be rendered.\n   */\n  viewContainerRef: ViewContainerRef;\n\n  context: D;\n\n  constructor(config: Partial<NbDialogConfig>) {\n    Object.assign(this, config);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ComponentRef } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { NbOverlayRef } from '../cdk/overlay/mapping';\n\n\n/**\n * The `NbDialogRef` helps to manipulate dialog after it was created.\n * The dialog can be dismissed by using `close` method of the dialogRef.\n * You can access rendered component as `content` property of the dialogRef.\n * `onBackdropClick` streams click events on the backdrop of the dialog.\n * */\nexport class NbDialogRef<T> {\n\n  componentRef: ComponentRef<T>;\n\n  /**\n   * Stream of backdrop click events.\n   * */\n  readonly onBackdropClick: Observable<MouseEvent>;\n  protected onClose$: Subject<any> = new Subject();\n  readonly onClose: Observable<any> = this.onClose$.asObservable();\n\n  constructor(protected overlayRef: NbOverlayRef) {\n    this.onBackdropClick = this.overlayRef.backdropClick();\n  }\n\n  /**\n   * Hides dialog.\n   * */\n  close(res?: any) {\n    this.overlayRef.detach();\n    this.overlayRef.dispose();\n    this.onClose$.next(res);\n    this.onClose$.complete();\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, ComponentRef, ElementRef, EmbeddedViewRef, OnDestroy, OnInit, ViewChild } from '@angular/core';\n\nimport { NbComponentPortal, NbPortalOutletDirective, NbTemplatePortal } from '../cdk/overlay/mapping';\nimport { NbFocusTrap, NbFocusTrapFactoryService } from '../cdk/a11y/focus-trap';\nimport { NbDialogConfig } from './dialog-config';\n\n\n/**\n * Container component for each dialog.\n * All the dialogs will be attached to it.\n * // TODO add animations\n * */\n@Component({\n    selector: 'nb-dialog-container',\n    template: '<ng-template nbPortalOutlet></ng-template>',\n    standalone: false\n})\nexport class NbDialogContainerComponent implements OnInit, OnDestroy {\n\n  // TODO static must be false as of Angular 9.0.0, issues/1514\n  @ViewChild(NbPortalOutletDirective, { static: true }) portalOutlet: NbPortalOutletDirective;\n\n  protected focusTrap: NbFocusTrap;\n\n  constructor(protected config: NbDialogConfig,\n              protected elementRef: ElementRef,\n              protected focusTrapFactory: NbFocusTrapFactoryService) {\n  }\n\n  ngOnInit() {\n    if (this.config.autoFocus) {\n      this.focusTrap = this.focusTrapFactory.create(this.elementRef.nativeElement);\n      this.focusTrap.blurPreviouslyFocusedElement();\n      this.focusTrap.focusInitialElement();\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.config.autoFocus && this.focusTrap) {\n      this.focusTrap.restoreFocus();\n    }\n  }\n\n  attachComponentPortal<T>(portal: NbComponentPortal<T>): ComponentRef<T> {\n    return this.portalOutlet.attachComponentPortal(portal);\n  }\n\n  attachTemplatePortal<C>(portal: NbTemplatePortal<C>): EmbeddedViewRef<C> {\n    return this.portalOutlet.attachTemplatePortal(portal);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Inject, Injectable, Injector, TemplateRef, Type } from '@angular/core';\nimport { fromEvent as observableFromEvent } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport {\n  NbComponentPortal,\n  NbOverlayRef,\n  NbScrollStrategy,\n  NbTemplatePortal,\n} from '../cdk/overlay/mapping';\nimport { NbGlobalPositionStrategy, NbPositionBuilderService } from '../cdk/overlay/overlay-position';\nimport { NbOverlayService } from '../cdk/overlay/overlay-service';\nimport { NB_DOCUMENT } from '../../theme.options';\nimport { NB_DIALOG_CONFIG, NbDialogConfig } from './dialog-config';\nimport { NbDialogRef } from './dialog-ref';\nimport { NbDialogContainerComponent } from './dialog-container';\n\n\n/**\n * The `NbDialogService` helps to open dialogs.\n *\n * @stacked-example(Showcase, dialog/dialog-showcase.component)\n *\n * A new dialog is opened by calling the `open` method with a component to be loaded and an optional configuration.\n * `open` method will return `NbDialogRef` that can be used for the further manipulations.\n *\n * ### Installation\n *\n * Import `NbDialogModule.forRoot()` to your app module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbDialogModule.forRoot(config),\n *   ],\n * })\n * export class AppModule { }\n * ```\n *\n * If you are using it in a lazy loaded module than you have to install it with `NbDialogModule.forChild()`:\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbDialogModule.forChild(config),\n *   ],\n * })\n * export class LazyLoadedModule { }\n * ```\n *\n * ### Usage\n *\n * ```ts\n * const dialogRef = this.dialogService.open(MyDialogComponent, { ... });\n * ```\n *\n * `NbDialogRef` gives capability access reference to the rendered dialog component,\n * destroy dialog and some other options described below.\n *\n * Also, you can inject `NbDialogRef` in dialog component.\n *\n * ```ts\n * this.dialogService.open(MyDialogComponent, { ... });\n *\n * // my-dialog.component.ts\n * constructor(protected dialogRef: NbDialogRef) {\n * }\n *\n * close() {\n *   this.dialogRef.close();\n * }\n * ```\n *\n * Instead of component you can create dialog from TemplateRef:\n *\n * @stacked-example(Template ref, dialog/dialog-template.component)\n *\n * The dialog may return result through `NbDialogRef`. Calling component can receive this result with `onClose`\n * stream of `NbDialogRef`.\n *\n * @stacked-example(Result, dialog/dialog-result.component)\n *\n * ### Configuration\n *\n * As we mentioned above, `open` method of the `NbDialogService` may receive optional configuration options.\n * Also, you can provide global dialogs configuration through `NbDialogModule.forRoot({ ... })`.\n *\n * This config may contain the following:\n *\n * `context` - both, template and component may receive data through `config.context` property.\n * For components, this data will be assigned through inputs.\n * For templates, you can access it inside template as $implicit.\n *\n * ```ts\n * this.dialogService.open(template, { context: 'pass data in template' });\n * ```\n *\n * ```html\n * <ng-template let-some-additional-data>\n *   {{ some-additional-data }}\n * <ng-template/>\n * ```\n *\n * `hasBackdrop` - determines is service have to render backdrop under the dialog.\n * Default is true.\n * @stacked-example(Backdrop, dialog/dialog-has-backdrop.component)\n *\n * `closeOnBackdropClick` - close dialog on backdrop click if true.\n * Default is true.\n * @stacked-example(Backdrop click, dialog/dialog-backdrop-click.component)\n *\n * `closeOnEsc` - close dialog on escape button on the keyboard.\n * Default is true.\n * @stacked-example(Escape hit, dialog/dialog-esc.component)\n *\n * `hasScroll` - Disables scroll on content under dialog if true and does nothing otherwise.\n * Default is false.\n * Please, open dialogs in the separate window and try to scroll.\n * @stacked-example(Scroll, dialog/dialog-scroll.component)\n *\n * `autoFocus` - Focuses dialog automatically after open if true. It's useful to prevent misclicks on\n * trigger elements and opening multiple dialogs.\n * Default is true.\n *\n * As you can see, if you open dialog with auto focus dialog will focus first focusable element\n * or just blur previously focused automatically.\n * Otherwise, without auto focus, the focus will stay on the previously focused element.\n * Please, open dialogs in the separate window and try to click on the button without focus\n * and then hit space any times. Multiple same dialogs will be opened.\n * @stacked-example(Auto focus, dialog/dialog-auto-focus.component)\n * */\n@Injectable()\nexport class NbDialogService {\n  constructor(@Inject(NB_DOCUMENT) protected document,\n              @Inject(NB_DIALOG_CONFIG) protected globalConfig,\n              protected positionBuilder: NbPositionBuilderService,\n              protected overlay: NbOverlayService,\n              protected injector: Injector,\n  ) {\n  }\n\n  /**\n   * Opens new instance of the dialog, may receive optional config.\n   * */\n  open<T>(content: Type<T> | TemplateRef<T>,\n          userConfig: Partial<NbDialogConfig<Partial<T> | string>> = {}): NbDialogRef<T> {\n    const config = new NbDialogConfig({ ...this.globalConfig, ...userConfig });\n    const overlayRef = this.createOverlay(config);\n    const dialogRef = new NbDialogRef<T>(overlayRef);\n    const container = this.createContainer(config, overlayRef);\n    this.createContent(config, content, container, dialogRef);\n\n    this.registerCloseListeners(config, overlayRef, dialogRef);\n\n    return dialogRef;\n  }\n\n  protected createOverlay(config: NbDialogConfig): NbOverlayRef {\n    const positionStrategy = this.createPositionStrategy();\n    const scrollStrategy = this.createScrollStrategy(config.hasScroll);\n\n    return this.overlay.create({\n      positionStrategy,\n      scrollStrategy,\n      hasBackdrop: config.hasBackdrop,\n      backdropClass: config.backdropClass,\n      panelClass: config.dialogClass,\n    });\n  }\n\n  protected createPositionStrategy(): NbGlobalPositionStrategy {\n    return this.positionBuilder\n      .global()\n      .centerVertically()\n      .centerHorizontally();\n  }\n\n  protected createScrollStrategy(hasScroll: boolean): NbScrollStrategy {\n    if (hasScroll) {\n      return this.overlay.scrollStrategies.noop();\n    } else {\n      return this.overlay.scrollStrategies.block();\n    }\n  }\n\n  protected createContainer(config: NbDialogConfig, overlayRef: NbOverlayRef): NbDialogContainerComponent {\n    const injector = Injector.create({\n      parent: this.createInjector(config),\n      providers: [{ provide: NbDialogConfig, useValue: config }],\n    });\n    const containerPortal = new NbComponentPortal(NbDialogContainerComponent, null, injector);\n    const containerRef = overlayRef.attach(containerPortal);\n    return containerRef.instance;\n  }\n\n  protected createContent<T>(config: NbDialogConfig,\n                             content: Type<T> | TemplateRef<T>,\n                             container: NbDialogContainerComponent,\n                             dialogRef: NbDialogRef<T>) {\n    if (content instanceof TemplateRef) {\n      const portal = this.createTemplatePortal(config, content, dialogRef);\n      container.attachTemplatePortal(portal);\n    } else {\n      const portal = this.createComponentPortal(config, content, dialogRef);\n      dialogRef.componentRef = container.attachComponentPortal(portal);\n\n      if (config.context) {\n        Object.assign(dialogRef.componentRef.instance, { ...config.context })\n      }\n    }\n  }\n\n  protected createTemplatePortal<T>(config: NbDialogConfig,\n                                    content: TemplateRef<T>,\n                                    dialogRef: NbDialogRef<T>): NbTemplatePortal {\n    return new NbTemplatePortal(content, null, <any>{ $implicit: config.context, dialogRef });\n  }\n\n  /**\n   * We're creating portal with custom injector provided through config or using global injector.\n   * This approach provides us capability inject `NbDialogRef` in dialog component.\n   * */\n  protected createComponentPortal<T>(config: NbDialogConfig,\n                                     content: Type<T>,\n                                     dialogRef: NbDialogRef<T>): NbComponentPortal {\n    const injector = this.createInjector(config);\n    const portalInjector = Injector.create({\n      parent: injector,\n      providers: [{ provide: NbDialogRef, useValue: dialogRef }],\n    });\n    return new NbComponentPortal(content, config.viewContainerRef, portalInjector);\n  }\n\n  protected createInjector(config: NbDialogConfig): Injector {\n    return config.viewContainerRef && config.viewContainerRef.injector || this.injector;\n  }\n\n  protected registerCloseListeners<T>(config: NbDialogConfig, overlayRef: NbOverlayRef, dialogRef: NbDialogRef<T>) {\n    if (config.closeOnBackdropClick) {\n      overlayRef.backdropClick().subscribe(() => dialogRef.close());\n    }\n\n    if (config.closeOnEsc) {\n      observableFromEvent<KeyboardEvent>(this.document, 'keyup')\n        .pipe(\n          filter((event: KeyboardEvent) => event.keyCode === 27),\n          takeUntil(dialogRef.onClose),\n        )\n        .subscribe(() => dialogRef.close());\n    }\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbDialogService } from './dialog.service';\nimport { NbDialogContainerComponent } from './dialog-container';\nimport { NB_DIALOG_CONFIG, NbDialogConfig } from './dialog-config';\n\n\n@NgModule({\n  imports: [NbSharedModule, NbOverlayModule],\n  declarations: [NbDialogContainerComponent],\n})\nexport class NbDialogModule {\n  static forRoot(dialogConfig: Partial<NbDialogConfig> = {}): ModuleWithProviders<NbDialogModule> {\n    return {\n      ngModule: NbDialogModule,\n      providers: [\n        NbDialogService,\n        { provide: NB_DIALOG_CONFIG, useValue: dialogConfig },\n      ],\n    }\n  }\n\n  static forChild(dialogConfig: Partial<NbDialogConfig> = {}): ModuleWithProviders<NbDialogModule> {\n    return {\n      ngModule: NbDialogModule,\n      providers: [\n        NbDialogService,\n        { provide: NB_DIALOG_CONFIG, useValue: dialogConfig },\n      ],\n    }\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  Renderer2,\n} from '@angular/core';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbIconConfig } from '../icon/icon.component';\nimport { NbToast } from './model';\n\n/**\n * The `NbToastComponent` is responsible for rendering each toast with appropriate styles.\n *\n * @styles\n *\n * toastr-border-style:\n * toastr-border-width:\n * toastr-border-radius:\n * toastr-padding:\n * toastr-shadow:\n * toastr-text-font-family:\n * toastr-text-font-size:\n * toastr-text-font-weight:\n * toastr-text-line-height:\n * toastr-title-text-font-family:\n * toastr-title-text-font-size:\n * toastr-title-text-font-weight:\n * toastr-title-text-line-height:\n * toastr-basic-background-color:\n * toastr-basic-border-color:\n * toastr-basic-text-color:\n * toastr-icon-basic-background-color:\n * toastr-icon-basic-color:\n * toastr-destroyable-basic-hover-background-color:\n * toastr-destroyable-basic-hover-border-color:\n * toastr-primary-background-color:\n * toastr-primary-border-color:\n * toastr-primary-text-color:\n * toastr-icon-primary-background-color:\n * toastr-icon-primary-color:\n * toastr-destroyable-primary-hover-background-color:\n * toastr-destroyable-primary-hover-border-color:\n * toastr-success-background-color:\n * toastr-success-border-color:\n * toastr-success-text-color:\n * toastr-icon-success-background-color:\n * toastr-icon-success-color:\n * toastr-destroyable-success-hover-background-color:\n * toastr-destroyable-success-hover-border-color:\n * toastr-info-background-color:\n * toastr-info-border-color:\n * toastr-info-text-color:\n * toastr-icon-info-background-color:\n * toastr-icon-info-color:\n * toastr-destroyable-info-hover-background-color:\n * toastr-destroyable-info-hover-border-color:\n * toastr-warning-background-color:\n * toastr-warning-border-color:\n * toastr-warning-text-color:\n * toastr-icon-warning-background-color:\n * toastr-icon-warning-color:\n * toastr-destroyable-warning-hover-background-color:\n * toastr-destroyable-warning-hover-border-color:\n * toastr-danger-background-color:\n * toastr-danger-border-color:\n * toastr-danger-text-color:\n * toastr-icon-danger-background-color:\n * toastr-icon-danger-color:\n * toastr-destroyable-danger-hover-background-color:\n * toastr-destroyable-danger-hover-border-color:\n * toastr-control-background-color:\n * toastr-control-border-color:\n * toastr-control-text-color:\n * toastr-icon-control-background-color:\n * toastr-icon-control-color:\n * toastr-destroyable-control-hover-background-color:\n * toastr-destroyable-control-hover-border-color:\n * */\n@Component({\n    selector: 'nb-toast',\n    styleUrls: ['./toast.component.scss'],\n    templateUrl: './toast.component.html',\n    standalone: false\n})\nexport class NbToastComponent implements OnInit, OnDestroy {\n  @Input()\n  toast: NbToast;\n\n  @Output() destroy: EventEmitter<void> = new EventEmitter();\n  @Output() toastClick: EventEmitter<void> = new EventEmitter();\n\n  @HostBinding('class.status-success')\n  get success(): boolean {\n    return this.toast.config.status === 'success';\n  }\n\n  @HostBinding('class.status-info')\n  get info(): boolean {\n    return this.toast.config.status === 'info';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning(): boolean {\n    return this.toast.config.status === 'warning';\n  }\n\n  @HostBinding('class.status-primary')\n  get primary(): boolean {\n    return this.toast.config.status === 'primary';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger(): boolean {\n    return this.toast.config.status === 'danger';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic(): boolean {\n    return this.toast.config.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control(): boolean {\n    return this.toast.config.status === 'control';\n  }\n\n  @HostBinding('class.destroy-by-click')\n  get destroyByClick(): boolean {\n    return this.toast.config.destroyByClick;\n  }\n\n  @HostBinding('class.has-icon')\n  get hasIcon(): boolean {\n    const { icon } = this.toast.config;\n    if (typeof icon === 'string') {\n      return true;\n    }\n\n    return !!(icon && (icon as NbIconConfig).icon);\n  }\n\n  @HostBinding('class.custom-icon')\n  get customIcon(): boolean {\n    return !!this.icon;\n  }\n\n  get icon(): string | NbIconConfig {\n    return this.toast.config.icon;\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.toast.config.status)) {\n      return [this.statusService.getStatusClass(this.toast.config.status)];\n    }\n    return [];\n  }\n\n  @HostListener('click')\n  onClick() {\n    this.toastClick.emit();\n  }\n\n  constructor(\n    protected renderer: Renderer2,\n    protected elementRef: ElementRef,\n    protected statusService: NbStatusService,\n  ) {}\n\n  ngOnInit() {\n    if (this.toast.config.toastClass) {\n      this.renderer.addClass(this.elementRef.nativeElement, this.toast.config.toastClass);\n    }\n  }\n\n  ngOnDestroy() {\n    this.destroy.emit();\n  }\n}\n","<div class=\"icon-container\" *ngIf=\"hasIcon && icon\">\n  <nb-icon [config]=\"icon\"></nb-icon>\n</div>\n<div class=\"content-container\">\n  <span class=\"title subtitle\">{{ toast.title }}</span>\n  <div class=\"message\">{{ toast.message }}</div>\n</div>\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, Input, OnDestroy, OnInit, QueryList, ViewChildren } from '@angular/core';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { NbToastComponent } from './toast.component';\nimport { NbToast } from './model';\nimport { NbLayoutDirectionService } from '../../services/direction.service';\nimport { NbGlobalPosition, NbPositionHelper } from '../cdk/overlay/position-helper';\n\nconst voidState = style({\n  transform: 'translateX({{ direction }}110%)',\n  height: 0,\n  marginLeft: '0',\n  marginRight: '0',\n  marginTop: '0',\n  marginBottom: '0',\n});\n\nconst defaultOptions = { params: { direction: '' } };\n\n@Component({\n    selector: 'nb-toastr-container',\n    template: `\n    <nb-toast [@fadeIn]=\"fadeIn\" *ngFor=\"let toast of content\" [toast]=\"toast\"></nb-toast>`,\n    animations: [\n        trigger('fadeIn', [\n            transition(':enter', [voidState, animate(100)], defaultOptions),\n            transition(':leave', [animate(100, voidState)], defaultOptions),\n        ]),\n    ],\n    standalone: false\n})\nexport class NbToastrContainerComponent implements OnInit, OnDestroy {\n\n  protected destroy$ = new Subject<void>();\n\n  @Input()\n  content: NbToast[] = [];\n\n  @Input()\n  context: Object;\n\n  @Input()\n  position: NbGlobalPosition;\n\n  @ViewChildren(NbToastComponent)\n  toasts: QueryList<NbToastComponent>;\n\n  fadeIn;\n\n  constructor(protected layoutDirection: NbLayoutDirectionService,\n              protected positionHelper: NbPositionHelper) {\n  }\n\n  ngOnInit() {\n    this.layoutDirection.onDirectionChange()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.onDirectionChange());\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  protected onDirectionChange() {\n    const direction = this.positionHelper.isRightPosition(this.position) ? '' : '-';\n    this.fadeIn = { value: '', params: { direction } };\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { InjectionToken } from '@angular/core';\n\nimport { NbGlobalLogicalPosition, NbGlobalPosition } from '../cdk/overlay/position-helper';\nimport { NbComponentOrCustomStatus, NbComponentStatus } from '../component-status';\nimport { NbIconConfig } from '../icon/icon.component';\n\ntype IconToClassMap = {\n  [status in NbComponentStatus]: string;\n}\n\nexport const NB_TOASTR_CONFIG = new InjectionToken<NbToastrConfig>('Default toastr options');\n\nexport type NbDuplicateToastBehaviour = 'previous' | 'all';\n\n/**\n * The `NbToastrConfig` class describes configuration of the `NbToastrService.show` and global toastr configuration.\n * */\nexport class NbToastrConfig {\n  /**\n   * Determines where on the screen toast have to be rendered.\n   * */\n  position: NbGlobalPosition = NbGlobalLogicalPosition.TOP_END;\n  /**\n   * Status chooses color scheme for the toast.\n   * */\n  status: NbComponentOrCustomStatus = 'basic';\n  /**\n   * Duration is timeout between toast appears and disappears.\n   * */\n  duration: number = 3000;\n  /**\n   * Destroy by click means you can hide the toast by clicking it.\n   * */\n  destroyByClick: boolean = true;\n  /**\n   * If preventDuplicates is true then the toast with the same title, message and status will not be rendered.\n   * Find duplicates behaviour determined by `preventDuplicates`.\n   * The default `previous` duplicate behaviour is used.\n   * */\n  preventDuplicates: boolean = false;\n  /**\n   * Determines the how to treat duplicates.\n   * */\n  duplicatesBehaviour: NbDuplicateToastBehaviour = 'previous';\n  /*\n  * The number of visible toasts. If the limit exceeded the oldest toast will be removed.\n  * */\n  limit?: number = null;\n  /**\n   * Class to be applied to the toast.\n   */\n  toastClass: string = '';\n  /**\n   * Determines render icon or not.\n   * */\n  hasIcon: boolean = true;\n  /**\n   * Icon name or icon config object that can be provided to render custom icon.\n   * */\n  icon: string | NbIconConfig = 'email';\n  /**\n   * Toast status icon-class mapping.\n   * */\n  protected icons: IconToClassMap = {\n    danger: 'flash-outline',\n    success: 'checkmark-outline',\n    info: 'question-mark-outline',\n    warning: 'alert-triangle-outline',\n    primary: 'email-outline',\n    control: 'email-outline',\n    basic: 'email-outline',\n  };\n\n  constructor(config: Partial<NbToastrConfig>) {\n    this.patchIcon(config);\n    Object.assign(this, config);\n  }\n\n  protected patchIcon(config: Partial<NbToastrConfig>) {\n    if (!('icon' in config)) {\n      config.icon = {\n        icon: this.icons[config.status] || this.icons.basic,\n        pack: 'nebular-essentials',\n      };\n    }\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ComponentRef, Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { NbComponentPortal, NbOverlayRef } from '../cdk/overlay/mapping';\nimport { NbOverlayService, patch } from '../cdk/overlay/overlay-service';\nimport { NbPositionBuilderService } from '../cdk/overlay/overlay-position';\nimport { NbGlobalLogicalPosition, NbGlobalPosition, NbPositionHelper } from '../cdk/overlay/position-helper';\nimport { NbToastrContainerComponent } from './toastr-container.component';\nimport { NB_TOASTR_CONFIG, NbToastrConfig } from './toastr-config';\nimport { NbToast } from './model';\nimport { NbToastComponent } from './toast.component';\nimport { NB_DOCUMENT } from '../../theme.options';\n\nexport class NbToastRef {\n  toastInstance: NbToastComponent;\n\n  constructor(private toastContainer: NbToastContainer, private toast: NbToast) {}\n\n  close() {\n    this.toastContainer.destroy(this.toast);\n  }\n\n  onClose(): Observable<void> {\n    return this.toastInstance.destroy.asObservable();\n  }\n\n  onClick(): Observable<void> {\n    return this.toastInstance.toastClick.asObservable();\n  }\n}\n\nexport class NbToastContainer {\n  protected toasts: NbToast[] = [];\n  protected prevToast: NbToast;\n\n  get nativeElement() {\n    return this.containerRef.location.nativeElement;\n  }\n\n  constructor(\n    protected position: NbGlobalPosition,\n    protected containerRef: ComponentRef<NbToastrContainerComponent>,\n    protected positionHelper: NbPositionHelper,\n  ) {}\n\n  attach(toast: NbToast): NbToastRef {\n    if (toast.config.preventDuplicates && this.isDuplicate(toast)) {\n      return undefined;\n    }\n\n    this.removeToastIfLimitReached(toast);\n    const toastComponent: NbToastComponent = this.attachToast(toast);\n\n    if (toast.config.destroyByClick) {\n      this.subscribeOnClick(toastComponent, toast);\n    }\n\n    if (toast.config.duration) {\n      this.setDestroyTimeout(toast);\n    }\n\n    this.prevToast = toast;\n\n    const toastRef = new NbToastRef(this, toast);\n    toastRef.toastInstance = toastComponent;\n\n    return toastRef;\n  }\n\n  destroy(toast: NbToast) {\n    if (this.prevToast === toast) {\n      this.prevToast = null;\n    }\n\n    this.toasts = this.toasts.filter((t) => t !== toast);\n    this.updateContainer();\n  }\n\n  protected isDuplicate(toast: NbToast): boolean {\n    return toast.config.duplicatesBehaviour === 'previous'\n      ? this.isDuplicatePrevious(toast)\n      : this.isDuplicateAmongAll(toast);\n  }\n\n  protected isDuplicatePrevious(toast: NbToast): boolean {\n    return this.prevToast && this.toastDuplicateCompareFunc(this.prevToast, toast);\n  }\n\n  protected isDuplicateAmongAll(toast: NbToast): boolean {\n    return this.toasts.some((t) => this.toastDuplicateCompareFunc(t, toast));\n  }\n\n  protected toastDuplicateCompareFunc = (t1: NbToast, t2: NbToast): boolean => {\n    return t1.message === t2.message && t1.title === t2.title && t1.config.status === t2.config.status;\n  };\n\n  protected removeToastIfLimitReached(toast: NbToast) {\n    if (!toast.config.limit || this.toasts.length < toast.config.limit) {\n      return;\n    }\n    if (this.positionHelper.isTopPosition(toast.config.position)) {\n      this.toasts.pop();\n    } else {\n      this.toasts.shift();\n    }\n  }\n\n  protected attachToast(toast: NbToast): NbToastComponent {\n    if (this.positionHelper.isTopPosition(toast.config.position)) {\n      return this.attachToTop(toast);\n    } else {\n      return this.attachToBottom(toast);\n    }\n  }\n\n  protected attachToTop(toast: NbToast): NbToastComponent {\n    this.toasts.unshift(toast);\n    this.updateContainer();\n    return this.containerRef.instance.toasts.first;\n  }\n\n  protected attachToBottom(toast: NbToast): NbToastComponent {\n    this.toasts.push(toast);\n    this.updateContainer();\n    return this.containerRef.instance.toasts.last;\n  }\n\n  protected setDestroyTimeout(toast: NbToast) {\n    setTimeout(() => this.destroy(toast), toast.config.duration);\n  }\n\n  protected subscribeOnClick(toastComponent: NbToastComponent, toast: NbToast) {\n    toastComponent.toastClick\n      .pipe(\n        filter(() => toast.config.destroyByClick),\n        takeUntil(toastComponent.destroy),\n      )\n      .subscribe(() => this.destroy(toast));\n  }\n\n  protected updateContainer() {\n    patch(this.containerRef, { content: this.toasts, position: this.position });\n  }\n}\n\ninterface NbToastrOverlayWithContainer {\n  overlayRef: NbOverlayRef;\n  toastrContainer: NbToastContainer;\n}\n\n@Injectable()\nexport class NbToastrContainerRegistry {\n  protected overlays: Map<NbGlobalPosition, NbToastrOverlayWithContainer> = new Map();\n\n  constructor(\n    protected overlay: NbOverlayService,\n    protected positionBuilder: NbPositionBuilderService,\n    protected positionHelper: NbPositionHelper,\n    @Inject(NB_DOCUMENT) protected document: any,\n  ) {}\n\n  get(position: NbGlobalPosition): NbToastContainer {\n    const logicalPosition: NbGlobalLogicalPosition = this.positionHelper.toLogicalPosition(position);\n\n    const overlayWithContainer = this.overlays.get(logicalPosition);\n    if (!overlayWithContainer || !this.existsInDom(overlayWithContainer.toastrContainer)) {\n      if (overlayWithContainer) {\n        overlayWithContainer.overlayRef.dispose();\n      }\n      this.instantiateContainer(logicalPosition);\n    }\n\n    return this.overlays.get(logicalPosition).toastrContainer;\n  }\n\n  protected instantiateContainer(position: NbGlobalLogicalPosition) {\n    const toastrOverlayWithContainer = this.createContainer(position);\n    this.overlays.set(position, toastrOverlayWithContainer);\n  }\n\n  protected createContainer(position: NbGlobalLogicalPosition): NbToastrOverlayWithContainer {\n    const positionStrategy = this.positionBuilder.global().position(position);\n    const ref = this.overlay.create({ positionStrategy });\n    this.addClassToOverlayHost(ref);\n    const containerRef = ref.attach(new NbComponentPortal(NbToastrContainerComponent, null, null));\n    return {\n      overlayRef: ref,\n      toastrContainer: new NbToastContainer(position, containerRef, this.positionHelper),\n    };\n  }\n\n  protected addClassToOverlayHost(overlayRef: NbOverlayRef) {\n    overlayRef.hostElement.classList.add('toastr-overlay-container');\n  }\n\n  protected existsInDom(toastContainer: NbToastContainer): boolean {\n    return this.document.body.contains(toastContainer.nativeElement);\n  }\n}\n\n/**\n * The `NbToastrService` provides a capability to build toast notifications.\n *\n * @stacked-example(Showcase, toastr/toastr-showcase.component)\n *\n * `NbToastrService.show(message, title, config)` accepts three params, title and config are optional.\n *\n * ### Installation\n *\n * Import `NbToastrModule.forRoot()` to your app module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbToastrModule.forRoot(config),\n *   ],\n * })\n * export class AppModule { }\n * ```\n *\n * ### Usage\n *\n * Calling `NbToastrService.show(...)` will render new toast and return `NbToastrRef` with\n * help of which you may close newly created toast by calling `close` method.\n *\n * ```ts\n * const toastRef: NbToastRef = this.toastrService.show(...);\n * toastRef.close();\n * ```\n *\n * Config accepts following options:\n *\n * `position` - determines where on the screen toast will be rendered.\n * Default is `top-end`.\n *\n * @stacked-example(Position, toastr/toastr-positions.component)\n *\n * `status` - coloring and icon of the toast.\n * Default is `basic`.\n *\n * @stacked-example(Status, toastr/toastr-statuses.component)\n *\n * `duration` - the time after which the toast will be destroyed.\n * `0` means endless toast, that may be destroyed by click only.\n * Default is 3000 ms.\n *\n * @stacked-example(Duration, toastr/toastr-duration.component)\n *\n * `destroyByClick` - provides a capability to destroy toast by click.\n * Default is true.\n *\n * @stacked-example(Destroy by click, toastr/toastr-destroy-by-click.component)\n *\n * `preventDuplicates` - don't create new toast if it has the same title, message and status.\n * Default is false.\n *\n * @stacked-example(Prevent duplicates, toastr/toastr-prevent-duplicates.component)\n *\n * `duplicatesBehaviour` - determines how to treat the toasts duplication.\n * Compare with the previous message `previous`\n * or with all visible messages `all`.\n *\n * @stacked-example(Prevent duplicates behaviour , toastr/toastr-prevent-duplicates-behaviour.component)\n *\n * `limit` - the number of visible toasts in the toast container. The number of toasts is unlimited by default.\n *\n * @stacked-example(Prevent duplicates behaviour , toastr/toastr-limit.component)\n *\n * `hasIcon` - if true then render toast icon.\n * `icon` - you can pass icon class that will be applied into the toast.\n *\n * @stacked-example(Has icon, toastr/toastr-icon.component)\n * */\n@Injectable()\nexport class NbToastrService {\n  constructor(\n    @Inject(NB_TOASTR_CONFIG) protected globalConfig: NbToastrConfig,\n    protected containerRegistry: NbToastrContainerRegistry,\n  ) {}\n\n  /**\n   * Shows toast with message, title and user config.\n   * */\n  show(message, title?, userConfig?: Partial<NbToastrConfig>): NbToastRef {\n    const config = new NbToastrConfig({ ...this.globalConfig, ...userConfig });\n    const container = this.containerRegistry.get(config.position);\n    const toast = { message, title, config };\n    return container.attach(toast);\n  }\n\n  /**\n   * Shows success toast with message, title and user config.\n   * */\n  success(message, title?, config?: Partial<NbToastrConfig>): NbToastRef {\n    return this.show(message, title, { ...config, status: 'success' });\n  }\n\n  /**\n   * Shows info toast with message, title and user config.\n   * */\n  info(message, title?, config?: Partial<NbToastrConfig>): NbToastRef {\n    return this.show(message, title, { ...config, status: 'info' });\n  }\n\n  /**\n   * Shows warning toast with message, title and user config.\n   * */\n  warning(message, title?, config?: Partial<NbToastrConfig>): NbToastRef {\n    return this.show(message, title, { ...config, status: 'warning' });\n  }\n\n  /**\n   * Shows primary toast with message, title and user config.\n   * */\n  primary(message, title?, config?: Partial<NbToastrConfig>): NbToastRef {\n    return this.show(message, title, { ...config, status: 'primary' });\n  }\n\n  /**\n   * Shows danger toast with message, title and user config.\n   * */\n  danger(message, title?, config?: Partial<NbToastrConfig>): NbToastRef {\n    return this.show(message, title, { ...config, status: 'danger' });\n  }\n\n  /**\n   * Shows default toast with message, title and user config.\n   * */\n  default(message, title?, config?: Partial<NbToastrConfig>): NbToastRef {\n    return this.show(message, title, { ...config, status: 'basic' });\n  }\n\n  /**\n   * Shows control toast with message, title and user config.\n   * */\n  control(message, title?, config?: Partial<NbToastrConfig>): NbToastRef {\n    return this.default(message, title, { ...config, status: 'control' });\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbIconModule } from '../icon/icon.module';\n\nimport { NbToastrContainerRegistry, NbToastrService } from './toastr.service';\nimport { NbToastComponent } from './toast.component';\nimport { NbToastrContainerComponent } from './toastr-container.component';\nimport { NB_TOASTR_CONFIG, NbToastrConfig } from './toastr-config';\n\n\n@NgModule({\n  imports: [NbSharedModule, NbOverlayModule, NbIconModule],\n  declarations: [NbToastrContainerComponent, NbToastComponent],\n})\nexport class NbToastrModule {\n  static forRoot(toastrConfig: Partial<NbToastrConfig> = {}): ModuleWithProviders<NbToastrModule> {\n    return {\n      ngModule: NbToastrModule,\n      providers: [\n        NbToastrService,\n        NbToastrContainerRegistry,\n        { provide: NB_TOASTR_CONFIG, useValue: toastrConfig },\n      ],\n    };\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NbToastrConfig } from './toastr-config';\n\nexport class NbToast {\n  title: string;\n  message: string;\n  config: NbToastrConfig;\n}\n\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, HostBinding, Input } from '@angular/core';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbRenderableContainer } from '../cdk/overlay/overlay-container';\nimport { NbPosition } from '../cdk/overlay/overlay-position';\nimport { NbIconConfig } from '../icon/icon.component';\n\n\n/**\n * Tooltip container.\n * Renders provided tooltip inside.\n *\n * @styles\n *\n * tooltip-background-color:\n * tooltip-border-color:\n * tooltip-border-style:\n * tooltip-border-width:\n * tooltip-border-radius:\n * tooltip-padding:\n * tooltip-text-color:\n * tooltip-text-font-family:\n * tooltip-text-font-size:\n * tooltip-text-font-weight:\n * tooltip-text-line-height:\n * tooltip-icon-height:\n * tooltip-icon-width:\n * tooltip-max-width:\n * tooltip-basic-background-color:\n * tooltip-basic-border-color:\n * tooltip-basic-text-color:\n * tooltip-primary-background-color:\n * tooltip-primary-border-color:\n * tooltip-primary-text-color:\n * tooltip-info-background-color:\n * tooltip-info-border-color:\n * tooltip-info-text-color:\n * tooltip-success-background-color:\n * tooltip-success-border-color:\n * tooltip-success-text-color:\n * tooltip-warning-background-color:\n * tooltip-warning-border-color:\n * tooltip-warning-text-color:\n * tooltip-danger-background-color:\n * tooltip-danger-border-color:\n * tooltip-danger-text-color:\n * tooltip-control-background-color:\n * tooltip-control-border-color:\n * tooltip-control-text-color:\n * tooltip-shadow:\n */\n@Component({\n    selector: 'nb-tooltip',\n    styleUrls: ['./tooltip.component.scss'],\n    template: `\n    <span class=\"arrow\"></span>\n    <div class=\"content\">\n      <nb-icon *ngIf=\"context?.icon\" [config]=\"context.icon\"></nb-icon>\n      <span *ngIf=\"content\">{{ content }}</span>\n    </div>\n  `,\n    animations: [\n        trigger('showTooltip', [\n            state('in', style({ opacity: 1 })),\n            transition('void => *', [\n                style({ opacity: 0 }),\n                animate(100),\n            ]),\n            transition('* => void', [\n                animate(100, style({ opacity: 0 })),\n            ]),\n        ]),\n    ],\n    standalone: false\n})\nexport class NbTooltipComponent implements NbRenderableContainer {\n\n  @Input()\n  content: string;\n\n  /**\n   * Popover position relatively host element.\n   * */\n  @Input()\n  position: NbPosition = NbPosition.TOP;\n\n  @HostBinding('class')\n  get binding() {\n    return `${this.position} ${this.statusClass}`;\n  }\n\n  @HostBinding('@showTooltip')\n  get show() {\n    return true;\n  }\n\n  @Input()\n  context: { icon?: string | NbIconConfig, status?: NbComponentOrCustomStatus } = {};\n\n  get statusClass() {\n    if (this.context.status) {\n      return this.statusService.getStatusClass(this.context.status);\n    }\n\n    return '';\n  }\n\n  constructor(protected statusService: NbStatusService) {\n  }\n\n  /**\n   * The method is empty since we don't need to do anything additionally\n   * render is handled by change detection\n   */\n  renderContent() {}\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  EventEmitter,\n} from '@angular/core';\nimport { skip, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbAdjustment, NbPosition, NbPositionValues, NbAdjustmentValues } from '../cdk/overlay/overlay-position';\nimport { NbTrigger } from '../cdk/overlay/overlay-trigger';\nimport { NbDynamicOverlay } from '../cdk/overlay/dynamic/dynamic-overlay';\nimport { NbDynamicOverlayHandler } from '../cdk/overlay/dynamic/dynamic-overlay-handler';\nimport { NbOverlayConfig } from '../cdk/overlay/mapping';\nimport { NbTooltipComponent } from './tooltip.component';\nimport { NbIconConfig } from '../icon/icon.component';\n\n/**\n *\n * Tooltip directive for small text/icon hints.\n *\n * ### Installation\n *\n * Import `NbTooltipModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbTooltipModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * @stacked-example(Showcase, tooltip/tooltip-showcase.component)\n *\n * Tooltip can accept a hint text and/or an icon:\n * @stacked-example(With Icon, tooltip/tooltip-with-icon.component)\n *\n * Same way as Popover, tooltip can accept placement position with `nbTooltipPlacement` property:\n * @stacked-example(Placements, tooltip/tooltip-placements.component)\n *\n * It is also possible to specify tooltip color using `nbTooltipStatus` property:\n * @stacked-example(Colored Tooltips, tooltip/tooltip-colors.component)\n *\n * Tooltip has a number of triggers which provides an ability to show and hide the component in different ways:\n *\n * - Click mode shows the component when a user clicks on the host element and hides when the user clicks\n * somewhere on the document outside the component.\n * - Hint provides capability to show the component when the user hovers over the host element\n * and hide when the user hovers out of the host.\n * - Hover works like hint mode with one exception - when the user moves mouse from host element to\n * the container element the component remains open, so that it is possible to interact with it content.\n * - Focus mode is applied when user focuses the element.\n * - Noop mode - the component won't react to the user interaction.\n */\n@Directive({\n    selector: '[nbTooltip]',\n    exportAs: 'nbTooltip',\n    providers: [NbDynamicOverlayHandler, NbDynamicOverlay],\n    standalone: false\n})\nexport class NbTooltipDirective implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n  protected destroy$ = new Subject<void>();\n  protected tooltipComponent = NbTooltipComponent;\n  protected dynamicOverlay: NbDynamicOverlay;\n\n  context: Object = {};\n\n  /**\n   * Tooltip message\n   */\n  @Input('nbTooltip')\n  content: string;\n\n  /**\n   * Position will be calculated relatively host element based on the position.\n   * Can be top, right, bottom, left, start or end.\n   */\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('nbTooltipPlacement')\n  position: NbPosition = NbPosition.TOP;\n  static ngAcceptInputType_position: NbPositionValues;\n\n  /**\n   * Container position will change automatically based on this strategy if container can't fit view port.\n   * Set this property to `noop` value if you want to disable automatic adjustment.\n   * Available values: `clockwise` (default), `counterclockwise`, `vertical`, `horizontal`, `noop`.\n   */\n  @Input('nbTooltipAdjustment')\n  get adjustment(): NbAdjustment {\n    return this._adjustment;\n  }\n  set adjustment(value: NbAdjustment) {\n    this._adjustment = value;\n  }\n  protected _adjustment: NbAdjustment = NbAdjustment.CLOCKWISE;\n  static ngAcceptInputType_adjustment: NbAdjustmentValues;\n\n  @Input('nbTooltipClass')\n  get tooltipClass(): string {\n    return this._tooltipClass;\n  }\n  set tooltipClass(value: string) {\n    if (value !== this.tooltipClass) {\n      this._tooltipClass = value;\n      this.overlayConfig = { panelClass: this.tooltipClass };\n    }\n  }\n  _tooltipClass: string = '';\n\n  /**\n   * Accepts icon name or icon config object\n   * @param {string | NbIconConfig} icon name or config object\n   */\n  @Input('nbTooltipIcon')\n  set icon(icon: string | NbIconConfig) {\n    this.context = Object.assign(this.context, { icon });\n  }\n\n  /**\n   *\n   * @param {string} status\n   */\n  @Input('nbTooltipStatus')\n  set status(status: NbComponentOrCustomStatus) {\n    this.context = Object.assign(this.context, { status });\n  }\n\n  /**\n   * Describes when the container will be shown.\n   * Available options: `click`, `hover`, `hint`, `focus` and `noop`\n   * */\n  @Input('nbTooltipTrigger')\n  trigger: NbTrigger = NbTrigger.HINT;\n\n  /**\n   * Determines tooltip overlay offset (in pixels).\n   **/\n  @Input('nbTooltipOffset') offset = 8;\n\n  /** Disables the display of the tooltip. */\n  @Input('nbTooltipDisabled') disabled: boolean = false;\n\n  @Output()\n  nbTooltipShowStateChange = new EventEmitter<{ isShown: boolean }>();\n\n  protected overlayConfig: NbOverlayConfig = { panelClass: this.tooltipClass };\n\n  get isShown(): boolean {\n    return !!(this.dynamicOverlay && this.dynamicOverlay.isAttached);\n  }\n\n  constructor(protected hostRef: ElementRef, protected dynamicOverlayHandler: NbDynamicOverlayHandler) {}\n\n  ngOnInit() {\n    this.dynamicOverlayHandler.host(this.hostRef).componentType(this.tooltipComponent).offset(this.offset);\n  }\n\n  ngOnChanges() {\n    this.rebuild();\n  }\n\n  ngAfterViewInit() {\n    this.dynamicOverlay = this.configureDynamicOverlay().build();\n\n    this.dynamicOverlay.isShown\n      .pipe(skip(1), takeUntil(this.destroy$))\n      .subscribe((isShown: boolean) => this.nbTooltipShowStateChange.emit({ isShown }));\n  }\n\n  rebuild() {\n    this.dynamicOverlay = this.configureDynamicOverlay().rebuild();\n  }\n\n  show() {\n    this.dynamicOverlay.show();\n  }\n\n  hide() {\n    this.dynamicOverlay.hide();\n  }\n\n  toggle() {\n    this.dynamicOverlay.toggle();\n  }\n\n  ngOnDestroy() {\n    this.dynamicOverlayHandler.destroy();\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  protected configureDynamicOverlay() {\n    return this.dynamicOverlayHandler\n      .position(this.position)\n      .trigger(this.trigger)\n      .disabled(this.disabled)\n      .adjustment(this.adjustment)\n      .content(this.content)\n      .context(this.context)\n      .overlayConfig(this.overlayConfig);\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbIconModule } from '../icon/icon.module';\n\nimport { NbTooltipComponent } from './tooltip.component';\nimport { NbTooltipDirective } from './tooltip.directive';\n\n\n@NgModule({\n  imports: [NbSharedModule, NbOverlayModule, NbIconModule],\n  declarations: [NbTooltipComponent, NbTooltipDirective],\n  exports: [NbTooltipDirective],\n})\nexport class NbTooltipModule {\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const NB_SELECT_INJECTION_TOKEN = new InjectionToken('NB_SELECT_INJECTION_TOKEN');\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Inject,\n  Input,\n  OnDestroy,\n  Optional,\n  Output,\n  AfterViewInit,\n  NgZone,\n  Renderer2,\n} from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n// Component class scoped counter for aria attributes.\nlet lastOptionId: number = 0;\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbFocusableOption } from '../cdk/a11y/focus-key-manager';\nimport { NbHighlightableOption } from '../cdk/a11y/descendant-key-manager';\nimport { NB_SELECT_INJECTION_TOKEN } from '../select/select-injection-tokens';\nimport { NbSelectComponent } from '../select/select.component';\n\n/**\n * NbOptionComponent\n *\n * @styles\n *\n * option-background-color:\n * option-text-color:\n * option-text-font-family:\n * option-hover-background-color:\n * option-hover-text-color:\n * option-active-background-color:\n * option-active-text-color:\n * option-focus-background-color:\n * option-focus-text-color:\n * option-selected-background-color:\n * option-selected-text-color:\n * option-selected-hover-background-color:\n * option-selected-hover-text-color:\n * option-selected-active-background-color:\n * option-selected-active-text-color:\n * option-selected-focus-background-color:\n * option-selected-focus-text-color:\n * option-disabled-background-color:\n * option-disabled-text-color:\n * option-tiny-text-font-size:\n * option-tiny-text-font-weight:\n * option-tiny-text-line-height:\n * option-tiny-padding:\n * option-small-text-font-size:\n * option-small-text-font-weight:\n * option-small-text-line-height:\n * option-small-padding:\n * option-medium-text-font-size:\n * option-medium-text-font-weight:\n * option-medium-text-line-height:\n * option-medium-padding:\n * option-large-text-font-size:\n * option-large-text-font-weight:\n * option-large-text-line-height:\n * option-large-padding:\n * option-giant-text-font-size:\n * option-giant-text-font-weight:\n * option-giant-text-line-height:\n * option-giant-padding:\n **/\n@Component({\n    selector: 'nb-option',\n    styleUrls: ['./option.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n    <nb-checkbox *ngIf=\"withCheckbox\" [checked]=\"selected\" [disabled]=\"disabled\" aria-hidden=\"true\"> </nb-checkbox>\n    <ng-content></ng-content>\n  `,\n    standalone: false\n})\nexport class NbOptionComponent<T = any> implements OnDestroy, AfterViewInit, NbFocusableOption, NbHighlightableOption {\n  protected disabledByGroup = false;\n\n  /**\n   * Option value that will be fired on selection.\n   * */\n  @Input() value: T;\n\n  @Input()\n  get disabled(): boolean {\n    return this._disabled || this.disabledByGroup;\n  }\n  set disabled(value: boolean) {\n    this._disabled = convertToBoolProperty(value);\n  }\n  protected _disabled: boolean = false;\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  /**\n   * Fires value when option selection change.\n   * */\n  @Output() selectionChange: EventEmitter<NbOptionComponent<T>> = new EventEmitter();\n\n  /**\n   * Fires when option clicked\n   */\n  protected click$: Subject<NbOptionComponent<T>> = new Subject<NbOptionComponent<T>>();\n  get click(): Observable<NbOptionComponent<T>> {\n    return this.click$.asObservable();\n  }\n\n  selected: boolean = false;\n  protected parent: NbSelectComponent;\n  protected alive: boolean = true;\n\n  /**\n   * Component scoped id for aria attributes.\n   * */\n  @HostBinding('attr.id')\n  id: string = `nb-option-${lastOptionId++}`;\n\n  constructor(\n    @Optional() @Inject(NB_SELECT_INJECTION_TOKEN) parent,\n    protected elementRef: ElementRef,\n    protected cd: ChangeDetectorRef,\n    protected zone: NgZone,\n    protected renderer: Renderer2,\n  ) {\n    this.parent = parent;\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n  }\n\n  ngAfterViewInit() {\n    // TODO: #2254\n    this.zone.runOutsideAngular(() =>\n      setTimeout(() => {\n        this.renderer.addClass(this.elementRef.nativeElement, 'nb-transition');\n      }),\n    );\n  }\n\n  /**\n   * Determines should we render checkbox.\n   * */\n  get withCheckbox(): boolean {\n    return this.multiple && this.value != null;\n  }\n\n  get content() {\n    return this.elementRef.nativeElement.textContent;\n  }\n\n  get hidden() {\n    return this.elementRef.nativeElement.hidden;\n  }\n\n  // TODO: replace with isShowCheckbox property to control this behaviour outside, issues/1965\n  @HostBinding('class.multiple')\n  get multiple() {\n    // We check parent existing because parent can be NbSelectComponent or\n    // NbAutocomplete and `miltiple` property exists only in NbSelectComponent\n    return this.parent ? (this.parent as NbSelectComponent).multiple : false;\n  }\n\n  @HostBinding('class.selected')\n  get selectedClass(): boolean {\n    return this.selected;\n  }\n\n  @HostBinding('attr.disabled')\n  get disabledAttribute(): '' | null {\n    return this.disabled ? '' : null;\n  }\n\n  @HostBinding('tabIndex')\n  get tabindex() {\n    return '-1';\n  }\n\n  @HostBinding('class.active')\n  get activeClass() {\n    return this._active;\n  }\n  protected _active: boolean = false;\n\n  @HostListener('click', ['$event'])\n  @HostListener('keydown.space', ['$event'])\n  @HostListener('keydown.enter', ['$event'])\n  onClick(event) {\n    this.click$.next(this);\n\n    // Prevent scroll on space click, etc.\n    event.preventDefault();\n  }\n\n  select() {\n    this.setSelection(true);\n  }\n\n  deselect() {\n    this.setSelection(false);\n  }\n\n  /**\n   * Sets disabled by group state and marks component for check.\n   */\n  setDisabledByGroupState(disabled: boolean): void {\n    // Check if the component still alive as the option group defer method call so the component may become destroyed.\n    if (this.disabledByGroup !== disabled && this.alive) {\n      this.disabledByGroup = disabled;\n      this.cd.markForCheck();\n    }\n  }\n\n  protected setSelection(selected: boolean): void {\n    /**\n     * In case of changing options in runtime the reference to the selected option will be kept in select component.\n     * This may lead to exceptions with detecting changes in destroyed component.\n     *\n     * Also Angular can call writeValue on destroyed view (select implements ControlValueAccessor).\n     * angular/angular#27803\n     * */\n    if (this.alive && this.selected !== selected) {\n      this.selected = selected;\n      this.selectionChange.emit(this);\n      this.cd.markForCheck();\n    }\n  }\n\n  focus(): void {\n    this.elementRef.nativeElement.focus();\n  }\n\n  getLabel(): string {\n    return this.content;\n  }\n\n  setActiveStyles(): void {\n    this._active = true;\n    this.cd.markForCheck();\n  }\n\n  setInactiveStyles(): void {\n    this._active = false;\n    this.cd.markForCheck();\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input, HostBinding } from '@angular/core';\n\nimport { NbComponentSize } from '../component-size';\nimport { NbPosition } from '../cdk/overlay/overlay-position';\n\n/**\n * The `NbOptionListComponent` is container component for `NbOptionGroupComponent` and`NbOptionComponent` list.\n *\n * @styles\n *\n * option-list-max-height:\n * option-list-shadow:\n * option-list-background-color:\n * option-list-border-style:\n * option-list-border-width:\n * option-list-border-color:\n * option-list-border-radius:\n * option-list-adjacent-border-color:\n * option-list-adjacent-border-style:\n * option-list-adjacent-border-width:\n * */\n@Component({\n    selector: 'nb-option-list',\n    template: `\n    <ul class=\"option-list\">\n      <ng-content></ng-content>\n    </ul>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbOptionListComponent<T> {\n\n  @Input() size: NbComponentSize = 'medium';\n\n  @Input() position: NbPosition;\n\n  @HostBinding('class.position-top')\n  get positionTop(): boolean {\n    return this.position === NbPosition.TOP;\n  }\n\n  @HostBinding('class.position-bottom')\n  get positionBottom(): boolean {\n    return this.position === NbPosition.BOTTOM;\n  }\n\n  @HostBinding('class.size-tiny')\n  get sizeTiny(): boolean {\n    return this.size === 'tiny';\n  }\n\n  @HostBinding('class.size-small')\n  get sizeSmall(): boolean {\n    return this.size === 'small';\n  }\n\n  @HostBinding('class.size-medium')\n  get sizeMedium(): boolean {\n    return this.size === 'medium';\n  }\n\n  @HostBinding('class.size-large')\n  get sizeLarge(): boolean {\n    return this.size === 'large';\n  }\n\n  @HostBinding('class.size-giant')\n  get sizeGiant(): boolean {\n    return this.size === 'giant';\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  ContentChild,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  Inject,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList,\n  ViewChild,\n  SimpleChanges,\n  OnChanges,\n  Renderer2,\n  NgZone,\n} from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { merge, Subject, BehaviorSubject, from } from 'rxjs';\nimport { startWith, switchMap, takeUntil, filter, map, finalize, take } from 'rxjs/operators';\n\nimport { NbStatusService } from '../../services/status.service';\nimport {\n  NbAdjustableConnectedPositionStrategy,\n  NbAdjustment,\n  NbPosition,\n  NbPositionBuilderService,\n} from '../cdk/overlay/overlay-position';\nimport { NbOverlayRef, NbPortalDirective, NbScrollStrategy } from '../cdk/overlay/mapping';\nimport { NbOverlayService } from '../cdk/overlay/overlay-service';\nimport { NbTrigger, NbTriggerStrategy, NbTriggerStrategyBuilderService } from '../cdk/overlay/overlay-trigger';\nimport { NbFocusKeyManager, NbFocusKeyManagerFactoryService } from '../cdk/a11y/focus-key-manager';\nimport { ESCAPE } from '../cdk/keycodes/keycodes';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentShape } from '../component-shape';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NB_DOCUMENT } from '../../theme.options';\nimport { NbOptionComponent } from '../option/option.component';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NB_SELECT_INJECTION_TOKEN } from './select-injection-tokens';\nimport { NbFormFieldControl, NbFormFieldControlConfig } from '../form-field/form-field-control';\nimport { NbFocusMonitor } from '../cdk/a11y/a11y.module';\nimport { NbScrollStrategies } from '../cdk/adapter/block-scroll-strategy-adapter';\n\nexport type NbSelectCompareFunction<T = any> = (v1: any, v2: any) => boolean;\nexport type NbSelectAppearance = 'outline' | 'filled' | 'hero';\n\n@Component({\n    selector: 'nb-select-label',\n    template: '<ng-content></ng-content>',\n    standalone: false\n})\nexport class NbSelectLabelComponent {}\n\nexport function nbSelectFormFieldControlConfigFactory() {\n  const config = new NbFormFieldControlConfig();\n  config.supportsSuffix = false;\n  return config;\n}\n\n/**\n * The `NbSelectComponent` provides a capability to select one of the passed items.\n *\n * @stacked-example(Showcase, select/select-showcase.component)\n *\n * ### Installation\n *\n * Import `NbSelectModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbSelectModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * If you want to use it as the multi-select control you have to mark it as `multiple`.\n * In this case, `nb-select` will work only with arrays - accept arrays and propagate arrays.\n *\n * @stacked-example(Multiple, select/select-multiple.component)\n *\n * Items without values will clean the selection. Both `null` and `undefined` values will also clean the selection.\n *\n * @stacked-example(Clean selection, select/select-clean.component)\n *\n * Select may be bounded using `selected` input:\n *\n * ```html\n * <nb-select [(selected)]=\"selected\"></nb-selected>\n * ```\n *\n * Or you can bind control with form controls or ngModel:\n *\n * @stacked-example(Select form binding, select/select-form.component)\n *\n * Options in the select may be grouped using `nb-option-group` component.\n *\n * @stacked-example(Grouping, select/select-groups.component)\n *\n * Select may have a placeholder that will be shown when nothing selected:\n *\n * @stacked-example(Placeholder, select/select-placeholder.component)\n *\n * You can disable select, options and whole groups.\n *\n * @stacked-example(Disabled select, select/select-disabled.component)\n *\n * Also, the custom label may be provided in select.\n * This custom label will be used for instead placeholder when something selected.\n *\n * @stacked-example(Custom label, select/select-label.component)\n *\n * Default `nb-select` size is `medium` and status is `basic`.\n * Select is available in multiple colors using `status` property:\n *\n * @stacked-example(Select statuses, select/select-status.component)\n *\n * There are five select sizes:\n *\n * @stacked-example(Select sizes, select/select-sizes.component)\n *\n * And two additional style types - `filled`:\n *\n * @stacked-example(Filled select, select/select-filled.component)\n *\n * and `hero`:\n *\n * @stacked-example(Select colors, select/select-hero.component)\n *\n * Select is available in different shapes, that could be combined with the other properties:\n *\n * @stacked-example(Select shapes, select/select-shapes.component)\n *\n * By default, the component selects options whose values are strictly equal (`===`) with the select value.\n * To change such behavior, pass a custom comparator function to the `compareWith` attribute.\n *\n * @stacked-example(Select custom comparator, select/select-compare-with.component)\n *\n * You can add an additional icon to the select via the `nb-form-field` component:\n * @stacked-example(Select with icon, select/select-icon.component)\n *\n * @additional-example(Interactive, select/select-interactive.component)\n *\n * @styles\n *\n * select-cursor:\n * select-disabled-cursor:\n * select-min-width:\n * select-outline-width:\n * select-outline-color:\n * select-icon-offset:\n * select-text-font-family:\n * select-placeholder-text-font-family:\n * select-tiny-text-font-size:\n * select-tiny-text-font-weight:\n * select-tiny-text-line-height:\n * select-tiny-placeholder-text-font-size:\n * select-tiny-placeholder-text-font-weight:\n * select-tiny-max-width:\n * select-small-text-font-size:\n * select-small-text-font-weight:\n * select-small-text-line-height:\n * select-small-placeholder-text-font-size:\n * select-small-placeholder-text-font-weight:\n * select-small-max-width:\n * select-medium-text-font-size:\n * select-medium-text-font-weight:\n * select-medium-text-line-height:\n * select-medium-placeholder-text-font-size:\n * select-medium-placeholder-text-font-weight:\n * select-medium-max-width:\n * select-large-text-font-size:\n * select-large-text-font-weight:\n * select-large-text-line-height:\n * select-large-placeholder-text-font-size:\n * select-large-placeholder-text-font-weight:\n * select-large-max-width:\n * select-giant-text-font-size:\n * select-giant-text-font-weight:\n * select-giant-text-line-height:\n * select-giant-placeholder-text-font-size:\n * select-giant-placeholder-text-font-weight:\n * select-giant-max-width:\n * select-rectangle-border-radius:\n * select-semi-round-border-radius:\n * select-round-border-radius:\n * select-outline-border-style:\n * select-outline-border-width:\n * select-outline-tiny-padding:\n * select-outline-small-padding:\n * select-outline-medium-padding:\n * select-outline-large-padding:\n * select-outline-giant-padding:\n * select-outline-basic-icon-color:\n * select-outline-basic-text-color:\n * select-outline-basic-placeholder-text-color:\n * select-outline-basic-background-color:\n * select-outline-basic-border-color:\n * select-outline-basic-focus-background-color:\n * select-outline-basic-focus-border-color:\n * select-outline-basic-hover-background-color:\n * select-outline-basic-hover-border-color:\n * select-outline-basic-disabled-background-color:\n * select-outline-basic-disabled-border-color:\n * select-outline-basic-disabled-icon-color:\n * select-outline-basic-disabled-text-color:\n * select-outline-primary-icon-color:\n * select-outline-primary-text-color:\n * select-outline-primary-placeholder-text-color:\n * select-outline-primary-background-color:\n * select-outline-primary-border-color:\n * select-outline-primary-focus-background-color:\n * select-outline-primary-focus-border-color:\n * select-outline-primary-hover-background-color:\n * select-outline-primary-hover-border-color:\n * select-outline-primary-disabled-background-color:\n * select-outline-primary-disabled-border-color:\n * select-outline-primary-disabled-icon-color:\n * select-outline-primary-disabled-text-color:\n * select-outline-success-icon-color:\n * select-outline-success-text-color:\n * select-outline-success-placeholder-text-color:\n * select-outline-success-background-color:\n * select-outline-success-border-color:\n * select-outline-success-focus-background-color:\n * select-outline-success-focus-border-color:\n * select-outline-success-hover-background-color:\n * select-outline-success-hover-border-color:\n * select-outline-success-disabled-background-color:\n * select-outline-success-disabled-border-color:\n * select-outline-success-disabled-icon-color:\n * select-outline-success-disabled-text-color:\n * select-outline-info-icon-color:\n * select-outline-info-text-color:\n * select-outline-info-placeholder-text-color:\n * select-outline-info-background-color:\n * select-outline-info-border-color:\n * select-outline-info-focus-background-color:\n * select-outline-info-focus-border-color:\n * select-outline-info-hover-background-color:\n * select-outline-info-hover-border-color:\n * select-outline-info-disabled-background-color:\n * select-outline-info-disabled-border-color:\n * select-outline-info-disabled-icon-color:\n * select-outline-info-disabled-text-color:\n * select-outline-warning-icon-color:\n * select-outline-warning-text-color:\n * select-outline-warning-placeholder-text-color:\n * select-outline-warning-background-color:\n * select-outline-warning-border-color:\n * select-outline-warning-focus-background-color:\n * select-outline-warning-focus-border-color:\n * select-outline-warning-hover-background-color:\n * select-outline-warning-hover-border-color:\n * select-outline-warning-disabled-background-color:\n * select-outline-warning-disabled-border-color:\n * select-outline-warning-disabled-icon-color:\n * select-outline-warning-disabled-text-color:\n * select-outline-danger-icon-color:\n * select-outline-danger-text-color:\n * select-outline-danger-placeholder-text-color:\n * select-outline-danger-background-color:\n * select-outline-danger-border-color:\n * select-outline-danger-focus-background-color:\n * select-outline-danger-focus-border-color:\n * select-outline-danger-hover-background-color:\n * select-outline-danger-hover-border-color:\n * select-outline-danger-disabled-background-color:\n * select-outline-danger-disabled-border-color:\n * select-outline-danger-disabled-icon-color:\n * select-outline-danger-disabled-text-color:\n * select-outline-control-icon-color:\n * select-outline-control-text-color:\n * select-outline-control-placeholder-text-color:\n * select-outline-control-background-color:\n * select-outline-control-border-color:\n * select-outline-control-focus-background-color:\n * select-outline-control-focus-border-color:\n * select-outline-control-hover-background-color:\n * select-outline-control-hover-border-color:\n * select-outline-control-disabled-background-color:\n * select-outline-control-disabled-border-color:\n * select-outline-control-disabled-icon-color:\n * select-outline-control-disabled-text-color:\n * select-outline-adjacent-border-style:\n * select-outline-adjacent-border-width:\n * select-outline-basic-open-border-color:\n * select-outline-basic-adjacent-border-color:\n * select-outline-primary-open-border-color:\n * select-outline-primary-adjacent-border-color:\n * select-outline-success-open-border-color:\n * select-outline-success-adjacent-border-color:\n * select-outline-info-open-border-color:\n * select-outline-info-adjacent-border-color:\n * select-outline-warning-open-border-color:\n * select-outline-warning-adjacent-border-color:\n * select-outline-danger-open-border-color:\n * select-outline-danger-adjacent-border-color:\n * select-outline-control-open-border-color:\n * select-outline-control-adjacent-border-color:\n * select-filled-border-style:\n * select-filled-border-width:\n * select-filled-tiny-padding:\n * select-filled-small-padding:\n * select-filled-medium-padding:\n * select-filled-large-padding:\n * select-filled-giant-padding:\n * select-filled-basic-background-color:\n * select-filled-basic-border-color:\n * select-filled-basic-icon-color:\n * select-filled-basic-text-color:\n * select-filled-basic-placeholder-text-color:\n * select-filled-basic-focus-background-color:\n * select-filled-basic-focus-border-color:\n * select-filled-basic-hover-background-color:\n * select-filled-basic-hover-border-color:\n * select-filled-basic-disabled-background-color:\n * select-filled-basic-disabled-border-color:\n * select-filled-basic-disabled-icon-color:\n * select-filled-basic-disabled-text-color:\n * select-filled-primary-background-color:\n * select-filled-primary-border-color:\n * select-filled-primary-icon-color:\n * select-filled-primary-text-color:\n * select-filled-primary-placeholder-text-color:\n * select-filled-primary-focus-background-color:\n * select-filled-primary-focus-border-color:\n * select-filled-primary-hover-background-color:\n * select-filled-primary-hover-border-color:\n * select-filled-primary-disabled-background-color:\n * select-filled-primary-disabled-border-color:\n * select-filled-primary-disabled-icon-color:\n * select-filled-primary-disabled-text-color:\n * select-filled-success-background-color:\n * select-filled-success-border-color:\n * select-filled-success-icon-color:\n * select-filled-success-text-color:\n * select-filled-success-placeholder-text-color:\n * select-filled-success-focus-background-color:\n * select-filled-success-focus-border-color:\n * select-filled-success-hover-background-color:\n * select-filled-success-hover-border-color:\n * select-filled-success-disabled-background-color:\n * select-filled-success-disabled-border-color:\n * select-filled-success-disabled-icon-color:\n * select-filled-success-disabled-text-color:\n * select-filled-info-background-color:\n * select-filled-info-border-color:\n * select-filled-info-icon-color:\n * select-filled-info-text-color:\n * select-filled-info-placeholder-text-color:\n * select-filled-info-focus-background-color:\n * select-filled-info-focus-border-color:\n * select-filled-info-hover-background-color:\n * select-filled-info-hover-border-color:\n * select-filled-info-disabled-background-color:\n * select-filled-info-disabled-border-color:\n * select-filled-info-disabled-icon-color:\n * select-filled-info-disabled-text-color:\n * select-filled-warning-background-color:\n * select-filled-warning-border-color:\n * select-filled-warning-icon-color:\n * select-filled-warning-text-color:\n * select-filled-warning-placeholder-text-color:\n * select-filled-warning-focus-background-color:\n * select-filled-warning-focus-border-color:\n * select-filled-warning-hover-background-color:\n * select-filled-warning-hover-border-color:\n * select-filled-warning-disabled-background-color:\n * select-filled-warning-disabled-border-color:\n * select-filled-warning-disabled-icon-color:\n * select-filled-warning-disabled-text-color:\n * select-filled-danger-background-color:\n * select-filled-danger-border-color:\n * select-filled-danger-icon-color:\n * select-filled-danger-text-color:\n * select-filled-danger-placeholder-text-color:\n * select-filled-danger-focus-background-color:\n * select-filled-danger-focus-border-color:\n * select-filled-danger-hover-background-color:\n * select-filled-danger-hover-border-color:\n * select-filled-danger-disabled-background-color:\n * select-filled-danger-disabled-border-color:\n * select-filled-danger-disabled-icon-color:\n * select-filled-danger-disabled-text-color:\n * select-filled-control-background-color:\n * select-filled-control-border-color:\n * select-filled-control-icon-color:\n * select-filled-control-text-color:\n * select-filled-control-placeholder-text-color:\n * select-filled-control-focus-background-color:\n * select-filled-control-focus-border-color:\n * select-filled-control-hover-background-color:\n * select-filled-control-hover-border-color:\n * select-filled-control-disabled-background-color:\n * select-filled-control-disabled-border-color:\n * select-filled-control-disabled-icon-color:\n * select-filled-control-disabled-text-color:\n * select-hero-tiny-padding:\n * select-hero-small-padding:\n * select-hero-medium-padding:\n * select-hero-large-padding:\n * select-hero-giant-padding:\n * select-hero-basic-left-background-color:\n * select-hero-basic-right-background-color:\n * select-hero-basic-icon-color:\n * select-hero-basic-text-color:\n * select-hero-basic-placeholder-text-color:\n * select-hero-basic-focus-left-background-color:\n * select-hero-basic-focus-right-background-color:\n * select-hero-basic-hover-left-background-color:\n * select-hero-basic-hover-right-background-color:\n * select-hero-basic-disabled-background-color:\n * select-hero-basic-disabled-icon-color:\n * select-hero-basic-disabled-text-color:\n * select-hero-primary-left-background-color:\n * select-hero-primary-right-background-color:\n * select-hero-primary-icon-color:\n * select-hero-primary-text-color:\n * select-hero-primary-placeholder-text-color:\n * select-hero-primary-focus-left-background-color:\n * select-hero-primary-focus-right-background-color:\n * select-hero-primary-hover-left-background-color:\n * select-hero-primary-hover-right-background-color:\n * select-hero-primary-disabled-background-color:\n * select-hero-primary-disabled-icon-color:\n * select-hero-primary-disabled-text-color:\n * select-hero-success-left-background-color:\n * select-hero-success-right-background-color:\n * select-hero-success-icon-color:\n * select-hero-success-text-color:\n * select-hero-success-placeholder-text-color:\n * select-hero-success-focus-left-background-color:\n * select-hero-success-focus-right-background-color:\n * select-hero-success-hover-left-background-color:\n * select-hero-success-hover-right-background-color:\n * select-hero-success-disabled-background-color:\n * select-hero-success-disabled-icon-color:\n * select-hero-success-disabled-text-color:\n * select-hero-info-left-background-color:\n * select-hero-info-right-background-color:\n * select-hero-info-icon-color:\n * select-hero-info-text-color:\n * select-hero-info-placeholder-text-color:\n * select-hero-info-focus-left-background-color:\n * select-hero-info-focus-right-background-color:\n * select-hero-info-hover-left-background-color:\n * select-hero-info-hover-right-background-color:\n * select-hero-info-disabled-background-color:\n * select-hero-info-disabled-icon-color:\n * select-hero-info-disabled-text-color:\n * select-hero-warning-left-background-color:\n * select-hero-warning-right-background-color:\n * select-hero-warning-icon-color:\n * select-hero-warning-text-color:\n * select-hero-warning-placeholder-text-color:\n * select-hero-warning-focus-left-background-color:\n * select-hero-warning-focus-right-background-color:\n * select-hero-warning-hover-left-background-color:\n * select-hero-warning-hover-right-background-color:\n * select-hero-warning-disabled-background-color:\n * select-hero-warning-disabled-icon-color:\n * select-hero-warning-disabled-text-color:\n * select-hero-danger-left-background-color:\n * select-hero-danger-right-background-color:\n * select-hero-danger-icon-color:\n * select-hero-danger-text-color:\n * select-hero-danger-placeholder-text-color:\n * select-hero-danger-focus-left-background-color:\n * select-hero-danger-focus-right-background-color:\n * select-hero-danger-hover-left-background-color:\n * select-hero-danger-hover-right-background-color:\n * select-hero-danger-disabled-background-color:\n * select-hero-danger-disabled-icon-color:\n * select-hero-danger-disabled-text-color:\n * select-hero-control-left-background-color:\n * select-hero-control-right-background-color:\n * select-hero-control-icon-color:\n * select-hero-control-text-color:\n * select-hero-control-placeholder-text-color:\n * select-hero-control-focus-left-background-color:\n * select-hero-control-focus-right-background-color:\n * select-hero-control-hover-left-background-color:\n * select-hero-control-hover-right-background-color:\n * select-hero-control-disabled-background-color:\n * select-hero-control-disabled-icon-color:\n * select-hero-control-disabled-text-color:\n * */\n@Component({\n    selector: 'nb-select',\n    templateUrl: './select.component.html',\n    styleUrls: ['./select.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => NbSelectComponent),\n            multi: true,\n        },\n        { provide: NB_SELECT_INJECTION_TOKEN, useExisting: NbSelectComponent },\n        { provide: NbFormFieldControl, useExisting: NbSelectComponent },\n        { provide: NbFormFieldControlConfig, useFactory: nbSelectFormFieldControlConfigFactory },\n    ],\n    standalone: false\n})\nexport class NbSelectComponent\n  implements OnChanges, AfterViewInit, AfterContentInit, OnDestroy, ControlValueAccessor, NbFormFieldControl\n{\n  /**\n   * Select size, available sizes:\n   * `tiny`, `small`, `medium` (default), `large`, `giant`\n   */\n  @Input() size: NbComponentSize = 'medium';\n\n  /**\n   * Select status (adds specific styles):\n   * `basic`, `primary`, `info`, `success`, `warning`, `danger`, `control`\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Select shapes: `rectangle` (default), `round`, `semi-round`\n   */\n  @Input() shape: NbComponentShape = 'rectangle';\n\n  /**\n   * Select appearances: `outline` (default), `filled`, `hero`\n   */\n  @Input() appearance: NbSelectAppearance = 'outline';\n\n  /**\n   * Specifies class to be set on `nb-option`s container (`nb-option-list`)\n   * */\n  @Input() optionsListClass: NgClass['ngClass'];\n\n  /**\n   * Specifies class for the overlay panel with options\n   * */\n  @Input() optionsPanelClass: string | string[];\n\n  /**\n   * Specifies width (in pixels) to be set on `nb-option`s container (`nb-option-list`)\n   * */\n  @Input()\n  get optionsWidth(): number {\n    return this._optionsWidth ?? this.hostWidth;\n  }\n  set optionsWidth(value: number) {\n    this._optionsWidth = value;\n  }\n  protected _optionsWidth: number | undefined;\n\n  /**\n   * Adds `outline` styles\n   */\n  @Input()\n  @HostBinding('class.appearance-outline')\n  get outline(): boolean {\n    return this.appearance === 'outline';\n  }\n  set outline(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'outline';\n    }\n  }\n  static ngAcceptInputType_outline: NbBooleanInput;\n\n  /**\n   * Adds `filled` styles\n   */\n  @Input()\n  @HostBinding('class.appearance-filled')\n  get filled(): boolean {\n    return this.appearance === 'filled';\n  }\n  set filled(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'filled';\n    }\n  }\n  static ngAcceptInputType_filled: NbBooleanInput;\n\n  /**\n   * Adds `hero` styles\n   */\n  @Input()\n  @HostBinding('class.appearance-hero')\n  get hero(): boolean {\n    return this.appearance === 'hero';\n  }\n  set hero(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'hero';\n    }\n  }\n  static ngAcceptInputType_hero: NbBooleanInput;\n\n  /**\n   * Disables the select\n   */\n  @Input()\n  get disabled(): boolean {\n    return !!this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = convertToBoolProperty(value);\n  }\n  protected _disabled: boolean;\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  /**\n   * If set element will fill its container\n   */\n  @Input()\n  @HostBinding('class.full-width')\n  get fullWidth(): boolean {\n    return this._fullWidth;\n  }\n  set fullWidth(value: boolean) {\n    this._fullWidth = convertToBoolProperty(value);\n  }\n  protected _fullWidth: boolean = false;\n  static ngAcceptInputType_fullWidth: NbBooleanInput;\n\n  /**\n   * Renders select placeholder if nothing selected.\n   * */\n  @Input() placeholder: string = '';\n\n  /**\n   * A function to compare option value with selected value.\n   * By default, values are compared with strict equality (`===`).\n   */\n  @Input()\n  get compareWith(): NbSelectCompareFunction {\n    return this._compareWith;\n  }\n  set compareWith(fn: NbSelectCompareFunction) {\n    if (typeof fn !== 'function') {\n      return;\n    }\n\n    this._compareWith = fn;\n\n    if (this.selectionModel.length && this.canSelectValue()) {\n      this.setSelection(this.selected);\n    }\n  }\n  protected _compareWith: NbSelectCompareFunction = (v1: any, v2: any) => v1 === v2;\n\n  /**\n   * Accepts selected item or array of selected items.\n   * */\n  @Input()\n  set selected(value) {\n    this.writeValue(value);\n  }\n  get selected() {\n    return this.multiple ? this.selectionModel.map((o) => o.value) : this.selectionModel[0].value;\n  }\n\n  /**\n   * Gives capability just write `multiple` over the element.\n   * */\n  @Input()\n  get multiple(): boolean {\n    return this._multiple;\n  }\n  set multiple(value: boolean) {\n    this._multiple = convertToBoolProperty(value);\n  }\n  protected _multiple: boolean = false;\n  static ngAcceptInputType_multiple: NbBooleanInput;\n\n  /**\n   * Determines options overlay offset (in pixels).\n   **/\n  @Input() optionsOverlayOffset = 8;\n\n  /**\n   * Determines options overlay scroll strategy.\n   **/\n  @Input() scrollStrategy: NbScrollStrategies = 'block';\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  /**\n   * Will be emitted when selected value changes.\n   * */\n  @Output() selectedChange: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * List of `NbOptionComponent`'s components passed as content.\n   * TODO maybe it would be better provide wrapper\n   * */\n  @ContentChildren(NbOptionComponent, { descendants: true }) options: QueryList<NbOptionComponent>;\n\n  /**\n   * Custom select label, will be rendered instead of default enumeration with coma.\n   * */\n  @ContentChild(NbSelectLabelComponent) customLabel;\n\n  /**\n   * NbCard with options content.\n   * */\n  @ViewChild(NbPortalDirective) portal: NbPortalDirective;\n\n  @ViewChild('selectButton', { read: ElementRef }) button: ElementRef<HTMLButtonElement>;\n\n  /**\n   * Determines is select opened.\n   * */\n  @HostBinding('class.open')\n  get isOpen(): boolean {\n    return this.ref && this.ref.hasAttached();\n  }\n\n  /**\n   * List of selected options.\n   * */\n  selectionModel: NbOptionComponent[] = [];\n\n  positionStrategy: NbAdjustableConnectedPositionStrategy;\n\n  /**\n   * Current overlay position because of we have to toggle overlayPosition\n   * in [ngClass] direction and this directive can use only string.\n   */\n  overlayPosition: NbPosition = '' as NbPosition;\n\n  protected ref: NbOverlayRef;\n\n  protected triggerStrategy: NbTriggerStrategy;\n\n  protected alive: boolean = true;\n\n  protected destroy$ = new Subject<void>();\n\n  protected keyManager: NbFocusKeyManager<NbOptionComponent>;\n\n  /**\n   * If a user assigns value before content nb-options's rendered the value will be putted in this variable.\n   * And then applied after content rendered.\n   * Only the last value will be applied.\n   * */\n  protected queue;\n\n  /**\n   * Function passed through control value accessor to propagate changes.\n   * */\n  protected onChange: Function = () => {};\n  protected onTouched: Function = () => {};\n\n  /*\n   * @docs-private\n   **/\n  status$ = new BehaviorSubject<NbComponentOrCustomStatus>(this.status);\n\n  /*\n   * @docs-private\n   **/\n  size$ = new BehaviorSubject<NbComponentSize>(this.size);\n\n  /*\n   * @docs-private\n   **/\n  focused$ = new BehaviorSubject<boolean>(false);\n\n  /*\n   * @docs-private\n   **/\n  disabled$ = new BehaviorSubject<boolean>(this.disabled);\n\n  /*\n   * @docs-private\n   **/\n  fullWidth$ = new BehaviorSubject<boolean>(this.fullWidth);\n\n  constructor(\n    @Inject(NB_DOCUMENT) protected document,\n    protected overlay: NbOverlayService,\n    protected hostRef: ElementRef<HTMLElement>,\n    protected positionBuilder: NbPositionBuilderService,\n    protected triggerStrategyBuilder: NbTriggerStrategyBuilderService,\n    protected cd: ChangeDetectorRef,\n    protected focusKeyManagerFactoryService: NbFocusKeyManagerFactoryService<NbOptionComponent>,\n    protected focusMonitor: NbFocusMonitor,\n    protected renderer: Renderer2,\n    protected zone: NgZone,\n    protected statusService: NbStatusService,\n  ) {}\n\n  /**\n   * Determines is select hidden.\n   * */\n  get isHidden(): boolean {\n    return !this.isOpen;\n  }\n\n  /**\n   * Returns width of the select button.\n   * */\n  get hostWidth(): number {\n    return this.button.nativeElement.getBoundingClientRect().width;\n  }\n\n  get selectButtonClasses(): string[] {\n    const classes = [];\n\n    if (!this.selectionModel.length) {\n      classes.push('placeholder');\n    }\n    if (!this.selectionModel.length && !this.placeholder) {\n      classes.push('empty');\n    }\n    if (this.isOpen) {\n      classes.push(this.overlayPosition);\n    }\n\n    return classes;\n  }\n\n  /**\n   * Content rendered in the label.\n   * */\n  get selectionView() {\n    if (this.selectionModel.length > 1) {\n      return this.selectionModel.map((option: NbOptionComponent) => option.content).join(', ');\n    }\n\n    return this.selectionModel[0].content;\n  }\n\n  ngOnChanges({ disabled, status, size, fullWidth }: SimpleChanges) {\n    if (disabled) {\n      this.disabled$.next(disabled.currentValue);\n    }\n    if (status) {\n      this.status$.next(status.currentValue);\n    }\n    if (size) {\n      this.size$.next(size.currentValue);\n    }\n    if (fullWidth) {\n      this.fullWidth$.next(this.fullWidth);\n    }\n  }\n\n  ngAfterContentInit() {\n    this.options.changes\n      .pipe(\n        startWith(this.options),\n        filter(() => this.queue != null && this.canSelectValue()),\n        // Call 'writeValue' when current change detection run is finished.\n        // When writing is finished, change detection starts again, since\n        // microtasks queue is empty.\n        // Prevents ExpressionChangedAfterItHasBeenCheckedError.\n        switchMap((options: QueryList<NbOptionComponent>) => from(Promise.resolve(options))),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.writeValue(this.queue));\n  }\n\n  ngAfterViewInit() {\n    this.triggerStrategy = this.createTriggerStrategy();\n\n    this.subscribeOnButtonFocus();\n    this.subscribeOnTriggers();\n    this.subscribeOnOptionClick();\n\n    // TODO: #2254\n    this.zone.runOutsideAngular(() =>\n      setTimeout(() => {\n        this.renderer.addClass(this.hostRef.nativeElement, 'nb-transition');\n      }),\n    );\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n\n    this.destroy$.next();\n    this.destroy$.complete();\n\n    if (this.ref) {\n      this.ref.dispose();\n    }\n    if (this.triggerStrategy) {\n      this.triggerStrategy.destroy();\n    }\n  }\n\n  show() {\n    if (this.shouldShow()) {\n      this.attachToOverlay();\n\n      this.positionStrategy.positionChange.pipe(take(1), takeUntil(this.destroy$)).subscribe(() => {\n        this.setActiveOption();\n      });\n\n      this.cd.markForCheck();\n    }\n  }\n\n  hide() {\n    if (this.isOpen) {\n      this.ref.detach();\n      this.cd.markForCheck();\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    this.cd.markForCheck();\n  }\n\n  writeValue(value): void {\n    if (!this.alive) {\n      return;\n    }\n\n    if (this.canSelectValue()) {\n      this.setSelection(value);\n      if (this.selectionModel.length) {\n        this.queue = null;\n      }\n    } else {\n      this.queue = value;\n    }\n  }\n\n  /**\n   * Selects option or clear all selected options if value is null.\n   * */\n  protected handleOptionClick(option: NbOptionComponent) {\n    this.queue = null;\n    if (option.value == null) {\n      this.reset();\n    } else {\n      this.selectOption(option);\n    }\n\n    this.cd.markForCheck();\n  }\n\n  /**\n   * Deselect all selected options.\n   * */\n  protected reset() {\n    this.selectionModel.forEach((option: NbOptionComponent) => option.deselect());\n    this.selectionModel = [];\n    this.hide();\n    this.button.nativeElement.focus();\n    this.emitSelected(this.multiple ? [] : null);\n  }\n\n  /**\n   * Determines how to select option as multiple or single.\n   * */\n  protected selectOption(option: NbOptionComponent) {\n    if (this.multiple) {\n      this.handleMultipleSelect(option);\n    } else {\n      this.handleSingleSelect(option);\n    }\n  }\n\n  /**\n   * Select single option.\n   * */\n  protected handleSingleSelect(option: NbOptionComponent) {\n    const selected = this.selectionModel.pop();\n\n    if (selected && !this._compareWith(selected.value, option.value)) {\n      selected.deselect();\n    }\n\n    this.selectionModel = [option];\n    option.select();\n    this.hide();\n    this.button.nativeElement.focus();\n\n    this.emitSelected(option.value);\n  }\n\n  /**\n   * Select for multiple options.\n   * */\n  protected handleMultipleSelect(option: NbOptionComponent) {\n    if (option.selected) {\n      this.selectionModel = this.selectionModel.filter((s) => !this._compareWith(s.value, option.value));\n      option.deselect();\n    } else {\n      this.selectionModel.push(option);\n      option.select();\n    }\n\n    this.emitSelected(this.selectionModel.map((opt: NbOptionComponent) => opt.value));\n  }\n\n  protected attachToOverlay() {\n    if (!this.ref) {\n      this.createOverlay();\n      this.subscribeOnPositionChange();\n      this.createKeyManager();\n      this.subscribeOnOverlayKeys();\n    }\n\n    this.ref.attach(this.portal);\n  }\n\n  protected setActiveOption() {\n    if (this.selectionModel.length) {\n      this.keyManager.setActiveItem(this.selectionModel[0]);\n    } else {\n      this.keyManager.setFirstItemActive();\n    }\n  }\n\n  protected createOverlay() {\n    const scrollStrategy = this.createScrollStrategy();\n    this.positionStrategy = this.createPositionStrategy();\n    this.ref = this.overlay.create({\n      positionStrategy: this.positionStrategy,\n      scrollStrategy,\n      panelClass: this.optionsPanelClass,\n    });\n  }\n\n  protected createKeyManager(): void {\n    this.keyManager = this.focusKeyManagerFactoryService.create(this.options).withTypeAhead(200);\n  }\n\n  protected createPositionStrategy(): NbAdjustableConnectedPositionStrategy {\n    return this.positionBuilder\n      .connectedTo(this.button)\n      .position(NbPosition.BOTTOM)\n      .offset(this.optionsOverlayOffset)\n      .adjustment(NbAdjustment.VERTICAL);\n  }\n\n  protected createScrollStrategy(): NbScrollStrategy {\n    return this.overlay.scrollStrategies[this.scrollStrategy]();\n  }\n\n  protected createTriggerStrategy(): NbTriggerStrategy {\n    return this.triggerStrategyBuilder\n      .trigger(NbTrigger.CLICK)\n      .host(this.hostRef.nativeElement)\n      .container(() => this.getContainer())\n      .build();\n  }\n\n  protected subscribeOnTriggers() {\n    this.triggerStrategy.show$.subscribe(() => this.show());\n    this.triggerStrategy.hide$.pipe(filter(() => this.isOpen)).subscribe(($event: Event) => {\n      this.hide();\n      if (!this.isClickedWithinComponent($event)) {\n        this.onTouched();\n      }\n    });\n  }\n\n  protected subscribeOnPositionChange() {\n    this.positionStrategy.positionChange.pipe(takeUntil(this.destroy$)).subscribe((position: NbPosition) => {\n      this.overlayPosition = position;\n      this.cd.detectChanges();\n    });\n  }\n\n  protected subscribeOnOptionClick() {\n    /**\n     * If the user changes provided options list in the runtime we have to handle this\n     * and resubscribe on options selection changes event.\n     * Otherwise, the user will not be able to select new options.\n     * */\n    this.options.changes\n      .pipe(\n        startWith(this.options),\n        switchMap((options: QueryList<NbOptionComponent>) => {\n          return merge(...options.map((option) => option.click));\n        }),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((clickedOption: NbOptionComponent) => this.handleOptionClick(clickedOption));\n  }\n\n  protected subscribeOnOverlayKeys(): void {\n    this.ref\n      .keydownEvents()\n      .pipe(\n        filter(() => this.isOpen),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((event: KeyboardEvent) => {\n        if (event.keyCode === ESCAPE) {\n          this.button.nativeElement.focus();\n          this.hide();\n        } else {\n          this.keyManager.onKeydown(event);\n        }\n      });\n\n    this.keyManager.tabOut.pipe(takeUntil(this.destroy$)).subscribe(() => {\n      this.hide();\n      this.onTouched();\n    });\n  }\n\n  protected subscribeOnButtonFocus() {\n    this.focusMonitor\n      .monitor(this.button)\n      .pipe(\n        map((origin) => !!origin),\n        finalize(() => this.focusMonitor.stopMonitoring(this.button)),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(this.focused$);\n  }\n\n  protected getContainer() {\n    return (\n      this.ref &&\n      this.ref.hasAttached() &&\n      <ComponentRef<any>>{\n        location: {\n          nativeElement: this.ref.overlayElement,\n        },\n      }\n    );\n  }\n\n  /**\n   * Propagate selected value.\n   * */\n  protected emitSelected(selected) {\n    this.onChange(selected);\n    this.selectedChange.emit(selected);\n  }\n\n  /**\n   * Set selected value in model.\n   * */\n  protected setSelection(value) {\n    const isResetValue = value == null;\n    let safeValue = value;\n\n    if (this.multiple) {\n      safeValue = value ?? [];\n    }\n\n    const isArray: boolean = Array.isArray(safeValue);\n\n    if (this.multiple && !isArray && !isResetValue) {\n      throw new Error(\"Can't assign single value if select is marked as multiple\");\n    }\n    if (!this.multiple && isArray) {\n      throw new Error(\"Can't assign array if select is not marked as multiple\");\n    }\n\n    const previouslySelectedOptions = this.selectionModel;\n    this.selectionModel = [];\n\n    if (this.multiple) {\n      safeValue.forEach((option) => this.selectValue(option));\n    } else {\n      this.selectValue(safeValue);\n    }\n\n    // find options which were selected before and trigger deselect\n    previouslySelectedOptions\n      .filter((option: NbOptionComponent) => !this.selectionModel.includes(option))\n      .forEach((option: NbOptionComponent) => option.deselect());\n\n    this.cd.markForCheck();\n  }\n\n  /**\n   * Selects value.\n   * */\n  protected selectValue(value) {\n    if (value == null) {\n      return;\n    }\n\n    const corresponding = this.options.find((option: NbOptionComponent) => this._compareWith(option.value, value));\n\n    if (corresponding) {\n      corresponding.select();\n      this.selectionModel.push(corresponding);\n    }\n  }\n\n  protected shouldShow(): boolean {\n    return this.isHidden && this.options?.length > 0;\n  }\n\n  /**\n   * Sets touched if focus moved outside of button and overlay,\n   * ignoring the case when focus moved to options overlay.\n   */\n  trySetTouched() {\n    if (this.isHidden) {\n      this.onTouched();\n    }\n  }\n\n  protected isClickedWithinComponent($event: Event) {\n    return this.hostRef.nativeElement === $event.target || this.hostRef.nativeElement.contains($event.target as Node);\n  }\n\n  protected canSelectValue(): boolean {\n    return !!(this.options && this.options.length);\n  }\n\n  @HostBinding('class.size-tiny')\n  get tiny(): boolean {\n    return this.size === 'tiny';\n  }\n  @HostBinding('class.size-small')\n  get small(): boolean {\n    return this.size === 'small';\n  }\n  @HostBinding('class.size-medium')\n  get medium(): boolean {\n    return this.size === 'medium';\n  }\n  @HostBinding('class.size-large')\n  get large(): boolean {\n    return this.size === 'large';\n  }\n  @HostBinding('class.size-giant')\n  get giant(): boolean {\n    return this.size === 'giant';\n  }\n  @HostBinding('class.status-primary')\n  get primary(): boolean {\n    return this.status === 'primary';\n  }\n  @HostBinding('class.status-info')\n  get info(): boolean {\n    return this.status === 'info';\n  }\n  @HostBinding('class.status-success')\n  get success(): boolean {\n    return this.status === 'success';\n  }\n  @HostBinding('class.status-warning')\n  get warning(): boolean {\n    return this.status === 'warning';\n  }\n  @HostBinding('class.status-danger')\n  get danger(): boolean {\n    return this.status === 'danger';\n  }\n  @HostBinding('class.status-basic')\n  get basic(): boolean {\n    return this.status === 'basic';\n  }\n  @HostBinding('class.status-control')\n  get control(): boolean {\n    return this.status === 'control';\n  }\n  @HostBinding('class.shape-rectangle')\n  get rectangle(): boolean {\n    return this.shape === 'rectangle';\n  }\n  @HostBinding('class.shape-round')\n  get round(): boolean {\n    return this.shape === 'round';\n  }\n  @HostBinding('class.shape-semi-round')\n  get semiRound(): boolean {\n    return this.shape === 'semi-round';\n  }\n}\n","<button\n  [disabled]=\"disabled\"\n  [ngClass]=\"selectButtonClasses\"\n  (blur)=\"trySetTouched()\"\n  (keydown.arrowDown)=\"show()\"\n  (keydown.arrowUp)=\"show()\"\n  class=\"select-button\"\n  type=\"button\"\n  #selectButton\n>\n  <span (click)=\"disabled && $event.stopPropagation()\">\n    <ng-container *ngIf=\"selectionModel.length; else placeholderTemplate\">\n      <ng-container *ngIf=\"customLabel; else defaultSelectionTemplate\">\n        <ng-content select=\"nb-select-label\"></ng-content>\n      </ng-container>\n\n      <ng-template #defaultSelectionTemplate>{{ selectionView }}</ng-template>\n    </ng-container>\n\n    <ng-template #placeholderTemplate>{{ placeholder }}</ng-template>\n  </span>\n\n  <nb-icon\n    icon=\"chevron-down-outline\"\n    pack=\"nebular-essentials\"\n    (click)=\"disabled && $event.stopPropagation()\"\n    aria-hidden=\"true\"\n  >\n  </nb-icon>\n</button>\n\n<nb-option-list\n  *nbPortal\n  [size]=\"size\"\n  [position]=\"overlayPosition\"\n  [style.width.px]=\"optionsWidth\"\n  [ngClass]=\"optionsListClass\"\n>\n  <ng-content select=\"nb-option, nb-option-group\"></ng-content>\n</nb-option-list>\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChildren,\n  HostBinding,\n  Input,\n  OnDestroy,\n  QueryList,\n} from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { from, Subject } from 'rxjs';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbOptionComponent } from './option.component';\n\n/**\n * NbOptionGroupComponent\n *\n * @styles\n *\n * option-group-text-color:\n * option-group-tiny-start-padding:\n * option-group-small-start-padding:\n * option-group-medium-start-padding:\n * option-group-large-start-padding:\n * option-group-giant-start-padding:\n **/\n@Component({\n    selector: 'nb-option-group',\n    styleUrls: ['./option-group.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n    <span class=\"option-group-title\">{{ title }}</span>\n    <ng-content select=\"nb-option, ng-container\"></ng-content>\n  `,\n    standalone: false\n})\nexport class NbOptionGroupComponent implements AfterContentInit, OnDestroy {\n\n  protected destroy$ = new Subject<void>();\n\n  @Input() title: string;\n\n  @Input()\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = convertToBoolProperty(value);\n\n    if (this.options) {\n      this.updateOptionsDisabledState();\n    }\n  }\n  protected _disabled: boolean = false;\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  @HostBinding('attr.disabled')\n  get disabledAttribute(): '' | null {\n    return this.disabled ? '' : null;\n  }\n\n  @ContentChildren(NbOptionComponent, { descendants: true }) options: QueryList<NbOptionComponent<any>>;\n\n  ngAfterContentInit() {\n    if (this.options.length) {\n      this.asyncUpdateOptionsDisabledState();\n    }\n\n    this.options.changes\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.asyncUpdateOptionsDisabledState());\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  /**\n   * Sets disabled state for each option to current group disabled state.\n   */\n  protected updateOptionsDisabledState(): void {\n    this.options.forEach((option: NbOptionComponent) => option.setDisabledByGroupState(this.disabled));\n  }\n\n  /**\n   * Updates options disabled state after promise resolution.\n   * This way change detection will be triggered after options state updated.\n   * Use this method when updating options during change detection run (e.g. QueryList.changes, lifecycle hooks).\n   */\n  protected asyncUpdateOptionsDisabledState(): void {\n    // Wrap Promise into Observable with `takeUntil(this.destroy$)` to prevent update if component destroyed.\n    from(Promise.resolve())\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.updateOptionsDisabledState());\n  }\n}\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NbOptionComponent } from './option.component';\nimport { NbOptionGroupComponent } from './option-group.component';\nimport { NbOptionListComponent } from './option-list.component';\nimport { NbCheckboxModule } from '../checkbox/checkbox.module';\n\nconst NB_OPTION_LIST_COMPONENTS = [\n  NbOptionListComponent,\n  NbOptionComponent,\n  NbOptionGroupComponent,\n];\n\n@NgModule({\n  declarations: [\n    ...NB_OPTION_LIST_COMPONENTS,\n  ],\n  imports: [\n    CommonModule,\n    NbCheckboxModule,\n  ],\n  exports: [\n    ...NB_OPTION_LIST_COMPONENTS,\n  ],\n})\nexport class NbOptionModule { }\n","import { NgModule } from '@angular/core';\n\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbInputModule } from '../input/input.module';\nimport { NbCardModule } from '../card/card.module';\nimport { NbButtonModule } from '../button/button.module';\nimport { NbSelectComponent, NbSelectLabelComponent } from './select.component';\nimport { NbOptionModule } from '../option/option-list.module';\nimport { NbIconModule } from '../icon/icon.module';\n\nconst NB_SELECT_COMPONENTS = [NbSelectComponent, NbSelectLabelComponent];\n\n@NgModule({\n  imports: [NbSharedModule, NbOverlayModule, NbButtonModule, NbInputModule, NbCardModule, NbIconModule, NbOptionModule],\n  exports: [...NB_SELECT_COMPONENTS, NbOptionModule],\n  declarations: [...NB_SELECT_COMPONENTS],\n})\nexport class NbSelectModule {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n    selector: '[nbPrefix]',\n    standalone: false\n})\nexport class NbPrefixDirective {\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n    selector: '[nbSuffix]',\n    standalone: false\n})\nexport class NbSuffixDirective {\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  ChangeDetectionStrategy,\n  ContentChild,\n  AfterContentChecked,\n  ChangeDetectorRef,\n  ContentChildren,\n  QueryList,\n  AfterContentInit,\n  OnDestroy,\n  NgZone,\n  ElementRef,\n  Renderer2,\n  AfterViewInit,\n  HostBinding,\n} from '@angular/core';\nimport { merge, Subject, Observable, combineLatest, ReplaySubject } from 'rxjs';\nimport { takeUntil, distinctUntilChanged, map, tap } from 'rxjs/operators';\n\nimport { NbPrefixDirective } from './prefix.directive';\nimport { NbSuffixDirective } from './suffix.directive';\nimport { NbFormFieldControl, NbFormControlState, NbFormFieldControlConfig } from './form-field-control';\n\nexport type NbFormControlAddon = 'prefix' | 'suffix';\n\nfunction throwFormControlElementNotFound() {\n  throw new Error(`NbFormFieldComponent must contain [nbInput]`)\n}\n\n/*\n * NbFormFieldComponent\n *\n * @styles\n *\n * form-field-addon-basic-text-color:\n * form-field-addon-basic-highlight-text-color:\n * form-field-addon-primary-text-color:\n * form-field-addon-primary-highlight-text-color:\n * form-field-addon-success-text-color:\n * form-field-addon-success-highlight-text-color:\n * form-field-addon-info-text-color:\n * form-field-addon-info-highlight-text-color:\n * form-field-addon-warning-text-color:\n * form-field-addon-warning-highlight-text-color:\n * form-field-addon-danger-text-color:\n * form-field-addon-danger-highlight-text-color:\n * form-field-addon-control-text-color:\n * form-field-addon-control-highlight-text-color:\n * form-field-addon-disabled-text-color:\n * form-field-addon-tiny-height:\n * form-field-addon-tiny-width:\n * form-field-addon-tiny-icon-size:\n * form-field-addon-tiny-font-size:\n * form-field-addon-tiny-line-height:\n * form-field-addon-tiny-font-weight:\n * form-field-addon-small-height:\n * form-field-addon-small-width:\n * form-field-addon-small-icon-size:\n * form-field-addon-small-font-size:\n * form-field-addon-small-line-height:\n * form-field-addon-small-font-weight:\n * form-field-addon-medium-height:\n * form-field-addon-medium-width:\n * form-field-addon-medium-icon-size:\n * form-field-addon-medium-font-size:\n * form-field-addon-medium-line-height:\n * form-field-addon-medium-font-weight:\n * form-field-addon-large-height:\n * form-field-addon-large-width:\n * form-field-addon-large-icon-size:\n * form-field-addon-large-font-size:\n * form-field-addon-large-line-height:\n * form-field-addon-large-font-weight:\n * form-field-addon-giant-height:\n * form-field-addon-giant-width:\n * form-field-addon-giant-icon-size:\n * form-field-addon-giant-font-size:\n * form-field-addon-giant-line-height:\n * form-field-addon-giant-font-weight:\n **/\n@Component({\n    selector: 'nb-form-field',\n    styleUrls: ['./form-field.component.scss'],\n    templateUrl: './form-field.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbFormFieldComponent implements AfterContentChecked, AfterContentInit, AfterViewInit, OnDestroy {\n\n  protected readonly destroy$ = new Subject<void>();\n\n  protected formControlState$ = new ReplaySubject<NbFormControlState>(1);\n  prefixClasses$: Observable<string[]> = this.formControlState$.pipe(map(s => this.getAddonClasses('prefix', s)));\n  suffixClasses$: Observable<string[]> = this.formControlState$.pipe(map(s => this.getAddonClasses('suffix', s)));\n\n  @ContentChildren(NbPrefixDirective, { descendants: true }) prefix: QueryList<NbPrefixDirective>;\n  @ContentChildren(NbSuffixDirective, { descendants: true }) suffix: QueryList<NbSuffixDirective>;\n\n  @ContentChild(NbFormFieldControl, { static: false }) formControl: NbFormFieldControl;\n  @ContentChild(NbFormFieldControlConfig, { static: false }) formControlConfig: NbFormFieldControlConfig;\n\n  @HostBinding('class') formFieldClasses;\n\n  constructor(\n    protected cd: ChangeDetectorRef,\n    protected zone: NgZone,\n    protected elementRef: ElementRef,\n    protected renderer: Renderer2,\n  ) {\n  }\n\n  ngAfterContentChecked() {\n    if (!this.formControl) {\n      throwFormControlElementNotFound();\n    }\n  }\n\n  ngAfterContentInit() {\n    this.subscribeToFormControlStateChange();\n    this.subscribeToAddonChange();\n  }\n\n  ngAfterViewInit() {\n    // TODO: #2254\n    this.zone.runOutsideAngular(() => setTimeout(() => {\n      this.renderer.addClass(this.elementRef.nativeElement, 'nb-transition');\n    }));\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n  }\n\n  shouldShowPrefix(): boolean {\n    return this.getFormControlConfig().supportsPrefix && !!this.prefix.length;\n  }\n\n  shouldShowSuffix(): boolean {\n    return this.getFormControlConfig().supportsSuffix && !!this.suffix.length;\n  }\n\n  protected subscribeToFormControlStateChange() {\n    const { disabled$, focused$, size$, status$, fullWidth$ } = this.formControl;\n\n    combineLatest([disabled$, focused$, size$, status$, fullWidth$])\n      .pipe(\n        map(([disabled, focused, size, status, fullWidth]) => ({ disabled, focused, size, status, fullWidth })),\n        distinctUntilChanged((oldState, state) => this.isStatesEqual(oldState, state)),\n        tap(({ size, fullWidth }) => {\n          const formFieldClasses = [`nb-form-field-size-${size}`];\n          if (!fullWidth) {\n            formFieldClasses.push('nb-form-field-limited-width')\n          }\n          this.formFieldClasses = formFieldClasses.join(' ');\n        }),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(this.formControlState$);\n  }\n\n  protected subscribeToAddonChange() {\n    merge(this.prefix.changes, this.suffix.changes)\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.cd.markForCheck());\n  }\n\n  protected getAddonClasses(addon: NbFormControlAddon, state: NbFormControlState): string[] {\n    const classes = [\n      'nb-form-field-addon',\n      `nb-form-field-${addon}-${state.size}`,\n    ];\n\n    if (state.disabled) {\n      classes.push(`nb-form-field-addon-disabled`);\n    } else if (state.focused) {\n      classes.push(`nb-form-field-addon-${state.status}-highlight`);\n    } else {\n      classes.push(`nb-form-field-addon-${state.status}`);\n    }\n\n    return classes;\n  }\n\n  protected getFormControlConfig(): NbFormFieldControlConfig {\n    return this.formControlConfig || new NbFormFieldControlConfig();\n  }\n\n  protected isStatesEqual(oldState: NbFormControlState, state: NbFormControlState): boolean {\n    return oldState.status === state.status &&\n           oldState.disabled === state.disabled &&\n           oldState.focused === state.focused &&\n           oldState.fullWidth === state.fullWidth &&\n           oldState.size === state.size;\n  }\n}\n","<div *ngIf=\"shouldShowPrefix()\" [ngClass]=\"prefixClasses$ | async\">\n  <ng-content select=\"[nbPrefix]\"></ng-content>\n</div>\n\n<div class=\"nb-form-control-container\"\n     [class.nb-form-field-control-with-prefix]=\"shouldShowPrefix()\"\n     [class.nb-form-field-control-with-suffix]=\"shouldShowSuffix()\">\n  <ng-content></ng-content>\n</div>\n\n<div *ngIf=\"shouldShowSuffix()\" [ngClass]=\"suffixClasses$ | async\">\n  <ng-content select=\"[nbSuffix]\"></ng-content>\n</div>\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  ContentChild,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  Inject,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList,\n  ViewChild,\n  SimpleChanges,\n  OnChanges,\n  Renderer2,\n  NgZone,\n} from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ListKeyManager } from '@angular/cdk/a11y';\nimport { merge, Subject, BehaviorSubject, from, combineLatest, animationFrameScheduler, EMPTY } from 'rxjs';\nimport { startWith, switchMap, takeUntil, filter, map, finalize, take, observeOn } from 'rxjs/operators';\n\nimport { NbStatusService } from '../../services/status.service';\nimport {\n  NbAdjustableConnectedPositionStrategy,\n  NbAdjustment,\n  NbPosition,\n  NbPositionBuilderService,\n} from '../cdk/overlay/overlay-position';\nimport { NbOverlayRef, NbPortalDirective, NbScrollStrategy } from '../cdk/overlay/mapping';\nimport { NbOverlayService } from '../cdk/overlay/overlay-service';\nimport { NbTrigger, NbTriggerStrategy, NbTriggerStrategyBuilderService } from '../cdk/overlay/overlay-trigger';\nimport { NbFocusKeyManager, NbFocusKeyManagerFactoryService } from '../cdk/a11y/focus-key-manager';\nimport { ENTER, ESCAPE } from '../cdk/keycodes/keycodes';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentShape } from '../component-shape';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NB_DOCUMENT } from '../../theme.options';\nimport { NbOptionComponent } from '../option/option.component';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NB_SELECT_INJECTION_TOKEN } from '../select/select-injection-tokens';\nimport { NbFormFieldControl, NbFormFieldControlConfig } from '../form-field/form-field-control';\nimport { NbFocusMonitor } from '../cdk/a11y/a11y.module';\nimport { NbScrollStrategies } from '../cdk/adapter/block-scroll-strategy-adapter';\nimport {\n  NbActiveDescendantKeyManager,\n  NbActiveDescendantKeyManagerFactoryService,\n} from '../cdk/a11y/descendant-key-manager';\nimport {\n  NbSelectAppearance,\n  NbSelectCompareFunction,\n  nbSelectFormFieldControlConfigFactory,\n  NbSelectLabelComponent,\n} from '../select/select.component';\n\n/**\n * Experimental component with autocomplete possibility.\n * Could be changed without any prior notice.\n * Use at your own risk.\n *\n * Style variables is fully inherited.\n * Component's public API (`@Input()` and `@Output()`) works in a same way as NbSelectComponent.\n */\n@Component({\n    selector: 'nb-select-with-autocomplete',\n    templateUrl: './select-with-autocomplete.component.html',\n    styleUrls: ['./select-with-autocomplete.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => NbSelectWithAutocompleteComponent),\n            multi: true,\n        },\n        { provide: NB_SELECT_INJECTION_TOKEN, useExisting: NbSelectWithAutocompleteComponent },\n        { provide: NbFormFieldControl, useExisting: NbSelectWithAutocompleteComponent },\n        { provide: NbFormFieldControlConfig, useFactory: nbSelectFormFieldControlConfigFactory },\n    ],\n    standalone: false\n})\nexport class NbSelectWithAutocompleteComponent\n  implements OnChanges, AfterViewInit, AfterContentInit, OnDestroy, ControlValueAccessor, NbFormFieldControl\n{\n  /**\n   * Select size, available sizes:\n   * `tiny`, `small`, `medium` (default), `large`, `giant`\n   */\n  @Input() size: NbComponentSize = 'medium';\n\n  /**\n   * Select status (adds specific styles):\n   * `basic`, `primary`, `info`, `success`, `warning`, `danger`, `control`\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Select shapes: `rectangle` (default), `round`, `semi-round`\n   */\n  @Input() shape: NbComponentShape = 'rectangle';\n\n  /**\n   * Select appearances: `outline` (default), `filled`, `hero`\n   */\n  @Input() appearance: NbSelectAppearance = 'outline';\n\n  /**\n   * Specifies class to be set on `nb-option`s container (`nb-option-list`)\n   * */\n  @Input() optionsListClass: NgClass['ngClass'];\n\n  /**\n   * Specifies class for the overlay panel with options\n   * */\n  @Input() optionsPanelClass: string | string[];\n\n  /**\n   * Specifies width (in pixels) to be set on `nb-option`s container (`nb-option-list`)\n   * */\n  @Input()\n  get optionsWidth(): number {\n    return this._optionsWidth ?? this.hostWidth;\n  }\n  set optionsWidth(value: number) {\n    this._optionsWidth = value;\n  }\n  protected _optionsWidth: number | undefined;\n\n  /**\n   * Adds `outline` styles\n   */\n  @Input()\n  @HostBinding('class.appearance-outline')\n  get outline(): boolean {\n    return this.appearance === 'outline';\n  }\n  set outline(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'outline';\n    }\n  }\n  static ngAcceptInputType_outline: NbBooleanInput;\n\n  /**\n   * Adds `filled` styles\n   */\n  @Input()\n  @HostBinding('class.appearance-filled')\n  get filled(): boolean {\n    return this.appearance === 'filled';\n  }\n  set filled(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'filled';\n    }\n  }\n  static ngAcceptInputType_filled: NbBooleanInput;\n\n  /**\n   * Adds `hero` styles\n   */\n  @Input()\n  @HostBinding('class.appearance-hero')\n  get hero(): boolean {\n    return this.appearance === 'hero';\n  }\n  set hero(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'hero';\n    }\n  }\n  static ngAcceptInputType_hero: NbBooleanInput;\n\n  /**\n   * Disables the select\n   */\n  @Input()\n  get disabled(): boolean {\n    return !!this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = convertToBoolProperty(value);\n  }\n  protected _disabled: boolean;\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  /**\n   * If set element will fill its container\n   */\n  @Input()\n  @HostBinding('class.full-width')\n  get fullWidth(): boolean {\n    return this._fullWidth;\n  }\n  set fullWidth(value: boolean) {\n    this._fullWidth = convertToBoolProperty(value);\n  }\n  protected _fullWidth: boolean = false;\n  static ngAcceptInputType_fullWidth: NbBooleanInput;\n\n  /**\n   * Renders select placeholder if nothing selected.\n   * */\n  @Input() placeholder: string = '';\n\n  /**\n   * A function to compare option value with selected value.\n   * By default, values are compared with strict equality (`===`).\n   */\n  @Input()\n  get compareWith(): NbSelectCompareFunction {\n    return this._compareWith;\n  }\n  set compareWith(fn: NbSelectCompareFunction) {\n    if (typeof fn !== 'function') {\n      return;\n    }\n\n    this._compareWith = fn;\n\n    if (this.selectionModel.length && this.canSelectValue()) {\n      this.setSelection(this.selected);\n    }\n  }\n  protected _compareWith: NbSelectCompareFunction = (v1: any, v2: any) => v1 === v2;\n\n  /**\n   * Accepts selected item or array of selected items.\n   * */\n  @Input()\n  set selected(value) {\n    this.writeValue(value);\n  }\n  get selected() {\n    return this.multiple ? this.selectionModel.map((o) => o.value) : this.selectionModel[0].value;\n  }\n\n  /**\n   * Gives capability just write `multiple` over the element.\n   * */\n  @Input()\n  get multiple(): boolean {\n    return this._multiple;\n  }\n  set multiple(value: boolean) {\n    this._multiple = convertToBoolProperty(value);\n\n    this.updatePositionStrategy();\n    this.updateCurrentKeyManager();\n  }\n  protected _multiple: boolean = false;\n  static ngAcceptInputType_multiple: NbBooleanInput;\n\n  /**\n   * Determines options overlay offset (in pixels).\n   **/\n  @Input() optionsOverlayOffset = 8;\n\n  /**\n   * Determines options overlay scroll strategy.\n   **/\n  @Input() scrollStrategy: NbScrollStrategies = 'block';\n\n  /**\n   * Experimental input.\n   * Could be changed without any prior notice.\n   * Use at your own risk.\n   *\n   * It replaces the button with input when the select is opened.\n   * That replacement provides a very basic API to implement options filtering functionality.\n   * Filtering itself isn't implemented inside select.\n   * So it should be implemented by the user.\n   */\n  @Input()\n  set withOptionsAutocomplete(value: boolean) {\n    this._withOptionsAutocomplete = convertToBoolProperty(value);\n    this.updatePositionStrategy();\n    this.updateCurrentKeyManager();\n\n    if (!value) {\n      this.resetAutocompleteInput();\n    }\n  }\n  get withOptionsAutocomplete(): boolean {\n    return this._withOptionsAutocomplete;\n  }\n  protected _withOptionsAutocomplete: boolean = false;\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  /**\n   * Will be emitted when selected value changes.\n   * */\n  @Output() selectedChange: EventEmitter<any> = new EventEmitter();\n  @Output() selectOpen: EventEmitter<void> = new EventEmitter();\n  @Output() selectClose: EventEmitter<void> = new EventEmitter();\n  @Output() optionsAutocompleteInputChange: EventEmitter<string> = new EventEmitter();\n\n  /**\n   * List of `NbOptionComponent`'s components passed as content.\n   * TODO maybe it would be better provide wrapper\n   * */\n  @ContentChildren(NbOptionComponent, { descendants: true }) options: QueryList<NbOptionComponent>;\n\n  /**\n   * Custom select label, will be rendered instead of default enumeration with coma.\n   * */\n  @ContentChild(NbSelectLabelComponent) customLabel;\n\n  /**\n   * NbCard with options content.\n   * */\n  @ViewChild(NbPortalDirective) portal: NbPortalDirective;\n\n  @ViewChild('selectButton', { read: ElementRef }) button: ElementRef<HTMLButtonElement> | undefined;\n  @ViewChild('optionsAutocompleteInput', { read: ElementRef }) optionsAutocompleteInput:\n    | ElementRef<HTMLInputElement>\n    | undefined;\n\n  /**\n   * Determines is select opened.\n   * */\n  @HostBinding('class.open')\n  get isOpen(): boolean {\n    return this.ref && this.ref.hasAttached();\n  }\n\n  get isOptionsAutocompleteAllowed(): boolean {\n    return this.withOptionsAutocomplete;\n  }\n\n  get isOptionsAutocompleteInputShown(): boolean {\n    return this.isOptionsAutocompleteAllowed && this.isOpen;\n  }\n\n  /**\n   * List of selected options.\n   * */\n  selectionModel: NbOptionComponent[] = [];\n\n  positionStrategy$: BehaviorSubject<NbAdjustableConnectedPositionStrategy | undefined> = new BehaviorSubject(\n    undefined,\n  );\n\n  /**\n   * Current overlay position because of we have to toggle overlayPosition\n   * in [ngClass] direction and this directive can use only string.\n   */\n  overlayPosition: NbPosition = '' as NbPosition;\n\n  protected ref: NbOverlayRef;\n\n  protected triggerStrategy: NbTriggerStrategy;\n\n  protected alive: boolean = true;\n\n  protected destroy$ = new Subject<void>();\n\n  protected currentKeyManager: ListKeyManager<NbOptionComponent>;\n  protected focusKeyManager: NbFocusKeyManager<NbOptionComponent>;\n  protected activeDescendantKeyManager: NbActiveDescendantKeyManager<NbOptionComponent>;\n\n  /**\n   * If a user assigns value before content nb-options's rendered the value will be putted in this variable.\n   * And then applied after content rendered.\n   * Only the last value will be applied.\n   * */\n  protected queue;\n\n  /**\n   * Function passed through control value accessor to propagate changes.\n   * */\n  protected onChange: Function = () => {};\n  protected onTouched: Function = () => {};\n\n  /*\n   * @docs-private\n   **/\n  status$ = new BehaviorSubject<NbComponentOrCustomStatus>(this.status);\n\n  /*\n   * @docs-private\n   **/\n  size$ = new BehaviorSubject<NbComponentSize>(this.size);\n\n  /*\n   * @docs-private\n   **/\n  focused$ = new BehaviorSubject<boolean>(false);\n\n  /*\n   * @docs-private\n   **/\n  disabled$ = new BehaviorSubject<boolean>(this.disabled);\n\n  /*\n   * @docs-private\n   **/\n  fullWidth$ = new BehaviorSubject<boolean>(this.fullWidth);\n\n  constructor(\n    @Inject(NB_DOCUMENT) protected document,\n    protected overlay: NbOverlayService,\n    protected hostRef: ElementRef<HTMLElement>,\n    protected positionBuilder: NbPositionBuilderService,\n    protected triggerStrategyBuilder: NbTriggerStrategyBuilderService,\n    protected cd: ChangeDetectorRef,\n    protected focusKeyManagerFactoryService: NbFocusKeyManagerFactoryService<NbOptionComponent>,\n    protected focusMonitor: NbFocusMonitor,\n    protected renderer: Renderer2,\n    protected zone: NgZone,\n    protected statusService: NbStatusService,\n    protected activeDescendantKeyManagerFactoryService: NbActiveDescendantKeyManagerFactoryService<NbOptionComponent>,\n  ) {}\n\n  /**\n   * Determines is select hidden.\n   * */\n  get isHidden(): boolean {\n    return !this.isOpen;\n  }\n\n  /**\n   * Returns width of the select button.\n   * */\n  get hostWidth(): number {\n    if (this.isOptionsAutocompleteInputShown) {\n      return this.optionsAutocompleteInput.nativeElement.getBoundingClientRect().width;\n    }\n    return this.button.nativeElement.getBoundingClientRect().width;\n  }\n\n  lastShownButtonWidth: number | undefined = undefined;\n\n  get selectButtonClasses(): string[] {\n    const classes = [];\n\n    if (!this.selectionModel.length) {\n      classes.push('placeholder');\n    }\n    if (!this.selectionModel.length && !this.placeholder) {\n      classes.push('empty');\n    }\n    if (this.isOpen) {\n      classes.push(this.overlayPosition);\n    }\n\n    return classes;\n  }\n\n  /**\n   * Content rendered in the label.\n   * */\n  get selectionView() {\n    if (this.isOptionsAutocompleteInputShown && this.multiple) {\n      return '';\n    }\n\n    if (this.selectionModel.length > 1) {\n      return this.selectionModel.map((option: NbOptionComponent) => option.content).join(', ');\n    }\n\n    return this.selectionModel[0]?.content?.trim() ?? '';\n  }\n\n  ngOnChanges({ disabled, status, size, fullWidth }: SimpleChanges) {\n    if (disabled) {\n      this.disabled$.next(disabled.currentValue);\n    }\n    if (status) {\n      this.status$.next(status.currentValue);\n    }\n    if (size) {\n      this.size$.next(size.currentValue);\n    }\n    if (fullWidth) {\n      this.fullWidth$.next(this.fullWidth);\n    }\n  }\n\n  ngAfterContentInit() {\n    this.options.changes\n      .pipe(\n        startWith(this.options),\n        filter(() => this.queue != null && this.canSelectValue()),\n        // Call 'writeValue' when current change detection run is finished.\n        // When writing is finished, change detection starts again, since\n        // microtasks queue is empty.\n        // Prevents ExpressionChangedAfterItHasBeenCheckedError.\n        switchMap((options: QueryList<NbOptionComponent>) => from(Promise.resolve(options))),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.writeValue(this.queue));\n  }\n\n  ngAfterViewInit() {\n    this.triggerStrategy = this.createTriggerStrategy();\n\n    this.subscribeOnButtonFocus();\n    this.subscribeOnTriggers();\n    this.subscribeOnOptionClick();\n\n    // TODO: #2254\n    this.zone.runOutsideAngular(() =>\n      setTimeout(() => {\n        this.renderer.addClass(this.hostRef.nativeElement, 'nb-transition');\n      }),\n    );\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n\n    this.destroy$.next();\n    this.destroy$.complete();\n\n    if (this.ref) {\n      this.ref.dispose();\n    }\n    if (this.triggerStrategy) {\n      this.triggerStrategy.destroy();\n    }\n  }\n\n  onAutocompleteInputChange(event: Event) {\n    this.optionsAutocompleteInputChange.emit((event.target as HTMLInputElement).value);\n  }\n\n  show() {\n    if (this.shouldShow()) {\n      this.lastShownButtonWidth = this.hostWidth;\n\n      this.attachToOverlay();\n\n      this.positionStrategy$\n        .pipe(\n          switchMap((positionStrategy) => positionStrategy.positionChange ?? EMPTY),\n          take(1),\n          takeUntil(this.destroy$),\n        )\n        .subscribe(() => {\n          if (this.isOptionsAutocompleteInputShown) {\n            this.optionsAutocompleteInput.nativeElement.focus();\n          }\n          this.setActiveOption();\n        });\n\n      this.selectOpen.emit();\n\n      this.cd.markForCheck();\n    }\n  }\n\n  hide() {\n    if (this.isOpen) {\n      this.ref.detach();\n      this.cd.markForCheck();\n      this.selectClose.emit();\n\n      this.resetAutocompleteInput();\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    this.cd.markForCheck();\n  }\n\n  writeValue(value): void {\n    if (!this.alive) {\n      return;\n    }\n\n    if (this.canSelectValue()) {\n      this.setSelection(value);\n      if (this.selectionModel.length) {\n        this.queue = null;\n      }\n    } else {\n      this.queue = value;\n    }\n  }\n\n  /**\n   * Selects option or clear all selected options if value is null.\n   * */\n  protected handleOptionClick(option: NbOptionComponent) {\n    this.queue = null;\n    if (option.value == null) {\n      this.reset();\n    } else {\n      this.selectOption(option);\n    }\n\n    this.cd.markForCheck();\n  }\n\n  /**\n   * Deselect all selected options.\n   * */\n  protected reset() {\n    this.selectionModel.forEach((option: NbOptionComponent) => option.deselect());\n    this.selectionModel = [];\n    this.hide();\n    this.focusButton();\n    this.emitSelected(this.multiple ? [] : null);\n  }\n\n  /**\n   * Determines how to select option as multiple or single.\n   * */\n  protected selectOption(option: NbOptionComponent) {\n    if (this.multiple) {\n      this.handleMultipleSelect(option);\n    } else {\n      this.handleSingleSelect(option);\n    }\n  }\n\n  /**\n   * Select single option.\n   * */\n  protected handleSingleSelect(option: NbOptionComponent) {\n    const selected = this.selectionModel.pop();\n\n    if (selected && !this._compareWith(selected.value, option.value)) {\n      selected.deselect();\n    }\n\n    this.selectionModel = [option];\n    option.select();\n    this.hide();\n    this.focusButton();\n    this.emitSelected(option.value);\n  }\n\n  /**\n   * Select for multiple options.\n   * */\n  protected handleMultipleSelect(option: NbOptionComponent) {\n    if (option.selected) {\n      this.selectionModel = this.selectionModel.filter((s) => !this._compareWith(s.value, option.value));\n      option.deselect();\n    } else {\n      this.selectionModel.push(option);\n      option.select();\n    }\n\n    this.emitSelected(this.selectionModel.map((opt: NbOptionComponent) => opt.value));\n  }\n\n  protected attachToOverlay() {\n    if (!this.ref) {\n      this.createOverlay();\n      this.subscribeOnPositionChange();\n      this.createKeyManager();\n      this.subscribeOnOverlayKeys();\n      this.subscribeOnOptionsAutocompleteChange();\n    }\n\n    this.ref.attach(this.portal);\n  }\n\n  protected setActiveOption() {\n    if (this.selectionModel.length && !this.selectionModel[0].hidden) {\n      this.currentKeyManager?.setActiveItem(this.selectionModel[0]);\n    } else {\n      this.currentKeyManager?.setFirstItemActive();\n    }\n  }\n\n  protected createOverlay() {\n    const scrollStrategy = this.createScrollStrategy();\n    this.positionStrategy$.next(this.createPositionStrategy());\n    this.ref = this.overlay.create({\n      positionStrategy: this.positionStrategy$.value,\n      scrollStrategy,\n      panelClass: this.optionsPanelClass,\n    });\n  }\n\n  protected createKeyManager(): void {\n    this.activeDescendantKeyManager = this.activeDescendantKeyManagerFactoryService\n      .create(this.options)\n      .skipPredicate((option) => {\n        return this.isOptionHidden(option);\n      });\n\n    this.focusKeyManager = this.focusKeyManagerFactoryService\n      .create(this.options)\n      .withTypeAhead(200)\n      .skipPredicate((option) => {\n        return this.isOptionHidden(option);\n      });\n\n    this.updateCurrentKeyManager();\n  }\n\n  protected updateCurrentKeyManager() {\n    this.currentKeyManager?.setActiveItem(-1);\n    if (this.isOptionsAutocompleteAllowed) {\n      this.currentKeyManager = this.activeDescendantKeyManager;\n    } else {\n      this.currentKeyManager = this.focusKeyManager;\n    }\n    this.setActiveOption();\n  }\n\n  protected resetAutocompleteInput() {\n    if (this.optionsAutocompleteInput?.nativeElement) {\n      this.optionsAutocompleteInput.nativeElement.value = this.selectionView;\n      this.optionsAutocompleteInputChange.emit('');\n    }\n  }\n\n  protected createPositionStrategy(): NbAdjustableConnectedPositionStrategy {\n    const element: ElementRef<HTMLInputElement | HTMLButtonElement> = this.isOptionsAutocompleteAllowed\n      ? this.optionsAutocompleteInput\n      : this.button;\n    return this.positionBuilder\n      .connectedTo(element)\n      .position(NbPosition.BOTTOM)\n      .offset(this.optionsOverlayOffset)\n      .adjustment(NbAdjustment.VERTICAL);\n  }\n\n  protected updatePositionStrategy(): void {\n    if (this.ref) {\n      this.positionStrategy$.next(this.createPositionStrategy());\n      this.ref.updatePositionStrategy(this.positionStrategy$.value);\n      if (this.isOpen) {\n        this.ref.updatePosition();\n      }\n    }\n  }\n\n  protected createScrollStrategy(): NbScrollStrategy {\n    return this.overlay.scrollStrategies[this.scrollStrategy]();\n  }\n\n  protected createTriggerStrategy(): NbTriggerStrategy {\n    return this.triggerStrategyBuilder\n      .trigger(NbTrigger.CLICK)\n      .host(this.hostRef.nativeElement)\n      .container(() => this.getContainer())\n      .build();\n  }\n\n  protected subscribeOnTriggers() {\n    this.triggerStrategy.show$.subscribe(() => this.show());\n    this.triggerStrategy.hide$.pipe(filter(() => this.isOpen)).subscribe(($event: Event) => {\n      this.hide();\n      if (!this.isClickedWithinComponent($event)) {\n        this.onTouched();\n      }\n    });\n  }\n\n  protected subscribeOnPositionChange() {\n    this.positionStrategy$\n      .pipe(\n        switchMap((positionStrategy) => positionStrategy.positionChange ?? EMPTY),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((position: NbPosition) => {\n        this.overlayPosition = position;\n        this.cd.detectChanges();\n      });\n  }\n\n  protected subscribeOnOptionClick() {\n    /**\n     * If the user changes provided options list in the runtime we have to handle this\n     * and resubscribe on options selection changes event.\n     * Otherwise, the user will not be able to select new options.\n     * */\n    this.options.changes\n      .pipe(\n        startWith(this.options),\n        switchMap((options: QueryList<NbOptionComponent>) => {\n          return merge(...options.map((option) => option.click));\n        }),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((clickedOption: NbOptionComponent) => this.handleOptionClick(clickedOption));\n  }\n\n  protected subscribeOnOverlayKeys(): void {\n    this.ref\n      .keydownEvents()\n      .pipe(\n        filter(() => this.isOpen),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((event: KeyboardEvent) => {\n        if (event.keyCode === ESCAPE) {\n          this.hide();\n          this.focusButton();\n        } else if (event.keyCode === ENTER && this.isOptionsAutocompleteInputShown) {\n          event.preventDefault();\n          const activeItem = this.currentKeyManager.activeItem;\n          if (activeItem) {\n            this.selectOption(activeItem);\n          }\n        } else {\n          this.currentKeyManager.onKeydown(event);\n        }\n      });\n\n    merge(\n      this.focusKeyManager.tabOut.pipe(filter(() => !this.isOptionsAutocompleteInputShown)),\n      this.activeDescendantKeyManager.tabOut.pipe(filter(() => this.isOptionsAutocompleteInputShown)),\n    )\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => {\n        this.hide();\n        this.onTouched();\n      });\n  }\n\n  protected subscribeOnOptionsAutocompleteChange() {\n    this.optionsAutocompleteInputChange\n      .pipe(\n        observeOn(animationFrameScheduler),\n        filter(() => this.isOptionsAutocompleteInputShown),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => {\n        if (this.isOptionHidden(this.currentKeyManager.activeItem)) {\n          this.currentKeyManager.setFirstItemActive();\n        }\n      });\n  }\n\n  protected subscribeOnButtonFocus() {\n    const buttonFocus$ = this.focusMonitor.monitor(this.button).pipe(\n      map((origin) => !!origin),\n      startWith(false),\n      finalize(() => this.focusMonitor.stopMonitoring(this.button)),\n    );\n\n    const filterInputFocus$ = this.focusMonitor.monitor(this.optionsAutocompleteInput).pipe(\n      map((origin) => !!origin),\n      startWith(false),\n      finalize(() => this.focusMonitor.stopMonitoring(this.button)),\n    );\n\n    combineLatest([buttonFocus$, filterInputFocus$])\n      .pipe(\n        map(([buttonFocus, filterInputFocus]) => buttonFocus || filterInputFocus),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(this.focused$);\n  }\n\n  protected getContainer() {\n    return (\n      this.ref &&\n      this.ref.hasAttached() &&\n      <ComponentRef<any>>{\n        location: {\n          nativeElement: this.ref.overlayElement,\n        },\n      }\n    );\n  }\n\n  protected focusButton() {\n    /**\n     * Need to wrap with setTimeout\n     * because otherwise focus could be called\n     * when the component hasn't rerendered the button\n     * which was hidden by `isOptionsAutocompleteInputShown` property.\n     */\n    setTimeout(() => {\n      this.button?.nativeElement?.focus();\n    });\n  }\n\n  /**\n   * Propagate selected value.\n   * */\n  protected emitSelected(selected) {\n    this.onChange(selected);\n    this.selectedChange.emit(selected);\n  }\n\n  /**\n   * Set selected value in model.\n   * */\n  protected setSelection(value) {\n    const isResetValue = value == null;\n    let safeValue = value;\n\n    if (this.multiple) {\n      safeValue = value ?? [];\n    }\n\n    const isArray: boolean = Array.isArray(safeValue);\n\n    if (this.multiple && !isArray && !isResetValue) {\n      throw new Error(\"Can't assign single value if select is marked as multiple\");\n    }\n    if (!this.multiple && isArray) {\n      throw new Error(\"Can't assign array if select is not marked as multiple\");\n    }\n\n    const previouslySelectedOptions = this.selectionModel;\n    this.selectionModel = [];\n\n    if (this.multiple) {\n      safeValue.forEach((option) => this.selectValue(option));\n    } else {\n      this.selectValue(safeValue);\n    }\n\n    // find options which were selected before and trigger deselect\n    previouslySelectedOptions\n      .filter((option: NbOptionComponent) => !this.selectionModel.includes(option))\n      .forEach((option: NbOptionComponent) => option.deselect());\n\n    this.cd.markForCheck();\n  }\n\n  /**\n   * Selects value.\n   * */\n  protected selectValue(value) {\n    if (value == null) {\n      return;\n    }\n\n    const corresponding = this.options.find((option: NbOptionComponent) => this._compareWith(option.value, value));\n\n    if (corresponding) {\n      corresponding.select();\n      this.selectionModel.push(corresponding);\n    }\n  }\n\n  protected shouldShow(): boolean {\n    return this.isHidden && this.options?.length > 0;\n  }\n\n  /**\n   * Sets touched if focus moved outside of button and overlay,\n   * ignoring the case when focus moved to options overlay.\n   */\n  trySetTouched() {\n    if (this.isHidden) {\n      this.onTouched();\n    }\n  }\n\n  protected isClickedWithinComponent($event: Event) {\n    return this.hostRef.nativeElement === $event.target || this.hostRef.nativeElement.contains($event.target as Node);\n  }\n\n  protected canSelectValue(): boolean {\n    return !!(this.options && this.options.length);\n  }\n\n  protected isOptionHidden(option: NbOptionComponent): boolean {\n    return option.hidden;\n  }\n\n  @HostBinding('class.size-tiny')\n  get tiny(): boolean {\n    return this.size === 'tiny';\n  }\n  @HostBinding('class.size-small')\n  get small(): boolean {\n    return this.size === 'small';\n  }\n  @HostBinding('class.size-medium')\n  get medium(): boolean {\n    return this.size === 'medium';\n  }\n  @HostBinding('class.size-large')\n  get large(): boolean {\n    return this.size === 'large';\n  }\n  @HostBinding('class.size-giant')\n  get giant(): boolean {\n    return this.size === 'giant';\n  }\n  @HostBinding('class.status-primary')\n  get primary(): boolean {\n    return this.status === 'primary';\n  }\n  @HostBinding('class.status-info')\n  get info(): boolean {\n    return this.status === 'info';\n  }\n  @HostBinding('class.status-success')\n  get success(): boolean {\n    return this.status === 'success';\n  }\n  @HostBinding('class.status-warning')\n  get warning(): boolean {\n    return this.status === 'warning';\n  }\n  @HostBinding('class.status-danger')\n  get danger(): boolean {\n    return this.status === 'danger';\n  }\n  @HostBinding('class.status-basic')\n  get basic(): boolean {\n    return this.status === 'basic';\n  }\n  @HostBinding('class.status-control')\n  get control(): boolean {\n    return this.status === 'control';\n  }\n  @HostBinding('class.shape-rectangle')\n  get rectangle(): boolean {\n    return this.shape === 'rectangle';\n  }\n  @HostBinding('class.shape-round')\n  get round(): boolean {\n    return this.shape === 'round';\n  }\n  @HostBinding('class.shape-semi-round')\n  get semiRound(): boolean {\n    return this.shape === 'semi-round';\n  }\n}\n","<button\n  [hidden]=\"isOptionsAutocompleteInputShown\"\n  [disabled]=\"disabled\"\n  [ngClass]=\"selectButtonClasses\"\n  (blur)=\"trySetTouched()\"\n  (keydown.arrowDown)=\"show()\"\n  (keydown.arrowUp)=\"show()\"\n  class=\"select-button\"\n  type=\"button\"\n  #selectButton\n>\n  <span (click)=\"disabled && $event.stopPropagation()\">\n    <ng-container *ngIf=\"selectionModel.length; else placeholderTemplate\">\n      <ng-container *ngIf=\"customLabel; else defaultSelectionTemplate\">\n        <ng-content select=\"nb-select-label\"></ng-content>\n      </ng-container>\n\n      <ng-template #defaultSelectionTemplate>{{ selectionView }}</ng-template>\n    </ng-container>\n\n    <ng-template #placeholderTemplate>{{ placeholder }}</ng-template>\n  </span>\n\n  <nb-icon\n    icon=\"chevron-down-outline\"\n    pack=\"nebular-essentials\"\n    (click)=\"disabled && $event.stopPropagation()\"\n    aria-hidden=\"true\"\n  >\n  </nb-icon>\n</button>\n\n<nb-form-field [hidden]=\"!isOptionsAutocompleteInputShown\">\n  <input\n    nbInput\n    fullWidth\n    [style.max-width.px]=\"lastShownButtonWidth\"\n    #optionsAutocompleteInput\n    [value]=\"selectionView\"\n    [placeholder]=\"placeholder\"\n    [status]=\"status\"\n    [shape]=\"shape\"\n    [fieldSize]=\"size\"\n    (blur)=\"trySetTouched()\"\n    (click)=\"$event.stopPropagation()\"\n    (dblclick)=\"$event.stopPropagation()\"\n    (input)=\"onAutocompleteInputChange($event)\"\n  />\n  <nb-icon nbSuffix icon=\"chevron-up-outline\" pack=\"nebular-essentials\" aria-hidden=\"true\"> </nb-icon>\n</nb-form-field>\n\n<nb-option-list\n  *nbPortal\n  [size]=\"size\"\n  [position]=\"overlayPosition\"\n  [style.width.px]=\"optionsWidth\"\n  [ngClass]=\"optionsListClass\"\n>\n  <ng-content select=\"nb-option, nb-option-group\"></ng-content>\n</nb-option-list>\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { NbFormFieldComponent } from './form-field.component';\nimport { NbPrefixDirective } from './prefix.directive';\nimport { NbSuffixDirective } from './suffix.directive';\n\nconst COMPONENTS = [\n  NbFormFieldComponent,\n  NbPrefixDirective,\n  NbSuffixDirective,\n];\n\n@NgModule({\n  imports: [ CommonModule ],\n  declarations: [ ...COMPONENTS ],\n  exports: [ ...COMPONENTS ],\n})\nexport class NbFormFieldModule {\n}\n","import { NgModule } from '@angular/core';\n\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbInputModule } from '../input/input.module';\nimport { NbCardModule } from '../card/card.module';\nimport { NbButtonModule } from '../button/button.module';\nimport { NbSelectWithAutocompleteComponent } from './select-with-autocomplete.component';\nimport { NbOptionModule } from '../option/option-list.module';\nimport { NbSelectModule } from '../select/select.module';\nimport { NbIconModule } from '../icon/icon.module';\nimport { NbFormFieldModule } from '../form-field/form-field.module';\n\nconst NB_SELECT_COMPONENTS = [NbSelectWithAutocompleteComponent];\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n    NbOverlayModule,\n    NbButtonModule,\n    NbInputModule,\n    NbCardModule,\n    NbIconModule,\n    NbOptionModule,\n    NbFormFieldModule,\n    NbSelectModule,\n  ],\n  exports: [...NB_SELECT_COMPONENTS, NbOptionModule, NbSelectModule],\n  declarations: [...NB_SELECT_COMPONENTS],\n})\nexport class NbSelectWithAutocompleteModule {}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  Output,\n  QueryList,\n  ViewChild,\n  AfterContentInit,\n  OnDestroy,\n} from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NbComponentSize } from '../component-size';\nimport { NbPosition } from '../cdk/overlay/overlay-position';\nimport { NbOptionComponent } from '../option/option.component';\nimport { NbPortalDirective } from '../cdk/overlay/mapping';\n\n// Component class scoped counter for aria attributes.\nlet lastAutocompleteId: number = 0;\n\n/**\n * The `NbAutocompleteComponent` overlay component.\n * Provides an `NbOptionList` overlay component.\n * */\n@Component({\n    selector: 'nb-autocomplete',\n    templateUrl: './autocomplete.component.html',\n    styleUrls: ['./autocomplete.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbAutocompleteComponent<T> implements AfterContentInit, OnDestroy {\n  protected destroy$: Subject<void> = new Subject<void>();\n\n  /**\n   * HTML input reference to which autocomplete connected.\n   * */\n  hostRef: ElementRef;\n\n  /**\n   * Component scoped id for aria attributes.\n   * */\n  id: string = `nb-autocomplete-${lastAutocompleteId++}`;\n\n  /**\n   * @docs-private\n   * Current overlay position because of we have to toggle overlayPosition\n   * in [ngClass] direction.\n   */\n  _overlayPosition: NbPosition = '' as NbPosition;\n\n  get overlayPosition(): NbPosition {\n    return this._overlayPosition;\n  }\n\n  set overlayPosition(value: NbPosition) {\n    this._overlayPosition = value;\n    // Need run change detection after first set from NbAutocompleteDirective\n    this.cd.detectChanges();\n  }\n\n  /**\n   * Returns width of the input.\n   * */\n  get hostWidth(): number {\n    return this.hostRef.nativeElement.getBoundingClientRect().width;\n  }\n\n  /**\n   * Function passed as input to process each string option value before render.\n   * */\n  @Input() handleDisplayFn: (value: any) => string;\n\n  /**\n   * Autocomplete size, available sizes:\n   * `tiny`, `small`, `medium` (default), `large`, `giant`\n   */\n  @Input() size: NbComponentSize = 'medium';\n\n  /**\n   * Flag passed as input to always make first option active.\n   * */\n  @Input() activeFirst: boolean = false;\n\n  /**\n   * Specifies class to be set on `nb-option`s container (`nb-option-list`)\n   * */\n  @Input() optionsListClass: NgClass['ngClass'];\n\n  /**\n   * Specifies class for the overlay panel with options\n   * */\n  @Input() optionsPanelClass: string | string[];\n\n  /**\n   * Specifies width (in pixels) to be set on `nb-option`s container (`nb-option-list`)\n   * */\n  @Input()\n  get optionsWidth(): number {\n    return this._optionsWidth ?? this.hostWidth;\n  }\n  set optionsWidth(value: number) {\n    this._optionsWidth = value;\n  }\n  protected _optionsWidth: number | undefined;\n\n  /**\n   * Will be emitted when selected value changes.\n   * */\n  @Output() selectedChange: EventEmitter<T> = new EventEmitter();\n\n  /**\n   * List of `NbOptionComponent`'s components passed as content.\n   * */\n  @ContentChildren(NbOptionComponent, { descendants: true }) options: QueryList<NbOptionComponent<T>>;\n\n  /**\n   * NbOptionList with options content.\n   * */\n  @ViewChild(NbPortalDirective) portal: NbPortalDirective;\n\n  constructor(protected cd: ChangeDetectorRef) {}\n\n  ngAfterContentInit() {\n    this.options.changes.pipe(takeUntil(this.destroy$)).subscribe(() => this.cd.detectChanges());\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  /**\n   * Autocomplete knows nothing about host html input element.\n   * So, attach method set input hostRef for styling.\n   * */\n  setHost(hostRef: ElementRef) {\n    this.hostRef = hostRef;\n  }\n\n  /**\n   * Propagate selected value.\n   * */\n  emitSelected(selected: T) {\n    this.selectedChange.emit(selected);\n  }\n\n  @HostBinding('class.size-tiny')\n  get tiny(): boolean {\n    return this.size === 'tiny';\n  }\n  @HostBinding('class.size-small')\n  get small(): boolean {\n    return this.size === 'small';\n  }\n  @HostBinding('class.size-medium')\n  get medium(): boolean {\n    return this.size === 'medium';\n  }\n  @HostBinding('class.size-large')\n  get large(): boolean {\n    return this.size === 'large';\n  }\n  @HostBinding('class.size-giant')\n  get giant(): boolean {\n    return this.size === 'giant';\n  }\n}\n","<nb-option-list *nbPortal\n                [size]=\"size\"\n                [position]=\"overlayPosition\"\n                [style.width.px]=\"optionsWidth\"\n                role=\"listbox\"\n                [id]=\"id\"\n                [class.empty]=\"!options?.length\"\n                [ngClass]=\"optionsListClass\">\n  <ng-content select=\"nb-option, nb-option-group\"></ng-content>\n</nb-option-list>\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  ComponentRef,\n  Directive,\n  ElementRef,\n  forwardRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnDestroy,\n  QueryList,\n  Renderer2,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { merge, Subject } from 'rxjs';\nimport { filter, startWith, switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { NbOverlayRef, NbScrollStrategy } from '../cdk/overlay/mapping';\nimport { NbTrigger, NbTriggerStrategy, NbTriggerStrategyBuilderService } from '../cdk/overlay/overlay-trigger';\nimport { NbOverlayService } from '../cdk/overlay/overlay-service';\nimport { ENTER, ESCAPE } from '../cdk/keycodes/keycodes';\nimport {\n  NbAdjustableConnectedPositionStrategy,\n  NbAdjustment,\n  NbPosition,\n  NbPositionBuilderService,\n} from '../cdk/overlay/overlay-position';\nimport {\n  NbActiveDescendantKeyManager,\n  NbActiveDescendantKeyManagerFactoryService,\n  NbKeyManagerActiveItemMode,\n} from '../cdk/a11y/descendant-key-manager';\nimport { NbScrollStrategies } from '../cdk/adapter/block-scroll-strategy-adapter';\nimport { NbOptionComponent } from '../option/option.component';\nimport { NbAutocompleteComponent } from './autocomplete.component';\n\n/**\n * The `NbAutocompleteDirective` provides a capability to expand input with\n * `NbAutocompleteComponent` overlay containing options to select and fill input with.\n *\n * @stacked-example(Showcase, autocomplete/autocomplete-showcase.component)\n *\n * ### Installation\n *\n * Import `NbAutocompleteModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbAutocompleteModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * You can bind control with form controls or ngModel.\n *\n * @stacked-example(Autocomplete form binding, autocomplete/autocomplete-form.component)\n *\n * Options in the autocomplete may be grouped using `nb-option-group` component.\n *\n * @stacked-example(Grouping, autocomplete/autocomplete-group.component)\n *\n * Autocomplete may change selected option value via provided function.\n *\n * @stacked-example(Custom display, autocomplete/autocomplete-custom-display.component)\n *\n * Also, autocomplete may make first option in option list active automatically.\n *\n * @stacked-example(Active first, autocomplete/autocomplete-active-first.component)\n *\n * */\n@Directive({\n    selector: 'input[nbAutocomplete]',\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => NbAutocompleteDirective),\n            multi: true,\n        },\n    ],\n    standalone: false\n})\nexport class NbAutocompleteDirective<T> implements OnDestroy, AfterViewInit, ControlValueAccessor {\n  /**\n   * NbAutocompleteComponent instance passed via input.\n   * */\n  protected _autocomplete: NbAutocompleteComponent<T>;\n\n  /**\n   * Trigger strategy used by overlay.\n   * @docs-private\n   * */\n  protected triggerStrategy: NbTriggerStrategy;\n\n  protected positionStrategy: NbAdjustableConnectedPositionStrategy;\n\n  protected overlayRef: NbOverlayRef;\n\n  protected keyManager: NbActiveDescendantKeyManager<NbOptionComponent<T>>;\n\n  protected destroy$: Subject<void> = new Subject<void>();\n\n  protected _onChange: (value: T) => void = () => {};\n\n  protected _onTouched = () => {};\n\n  /**\n   * Determines is autocomplete overlay opened.\n   * */\n  get isOpen(): boolean {\n    return this.overlayRef && this.overlayRef.hasAttached();\n  }\n\n  /**\n   * Determines is autocomplete overlay closed.\n   * */\n  get isClosed(): boolean {\n    return !this.isOpen;\n  }\n\n  /**\n   * Provides autocomplete component.\n   * */\n  @Input('nbAutocomplete')\n  get autocomplete(): NbAutocompleteComponent<T> {\n    return this._autocomplete;\n  }\n  set autocomplete(autocomplete: NbAutocompleteComponent<T>) {\n    this._autocomplete = autocomplete;\n  }\n\n  /**\n   * Determines options overlay offset (in pixels).\n   **/\n  @Input() overlayOffset: number = 8;\n\n  /**\n   * Determines options overlay scroll strategy.\n   **/\n  @Input() scrollStrategy: NbScrollStrategies = 'block';\n\n  @Input() customOverlayHost: ElementRef;\n\n  @HostBinding('class.nb-autocomplete-position-top')\n  get top(): boolean {\n    return this.isOpen && this.autocomplete.options.length && this.autocomplete.overlayPosition === NbPosition.TOP;\n  }\n\n  @HostBinding('class.nb-autocomplete-position-bottom')\n  get bottom(): boolean {\n    return this.isOpen && this.autocomplete.options.length && this.autocomplete.overlayPosition === NbPosition.BOTTOM;\n  }\n\n  @HostBinding('attr.role')\n  role: string = 'combobox';\n\n  @HostBinding('attr.aria-autocomplete')\n  ariaAutocomplete: string = 'list';\n\n  @HostBinding('attr.haspopup')\n  hasPopup: string = 'true';\n\n  @HostBinding('attr.aria-expanded')\n  get ariaExpanded(): string {\n    return this.isOpen && this.isOpen.toString();\n  }\n\n  @HostBinding('attr.aria-owns')\n  get ariaOwns() {\n    return this.isOpen ? this.autocomplete.id : null;\n  }\n\n  @HostBinding('attr.aria-activedescendant')\n  get ariaActiveDescendant() {\n    return this.isOpen && this.keyManager.activeItem ? this.keyManager.activeItem.id : null;\n  }\n\n  constructor(\n    protected hostRef: ElementRef,\n    protected overlay: NbOverlayService,\n    protected cd: ChangeDetectorRef,\n    protected triggerStrategyBuilder: NbTriggerStrategyBuilderService,\n    protected positionBuilder: NbPositionBuilderService,\n    protected activeDescendantKeyManagerFactory: NbActiveDescendantKeyManagerFactoryService<NbOptionComponent<T>>,\n    protected renderer: Renderer2,\n  ) {}\n\n  ngAfterViewInit() {\n    this.triggerStrategy = this.createTriggerStrategy();\n    this.subscribeOnTriggers();\n  }\n\n  ngOnDestroy() {\n    if (this.triggerStrategy) {\n      this.triggerStrategy.destroy();\n    }\n\n    if (this.positionStrategy) {\n      this.positionStrategy.dispose();\n    }\n\n    if (this.overlayRef) {\n      this.overlayRef.dispose();\n    }\n\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  @HostListener('input')\n  handleInput() {\n    const currentValue = this.hostRef.nativeElement.value;\n    this._onChange(currentValue);\n    this.setHostInputValue(this.getDisplayValue(currentValue));\n    this.show();\n  }\n\n  @HostListener('keydown.arrowDown')\n  @HostListener('keydown.arrowUp')\n  handleKeydown() {\n    this.show();\n  }\n\n  @HostListener('blur')\n  handleBlur() {\n    this._onTouched();\n  }\n\n  show() {\n    if (this.shouldShow()) {\n      this.attachToOverlay();\n      this.setActiveItem();\n    }\n  }\n\n  hide() {\n    if (this.isOpen) {\n      this.overlayRef.detach();\n      // Need to update class via @HostBinding\n      this.cd.markForCheck();\n    }\n  }\n\n  writeValue(value: T): void {\n    this.handleInputValueUpdate(value);\n  }\n\n  registerOnChange(fn: (value: any) => {}): void {\n    this._onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this._onTouched = fn;\n  }\n\n  setDisabledState(disabled: boolean): void {\n    this.renderer.setProperty(this.hostRef.nativeElement, 'disabled', disabled);\n  }\n\n  protected subscribeOnOptionClick() {\n    /**\n     * If the user changes provided options list in the runtime we have to handle this\n     * and resubscribe on options selection changes event.\n     * Otherwise, the user will not be able to select new options.\n     * */\n    this.autocomplete.options.changes\n      .pipe(\n        tap(() => this.setActiveItem()),\n        startWith(this.autocomplete.options),\n        switchMap((options: QueryList<NbOptionComponent<T>>) => {\n          return merge(...options.map((option) => option.click));\n        }),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((clickedOption: NbOptionComponent<T>) => this.handleInputValueUpdate(clickedOption.value, true));\n  }\n\n  protected subscribeOnPositionChange() {\n    this.positionStrategy.positionChange.pipe(takeUntil(this.destroy$)).subscribe((position: NbPosition) => {\n      this.autocomplete.overlayPosition = position;\n      this.cd.detectChanges();\n    });\n  }\n\n  protected getActiveItem(): NbOptionComponent<T> {\n    return this.keyManager.activeItem;\n  }\n\n  protected setupAutocomplete() {\n    this.autocomplete.setHost(this.customOverlayHost || this.hostRef);\n  }\n\n  protected getDisplayValue(value: string) {\n    const displayFn = this.autocomplete.handleDisplayFn;\n    return displayFn ? displayFn(value) : value;\n  }\n\n  protected getContainer() {\n    return (\n      this.overlayRef &&\n      this.isOpen &&\n      <ComponentRef<any>>{\n        location: {\n          nativeElement: this.overlayRef.overlayElement,\n        },\n      }\n    );\n  }\n\n  protected handleInputValueUpdate(value: T, focusInput: boolean = false) {\n    this.setHostInputValue(value ?? '');\n    this._onChange(value);\n    if (focusInput) {\n      this.hostRef.nativeElement.focus();\n    }\n    this.autocomplete.emitSelected(value);\n    this.hide();\n  }\n\n  protected subscribeOnTriggers() {\n    this.triggerStrategy.show$.pipe(filter(() => this.isClosed)).subscribe(() => this.show());\n\n    this.triggerStrategy.hide$.pipe(filter(() => this.isOpen)).subscribe(() => this.hide());\n  }\n\n  protected createTriggerStrategy(): NbTriggerStrategy {\n    return this.triggerStrategyBuilder\n      .trigger(NbTrigger.FOCUS)\n      .host(this.hostRef.nativeElement)\n      .container(() => this.getContainer())\n      .build();\n  }\n\n  protected createKeyManager(): void {\n    this.keyManager = this.activeDescendantKeyManagerFactory.create(this.autocomplete.options);\n  }\n\n  protected setHostInputValue(value) {\n    this.hostRef.nativeElement.value = this.getDisplayValue(value);\n  }\n\n  protected createPositionStrategy(): NbAdjustableConnectedPositionStrategy {\n    return this.positionBuilder\n      .connectedTo(this.customOverlayHost || this.hostRef)\n      .position(NbPosition.BOTTOM)\n      .offset(this.overlayOffset)\n      .adjustment(NbAdjustment.VERTICAL);\n  }\n\n  protected subscribeOnOverlayKeys(): void {\n    this.overlayRef\n      .keydownEvents()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((event: KeyboardEvent) => {\n        if (event.keyCode === ESCAPE && this.isOpen) {\n          event.preventDefault();\n          this.hostRef.nativeElement.focus();\n          this.hide();\n        } else if (event.keyCode === ENTER) {\n          event.preventDefault();\n          const activeItem = this.getActiveItem();\n          if (!activeItem) {\n            return;\n          }\n          this.handleInputValueUpdate(activeItem.value, true);\n        } else {\n          this.keyManager.onKeydown(event);\n        }\n      });\n  }\n\n  protected setActiveItem() {\n    // If autocomplete has activeFirst input set to true,\n    // keyManager set first option active, otherwise - reset active option.\n    const mode = this.autocomplete.activeFirst\n      ? NbKeyManagerActiveItemMode.FIRST_ACTIVE\n      : NbKeyManagerActiveItemMode.RESET_ACTIVE;\n    this.keyManager.setActiveItem(mode);\n    this.cd.detectChanges();\n  }\n\n  protected attachToOverlay() {\n    if (!this.overlayRef) {\n      this.setupAutocomplete();\n      this.initOverlay();\n    }\n    this.overlayRef.attach(this.autocomplete.portal);\n  }\n\n  protected createOverlay() {\n    const scrollStrategy = this.createScrollStrategy();\n    this.overlayRef = this.overlay.create({\n      positionStrategy: this.positionStrategy,\n      scrollStrategy,\n      panelClass: this.autocomplete.optionsPanelClass,\n    });\n  }\n\n  protected initOverlay() {\n    this.positionStrategy = this.createPositionStrategy();\n\n    this.createKeyManager();\n    this.subscribeOnPositionChange();\n    this.subscribeOnOptionClick();\n    this.checkOverlayVisibility();\n    this.createOverlay();\n    this.subscribeOnOverlayKeys();\n  }\n\n  protected checkOverlayVisibility() {\n    this.autocomplete.options.changes.pipe(takeUntil(this.destroy$)).subscribe(() => {\n      if (!this.autocomplete.options.length) {\n        this.hide();\n      }\n    });\n  }\n\n  protected createScrollStrategy(): NbScrollStrategy {\n    return this.overlay.scrollStrategies[this.scrollStrategy]();\n  }\n\n  protected shouldShow(): boolean {\n    return this.isClosed;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbCardModule } from '../card/card.module';\nimport { NbAutocompleteComponent } from './autocomplete.component';\nimport { NbAutocompleteDirective } from './autocomplete.directive';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { NbOptionModule } from '../option/option-list.module';\n\nconst NB_AUTOCOMPLETE_COMPONENTS = [\n  NbAutocompleteComponent,\n  NbAutocompleteDirective,\n];\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    NbOverlayModule,\n    NbCardModule,\n    NbOptionModule,\n  ],\n   exports: [\n     ...NB_AUTOCOMPLETE_COMPONENTS,\n     NbOptionModule,\n   ],\n   declarations: [...NB_AUTOCOMPLETE_COMPONENTS],\n})\nexport class NbAutocompleteModule {\n}\n","import { TemplateRef, InjectionToken, ViewContainerRef } from '@angular/core';\n// Do not remove (TS4023).\n// eslint-disable-next-line\nimport { ComponentType } from '@angular/cdk/overlay';\nimport { NbComponentType } from '../cdk/overlay/mapping';\n\nexport enum NbWindowState {\n  MINIMIZED = 'minimized',\n  MAXIMIZED = 'maximized',\n  FULL_SCREEN = 'full-screen',\n}\n\nexport interface NbWindowStateChange {\n  oldState: NbWindowState;\n  newState: NbWindowState;\n}\n\nexport interface NbWindowControlButtonsConfig {\n  minimize: boolean;\n  maximize: boolean;\n  fullScreen: boolean;\n  close: boolean;\n}\n\nexport const NB_WINDOW_DEFAULT_BUTTONS_CONFIG: NbWindowControlButtonsConfig = {\n  minimize: true,\n  maximize: true,\n  fullScreen: true,\n  close: true,\n};\n\n/**\n * Window configuration options.\n */\nexport class NbWindowConfig {\n  /**\n   * Window title.\n   */\n  title: string = '';\n\n  /**\n   * Window title as template. Use it instead of `title` property.\n   */\n  titleTemplate?: TemplateRef<any>;\n\n  /**\n   * Title as template may receive data through `config.titleTemplateContext` property.\n   * Window title as Template. You can access context inside template as $implicit.\n   */\n  titleTemplateContext?: Object = {};\n\n  /**\n   * Initial window state. Full screen by default.\n   */\n  initialState: NbWindowState = NbWindowState.FULL_SCREEN;\n\n  /**\n   * If true than backdrop will be rendered behind window.\n   * By default set to true.\n   */\n  hasBackdrop: boolean = true;\n\n  /**\n   * If set to true mouse clicks on backdrop will close a window.\n   * Default is true.\n   */\n  closeOnBackdropClick: boolean = true;\n\n  /**\n   * If true then escape press will close a window.\n   * Default is true.\n   */\n  closeOnEsc: boolean = true;\n\n  /**\n   * Class to be applied to the window.\n   */\n  windowClass: string = '';\n\n  /**\n   * Both, template and component may receive data through `config.context` property.\n   * For components, this data will be set as component properties.\n   * For templates, you can access it inside template as $implicit.\n   */\n  context?: Object = {};\n\n  /**\n   * Where the attached component should live in Angular's *logical* component tree.\n   * This affects what is available for injection and the change detection order for the\n   * component instantiated inside of the window. This does not affect where the window\n   * content will be rendered.\n   */\n  viewContainerRef: ViewContainerRef = null;\n\n  /**\n   * Windows control buttons can be hidden by setting according property to false.\n   */\n  buttons: Partial<NbWindowControlButtonsConfig> = {};\n\n  constructor(...configs: Partial<NbWindowConfig>[]) {\n    Object.assign(this, ...configs);\n    this.applyDefaultButtonConfig();\n  }\n\n  protected applyDefaultButtonConfig() {\n    Object.assign(this, { buttons: { ...NB_WINDOW_DEFAULT_BUTTONS_CONFIG, ...this.buttons } });\n  }\n}\n\nexport const NB_WINDOW_CONTENT = new InjectionToken<TemplateRef<any> | NbComponentType>('Nebular Window Content');\nexport const NB_WINDOW_CONFIG = new InjectionToken<NbWindowConfig>('Nebular Window Config');\nexport const NB_WINDOW_CONTEXT = new InjectionToken<Object>('Nebular Window Context');\n","import { ComponentRef } from '@angular/core';\nimport { Observable, ReplaySubject, Subject } from 'rxjs';\nimport { NbWindowComponent } from './window.component';\nimport { NbWindowConfig, NbWindowState, NbWindowStateChange } from './window.options';\n\n/**\n * The `NbWindowRef` helps to manipulate window after it was created.\n * The window can be dismissed by using `close` method of the windowRef.\n * You can access rendered component as `componentRef` property of the windowRef.\n * Property `contentInstance` contains the instance of the component opened in the window.\n */\nexport class NbWindowRef<T = any, R = any> {\n  componentRef: ComponentRef<NbWindowComponent>;\n  componentInstance: T;\n\n  protected prevStateValue: NbWindowState;\n  protected stateValue: NbWindowState;\n  /**\n   * Current window state.\n   */\n  get state() {\n    return this.stateValue;\n  }\n  set state(newState: NbWindowState) {\n    if (newState && this.stateValue !== newState) {\n      this.prevStateValue = this.state;\n      this.stateValue = newState;\n      this.stateChange$.next({ oldState: this.prevStateValue, newState });\n    }\n  }\n\n  protected stateChange$ = new ReplaySubject<NbWindowStateChange>(1);\n  /**\n   * Emits when window state change.\n   */\n  get stateChange(): Observable<NbWindowStateChange> {\n    return this.stateChange$.asObservable();\n  }\n\n  protected _closed = false;\n  protected closed$ = new Subject<R>();\n  /**\n   * Emits when window was closed.\n   */\n  get onClose() {\n    return this.closed$.asObservable();\n  }\n\n  constructor(public config: NbWindowConfig) {\n    this.state = config.initialState;\n  }\n\n  /**\n   * Minimize window.\n   */\n  minimize() {\n    this.state = NbWindowState.MINIMIZED;\n  }\n\n  /**\n   * Maximize window.\n   */\n  maximize() {\n    this.state = NbWindowState.MAXIMIZED;\n  }\n\n  /**\n   * Set window on top.\n   */\n  fullScreen() {\n    this.state = NbWindowState.FULL_SCREEN;\n  }\n\n  toPreviousState() {\n    this.state = this.prevStateValue;\n  }\n\n  /**\n   * Closes window.\n   * */\n  close(res?: R) {\n    if (this._closed) {\n      return;\n    }\n\n    this._closed = true;\n    this.componentRef.destroy();\n    this.componentInstance = null;\n    this.stateChange$.complete();\n    this.closed$.next(res);\n    this.closed$.complete();\n  }\n}\n","import { Component, ViewContainerRef, ViewChild } from '@angular/core';\n\n@Component({\n    selector: 'nb-windows-container',\n    template: `<ng-container #viewContainerRef></ng-container>`,\n    styleUrls: ['./windows-container.component.scss'],\n    standalone: false\n})\nexport class NbWindowsContainerComponent {\n\n  // TODO static must be false as of Angular 9.0.0, issues/1514\n  @ViewChild('viewContainerRef', { read: ViewContainerRef, static: true }) viewContainerRef: ViewContainerRef;\n}\n","import {\n  Component,\n  ElementRef,\n  HostBinding,\n  Inject,\n  OnDestroy,\n  OnInit,\n  TemplateRef,\n  Renderer2,\n  ViewChild,\n  Type,\n  AfterViewChecked,\n} from '@angular/core';\nimport { NbFocusTrap, NbFocusTrapFactoryService } from '../cdk/a11y/focus-trap';\nimport { NbComponentPortal, NbComponentType, NbTemplatePortal } from '../cdk/overlay/mapping';\nimport { NbOverlayContainerComponent } from '../cdk/overlay/overlay-container';\nimport { NB_WINDOW_CONTENT, NbWindowConfig, NbWindowState, NB_WINDOW_CONTEXT } from './window.options';\nimport { NbWindowRef } from './window-ref';\n\n@Component({\n    selector: 'nb-window',\n    template: `\n    <nb-card>\n      <nb-card-header>\n        <div *ngIf=\"config.titleTemplate; else textTitleTemplate\" cdkFocusInitial tabindex=\"-1\">\n          <ng-container\n            *ngTemplateOutlet=\"config.titleTemplate; context: { $implicit: config.titleTemplateContext }\"\n          ></ng-container>\n        </div>\n\n        <ng-template #textTitleTemplate>\n          <div cdkFocusInitial class=\"title\" tabindex=\"-1\">{{ config.title }}</div>\n        </ng-template>\n\n        <div class=\"buttons\">\n          <ng-container *ngIf=\"showMinimize\">\n            <button nbButton ghost (click)=\"minimize()\">\n              <nb-icon icon=\"minus-outline\" pack=\"nebular-essentials\"></nb-icon>\n            </button>\n          </ng-container>\n\n          <ng-container *ngIf=\"showMaximize\">\n            <button nbButton ghost *ngIf=\"isFullScreen\" (click)=\"maximize()\">\n              <nb-icon icon=\"collapse-outline\" pack=\"nebular-essentials\"></nb-icon>\n            </button>\n          </ng-container>\n\n          <ng-container *ngIf=\"showFullScreen\">\n            <button nbButton ghost *ngIf=\"minimized || maximized\" (click)=\"maximizeOrFullScreen()\">\n              <nb-icon icon=\"expand-outline\" pack=\"nebular-essentials\"></nb-icon>\n            </button>\n          </ng-container>\n\n          <ng-container *ngIf=\"showClose\">\n            <button nbButton ghost (click)=\"close()\">\n              <nb-icon icon=\"close-outline\" pack=\"nebular-essentials\"></nb-icon>\n            </button>\n          </ng-container>\n        </div>\n      </nb-card-header>\n      <nb-card-body *ngIf=\"maximized || isFullScreen\">\n        <nb-overlay-container></nb-overlay-container>\n      </nb-card-body>\n    </nb-card>\n  `,\n    styleUrls: ['./window.component.scss'],\n    standalone: false\n})\nexport class NbWindowComponent implements OnInit, AfterViewChecked, OnDestroy {\n  @HostBinding('class.full-screen')\n  get isFullScreen() {\n    return this.windowRef.state === NbWindowState.FULL_SCREEN;\n  }\n\n  @HostBinding('class.maximized')\n  get maximized() {\n    return this.windowRef.state === NbWindowState.MAXIMIZED;\n  }\n\n  @HostBinding('class.minimized')\n  get minimized() {\n    return this.windowRef.state === NbWindowState.MINIMIZED;\n  }\n\n  get showMinimize(): boolean {\n    return this.config.buttons.minimize;\n  }\n\n  get showMaximize(): boolean {\n    return this.config.buttons.maximize;\n  }\n\n  get showFullScreen(): boolean {\n    return this.config.buttons.fullScreen;\n  }\n\n  get showClose(): boolean {\n    return this.config.buttons.close;\n  }\n\n  @ViewChild(NbOverlayContainerComponent) overlayContainer: NbOverlayContainerComponent;\n\n  protected focusTrap: NbFocusTrap;\n\n  constructor(\n    @Inject(NB_WINDOW_CONTENT) public content: TemplateRef<any> | NbComponentType,\n    @Inject(NB_WINDOW_CONTEXT) public context: Object,\n    public windowRef: NbWindowRef,\n    public config: NbWindowConfig,\n    protected focusTrapFactory: NbFocusTrapFactoryService,\n    protected elementRef: ElementRef,\n    protected renderer: Renderer2,\n  ) {}\n\n  ngOnInit() {\n    this.focusTrap = this.focusTrapFactory.create(this.elementRef.nativeElement);\n    this.focusTrap.blurPreviouslyFocusedElement();\n    this.focusTrap.focusInitialElement();\n\n    if (this.config.windowClass) {\n      this.renderer.addClass(this.elementRef.nativeElement, this.config.windowClass);\n    }\n  }\n\n  ngAfterViewChecked() {\n    if (!this.overlayContainer || this.overlayContainer.isAttached) {\n      return;\n    }\n\n    if (this.content instanceof TemplateRef) {\n      this.attachTemplate();\n    } else {\n      this.attachComponent();\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.focusTrap) {\n      this.focusTrap.restoreFocus();\n    }\n\n    this.close();\n  }\n\n  minimize() {\n    if (this.windowRef.state === NbWindowState.MINIMIZED) {\n      this.windowRef.toPreviousState();\n    } else {\n      this.windowRef.minimize();\n    }\n  }\n\n  maximize() {\n    this.windowRef.maximize();\n  }\n\n  fullScreen() {\n    this.windowRef.fullScreen();\n  }\n\n  maximizeOrFullScreen() {\n    if (this.windowRef.state === NbWindowState.MINIMIZED && this.showMaximize) {\n      this.maximize();\n    } else {\n      this.fullScreen();\n    }\n  }\n\n  close() {\n    this.windowRef.close();\n  }\n\n  protected attachTemplate() {\n    this.overlayContainer.attachTemplatePortal(\n      new NbTemplatePortal(this.content as TemplateRef<any>, null, this.context),\n    );\n  }\n\n  protected attachComponent() {\n    const portal = new NbComponentPortal(this.content as Type<any>, null, null);\n    const ref = this.overlayContainer.attachComponentPortal(portal, this.context);\n    this.windowRef.componentInstance = ref.instance;\n\n    ref.changeDetectorRef.detectChanges();\n  }\n}\n","import {\n  ComponentRef,\n  Inject,\n  Injectable,\n  Injector,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { filter } from 'rxjs/operators';\nimport { NbComponentPortal, NbComponentType, NbOverlayPositionBuilder, NbOverlayRef } from '../cdk/overlay/mapping';\nimport { NbOverlayService } from '../cdk/overlay/overlay-service';\nimport { NbBlockScrollStrategyAdapter } from '../cdk/adapter/block-scroll-strategy-adapter';\nimport {\n  NB_WINDOW_CONFIG,\n  NB_WINDOW_CONTENT,\n  NB_WINDOW_CONTEXT,\n  NbWindowConfig,\n  NbWindowState,\n} from './window.options';\nimport { NbWindowRef } from './window-ref';\nimport { NbWindowsContainerComponent } from './windows-container.component';\nimport { NbWindowComponent } from './window.component';\nimport { NB_DOCUMENT } from '../../theme.options';\n\n/**\n * The `NbWindowService` can be used to open windows.\n *\n * @stacked-example(Showcase, window/window-showcase.component)\n *\n * ### Installation\n *\n * Import `NbWindowModule` to your app module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbWindowModule.forRoot(config),\n *   ],\n * })\n * export class AppModule { }\n * ```\n *\n * If you are using it in a lazy loaded module than you have to install `NbWindowModule.forChild`:\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbWindowModule.forChild(config),\n *   ],\n * })\n * export class LazyLoadedModule { }\n * ```\n *\n * ### Usage\n *\n * A new window can be opened by calling the `open` method with a component or template to be loaded\n * and an optional configuration.\n * `open` method will return `NbWindowRef` that can be used for the further manipulations.\n *\n * ```ts\n * const windowRef = this.windowService.open(MyComponent, { ... });\n * ```\n *\n * `NbWindowRef` gives you ability manipulate opened window.\n * Also, you can inject `NbWindowRef` inside provided component which rendered in window.\n *\n * ```ts\n * this.windowService.open(MyWindowComponent, { ... });\n *\n * // my.component.ts\n * constructor(protected windowRef: NbWindowRef) {\n * }\n *\n * minimize() {\n *   this.windowRef.minimize();\n * }\n *\n * close() {\n *   this.windowRef.close();\n * }\n * ```\n *\n * Instead of component you can create window from TemplateRef. As usual you can access context provided via config\n * via `let-` variables. Also you can get reference to the `NbWindowRef` in context's `windowRef` property.\n *\n * @stacked-example(Window content from TemplateRef, window/template-window.component)\n *\n * You could pass the optional window return value to the `NbWindowRef.close` method.\n * The passed value would be emitted to the `NbWindowRef.onClose` listeners.\n *\n * @stacked-example(Result, window/window-result.component)\n *\n * ### Configuration\n *\n * As mentioned above, `open` method of the `NbWindowService` may receive optional configuration options.\n * Also, you can modify default windows configuration through `NbWindowModule.forRoot({ ... })`.\n * You can read about all available options on [API tab](docs/components/window/api#nbwindowconfig).\n *\n * @stacked-example(Configuration, window/windows-backdrop.component)\n *\n * You can configure which buttons are available in a window via the `buttons` property of the window config.\n * @stacked-example(Control buttons, window/window-controls.component)\n *\n */\n@Injectable()\nexport class NbWindowService {\n  protected document: Document;\n  protected overlayRef: NbOverlayRef;\n  protected windowsContainerViewRef: ViewContainerRef;\n  protected openWindows: NbWindowRef[] = [];\n\n  constructor(\n    protected overlayService: NbOverlayService,\n    protected overlayPositionBuilder: NbOverlayPositionBuilder,\n    protected blockScrollStrategy: NbBlockScrollStrategyAdapter,\n    @Inject(NB_WINDOW_CONFIG) protected readonly defaultWindowsConfig: NbWindowConfig,\n    @Inject(NB_DOCUMENT) document,\n  ) {\n    this.document = document;\n  }\n\n  /**\n   * Opens new window.\n   * @param windowContent\n   * @param windowConfig\n   * */\n  open(windowContent: TemplateRef<any> | NbComponentType, windowConfig: Partial<NbWindowConfig> = {}): NbWindowRef {\n    if (this.shouldCreateWindowsContainer()) {\n      this.createWindowsContainer();\n    }\n\n    const config = new NbWindowConfig(this.defaultWindowsConfig, windowConfig);\n    const windowRef = new NbWindowRef(config);\n    windowRef.componentRef = this.appendWindow(windowContent, config, windowRef);\n\n    this.openWindows.push(windowRef);\n    this.subscribeToEvents(windowRef);\n\n    return windowRef;\n  }\n\n  protected shouldCreateWindowsContainer(): boolean {\n    if (this.windowsContainerViewRef) {\n      const containerEl = this.windowsContainerViewRef.element.nativeElement;\n      return !this.document.body.contains(containerEl);\n    }\n\n    return true;\n  }\n\n  protected createWindowsContainer() {\n    if (this.overlayRef) {\n      this.overlayRef.dispose();\n    }\n\n    this.overlayRef = this.overlayService.create({\n      scrollStrategy: this.overlayService.scrollStrategies.noop(),\n      positionStrategy: this.overlayPositionBuilder.global().bottom().right(),\n      hasBackdrop: true,\n    });\n    const windowsContainerPortal = new NbComponentPortal(NbWindowsContainerComponent, null, null);\n    const overlayRef = this.overlayRef.attach(windowsContainerPortal);\n    this.windowsContainerViewRef = overlayRef.instance.viewContainerRef;\n  }\n\n  protected appendWindow(\n    content: TemplateRef<any> | NbComponentType,\n    config: NbWindowConfig,\n    windowRef: NbWindowRef,\n  ): ComponentRef<NbWindowComponent> {\n    const context = content instanceof TemplateRef ? { $implicit: config.context, windowRef } : config.context;\n\n    const providers = [\n      { provide: NB_WINDOW_CONTENT, useValue: content },\n      { provide: NB_WINDOW_CONTEXT, useValue: context },\n      { provide: NbWindowConfig, useValue: config },\n      { provide: NbWindowRef, useValue: windowRef },\n    ];\n    const parentInjector = config.viewContainerRef\n      ? config.viewContainerRef.injector\n      : this.windowsContainerViewRef.injector;\n    const injector = Injector.create({ parent: parentInjector, providers });\n\n    const ref = this.windowsContainerViewRef.createComponent(NbWindowComponent, {\n      injector,\n      index: this.windowsContainerViewRef.length,\n    });\n    ref.changeDetectorRef.detectChanges();\n    return ref;\n  }\n\n  protected subscribeToEvents(windowRef: NbWindowRef) {\n    if (windowRef.config.closeOnBackdropClick) {\n      this.overlayRef.backdropClick().subscribe(() => windowRef.close());\n    }\n\n    if (windowRef.config.closeOnEsc) {\n      this.overlayRef\n        .keydownEvents()\n        .pipe(filter((event: KeyboardEvent) => event.keyCode === 27))\n        .subscribe(() => windowRef.close());\n    }\n\n    windowRef.stateChange.subscribe(() => this.checkAndUpdateOverlay());\n\n    windowRef.onClose.subscribe(() => {\n      this.openWindows.splice(this.openWindows.indexOf(windowRef), 1);\n      this.checkAndUpdateOverlay();\n    });\n  }\n\n  protected checkAndUpdateOverlay() {\n    const fullScreenWindows = this.openWindows.filter((w) => w.state === NbWindowState.FULL_SCREEN);\n    if (fullScreenWindows.length > 0) {\n      this.blockScrollStrategy.enable();\n    } else {\n      this.blockScrollStrategy.disable();\n    }\n\n    if (fullScreenWindows.some((w) => w.config.hasBackdrop)) {\n      this.overlayRef.backdropElement.removeAttribute('hidden');\n    } else {\n      this.overlayRef.backdropElement.setAttribute('hidden', '');\n    }\n  }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbCardModule } from '../card/card.module';\nimport { NbIconModule } from '../icon/icon.module';\nimport { NbButtonModule } from '../button/button.module';\nimport { NbWindowService } from './window.service';\nimport { NbWindowsContainerComponent } from './windows-container.component';\nimport { NbWindowComponent } from './window.component';\nimport { NB_WINDOW_CONFIG, NbWindowConfig } from './window.options';\n\n@NgModule({\n  imports: [ CommonModule, NbOverlayModule, NbCardModule, NbIconModule, NbButtonModule ],\n  declarations: [\n    NbWindowsContainerComponent,\n    NbWindowComponent,\n  ],\n})\nexport class NbWindowModule {\n  static forRoot(defaultConfig?: Partial<NbWindowConfig>): ModuleWithProviders<NbWindowModule> {\n    return {\n      ngModule: NbWindowModule,\n      providers: [\n        NbWindowService,\n        { provide: NB_WINDOW_CONFIG, useValue: defaultConfig },\n      ],\n    };\n  }\n\n  static forChild(defaultConfig?: Partial<NbWindowConfig>): ModuleWithProviders<NbWindowModule> {\n    return {\n      ngModule: NbWindowModule,\n      providers: [\n        NbWindowService,\n        { provide: NB_WINDOW_CONFIG, useValue: defaultConfig },\n      ],\n    };\n  }\n}\n","import {\n  AfterViewInit,\n  Attribute,\n  ChangeDetectorRef,\n  ComponentRef,\n  Directive,\n  ElementRef,\n  forwardRef,\n  Inject,\n  Input,\n  isDevMode,\n  Renderer2,\n} from '@angular/core';\nimport { distinctUntilChanged, filter, map, pairwise, startWith, takeUntil } from 'rxjs/operators';\nimport { fromEvent, merge, Subject, Subscription } from 'rxjs';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NbTimePickerComponent } from './timepicker.component';\nimport { NbOverlayRef, NbScrollStrategy } from '../cdk/overlay/mapping';\nimport {\n  NbAdjustableConnectedPositionStrategy,\n  NbAdjustment,\n  NbPosition,\n  NbPositionBuilderService,\n} from '../cdk/overlay/overlay-position';\nimport { NbOverlayService } from '../cdk/overlay/overlay-service';\nimport { NbTrigger, NbTriggerStrategy, NbTriggerStrategyBuilderService } from '../cdk/overlay/overlay-trigger';\nimport { NbSelectedTimePayload } from './model';\nimport { NbDateService } from '../calendar-kit/services/date.service';\nimport { NbCalendarTimeModelService } from '../calendar-kit/services/calendar-time-model.service';\nimport { NB_DOCUMENT } from '../../theme.options';\n\n/**\n * The `NbTimePickerDirective` is form control that gives you ability to select a time. The timepicker\n * is shown when input receives a `focus` event.\n * ```html\n * <input [nbTimepicker]=\"timepicker\">\n * <nb-timepicker #timepicker></nb-timepicker>\n * ```\n *\n * @stacked-example(Showcase, timepicker/timepicker-showcase.component)\n *\n * ### Installation\n *\n * Import `NbTimepickerModule.forRoot()` to your root module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbTimepickerModule.forRoot(),\n *   ],\n * })\n * export class AppModule { }\n * ```\n * And `NbTimepickerModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbTimepickerModule,\n *   ],\n * })\n * export class PageModule { }\n *\n * ```\n * <div id=\"native-parse-issue\" class=\"note note-warning\">\n * <div class=\"note-title\">Note</div>\n * <div class=\"note-body\">\n * Timepicker uses native Date object by default, which doesn't support parsing by custom format.\n * According to the ECMAScript specification, the only supported format is a format described by ISO 8061 standard.\n * This standard requires date part to be included in the date string,\n * meaning you have to type a date+time in the input.\n * We highly recommend you to use NbDateFnsDateModule or NbMomentDateModule to be able to support time only strings in\n * the timepicker inputs. These modules use date-fns and moment date libraries, which provide capabilities\n * to parse time only strings.\n * See \"Formatting Issue\" at\n * <a href=\"https://akveo.github.io/nebular/docs/components/datepicker/overview#formatting-issue\">Date picker docs</a>\n * for installation instructions.\n * </div>\n * </div>\n * <hr>\n *\n * ### Usage\n *\n * To show seconds column along with hours and minutes use `withSeconds` input\n *\n * ```html\n * <input [nbTimepicker]=\"timepicker\">\n * <nb-timepicker #timepicker withSeconds></nb-timepicker>\n * ```\n * @stacked-example(Time picker with seconds, timepicker/timepicker-with-seconds.component)\n *\n * To force timepicker work in 12 hours format, use `twelveHoursFormat` input.\n * By default, timepicker choose 12 or 24 formats based on application locale standards\n *\n * ```html\n * <input [nbTimepicker]=\"timepicker\" twelveHoursFormat>\n * <nb-timepicker #timepicker></nb-timepicker>\n * ```\n *\n * @stacked-example(Twelve hours format showcase, timepicker/timepicker-twelve-hours-format.component)\n *\n * A single column picker with options value as time and minute, so users won’t be able to pick\n * hours and minutes individually.\n * You can control options minutes offset via `step` input, e.g.: 11:00, 11:20, 11:40...'\n *\n * @stacked-example(Single column, timepicker/timepicker-single-column.component)\n *\n * Timepicker support forms and reactive forms API so you can provide value using `formControl` and `ngModel` directives\n * @stacked-example(Form control, timepicker/timepicker-form-control.component)\n *\n * <input [nbTimepicker]=\"timepicker\" twelveHoursFormat>\n * <nb-timepicker #timepicke [formControl]=\"formControl\"></nb-timepicker>\n *\n * @stacked-example(NgModel, timepicker/timepicker-ng-model.component)\n *\n * <input [nbTimepicker]=\"timepicker\" twelveHoursFormat>\n * <nb-timepicker #timepicke [ngModel]=\"date\"></nb-timepicker>\n *\n * You can provide localized versions of the timepicker text via the `localization` property of the config\n * object passed to the `forRoot` or `forChild` methods of the `NbTimepickerModule`:\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbTimepickerModule.forRoot({\n *       localization: {\n *         hoursText: 'Hr',\n *         minutesText: 'Min',\n *         secondsText: 'Sec',\n *         ampmText: 'Am/Pm',\n *       }\n *     }),\n *   ],\n * })\n * export class AppModule { }\n * ```\n *\n * @styles\n *\n * timepicker-cell-text-color:\n * timepicker-cell-hover-background-color:\n * timepicker-cell-hover-text-color:\n * timepicker-cell-focus-background-color:\n * timepicker-cell-focus-text-color:\n * timepicker-cell-active-background-color:\n * timepicker-cell-active-text-color:\n * timepicker-cell-text-font-size:\n * timepicker-cell-text-font-family:\n * timepicker-cell-text-line-height:\n * timepicker-cell-text-font-weight:\n * timepicker-cell-height:\n * timepicker-header-cell-text-color:\n * timepicker-header-cell-text-font-size:\n * timepicker-header-cell-text-font-family:\n * timepicker-header-cell-height:\n * timepicker-header-cell-text-line-height:\n * timepicker-header-cell-text-font-weight:\n * timepicker-border-color:\n * timepicker-border-style:\n * timepicker-border-width:\n * timepicker-scrollbar-color:\n * timepicker-scrollbar-background-color:\n * timepicker-scrollbar-width:\n * timepicker-single-column-width:\n * timepicker-multiple-column-width:\n * timepicker-title-height:\n * timepicker-title-padding:\n * timepicker-container-width:\n * timepicker-container-height:\n * */\n@Directive({\n    selector: 'input[nbTimepicker]',\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => NbTimePickerDirective),\n            multi: true,\n        },\n    ],\n    standalone: false\n})\nexport class NbTimePickerDirective<D> implements AfterViewInit, ControlValueAccessor {\n  /**\n   * Provides timepicker component.\n   * */\n  @Input('nbTimepicker')\n  get timepicker(): NbTimePickerComponent<D> {\n    return this._timePickerComponent;\n  }\n\n  set timepicker(timePicker: NbTimePickerComponent<D>) {\n    this._timePickerComponent = timePicker;\n\n    this.pickerInputsChangedSubscription?.unsubscribe();\n    this.pickerInputsChangedSubscription = this._timePickerComponent.timepickerFormatChange$\n      .pipe(\n        map(() => this._timePickerComponent.computedTimeFormat),\n        startWith(this._timePickerComponent.computedTimeFormat),\n        distinctUntilChanged(),\n        pairwise(),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(([prevFormat, nextFormat]) => {\n        if (this.inputValue) {\n          const date = this.dateService.parse(this.inputValue, prevFormat);\n          this.writeValue(date);\n        }\n      });\n  }\n  protected _timePickerComponent: NbTimePickerComponent<D>;\n  protected pickerInputsChangedSubscription: Subscription | undefined;\n\n  /**\n   * Time picker overlay offset.\n   * */\n  @Input() overlayOffset = 8;\n\n  /**\n   * String representation of latest selected date.\n   * Updated when value is updated programmatically (writeValue), via timepicker (subscribeOnApplyClick)\n   * or via input field (handleInputChange)\n   * @docs-private\n   */\n  protected lastInputValue: string;\n  /**\n   * Positioning strategy used by overlay.\n   * @docs-private\n   * */\n  protected positionStrategy: NbAdjustableConnectedPositionStrategy;\n  protected overlayRef: NbOverlayRef;\n  protected destroy$: Subject<void> = new Subject<void>();\n  protected onChange: (value: D) => void = () => {};\n  protected onTouched = () => {};\n  /**\n   * Trigger strategy used by overlay.\n   * @docs-private\n   * */\n  protected triggerStrategy: NbTriggerStrategy;\n\n  /**\n   * Returns html input element.\n   * @docs-private\n   * */\n  get input(): HTMLInputElement {\n    return this.hostRef.nativeElement;\n  }\n\n  /**\n   * Determines is timepicker overlay opened.\n   * @docs-private\n   * */\n  get isOpen(): boolean {\n    return this.overlayRef && this.overlayRef.hasAttached();\n  }\n\n  /**\n   * Determines is timepicker overlay closed.\n   * @docs-private\n   * */\n  get isClosed(): boolean {\n    return !this.isOpen;\n  }\n\n  constructor(\n    @Inject(NB_DOCUMENT) protected document,\n    protected positionBuilder: NbPositionBuilderService,\n    protected hostRef: ElementRef,\n    protected triggerStrategyBuilder: NbTriggerStrategyBuilderService,\n    protected overlay: NbOverlayService,\n    protected cd: ChangeDetectorRef,\n    protected calendarTimeModelService: NbCalendarTimeModelService<D>,\n    protected dateService: NbDateService<D>,\n    protected renderer: Renderer2,\n    @Attribute('placeholder') protected placeholder: string,\n  ) {}\n\n  /**\n   * Returns host input value.\n   * @docs-private\n   * */\n  get inputValue(): string {\n    return this.input.value;\n  }\n\n  set inputValue(value: string) {\n    this.input.value = value;\n  }\n\n  ngAfterViewInit() {\n    this.subscribeOnInputChange();\n\n    if (!this.placeholder) {\n      this.renderer.setProperty(this.input, 'placeholder', this.timepicker.computedTimeFormat);\n    }\n    this.triggerStrategy = this.createTriggerStrategy();\n    this.subscribeOnTriggers();\n    this.subscribeToBlur();\n  }\n\n  show() {\n    if (this.isClosed) {\n      this.attachToOverlay();\n    }\n  }\n\n  hide() {\n    if (this.isOpen) {\n      this.overlayRef.detach();\n      this.cd.markForCheck();\n    }\n  }\n\n  /**\n   * Attaches picker to the timepicker portal.\n   * @docs-private\n   * */\n  protected attachToOverlay() {\n    if (!this.overlayRef) {\n      this.setupTimepicker();\n      this.initOverlay();\n    }\n    this.overlayRef.attach(this.timepicker.portal);\n  }\n\n  setupTimepicker() {\n    if (this.dateService.getId() === 'native' && isDevMode()) {\n      console.warn(\n        'Date.parse does not support parsing time with custom format.' +\n          ' See details here https://akveo.github.io/nebular/docs/components/datepicker/overview#native-parse-issue',\n      );\n    }\n    this.timepicker.setHost(this.hostRef);\n    if (this.inputValue) {\n      const val = this.dateService.getId() === 'native' ? this.parseNativeDateString(this.inputValue) : this.inputValue;\n      this.timepicker.date = this.dateService.parse(val, this.timepicker.computedTimeFormat);\n    } else {\n      this.timepicker.date = this.calendarTimeModelService.getResetTime();\n    }\n  }\n\n  protected initOverlay() {\n    this.positionStrategy = this.createPositionStrategy();\n    this.subscribeOnApplyClick();\n    this.createOverlay();\n  }\n\n  protected subscribeOnApplyClick() {\n    this.timepicker.onSelectTime.pipe(takeUntil(this.destroy$)).subscribe((value: NbSelectedTimePayload<D>) => {\n      const time = this.dateService.format(value.time, this.timepicker.computedTimeFormat).toUpperCase();\n      this.inputValue = time;\n      this.timepicker.date = value.time;\n      this.onChange(value.time);\n      if (value.save) {\n        this.lastInputValue = time;\n        this.hide();\n      }\n    });\n  }\n\n  protected createOverlay() {\n    const scrollStrategy = this.createScrollStrategy();\n    this.overlayRef = this.overlay.create({ positionStrategy: this.positionStrategy, scrollStrategy });\n  }\n\n  protected subscribeOnTriggers() {\n    this.triggerStrategy.show$.pipe(filter(() => this.isClosed)).subscribe(() => this.show());\n\n    this.triggerStrategy.hide$.pipe(filter(() => this.isOpen)).subscribe(() => {\n      this.inputValue = this.lastInputValue || '';\n      this.hide();\n    });\n  }\n\n  protected createTriggerStrategy(): NbTriggerStrategy {\n    return this.triggerStrategyBuilder\n      .trigger(NbTrigger.FOCUS)\n      .host(this.hostRef.nativeElement)\n      .container(() => this.getContainer())\n      .build();\n  }\n\n  protected createPositionStrategy(): NbAdjustableConnectedPositionStrategy {\n    return this.positionBuilder\n      .connectedTo(this.hostRef)\n      .position(NbPosition.BOTTOM)\n      .offset(this.overlayOffset)\n      .adjustment(NbAdjustment.COUNTERCLOCKWISE);\n  }\n\n  protected getContainer() {\n    return (\n      this.overlayRef &&\n      this.isOpen &&\n      <ComponentRef<any>>{\n        location: {\n          nativeElement: this.overlayRef.overlayElement,\n        },\n      }\n    );\n  }\n\n  protected createScrollStrategy(): NbScrollStrategy {\n    return this.overlay.scrollStrategies.block();\n  }\n\n  protected subscribeOnInputChange() {\n    fromEvent(this.input, 'input')\n      .pipe(\n        map(() => this.inputValue),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((value: string) => this.handleInputChange(value));\n  }\n\n  protected subscribeToBlur() {\n    merge(\n      this.timepicker.blur,\n      fromEvent(this.input, 'blur').pipe(filter(() => !this.isOpen && this.document.activeElement !== this.input)),\n    )\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.onTouched());\n  }\n\n  /**\n   * Parses input value and write if it isn't null.\n   * @docs-private\n   * */\n  protected handleInputChange(value: string) {\n    if (this.dateService.getId() === 'native') {\n      /**\n       * Native date service dont parse only time string value,\n       * and we adding year mouth and day to convert string to valid date format\n       **/\n      value = this.parseNativeDateString(value);\n    }\n\n    const isValidDate: boolean = this.dateService.isValidDateString(value, this.timepicker.computedTimeFormat);\n    if (isValidDate) {\n      this.lastInputValue = value;\n\n      const date = this.dateService.parse(value, this.timepicker.computedTimeFormat);\n      this.onChange(date);\n      this.timepicker.date = date;\n    }\n  }\n\n  protected updateValue(value: D) {\n    if (value) {\n      this.timepicker.date = value;\n\n      const timeString = this.dateService.format(value, this.timepicker.computedTimeFormat).toUpperCase();\n      this.inputValue = timeString;\n      this.lastInputValue = timeString;\n    }\n  }\n\n  writeValue(value: D): void {\n    this.updateValue(value);\n  }\n\n  registerOnChange(fn: (value: any) => {}): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.input.disabled = isDisabled;\n  }\n\n  protected parseNativeDateString(value: string): string {\n    const date = this.dateService.today();\n    const year = this.dateService.getYear(date);\n    const month = this.calendarTimeModelService.paddToTwoSymbols(this.dateService.getMonth(date));\n    const day = this.calendarTimeModelService.paddToTwoSymbols(this.dateService.getDate(date));\n\n    return `${year}-${month}-${day} ${value}`;\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbListModule } from '../list/list.module';\nimport { NbCardModule } from '../card/card.module';\nimport { NbCalendarKitModule } from '../calendar-kit/calendar-kit.module';\nimport { NbTimePickerDirective } from './timepicker.directive';\nimport { NbTimePickerComponent } from './timepicker.component';\nimport { NbTimePickerCellComponent } from './timepicker-cell.component';\nimport { NbCalendarTimeModelService } from '../calendar-kit/services/calendar-time-model.service';\nimport { NB_TIME_PICKER_CONFIG, NbTimePickerConfig } from './model';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    NbOverlayModule,\n    NbListModule,\n    NbCardModule,\n    NbCalendarKitModule,\n  ],\n  providers: [NbCalendarTimeModelService],\n  exports: [NbTimePickerComponent, NbTimePickerCellComponent, NbTimePickerDirective],\n  declarations: [NbTimePickerComponent, NbTimePickerCellComponent, NbTimePickerDirective],\n})\nexport class NbTimepickerModule {\n  static forRoot(config: NbTimePickerConfig = {}): ModuleWithProviders<NbTimepickerModule> {\n    return {\n      ngModule: NbTimepickerModule,\n      providers: [{provide: NB_TIME_PICKER_CONFIG, useValue: config}],\n    };\n  }\n\n  static forChild(config: NbTimePickerConfig = {}): ModuleWithProviders<NbTimepickerModule> {\n    return {\n      ngModule: NbTimepickerModule,\n      providers: [{provide: NB_TIME_PICKER_CONFIG, useValue: config}],\n    };\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable, Type } from '@angular/core';\n\nimport { NbCalendarRange } from '../calendar/calendar-range.component';\nimport { NbDatepickerComponent, NbRangepickerComponent } from './datepicker.component';\nimport { NbDatepickerAdapter } from './datepicker.directive';\nimport { NbDateService } from '../calendar-kit/services/date.service';\nimport { NbDateTimePickerComponent } from './date-timepicker.component';\n\n@Injectable()\nexport class NbDateAdapterService<D> extends NbDatepickerAdapter<D> {\n  picker: Type<NbDatepickerComponent<D>> = NbDatepickerComponent;\n\n  constructor(protected dateService: NbDateService<D>) {\n    super();\n  }\n\n  parse(date: string, format): D {\n    return this.dateService.parse(date, format);\n  }\n\n  format(date: D, format: string): string {\n    return this.dateService.format(date, format);\n  }\n\n  isValid(date: string, format: string): boolean {\n    return this.dateService.isValidDateString(date, format);\n  }\n}\n\n@Injectable()\nexport class NbRangeAdapterService<D> extends NbDatepickerAdapter<NbCalendarRange<D>> {\n  picker: Type<NbRangepickerComponent<D>> = NbRangepickerComponent;\n\n  constructor(protected dateService: NbDateService<D>) {\n    super();\n  }\n\n  parse(range: string, format): NbCalendarRange<D> {\n    const [start, end] = range.split('-').map(subDate => subDate.trim());\n    return {\n      start: this.dateService.parse(start, format),\n      end: this.dateService.parse(end, format),\n    };\n  }\n\n  format(range: NbCalendarRange<D>, format: string): string {\n    if (!range) {\n      return '';\n    }\n\n    const start = this.dateService.format(range.start, format);\n    const isStartValid = this.dateService.isValidDateString(start, format);\n\n    if (!isStartValid) {\n      return '';\n    }\n\n    const end = this.dateService.format(range.end, format);\n    const isEndValid = this.dateService.isValidDateString(end, format);\n\n    if (isEndValid) {\n      return `${start} - ${end}`;\n    } else {\n      return start;\n    }\n  }\n\n  isValid(range: string, format: string): boolean {\n    const [start, end] = range.split('-').map(subDate => subDate.trim());\n    return this.dateService.isValidDateString(start, format) && this.dateService.isValidDateString(end, format);\n  }\n}\n\n@Injectable()\nexport class NbDateTimeAdapterService<D> extends NbDatepickerAdapter<D> {\n  picker: Type<NbDateTimePickerComponent<D>> = NbDateTimePickerComponent;\n\n  constructor(protected dateService: NbDateService<D>) {\n    super();\n  }\n\n  parse(date: string, format: string): D {\n    return this.dateService.parse(date, format);\n  }\n\n  format(date: any, format: string): string {\n    return this.dateService.format(date, format);\n  }\n\n  isValid(date: string, format: string): boolean {\n    return this.dateService.isValidDateString(date, format);\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\n\nimport { NB_DATE_ADAPTER, NbDatepickerDirective } from './datepicker.directive';\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbCalendarModule } from '../calendar/calendar.module';\nimport { NbCalendarComponent } from '../calendar/calendar.component';\nimport { NbDatepickerContainerComponent } from './datepicker-container.component';\nimport {\n  NbDatepickerComponent,\n  NbRangepickerComponent,\n  NbBasePickerComponent,\n} from './datepicker.component';\nimport { NbCalendarRangeComponent } from '../calendar/calendar-range.component';\nimport { NbCalendarRangeModule } from '../calendar/calendar-range.module';\nimport { NbDateAdapterService, NbDateTimeAdapterService, NbRangeAdapterService } from './datepicker-adapter';\nimport { NbCalendarWithTimeComponent } from './calendar-with-time.component';\nimport { NbCardModule } from '../card/card.module';\nimport { NbBaseCalendarModule } from '../calendar/base-calendar.module';\nimport { NbTimepickerModule } from '../timepicker/timepicker.module';\nimport { NbCalendarKitModule } from '../calendar-kit/calendar-kit.module';\nimport { NbDateTimePickerComponent } from './date-timepicker.component';\n\n@NgModule({\n  imports: [\n    NbOverlayModule,\n    NbCalendarModule,\n    NbCalendarRangeModule,\n    NbCardModule,\n    NbBaseCalendarModule,\n    NbTimepickerModule,\n    NbCalendarKitModule,\n  ],\n  exports: [\n    NbDatepickerDirective,\n    NbDatepickerComponent,\n    NbRangepickerComponent,\n    NbDateTimePickerComponent,\n    NbCalendarWithTimeComponent,\n  ],\n  declarations: [\n    NbDatepickerDirective,\n    NbDatepickerContainerComponent,\n    NbCalendarWithTimeComponent,\n    NbDateTimePickerComponent,\n    NbDatepickerComponent,\n    NbRangepickerComponent,\n    NbBasePickerComponent,\n  ],\n})\nexport class NbDatepickerModule {\n  static forRoot(): ModuleWithProviders<NbDatepickerModule> {\n    return {\n      ngModule: NbDatepickerModule,\n      providers: [\n        DatePipe,\n        {\n          provide: NB_DATE_ADAPTER,\n          multi: true,\n          useClass: NbDateAdapterService,\n        },\n        {\n          provide: NB_DATE_ADAPTER,\n          multi: true,\n          useClass: NbRangeAdapterService,\n        },\n        {\n          provide: NB_DATE_ADAPTER,\n          multi: true,\n          useClass: NbDateTimeAdapterService,\n        },\n      ],\n    };\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  HostBinding,\n  Input,\n  Output,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n} from '@angular/core';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbComponentOrCustomStatus } from '../component-status';\n\n/**\n * The `NbRadioComponent` provides the same functionality as native `<input type=\"radio\">`\n * with Nebular styles and animations.\n *\n * @stacked-example(Showcase, radio/radio-showcase.component)\n *\n * ### Installation\n *\n * Import `NbRadioModule` to your feature module.\n *\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbRadioModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n *\n * ### Usage\n *\n * Radio buttons should be wrapped in `nb-radio-group` to provide form bindings.\n *\n * ```html\n * <nb-radio-group [(ngModel)]=\"selectedOption\">\n *   <nb-radio value=\"1\">Option 1</nb-radio>\n *   <nb-radio value=\"2\">Option 2</nb-radio>\n *   <nb-radio value=\"3\">Option 3</nb-radio>\n * </nb-radio-group>\n * ```\n *\n * You can disable some radios in the group using a `disabled` attribute.\n *\n * @stacked-example(Disabled, radio/radio-disabled.component)\n *\n *\n * @styles\n *\n * radio-width:\n * radio-height:\n * radio-border-style:\n * radio-border-width:\n * radio-text-font-family:\n * radio-text-font-size:\n * radio-text-font-weight:\n * radio-text-line-height:\n * radio-outline-color:\n * radio-outline-width:\n * radio-basic-text-color:\n * radio-basic-border-color:\n * radio-basic-background-color:\n * radio-basic-checked-background-color:\n * radio-basic-checked-border-color:\n * radio-basic-inner-circle-color:\n * radio-basic-focus-border-color:\n * radio-basic-focus-inner-circle-color:\n * radio-basic-hover-background-color:\n * radio-basic-hover-border-color:\n * radio-basic-hover-inner-circle-color:\n * radio-basic-hover-checked-background-color:\n * radio-basic-active-border-color:\n * radio-basic-active-inner-circle-color:\n * radio-basic-disabled-background-color:\n * radio-basic-disabled-border-color:\n * radio-basic-disabled-text-color:\n * radio-basic-disabled-checked-background-color:\n * radio-basic-disabled-checked-border-color:\n * radio-basic-disabled-checked-inner-circle-color:\n * radio-primary-text-color:\n * radio-primary-border-color:\n * radio-primary-background-color:\n * radio-primary-checked-background-color:\n * radio-primary-checked-border-color:\n * radio-primary-inner-circle-color:\n * radio-primary-focus-border-color:\n * radio-primary-focus-inner-circle-color:\n * radio-primary-hover-background-color:\n * radio-primary-hover-border-color:\n * radio-primary-hover-inner-circle-color:\n * radio-primary-hover-checked-background-color:\n * radio-primary-active-border-color:\n * radio-primary-active-inner-circle-color:\n * radio-primary-disabled-background-color:\n * radio-primary-disabled-border-color:\n * radio-primary-disabled-text-color:\n * radio-primary-disabled-checked-background-color:\n * radio-primary-disabled-checked-border-color:\n * radio-primary-disabled-checked-inner-circle-color:\n * radio-success-text-color:\n * radio-success-border-color:\n * radio-success-background-color:\n * radio-success-checked-background-color:\n * radio-success-checked-border-color:\n * radio-success-inner-circle-color:\n * radio-success-focus-border-color:\n * radio-success-focus-inner-circle-color:\n * radio-success-hover-background-color:\n * radio-success-hover-border-color:\n * radio-success-hover-inner-circle-color:\n * radio-success-hover-checked-background-color:\n * radio-success-active-border-color:\n * radio-success-active-inner-circle-color:\n * radio-success-disabled-background-color:\n * radio-success-disabled-border-color:\n * radio-success-disabled-text-color:\n * radio-success-disabled-checked-background-color:\n * radio-success-disabled-checked-border-color:\n * radio-success-disabled-checked-inner-circle-color:\n * radio-info-text-color:\n * radio-info-border-color:\n * radio-info-background-color:\n * radio-info-checked-background-color:\n * radio-info-checked-border-color:\n * radio-info-inner-circle-color:\n * radio-info-focus-border-color:\n * radio-info-focus-inner-circle-color:\n * radio-info-hover-background-color:\n * radio-info-hover-border-color:\n * radio-info-hover-inner-circle-color:\n * radio-info-hover-checked-background-color:\n * radio-info-active-border-color:\n * radio-info-active-inner-circle-color:\n * radio-info-disabled-background-color:\n * radio-info-disabled-border-color:\n * radio-info-disabled-text-color:\n * radio-info-disabled-checked-background-color:\n * radio-info-disabled-checked-border-color:\n * radio-info-disabled-checked-inner-circle-color:\n * radio-warning-text-color:\n * radio-warning-border-color:\n * radio-warning-background-color:\n * radio-warning-checked-background-color:\n * radio-warning-checked-border-color:\n * radio-warning-inner-circle-color:\n * radio-warning-focus-border-color:\n * radio-warning-focus-inner-circle-color:\n * radio-warning-hover-background-color:\n * radio-warning-hover-border-color:\n * radio-warning-hover-inner-circle-color:\n * radio-warning-hover-checked-background-color:\n * radio-warning-active-border-color:\n * radio-warning-active-inner-circle-color:\n * radio-warning-disabled-background-color:\n * radio-warning-disabled-border-color:\n * radio-warning-disabled-text-color:\n * radio-warning-disabled-checked-background-color:\n * radio-warning-disabled-checked-border-color:\n * radio-warning-disabled-checked-inner-circle-color:\n * radio-danger-text-color:\n * radio-danger-border-color:\n * radio-danger-background-color:\n * radio-danger-checked-background-color:\n * radio-danger-checked-border-color:\n * radio-danger-inner-circle-color:\n * radio-danger-focus-border-color:\n * radio-danger-focus-inner-circle-color:\n * radio-danger-hover-background-color:\n * radio-danger-hover-border-color:\n * radio-danger-hover-inner-circle-color:\n * radio-danger-hover-checked-background-color:\n * radio-danger-active-border-color:\n * radio-danger-active-inner-circle-color:\n * radio-danger-disabled-background-color:\n * radio-danger-disabled-border-color:\n * radio-danger-disabled-text-color:\n * radio-danger-disabled-checked-background-color:\n * radio-danger-disabled-checked-border-color:\n * radio-danger-disabled-checked-inner-circle-color:\n * radio-control-text-color:\n * radio-control-background-color:\n * radio-control-border-color:\n * radio-control-checked-background-color:\n * radio-control-checked-border-color:\n * radio-control-inner-circle-color:\n * radio-control-focus-border-color:\n * radio-control-focus-inner-circle-color:\n * radio-control-hover-background-color:\n * radio-control-hover-border-color:\n * radio-control-hover-inner-circle-color:\n * radio-control-hover-checked-background-color:\n * radio-control-active-border-color:\n * radio-control-active-inner-circle-color:\n * radio-control-disabled-background-color:\n * radio-control-disabled-border-color:\n * radio-control-disabled-text-color:\n * radio-control-disabled-checked-background-color:\n * radio-control-disabled-checked-border-color:\n * radio-control-disabled-checked-inner-circle-color:\n * */\n@Component({\n    selector: 'nb-radio',\n    template: `\n    <label>\n      <input\n        #input\n        type=\"radio\"\n        class=\"native-input visually-hidden\"\n        [name]=\"name\"\n        [value]=\"value\"\n        [checked]=\"checked\"\n        [disabled]=\"disabled\"\n        (change)=\"onChange($event)\"\n        (click)=\"onClick($event)\">\n      <span class=\"outer-circle\"></span>\n      <span class=\"inner-circle\"></span>\n      <span class=\"text\">\n        <ng-content></ng-content>\n      </span>\n    </label>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    styleUrls: ['./radio.component.scss'],\n    standalone: false\n})\nexport class NbRadioComponent {\n\n  @Input()\n  get name(): string {\n    return this._name;\n  }\n  set name(value: string) {\n    if (this._name !== value) {\n      this._name = value;\n    }\n  }\n  private _name: string;\n\n  @Input()\n  get checked(): boolean {\n    return this._checked;\n  }\n  set checked(value: boolean) {\n    const boolValue = convertToBoolProperty(value);\n    if (this._checked !== boolValue) {\n      this._checked = boolValue;\n    }\n  }\n  private _checked: boolean = false;\n  static ngAcceptInputType_checked: NbBooleanInput;\n\n  @Input()\n  get value(): any {\n    return this._value;\n  }\n  set value(value: any) {\n    if (this._value !== value) {\n      this._value = value;\n    }\n  }\n  private _value: any;\n\n  @Input()\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(disabled: boolean) {\n    const boolValue = convertToBoolProperty(disabled);\n    if (this._disabled !== boolValue) {\n      this._disabled = boolValue;\n    }\n  }\n  private _disabled: boolean = false;\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  @Output() valueChange: EventEmitter<any> = new EventEmitter();\n\n  @Output() blur: EventEmitter<void> = new EventEmitter();\n\n  @ViewChild('input', { read: ElementRef }) input: ElementRef<HTMLInputElement>;\n\n  constructor(\n    protected cd: ChangeDetectorRef,\n    protected renderer: Renderer2,\n    protected statusService: NbStatusService,\n  ) {}\n\n  @HostBinding('class.status-primary')\n  get isPrimary(): boolean {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-success')\n  get isSuccess(): boolean {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-warning')\n  get isWarning(): boolean {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get isDanger(): boolean {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-info')\n  get isInfo(): boolean {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-basic')\n  get isBasic(): boolean {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get isControl(): boolean {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  onChange(event: Event) {\n    event.stopPropagation();\n    this.checked = true;\n    this.valueChange.emit(this.value);\n  }\n\n  onClick(event: Event) {\n    event.stopPropagation();\n  }\n\n  /*\n   * @docs-private\n   * We use this method when setting radio inputs from radio group component.\n   * Otherwise Angular won't detect changes in radio template as cached last rendered\n   * value didn't updated.\n   **/\n  _markForCheck() {\n    this.cd.markForCheck();\n  }\n\n  /*\n   * @docs-private\n   * Use this method when setting radio name from radio group component.\n   * In case option 'name' isn't set on nb-radio component we need to set name\n   * right away, so it won't overlap with options without names from other radio\n   * groups. Otherwise they all would have same name and will be considered as\n   * options from one group so only the last option will stay selected.\n   **/\n  _setName(name: string) {\n    this.name = name;\n\n    if (this.input) {\n      this.renderer.setProperty(this.input.nativeElement, 'name', name);\n    }\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChildren,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList,\n  PLATFORM_ID,\n  Inject,\n  ElementRef,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { from, fromEvent, merge, Subject } from 'rxjs';\nimport { filter, startWith, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NB_DOCUMENT } from '../../theme.options';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbRadioComponent } from './radio.component';\n\n/**\n * The `NbRadioGroupComponent` is the wrapper for `nb-radio` button.\n * It provides form bindings:\n *\n * ```html\n * <nb-radio-group [(ngModel)]=\"selectedOption\">\n *   <nb-radio value=\"1\">Option 1</nb-radio>\n *   <nb-radio value=\"2\">Option 2</nb-radio>\n *   <nb-radio value=\"3\">Option 3</nb-radio>\n * </nb-radio-group>\n * ```\n *\n * Also, you can use `value` and `valueChange` for binding without forms.\n *\n * ```html\n * <nb-radio-group [(value)]=\"selectedOption\">\n *   <nb-radio value=\"1\">Option 1</nb-radio>\n *   <nb-radio value=\"2\">Option 2</nb-radio>\n *   <nb-radio value=\"3\">Option 3</nb-radio>\n * </nb-radio-group>\n * ```\n *\n * Radio items name has to be provided through `name` input property of the radio group.\n *\n * ```html\n * <nb-radio-group name=\"my-radio-group\">\n *   ...\n * </nb-radio-group>\n * ```\n *\n * You can change radio group status by setting `status` input.\n * @stacked-example(Statuses, radio/radio-statuses.component)\n *\n * Also, you can disable the whole group using `disabled` attribute.\n * @stacked-example(Disabled group, radio/radio-disabled-group.component)\n *\n * Radio group supports `ngModel` and reactive forms:\n * @stacked-example(Radio Group with forms, radio/radio-form.component)\n *\n * */\n@Component({\n    selector: 'nb-radio-group',\n    template: `\n    <ng-content select=\"nb-radio\"></ng-content>`,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => NbRadioGroupComponent),\n            multi: true,\n        },\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbRadioGroupComponent implements AfterContentInit, OnDestroy, ControlValueAccessor {\n\n  protected destroy$ = new Subject<void>();\n  protected onChange = (value: any) => {};\n  protected onTouched = () => {};\n\n  @Input()\n  get value(): any {\n    return this._value;\n  }\n  set value(value: any) {\n    this._value = value;\n    this.updateValues();\n  }\n  protected _value: any;\n\n  @Input()\n  get name(): string {\n    return this._name;\n  }\n  set name(name: string) {\n    this._name = name;\n    this.updateNames();\n  }\n  protected _name: string;\n\n  @Input()\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(disabled: boolean) {\n    this._disabled = convertToBoolProperty(disabled);\n    this.updateDisabled();\n  }\n  protected _disabled: boolean;\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  /**\n   * Radio buttons status.\n   * Possible values are `primary` (default), `success`, `warning`, `danger`, `info`.\n   */\n  @Input()\n  get status(): NbComponentOrCustomStatus {\n    return this._status;\n  }\n  set status(value: NbComponentOrCustomStatus) {\n    if (this._status !== value) {\n      this._status = value;\n      this.updateStatus();\n    }\n  }\n  protected _status: NbComponentOrCustomStatus = 'basic';\n\n  @ContentChildren(NbRadioComponent, { descendants: true }) radios: QueryList<NbRadioComponent>;\n\n  @Output() valueChange: EventEmitter<any> = new EventEmitter();\n\n  constructor(\n    protected hostElement: ElementRef<HTMLElement>,\n    @Inject(PLATFORM_ID) protected platformId,\n    @Inject(NB_DOCUMENT) protected document,\n  ) {}\n\n  ngAfterContentInit() {\n    // In case option 'name' isn't set on nb-radio component,\n    // we need to set it's name right away, so it won't overlap with options\n    // without names from other radio groups. Otherwise they all would have\n    // same name and will be considered as options from one group so only the\n    // last option will stay selected.\n    this.updateNames();\n\n    this.radios.changes\n      .pipe(\n        startWith(this.radios),\n        // 'changes' emit during change detection run and we can't update\n        // option properties right of since they already was initialized.\n        // Instead we schedule microtask to update radios after change detection\n        // run is finished and trigger one more change detection run.\n        switchMap((radios: QueryList<NbRadioComponent>) => from(Promise.resolve(radios))),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.updateAndSubscribeToRadios());\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  writeValue(value: any): void {\n    this.value = value;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  protected updateAndSubscribeToRadios() {\n    this.updateValueFromCheckedOption();\n    this.updateNames();\n    this.updateValues();\n    this.updateDisabled();\n    this.updateStatus();\n    this.subscribeOnRadiosValueChange();\n    this.subscribeOnRadiosBlur();\n  }\n\n  protected updateNames() {\n    if (this.radios) {\n      this.radios.forEach((radio: NbRadioComponent) => radio._setName(this.name));\n    }\n  }\n\n  protected updateValues() {\n    this.updateAndMarkForCheckRadios((radio: NbRadioComponent) => radio.checked = radio.value === this.value);\n  }\n\n  protected updateDisabled() {\n    if (typeof this.disabled !== 'undefined') {\n      this.updateAndMarkForCheckRadios((radio: NbRadioComponent) => radio.disabled = this.disabled);\n    }\n  }\n\n  protected subscribeOnRadiosValueChange() {\n    if (!this.radios || !this.radios.length) {\n      return;\n    }\n\n    merge(...this.radios.map((radio: NbRadioComponent) => radio.valueChange))\n      .pipe(\n        takeUntil(\n          merge(\n            this.radios.changes,\n            this.destroy$,\n          ),\n        ),\n      )\n      .subscribe((value: any) => {\n        this.writeValue(value);\n        this.propagateValue(value);\n      });\n  }\n\n  protected propagateValue(value: any) {\n    this.valueChange.emit(value);\n    this.onChange(value);\n  }\n\n  protected subscribeOnRadiosBlur() {\n    const hasNoRadios = !this.radios || !this.radios.length;\n    if (!isPlatformBrowser(this.platformId) || hasNoRadios) {\n      return;\n    }\n\n    const hostElement = this.hostElement.nativeElement;\n    fromEvent<Event>(hostElement, 'focusin')\n      .pipe(\n        filter(event => hostElement.contains(event.target as Node)),\n        switchMap(() => merge(\n          fromEvent<Event>(this.document, 'focusin'),\n          fromEvent<Event>(this.document, 'click'),\n        )),\n        filter(event => !hostElement.contains(event.target as Node)),\n        takeUntil(\n          merge(\n            this.radios.changes,\n            this.destroy$,\n          ),\n        ),\n      )\n      .subscribe(() => this.onTouched());\n  }\n\n  protected updateStatus() {\n    this.updateAndMarkForCheckRadios((radio: NbRadioComponent) => radio.status = this.status);\n  }\n\n  protected updateAndMarkForCheckRadios(updateFn: (NbRadioComponent) => void) {\n    if (this.radios) {\n      this.radios.forEach((radio) => {\n        updateFn(radio);\n        radio._markForCheck();\n      });\n    }\n  }\n\n  protected updateValueFromCheckedOption() {\n    const checkedRadio = this.radios.find((radio) => radio.checked);\n    const isValueMissing = this.value === undefined || this.value === null;\n    if (checkedRadio && isValueMissing && checkedRadio.value !== this.value) {\n      this.value = checkedRadio.value;\n    }\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbRadioComponent } from './radio.component';\nimport { NbRadioGroupComponent } from './radio-group.component';\n\n\n@NgModule({\n  imports: [],\n  exports: [NbRadioComponent, NbRadioGroupComponent],\n  declarations: [NbRadioComponent, NbRadioGroupComponent],\n})\nexport class NbRadioModule {\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  NgZone,\n  OnDestroy,\n  Output,\n  Renderer2,\n} from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbHighlightableOption } from '../cdk/a11y/descendant-key-manager';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbComponentSize } from '../component-size';\n\nexport type NbTagAppearance = 'filled' | 'outline';\n\nexport interface NbTagSelectionChange {\n  tag: NbTagComponent;\n  selected: boolean;\n}\n\nlet tagUniqueId = 0;\n\n/**\n *\n * To show a cross on a tag and enable `remove` event add the `removable` attribute.\n * @stacked-example(Removable tags, tag/tag-removable.component)\n *\n * You can change appearance via `appearance` input:\n * @stacked-example(Tag Appearance, tag/tag-appearance.component)\n *\n * You can change status via `status` input:\n * @stacked-example(Tag Status, tag/tag-status.component)\n *\n * @styles\n *\n * tag-text-font-family:\n * tag-text-transform:\n * tag-border-width:\n * tag-border-style:\n * tag-border-radius:\n * tag-tiny-text-font-size:\n * tag-tiny-text-font-weight:\n * tag-tiny-text-line-height:\n * tag-tiny-padding:\n * tag-tiny-close-offset:\n * tag-small-text-font-size:\n * tag-small-text-font-weight:\n * tag-small-text-line-height:\n * tag-small-padding:\n * tag-small-close-offset:\n * tag-medium-text-font-size:\n * tag-medium-text-font-weight:\n * tag-medium-text-line-height:\n * tag-medium-padding:\n * tag-medium-close-offset:\n * tag-large-text-font-size:\n * tag-large-text-font-weight:\n * tag-large-text-line-height:\n * tag-large-padding:\n * tag-large-close-offset:\n * tag-giant-text-font-size:\n * tag-giant-text-font-weight:\n * tag-giant-text-line-height:\n * tag-giant-padding:\n * tag-giant-close-offset:\n * tag-filled-basic-background-color:\n * tag-filled-basic-border-color:\n * tag-filled-basic-text-color:\n * tag-filled-basic-active-background-color:\n * tag-filled-basic-active-border-color:\n * tag-filled-basic-hover-background-color:\n * tag-filled-basic-hover-border-color:\n * tag-filled-basic-selected-background-color:\n * tag-filled-basic-selected-border-color:\n * tag-filled-primary-background-color:\n * tag-filled-primary-border-color:\n * tag-filled-primary-text-color:\n * tag-filled-primary-active-background-color:\n * tag-filled-primary-active-border-color:\n * tag-filled-primary-hover-background-color:\n * tag-filled-primary-hover-border-color:\n * tag-filled-primary-selected-background-color:\n * tag-filled-primary-selected-border-color:\n * tag-filled-success-background-color:\n * tag-filled-success-border-color:\n * tag-filled-success-text-color:\n * tag-filled-success-active-background-color:\n * tag-filled-success-active-border-color:\n * tag-filled-success-hover-background-color:\n * tag-filled-success-hover-border-color:\n * tag-filled-success-selected-background-color:\n * tag-filled-success-selected-border-color:\n * tag-filled-info-background-color:\n * tag-filled-info-border-color:\n * tag-filled-info-text-color:\n * tag-filled-info-active-background-color:\n * tag-filled-info-active-border-color:\n * tag-filled-info-hover-background-color:\n * tag-filled-info-hover-border-color:\n * tag-filled-info-selected-background-color:\n * tag-filled-info-selected-border-color:\n * tag-filled-warning-background-color:\n * tag-filled-warning-border-color:\n * tag-filled-warning-text-color:\n * tag-filled-warning-active-background-color:\n * tag-filled-warning-active-border-color:\n * tag-filled-warning-hover-background-color:\n * tag-filled-warning-hover-border-color:\n * tag-filled-warning-selected-background-color:\n * tag-filled-warning-selected-border-color:\n * tag-filled-danger-background-color:\n * tag-filled-danger-border-color:\n * tag-filled-danger-text-color:\n * tag-filled-danger-active-background-color:\n * tag-filled-danger-active-border-color:\n * tag-filled-danger-hover-background-color:\n * tag-filled-danger-hover-border-color:\n * tag-filled-danger-selected-background-color:\n * tag-filled-danger-selected-border-color:\n * tag-filled-control-background-color:\n * tag-filled-control-border-color:\n * tag-filled-control-text-color:\n * tag-filled-control-active-background-color:\n * tag-filled-control-active-border-color:\n * tag-filled-control-hover-background-color:\n * tag-filled-control-hover-border-color:\n * tag-filled-control-selected-background-color:\n * tag-filled-control-selected-border-color:\n * tag-outline-basic-background-color:\n * tag-outline-basic-border-color:\n * tag-outline-basic-text-color:\n * tag-outline-basic-active-background-color:\n * tag-outline-basic-active-border-color:\n * tag-outline-basic-active-text-color:\n * tag-outline-basic-hover-background-color:\n * tag-outline-basic-hover-border-color:\n * tag-outline-basic-hover-text-color:\n * tag-outline-basic-selected-background-color:\n * tag-outline-basic-selected-border-color:\n * tag-outline-basic-selected-text-color:\n * tag-outline-primary-background-color:\n * tag-outline-primary-border-color:\n * tag-outline-primary-text-color:\n * tag-outline-primary-active-background-color:\n * tag-outline-primary-active-border-color:\n * tag-outline-primary-active-text-color:\n * tag-outline-primary-hover-background-color:\n * tag-outline-primary-hover-border-color:\n * tag-outline-primary-hover-text-color:\n * tag-outline-primary-selected-background-color:\n * tag-outline-primary-selected-border-color:\n * tag-outline-primary-selected-text-color:\n * tag-outline-success-background-color:\n * tag-outline-success-border-color:\n * tag-outline-success-text-color:\n * tag-outline-success-active-background-color:\n * tag-outline-success-active-border-color:\n * tag-outline-success-active-text-color:\n * tag-outline-success-hover-background-color:\n * tag-outline-success-hover-border-color:\n * tag-outline-success-hover-text-color:\n * tag-outline-success-selected-background-color:\n * tag-outline-success-selected-border-color:\n * tag-outline-success-selected-text-color:\n * tag-outline-info-background-color:\n * tag-outline-info-border-color:\n * tag-outline-info-text-color:\n * tag-outline-info-active-background-color:\n * tag-outline-info-active-border-color:\n * tag-outline-info-active-text-color:\n * tag-outline-info-hover-background-color:\n * tag-outline-info-hover-border-color:\n * tag-outline-info-hover-text-color:\n * tag-outline-info-selected-background-color:\n * tag-outline-info-selected-border-color:\n * tag-outline-info-selected-text-color:\n * tag-outline-warning-background-color:\n * tag-outline-warning-border-color:\n * tag-outline-warning-text-color:\n * tag-outline-warning-active-background-color:\n * tag-outline-warning-active-border-color:\n * tag-outline-warning-active-text-color:\n * tag-outline-warning-hover-background-color:\n * tag-outline-warning-hover-border-color:\n * tag-outline-warning-hover-text-color:\n * tag-outline-warning-selected-background-color:\n * tag-outline-warning-selected-border-color:\n * tag-outline-warning-selected-text-color:\n * tag-outline-danger-background-color:\n * tag-outline-danger-border-color:\n * tag-outline-danger-text-color:\n * tag-outline-danger-active-background-color:\n * tag-outline-danger-active-border-color:\n * tag-outline-danger-active-text-color:\n * tag-outline-danger-hover-background-color:\n * tag-outline-danger-hover-border-color:\n * tag-outline-danger-hover-text-color:\n * tag-outline-danger-selected-background-color:\n * tag-outline-danger-selected-border-color:\n * tag-outline-danger-selected-text-color:\n * tag-outline-control-background-color:\n * tag-outline-control-border-color:\n * tag-outline-control-text-color:\n * tag-outline-control-active-background-color:\n * tag-outline-control-active-border-color:\n * tag-outline-control-active-text-color:\n * tag-outline-control-hover-background-color:\n * tag-outline-control-hover-border-color:\n * tag-outline-control-hover-text-color:\n * tag-outline-control-selected-background-color:\n * tag-outline-control-selected-border-color:\n * tag-outline-control-selected-text-color:\n */\n@Component({\n    selector: 'nb-tag',\n    templateUrl: './tag.component.html',\n    exportAs: 'nbTag',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbTagComponent implements AfterViewInit, OnDestroy, NbHighlightableOption {\n\n  private _destroy$: Subject<NbTagComponent> = new Subject<NbTagComponent>();\n\n  get destroy$(): Observable<NbTagComponent> {\n    return this._destroy$.asObservable();\n  }\n\n  /**\n   * Tag text.\n   */\n  @Input() text: string;\n\n  @Input()\n  @HostBinding('class.selected')\n  @HostBinding('attr.aria-selected')\n  get selected(): boolean {\n    return this._selected;\n  }\n  set selected(value: boolean) {\n    if (this.selected !== convertToBoolProperty(value)) {\n      this._selected = !this.selected;\n      this.selectedChange.emit({ tag: this, selected: this.selected });\n    }\n  }\n  protected _selected: boolean = false;\n  static ngAcceptInputType_selected: NbBooleanInput;\n\n  /**\n   * Controls whether the user can remove a tag or not.\n   */\n  @Input()\n  get removable(): boolean {\n    return this._removable;\n  }\n  set removable(value: boolean) {\n    this._removable = convertToBoolProperty(value);\n  }\n  protected _removable: boolean = false;\n  static ngAcceptInputType_removable: NbBooleanInput;\n\n  /**\n   * Tag appearance: `filled`, `outline`.\n   */\n  @Input() appearance: NbTagAppearance = 'filled';\n\n  /**\n   * Tag status: `basic`, `primary`, `info`, `success`, `warning`, `danger`, `control`.\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Tag size: `tiny`, `small`, `medium`, `large`, `giant`.\n   */\n  @Input() size: NbComponentSize = 'medium';\n\n  @Input()\n  @HostBinding('attr.role')\n  role: string = 'option';\n\n  /**\n   * Emits when the user removes the tag\n   * (whether by clicking on the remove button or by pressing `delete` or `backspace` key).\n   */\n  @Output() readonly remove: EventEmitter<NbTagComponent> = new EventEmitter<NbTagComponent>();\n\n  @Output() readonly selectedChange: EventEmitter<NbTagSelectionChange> = new EventEmitter<NbTagSelectionChange>();\n\n  @HostBinding('class.active')\n  _isActive: boolean = false;\n\n  @HostBinding('attr.id')\n  _id: string = `nb-tag-${tagUniqueId++}`;\n\n  @HostBinding('class.appearance-filled')\n  get filled(): boolean {\n    return this.appearance === 'filled';\n  }\n  set filled(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'filled';\n    }\n  }\n\n  @HostBinding('class.appearance-outline')\n  get outline(): boolean {\n    return this.appearance === 'outline';\n  }\n  set outline(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'outline';\n    }\n  }\n\n  @HostBinding('class.status-basic')\n  get basic() {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-primary')\n  get primary() {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-success')\n  get success() {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-info')\n  get info() {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning() {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger() {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-control')\n  get control() {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class.size-tiny')\n  get tiny() {\n    return this.size === 'tiny';\n  }\n\n  @HostBinding('class.size-small')\n  get small() {\n    return this.size === 'small';\n  }\n\n  @HostBinding('class.size-medium')\n  get medium() {\n    return this.size === 'medium';\n  }\n\n  @HostBinding('class.size-large')\n  get large() {\n    return this.size === 'large';\n  }\n\n  @HostBinding('class.size-giant')\n  get giant() {\n    return this.size === 'giant';\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  @HostListener('keydown.delete')\n  @HostListener('keydown.backspace')\n  _remove(): void {\n    if (this.removable) {\n      this.remove.emit(this);\n    }\n  }\n\n  constructor(\n    public _hostElement: ElementRef,\n    protected cd: ChangeDetectorRef,\n    protected renderer: Renderer2,\n    protected zone: NgZone,\n    protected statusService: NbStatusService,\n  ) {}\n\n  ngAfterViewInit() {\n    // TODO: #2254\n    this.zone.runOutsideAngular(() => setTimeout(() => {\n      this.renderer.addClass(this._hostElement.nativeElement, 'nb-transition');\n    }));\n  }\n\n  ngOnDestroy() {\n    this._destroy$.next(this);\n  }\n\n  _toggleSelection(): void {\n    this.selected = !this.selected;\n    this.cd.markForCheck();\n  }\n\n  setActiveStyles(): void {\n    if (!this._isActive) {\n      this._isActive = true;\n      this.cd.markForCheck();\n    }\n  }\n\n  setInactiveStyles(): void {\n    if (this._isActive) {\n      this._isActive = false;\n      this.cd.markForCheck();\n    }\n  }\n}\n","{{ text }}\n<nb-icon *ngIf=\"removable\"\n         (click)=\"_remove()\"\n         class=\"nb-tag-remove size-{{size}}\"\n         icon=\"close-outline\"\n         pack=\"nebular-essentials\"\n         aria-hidden=\"true\">\n</nb-icon>\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  NgZone,\n  Output,\n  Renderer2,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbFocusMonitor } from '../cdk/a11y/a11y.module';\nimport { ENTER } from '../cdk/keycodes/keycodes';\nimport { NbFormFieldControl } from '../form-field/form-field-control';\nimport { NbInputDirective } from '../input/input.directive';\n\nexport interface NbTagInputAddEvent {\n  input: ElementRef<HTMLInputElement>;\n  value: string;\n}\n\n/**\n *\n * `[nbTagInput]` directive connects input with a `nb-tag-list` component.\n *\n * @stacked-example(Tag Input, tag/tag-input.component)\n *\n * @additional-example(Tag Input with Autocomplete, tag/tag-input-with-autocomplete.component)\n *\n * @styles\n *\n * tag-list-tiny-tag-offset:\n * tag-list-small-tag-offset:\n * tag-list-medium-tag-offset:\n * tag-list-large-tag-offset:\n * tag-list-giant-tag-offset:\n * tag-list-with-input-tiny-padding:\n * tag-list-with-input-small-padding:\n * tag-list-with-input-medium-padding:\n * tag-list-with-input-large-padding:\n * tag-list-with-input-giant-padding:\n */\n@Directive({\n    selector: 'input[nbTagInput]',\n    exportAs: 'nbTagInput',\n    providers: [\n        { provide: NbFormFieldControl, useExisting: NbTagInputDirective },\n    ],\n    standalone: false\n})\nexport class NbTagInputDirective extends NbInputDirective implements AfterViewInit {\n\n  protected readonly keyDown$: Subject<KeyboardEvent> = new Subject<KeyboardEvent>();\n\n  get _value(): string {\n    return this._hostElement.nativeElement.value;\n  }\n\n  /**\n   * Controls which keys should trigger tag add event.\n   */\n  @Input() separatorKeys: number[] = [ENTER];\n\n  /**\n   * Emits when a tag need to be added.\n   */\n  @Output() tagAdd: EventEmitter<NbTagInputAddEvent> = new EventEmitter<NbTagInputAddEvent>();\n\n  @HostBinding('class.nb-tag-input') readonly nbTagInputClass = true;\n\n  @HostListener('keydown', ['$event'])\n  _onKeydown(event: KeyboardEvent): void {\n    this.keyDown$.next(event);\n  }\n\n  constructor(\n    public _hostElement: ElementRef<HTMLInputElement>,\n    protected focusMonitor: NbFocusMonitor,\n    protected renderer: Renderer2,\n    protected zone: NgZone,\n    protected statusService: NbStatusService,\n  ) {\n    super(_hostElement, focusMonitor, renderer, zone, statusService);\n  }\n\n  ngAfterViewInit() {\n    super.ngAfterViewInit();\n\n    this.keyDown$\n      .pipe(\n        filter(({ keyCode }: KeyboardEvent) => this.isSeparatorKey(keyCode)),\n        map(() => this._value),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((value: string) => this.tagAdd.emit({ value, input: this._hostElement }));\n  }\n\n  protected isSeparatorKey(keyCode: number): boolean {\n    return this.separatorKeys.includes(keyCode);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  Renderer2,\n} from '@angular/core';\nimport { merge, Subject } from 'rxjs';\nimport { filter, finalize, map, startWith, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { NbLayoutDirection, NbLayoutDirectionService } from '../../services/direction.service';\nimport { NbStatusService } from '../../services/status.service';\nimport { NbFocusMonitor } from '../cdk/a11y/a11y.module';\nimport {\n  NbActiveDescendantKeyManager,\n  NbActiveDescendantKeyManagerFactoryService,\n} from '../cdk/a11y/descendant-key-manager';\nimport { BACKSPACE, DELETE, SPACE } from '../cdk/keycodes/keycodes';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbComponentSize } from '../component-size';\nimport { NbAutocompleteDirective } from '../autocomplete/autocomplete.directive';\nimport { NbTagComponent } from './tag.component';\nimport { NbTagInputDirective } from './tag-input.directive';\n\n/**\n *\n * `nb-tag-list` component displays a list of `nb-tag` components.\n *\n * @stacked-example(Tag List Showcase, tag/tag-showcase.component)\n *\n * @styles\n *\n * tag-list-tiny-tag-offset:\n * tag-list-small-tag-offset:\n * tag-list-medium-tag-offset:\n * tag-list-large-tag-offset:\n * tag-list-giant-tag-offset:\n * tag-list-with-input-tiny-padding:\n * tag-list-with-input-small-padding:\n * tag-list-with-input-medium-padding:\n * tag-list-with-input-large-padding:\n * tag-list-with-input-giant-padding:\n * tag-list-with-input-rectangle-border-radius:\n * tag-list-with-input-semi-round-border-radius:\n * tag-list-with-input-round-border-radius:\n */\n@Component({\n    selector: 'nb-tag-list',\n    template: `\n    <div class=\"nb-tag-list-tags-wrapper\">\n      <ng-content select=\"nb-tag, input[nbTagInput]\"></ng-content>\n    </div>\n  `,\n    exportAs: 'nbTagList',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbTagListComponent implements OnInit, AfterContentInit, AfterViewInit, OnDestroy {\n  protected readonly destroy$: Subject<void> = new Subject<void>();\n  protected readonly keyDown$: Subject<KeyboardEvent> = new Subject<KeyboardEvent>();\n  protected readonly tagClick$: Subject<NbTagComponent> = new Subject<NbTagComponent>();\n  protected focused: boolean = false;\n  protected keyManager: NbActiveDescendantKeyManager<NbTagComponent>;\n\n  @ContentChildren(NbTagComponent) tags: QueryList<NbTagComponent>;\n  @ContentChild(NbTagInputDirective) tagInput: NbTagInputDirective;\n  @ContentChild(NbAutocompleteDirective) autocompleteDirective: NbAutocompleteDirective<any>;\n\n  /**\n   * Controls tags offset.\n   */\n  @Input()\n  size: NbComponentSize = 'medium';\n\n  @Input()\n  @HostBinding('attr.tabindex')\n  tabIndex: number = 0;\n\n  @Input()\n  @HostBinding('attr.role')\n  role: string = 'listbox';\n\n  @Input()\n  @HostBinding('attr.aria-multiselectable')\n  get multiple(): boolean {\n    return this._multiple;\n  }\n  set multiple(value: boolean) {\n    this._multiple = convertToBoolProperty(value);\n  }\n  protected _multiple: boolean = false;\n  static ngAcceptInputType_multiple: NbBooleanInput;\n\n  @HostBinding('attr.aria-activedescendant')\n  activeTagId: string | null = null;\n\n  /**\n   * Emits when tag need to be removed (whether because of click on the remove button\n   * or when `delete` or `backspace` key pressed).\n   */\n  @Output() readonly tagRemove: EventEmitter<NbTagComponent> = new EventEmitter<NbTagComponent>();\n\n  @HostBinding('class.nb-tag-list-with-input')\n  get _hasInput(): boolean {\n    return !!this.tagInput;\n  }\n\n  @HostBinding('class.focus')\n  get _isFocused(): boolean {\n    return this.focused;\n  }\n\n  @HostBinding('class.input-full-width')\n  get _isFullWidth(): boolean {\n    return !!this.tagInput?.fullWidth;\n  }\n\n  @HostBinding('class')\n  get _inputClasses(): string[] {\n    if (this._hasInput) {\n      return [\n        `shape-${this.tagInput.shape}`,\n        `size-${this.tagInput.fieldSize}`,\n        this.statusService.getStatusClass(this.tagInput.status),\n      ];\n    }\n\n    return [`size-${this.size}`];\n  }\n\n  @HostListener('keydown', ['$event'])\n  _onKeydown(event: KeyboardEvent): void {\n    this.keyDown$.next(event);\n  }\n\n  @HostListener('click', ['$event'])\n  _onClick({ target }: MouseEvent): void {\n    const clickedTag = this.tags.find((tag: NbTagComponent) => tag._hostElement.nativeElement === target);\n    if (clickedTag) {\n      this.tagClick$.next(clickedTag);\n    }\n  }\n\n  constructor(\n    protected hostElement: ElementRef<HTMLElement>,\n    protected cd: ChangeDetectorRef,\n    protected renderer: Renderer2,\n    protected zone: NgZone,\n    protected focusMonitor: NbFocusMonitor,\n    protected activeDescendantKeyManagerFactory: NbActiveDescendantKeyManagerFactoryService<NbTagComponent>,\n    protected directionService: NbLayoutDirectionService,\n    protected statusService: NbStatusService,\n  ) {}\n\n  ngOnInit() {\n    this.focusMonitor\n      .monitor(this.hostElement, true)\n      .pipe(\n        map((origin) => !!origin),\n        finalize(() => this.focusMonitor.stopMonitoring(this.hostElement)),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((isFocused: boolean) => this.onFocusChange(isFocused));\n  }\n\n  ngAfterContentInit() {\n    this.initKeyManager();\n    this.setAutocompleteCustomHost();\n  }\n\n  ngAfterViewInit() {\n    this.listenToLayoutDirectionChange();\n    this.listenListKeyDown();\n    this.listenInputKeyDown();\n    this.listenTagClick();\n    this.listenTagRemove();\n    this.listenTagDestroy();\n    this.listenActiveTagChange();\n    this.listenNoTags();\n\n    // TODO: #2254\n    this.zone.runOutsideAngular(() =>\n      setTimeout(() => {\n        this.renderer.addClass(this.hostElement.nativeElement, 'nb-transition');\n      }),\n    );\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n  }\n\n  protected initKeyManager(): void {\n    this.keyManager = this.activeDescendantKeyManagerFactory\n      .create(this.tags)\n      .withHorizontalOrientation(this.directionService.getDirection())\n      .withWrap();\n  }\n\n  protected listenToLayoutDirectionChange(): void {\n    this.directionService\n      .onDirectionChange()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((direction: NbLayoutDirection) => this.keyManager.withHorizontalOrientation(direction));\n  }\n\n  protected listenListKeyDown(): void {\n    const tagListKeyDown$ = this.keyDown$.pipe(\n      filter(({ target }: KeyboardEvent) => target === this.hostElement.nativeElement),\n    );\n    const activeTagKeyDown$ = tagListKeyDown$.pipe(filter(() => !!this.keyManager.activeItem));\n\n    tagListKeyDown$\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((event: KeyboardEvent) => this.keyManager.onKeydown(event));\n\n    activeTagKeyDown$\n      .pipe(\n        filter(({ keyCode }: KeyboardEvent) => keyCode === SPACE),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((event: KeyboardEvent) => {\n        this.toggleTag(this.keyManager.activeItem);\n        // Prevents page scroll.\n        event.preventDefault();\n      });\n\n    activeTagKeyDown$\n      .pipe(\n        filter(({ keyCode }: KeyboardEvent) => this.isBackspaceOrDelete(keyCode)),\n        map(() => this.keyManager.activeItem),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((tagToRemove: NbTagComponent) => tagToRemove._remove());\n  }\n\n  protected listenInputKeyDown(): void {\n    const inputKeyDown$ = this.keyDown$.pipe(\n      filter(({ target }: KeyboardEvent) => target === this.tagInput?._hostElement.nativeElement),\n    );\n\n    inputKeyDown$\n      .pipe(\n        filter(({ keyCode }: KeyboardEvent) => {\n          return this.tagInput._value === '' && this.isBackspaceOrDelete(keyCode) && this.tags.length > 0;\n        }),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => {\n        this.hostElement.nativeElement.focus();\n        this.keyManager.setLastItemActive();\n        this.cd.markForCheck();\n      });\n  }\n\n  protected listenTagClick(): void {\n    this.tagClick$.pipe(takeUntil(this.destroy$)).subscribe((clickedTag: NbTagComponent) => {\n      this.toggleTag(clickedTag);\n      this.keyManager.setActiveItem(clickedTag);\n    });\n  }\n\n  protected listenTagRemove(): void {\n    this.tags.changes\n      .pipe(\n        startWith(this.tags),\n        switchMap((tags: QueryList<NbTagComponent>) => merge(...tags.map((tag: NbTagComponent) => tag.remove))),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((tagToRemove: NbTagComponent) => this.tagRemove.emit(tagToRemove));\n  }\n\n  protected listenTagDestroy(): void {\n    this.tags.changes\n      .pipe(\n        startWith(this.tags),\n        switchMap((tags: QueryList<NbTagComponent>) => merge(...tags.map((tag: NbTagComponent) => tag.destroy$))),\n        filter((destroyedTag: NbTagComponent) => destroyedTag === this.keyManager.activeItem),\n        map((destroyedTag: NbTagComponent) => destroyedTag === this.tags.last),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((isLastTagDestroyed: boolean) => {\n        if (isLastTagDestroyed) {\n          this.keyManager.setPreviousItemActive();\n        } else {\n          this.keyManager.setNextItemActive();\n        }\n      });\n  }\n\n  protected listenNoTags(): void {\n    this.tags.changes\n      .pipe(\n        startWith(this.tags),\n        filter((tags: QueryList<NbTagComponent>) => tags.length === 0),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.focusInputIfActive());\n  }\n\n  protected listenActiveTagChange(): void {\n    this.keyManager.change\n      .pipe(\n        map(() => this.keyManager.activeItem?._id),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((activeTagId: string | null) => {\n        this.activeTagId = activeTagId;\n        this.cd.markForCheck();\n      });\n  }\n\n  protected onFocusChange(isFocused: boolean): void {\n    this.focused = isFocused;\n    this.cd.markForCheck();\n\n    if (!isFocused || this.tagInput?.focused$.value) {\n      this.keyManager?.setActiveItem(-1);\n      return;\n    }\n\n    // Focus input when focusing tag list without tags. Otherwise select first tag.\n    if (this.tags.length === 0 && this._hasInput) {\n      this.focusInput();\n    } else {\n      this.keyManager.setFirstItemActive();\n    }\n  }\n\n  protected isBackspaceOrDelete(keyCode: number): boolean {\n    return keyCode === BACKSPACE || keyCode === DELETE;\n  }\n\n  protected setAutocompleteCustomHost(): void {\n    if (this.autocompleteDirective) {\n      this.autocompleteDirective.customOverlayHost = this.hostElement;\n    }\n  }\n\n  protected toggleTag(tagToToggle: NbTagComponent): void {\n    tagToToggle._toggleSelection();\n\n    if (tagToToggle.selected && !this.multiple) {\n      this.tags.forEach((tag: NbTagComponent) => {\n        if (tag !== tagToToggle) {\n          tag.selected = false;\n        }\n      });\n    }\n  }\n\n  protected focusInput(): void {\n    if (this._hasInput) {\n      this.tagInput._hostElement.nativeElement.focus();\n    }\n  }\n\n  protected focusInputIfActive(): void {\n    if (this._isFocused) {\n      this.focusInput();\n    }\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { NbIconModule } from '../icon/icon.module';\nimport { NbTagComponent } from './tag.component';\nimport { NbTagListComponent } from './tag-list.component';\nimport { NbTagInputDirective } from './tag-input.directive';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    NbIconModule,\n  ],\n  declarations: [\n    NbTagComponent,\n    NbTagListComponent,\n    NbTagInputDirective,\n  ],\n  exports: [\n    NbTagComponent,\n    NbTagListComponent,\n    NbTagInputDirective,\n  ],\n})\nexport class NbTagModule { }\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nexport const NB_DEFAULT_ROW_LEVEL: number = 0;\n\nexport type NbDataGetter<N, T> = (N) => T;\nexport type NbChildrenGetter<N, T> = (N) => (T[] | undefined);\nexport type NbExpandedGetter<N> = (N) => boolean;\n\nexport interface NbGetters<N, T> {\n  dataGetter?: NbDataGetter<N, T>;\n  childrenGetter?: NbChildrenGetter<N, T>;\n  expandedGetter?: NbExpandedGetter<N>;\n}\n\n/**\n * Implicit context of cells and rows\n */\nexport class NbTreeGridPresentationNode<T> {\n  constructor(\n    /**\n     * Data object associated with row\n     */\n    public readonly data: T,\n    public children: NbTreeGridPresentationNode<T>[] | undefined,\n    /**\n     * Row expand state\n     */\n    public expanded: boolean,\n    public readonly level: number,\n  ) {}\n\n  /**\n   * True if row has child rows\n   */\n  hasChildren(): boolean {\n    return !!this.children && !!this.children.length;\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\n\nimport { Injectable } from '@angular/core';\n\nimport { NbTreeGridPresentationNode } from './tree-grid.model';\n\n/**\n * Service used to filter tree grid data. Searched searchString in all object values.\n * If you need custom filter, you can extend this service and override filterPredicate or whole filter method.\n */\n@Injectable()\nexport class NbTreeGridFilterService<T> {\n  filter(query: string, data: NbTreeGridPresentationNode<T>[]): NbTreeGridPresentationNode<T>[] {\n    if (!query) {\n      return data;\n    }\n\n    return data.reduce((filtered: NbTreeGridPresentationNode<T>[], node: NbTreeGridPresentationNode<T>) => {\n      let filteredChildren: NbTreeGridPresentationNode<T>[];\n\n      if (node.children) {\n        filteredChildren = this.filter(query, node.children);\n        node.children = filteredChildren;\n      }\n\n      node.expanded = false;\n\n      if (filteredChildren && filteredChildren.length) {\n        node.expanded = true;\n        filtered.push(node);\n      } else if (this.filterPredicate(node.data, query)) {\n        filtered.push(node);\n      }\n\n      return filtered;\n    }, []);\n  }\n\n  protected filterPredicate(data: T, searchQuery: string): boolean {\n    const preparedQuery = searchQuery.trim().toLocaleLowerCase();\n    for (const val of Object.values(data)) {\n      const preparedVal = `${val}`.trim().toLocaleLowerCase();\n      if (preparedVal.includes(preparedQuery)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  ContentChild,\n  Directive,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Inject,\n  Input,\n  Output,\n  TemplateRef,\n} from '@angular/core';\n\nimport { convertToBoolProperty, NbBooleanInput, NbNullableInput } from '../helpers';\nimport { NB_SORT_HEADER_COLUMN_DEF } from '../cdk/table/cell';\n\n/** Column definition associated with a `NbSortHeaderDirective`. */\ninterface NbSortHeaderColumnDef {\n  name: string;\n}\n\nexport interface NbSortRequest {\n  column: string;\n  direction: NbSortDirection;\n}\n\nexport interface NbSortable {\n  sort(sortRequest: NbSortRequest);\n}\n\nexport type NbSortDirectionValues = 'asc' | 'desc' | '';\nexport enum NbSortDirection {\n  ASCENDING = 'asc',\n  DESCENDING = 'desc',\n  NONE = '',\n}\nconst sortDirections: NbSortDirection[] = [\n  NbSortDirection.ASCENDING,\n  NbSortDirection.DESCENDING,\n  NbSortDirection.NONE,\n];\n\n/**\n * Directive triggers sort method of passed object when sort header changes direction\n */\n@Directive({\n    selector: '[nbSort]',\n    standalone: false\n})\nexport class NbSortDirective {\n  @Input('nbSort') sortable: NbSortable;\n  static ngAcceptInputType_sortable: NbSortable | NbNullableInput;\n\n  @Output() sort: EventEmitter<NbSortRequest> = new EventEmitter<NbSortRequest>();\n\n  emitSort(sortRequest: NbSortRequest) {\n    if (this.sortable && this.sortable.sort) {\n      this.sortable.sort(sortRequest);\n    }\n    this.sort.emit(sortRequest);\n  }\n}\n\nexport interface NbSortHeaderIconDirectiveContext {\n  $implicit: NbSortDirection;\n  isAscending: boolean;\n  isDescending: boolean;\n  isNone: boolean;\n}\n\n/**\n * Directive for headers sort icons. Mark you icon implementation with this structural directive and\n * it'll set template's implicit context with current direction. Context also has `isAscending`,\n * `isDescending` and `isNone` properties.\n */\n@Directive({\n    selector: '[nbSortHeaderIcon]',\n    standalone: false\n})\nexport class NbSortHeaderIconDirective {}\n\n@Component({\n    selector: 'nb-sort-icon',\n    template: `\n    <ng-container *ngIf=\"isDirectionSet()\">\n      <nb-icon *ngIf=\"isAscending()\" icon=\"chevron-down-outline\" pack=\"nebular-essentials\" aria-hidden=\"true\"></nb-icon>\n      <nb-icon *ngIf=\"isDescending()\" icon=\"chevron-up-outline\" pack=\"nebular-essentials\" aria-hidden=\"true\"></nb-icon>\n    </ng-container>\n  `,\n    standalone: false\n})\nexport class NbSortIconComponent {\n  @Input() direction: NbSortDirection = NbSortDirection.NONE;\n\n  isAscending(): boolean {\n    return this.direction === NbSortDirection.ASCENDING;\n  }\n\n  isDescending(): boolean {\n    return this.direction === NbSortDirection.DESCENDING;\n  }\n\n  isDirectionSet(): boolean {\n    return this.isAscending() || this.isDescending();\n  }\n}\n\n/**\n * Marks header as sort header so it emitting sort event when clicked.\n */\n@Component({\n    selector: '[nbSortHeader]',\n    template: `\n    <button\n      class=\"nb-tree-grid-header-change-sort-button\"\n      type=\"button\"\n      [attr.disabled]=\"getDisabledAttributeValue()\"\n      (click)=\"sortData()\">\n      <ng-content></ng-content>\n    </button>\n    <nb-sort-icon *ngIf=\"!sortIcon; else customIcon\" [direction]=\"direction\"></nb-sort-icon>\n    <ng-template #customIcon [ngTemplateOutlet]=\"sortIcon\" [ngTemplateOutletContext]=\"getIconContext()\"></ng-template>\n  `,\n    standalone: false\n})\nexport class NbSortHeaderComponent {\n\n  @ContentChild(NbSortHeaderIconDirective, { read: TemplateRef })\n  sortIcon: TemplateRef<NbSortHeaderIconDirectiveContext>;\n\n  /**\n   * Current sort direction. Possible values: `asc`, `desc`, ``(none)\n   * @type {NbSortDirection}\n   */\n  @Input('nbSortHeader') direction: NbSortDirection;\n  static ngAcceptInputType_direction: NbSortDirectionValues;\n\n  private disabledValue: boolean = false;\n\n  /**\n   * Disable sort header\n   */\n  @Input()\n  @HostBinding('class.disabled')\n  set disabled(value) {\n    this.disabledValue = convertToBoolProperty(value);\n  }\n  get disabled(): boolean {\n    return this.disabledValue;\n  }\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  @HostListener('click')\n  sortIfEnabled() {\n    if (!this.disabled) {\n      this.sortData();\n    }\n  }\n\n  constructor(\n    private sort: NbSortDirective,\n    @Inject(NB_SORT_HEADER_COLUMN_DEF) private columnDef: NbSortHeaderColumnDef,\n  ) {}\n\n  isAscending(): boolean {\n    return this.direction === NbSortDirection.ASCENDING;\n  }\n\n  isDescending(): boolean {\n    return this.direction === NbSortDirection.DESCENDING;\n  }\n\n  sortData(): void {\n    const sortRequest = this.createSortRequest();\n    this.sort.emitSort(sortRequest);\n  }\n\n  getIconContext(): NbSortHeaderIconDirectiveContext {\n    return {\n      $implicit: this.direction,\n      isAscending: this.isAscending(),\n      isDescending: this.isDescending(),\n      isNone: !this.isAscending() && !this.isDescending(),\n    };\n  }\n\n  getDisabledAttributeValue(): '' | null {\n    return this.disabled ? '' : null;\n  }\n\n  private createSortRequest(): NbSortRequest {\n    this.direction = this.getNextDirection();\n    return { direction: this.direction, column: this.columnDef.name };\n  }\n\n  private getNextDirection(): NbSortDirection {\n    const sortDirectionCycle = sortDirections;\n    let nextDirectionIndex = sortDirectionCycle.indexOf(this.direction) + 1;\n    if (nextDirectionIndex >= sortDirectionCycle.length) {\n      nextDirectionIndex = 0;\n    }\n    return sortDirectionCycle[nextDirectionIndex];\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\n\nimport { Injectable } from '@angular/core';\nimport { NbSortDirection, NbSortRequest } from '../tree-grid-sort.component';\nimport { NbTreeGridPresentationNode } from './tree-grid.model';\n\n/**\n * Service used to sort tree grid data. Uses Array.prototype.sort method.\n * If you need custom sorting, you can extend this service and override comparator or whole sort method.\n */\n@Injectable()\nexport class NbTreeGridSortService<T> {\n\n  sort(request: NbSortRequest, data: NbTreeGridPresentationNode<T>[]): NbTreeGridPresentationNode<T>[] {\n    if (!request) {\n      return data;\n    }\n\n    const sorted = data.sort((na, nb) => this.comparator(request, na, nb));\n    for (const node of data) {\n      if (node.children) {\n        node.children = this.sort(request, node.children);\n      }\n    }\n    return sorted;\n  }\n\n  protected comparator(\n    request: NbSortRequest,\n    na: NbTreeGridPresentationNode<T>,\n    nb: NbTreeGridPresentationNode<T>,\n  ): number {\n    const key = request.column;\n    const dir = request.direction;\n    const a = na.data[key];\n    const b = nb.data[key];\n\n    let res = 0;\n\n    if (a > b) {\n      res = 1\n    }\n    if (a < b) {\n      res = -1\n    }\n\n    return dir === NbSortDirection.ASCENDING ? res : res * -1;\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\n\nimport { Injectable } from '@angular/core';\n\nimport { NbTreeGridPresentationNode } from './tree-grid.model';\n\nexport interface NbToggleOptions {\n  deep?: boolean;\n}\n\n@Injectable()\nexport class NbTreeGridService<T> {\n  expand(data: NbTreeGridPresentationNode<T>[], row: T, options: NbToggleOptions = {}) {\n    const node: NbTreeGridPresentationNode<T> = this.find(data, row);\n    node.expanded = true;\n\n    if (options.deep && node.hasChildren()) {\n      node.children.forEach((n: NbTreeGridPresentationNode<T>) => this.expand(data, n.data, options));\n    }\n  }\n\n  collapse(data: NbTreeGridPresentationNode<T>[], row: T, options: NbToggleOptions = {}) {\n    const node: NbTreeGridPresentationNode<T> = this.find(data, row);\n    node.expanded = false;\n\n    if (options.deep && node.hasChildren()) {\n      node.children.forEach((n: NbTreeGridPresentationNode<T>) => this.collapse(data, n.data, options));\n    }\n  }\n\n  toggle(data: NbTreeGridPresentationNode<T>[], row: T, options: NbToggleOptions = {}) {\n    const node: NbTreeGridPresentationNode<T> = this.find(data, row);\n    if (node.expanded) {\n      this.collapse(data, row, options);\n    } else {\n      this.expand(data, row, options);\n    }\n  }\n\n  private find(data: NbTreeGridPresentationNode<T>[], row: T): NbTreeGridPresentationNode<T> {\n    const toCheck: NbTreeGridPresentationNode<T>[] = [...data];\n\n    for (const node of toCheck) {\n      if (node.data === row) {\n        return node;\n      }\n\n      if (node.hasChildren()) {\n        toCheck.push(...node.children);\n      }\n    }\n\n    return undefined;\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { NbGetters, NB_DEFAULT_ROW_LEVEL, NbTreeGridPresentationNode } from './tree-grid.model';\n\n@Injectable()\nexport class NbTreeGridDataService<T> {\n\n  private defaultGetters: NbGetters<any, T> = {\n    dataGetter: node => node.data,\n    childrenGetter: d => d.children || undefined,\n    expandedGetter: d => !!d.expanded,\n  };\n\n  toPresentationNodes<N>(\n    nodes: N[],\n    customGetters?: NbGetters<N, T>,\n    level: number = NB_DEFAULT_ROW_LEVEL,\n  ): NbTreeGridPresentationNode<T>[] {\n    const getters: NbGetters<N, T> = { ...this.defaultGetters, ...customGetters };\n\n    return this.mapNodes(nodes, getters, level);\n  }\n\n  private mapNodes<N>(nodes: N[], getters: NbGetters<N, T>, level: number): NbTreeGridPresentationNode<T>[] {\n    const { dataGetter, childrenGetter, expandedGetter } = getters;\n\n    return nodes.map(node => {\n      const childrenNodes = childrenGetter(node);\n      let children: NbTreeGridPresentationNode<T>[];\n      if (childrenNodes) {\n        children = this.toPresentationNodes(childrenNodes, getters, level + 1);\n      }\n\n      return new NbTreeGridPresentationNode(dataGetter(node), children, expandedGetter(node), level);\n    });\n  }\n\n  flattenExpanded(nodes: NbTreeGridPresentationNode<T>[]): NbTreeGridPresentationNode<T>[] {\n    return nodes.reduce((res: NbTreeGridPresentationNode<T>[], node: NbTreeGridPresentationNode<T>) => {\n      res.push(node);\n\n      if (node.expanded && node.hasChildren()) {\n        res.push(...this.flattenExpanded(node.children));\n      }\n\n      return res;\n    }, []);\n  }\n\n  copy(nodes: NbTreeGridPresentationNode<T>[]): NbTreeGridPresentationNode<T>[] {\n    return nodes.map((node: NbTreeGridPresentationNode<T>) => {\n      let children: NbTreeGridPresentationNode<T>[];\n      if (node.hasChildren()) {\n        children = this.copy(node.children);\n      }\n      return new NbTreeGridPresentationNode(node.data, children, node.expanded, node.level);\n    });\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { NbCollectionViewer } from '../../cdk/collections/collection-viewer';\nimport { NbDataSource } from '../../cdk/table/data-source';\nimport { NbSortable, NbSortRequest } from '../tree-grid-sort.component';\nimport { NbTreeGridDataService } from './tree-grid-data.service';\nimport { NbTreeGridFilterService } from './tree-grid-filter.service';\nimport { NbTreeGridSortService } from './tree-grid-sort.service';\nimport { NbGetters, NB_DEFAULT_ROW_LEVEL, NbTreeGridPresentationNode } from './tree-grid.model';\nimport { NbToggleOptions, NbTreeGridService } from './tree-grid.service';\n\nexport interface NbFilterable {\n  filter(filterRequest: string);\n}\n\nexport class NbTreeGridDataSource<T> extends NbDataSource<NbTreeGridPresentationNode<T>>\n                                     implements NbSortable, NbFilterable {\n  /** Stream that emits when a new data array is set on the data source. */\n  private data: BehaviorSubject<NbTreeGridPresentationNode<T>[]>;\n\n  /** Stream emitting render data to the table (depends on ordered data changes). */\n  private readonly renderData = new BehaviorSubject<NbTreeGridPresentationNode<T>[]>([]);\n\n  private readonly filterRequest = new BehaviorSubject<string>('');\n\n  private readonly sortRequest = new BehaviorSubject<NbSortRequest>(null);\n\n  constructor(private sortService: NbTreeGridSortService<T>,\n              private filterService: NbTreeGridFilterService<T>,\n              private treeGridService: NbTreeGridService<T>,\n              private treeGridDataService: NbTreeGridDataService<T>) {\n    super();\n  }\n\n  setData<N>(data: N[], customGetters?: NbGetters<N, T>) {\n    let presentationData: NbTreeGridPresentationNode<T>[] = [];\n    if (data) {\n      presentationData = this.treeGridDataService.toPresentationNodes(data, customGetters);\n    }\n\n    this.data = new BehaviorSubject(presentationData);\n    this.updateChangeSubscription();\n  }\n\n  connect(\n    collectionViewer: NbCollectionViewer,\n  ): Observable<NbTreeGridPresentationNode<T>[] | ReadonlyArray<NbTreeGridPresentationNode<T>>> {\n    return this.renderData;\n  }\n\n  disconnect(collectionViewer: NbCollectionViewer) {\n  }\n\n  expand(row: T) {\n    this.treeGridService.expand(this.data.value, row);\n    this.data.next(this.data.value);\n  }\n\n  collapse(row: T) {\n    this.treeGridService.collapse(this.data.value, row);\n    this.data.next(this.data.value);\n  }\n\n  toggle(row: T, options?: NbToggleOptions) {\n    this.treeGridService.toggle(this.data.value, row, options);\n    this.data.next(this.data.value);\n  }\n\n  toggleByIndex(dataIndex: number, options?: NbToggleOptions) {\n    const node: NbTreeGridPresentationNode<T> = this.renderData.value && this.renderData.value[dataIndex];\n    if (node) {\n      this.toggle(node.data, options);\n    }\n  }\n\n  getLevel(rowIndex: number): number {\n    const row = this.renderData.value[rowIndex];\n    return row ? row.level : NB_DEFAULT_ROW_LEVEL;\n  }\n\n  sort(sortRequest: NbSortRequest) {\n    this.sortRequest.next(sortRequest);\n  }\n\n  filter(searchQuery: string) {\n    this.filterRequest.next(searchQuery);\n  }\n\n  protected updateChangeSubscription() {\n    const dataStream = this.data;\n\n    const filteredData = combineLatest([dataStream, this.filterRequest])\n      .pipe(\n        map(([data]) => this.treeGridDataService.copy(data)),\n        map(data => this.filterData(data)),\n      );\n\n    const sortedData = combineLatest([filteredData, this.sortRequest])\n      .pipe(\n        map(([data]) => this.sortData(data)),\n      );\n\n    sortedData\n      .pipe(\n        map((data: NbTreeGridPresentationNode<T>[]) => this.treeGridDataService.flattenExpanded(data)),\n      )\n      .subscribe((data: NbTreeGridPresentationNode<T>[]) => this.renderData.next(data));\n  }\n\n  private filterData(data: NbTreeGridPresentationNode<T>[]): NbTreeGridPresentationNode<T>[] {\n    return this.filterService.filter(this.filterRequest.value, data);\n  }\n\n  private sortData(data: NbTreeGridPresentationNode<T>[]): NbTreeGridPresentationNode<T>[] {\n    return this.sortService.sort(this.sortRequest.value, data);\n  }\n}\n\n@Injectable()\nexport class NbTreeGridDataSourceBuilder<T> {\n  constructor(private filterService: NbTreeGridFilterService<T>,\n              private sortService: NbTreeGridSortService<T>,\n              private treeGridService: NbTreeGridService<T>,\n              private treeGridDataService: NbTreeGridDataService<T>) {\n  }\n\n  create<N>(data: N[], customGetters?: NbGetters<N, T>): NbTreeGridDataSource<T> {\n    const dataSource = new NbTreeGridDataSource<T>(\n      this.sortService,\n      this.filterService,\n      this.treeGridService,\n      this.treeGridDataService,\n    );\n\n    dataSource.setData(data, customGetters);\n    return dataSource;\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport const NB_TREE_GRID = new InjectionToken('NB_TREE_GRID');\n","import { Injectable, IterableDiffer, IterableDiffers } from '@angular/core';\nimport { merge, Observable, Subject } from 'rxjs';\n\n\n@Injectable()\nexport class NbColumnsService {\n  private allColumns: string[];\n  private visibleColumns: string[];\n  private changesDiffer: IterableDiffer<any>;\n  private columnHide$: Subject<void> = new Subject<void>();\n  private columnShow$: Subject<void> = new Subject<void>();\n\n  constructor(private differs: IterableDiffers) {}\n\n  setColumns(columns: Iterable<string>): void {\n    if (!this.changesDiffer) {\n      this.changesDiffer = this.differs.find(columns || []).create();\n    }\n\n    if (this.changesDiffer.diff(columns)) {\n      this.allColumns = Array.from(columns);\n      this.visibleColumns = Array.from(columns);\n    }\n  }\n\n  getVisibleColumns(): string[] {\n    return this.visibleColumns;\n  }\n\n  hideColumn(column: string): void {\n    const toRemove = this.visibleColumns.indexOf(column);\n    if (toRemove > -1) {\n      this.visibleColumns.splice(toRemove, 1);\n      this.columnHide$.next();\n    }\n  }\n\n  showColumn(column: string): void {\n    if (this.visibleColumns.includes(column)) {\n      return;\n    }\n    this.visibleColumns.splice(this.findInsertIndex(column), 0, column);\n    this.columnShow$.next();\n  }\n\n  onColumnsChange(): Observable<void> {\n    return merge(this.columnShow$, this.columnHide$);\n  }\n\n  private findInsertIndex(column: string): number {\n    const initialIndex = this.allColumns.indexOf(column);\n\n    if (initialIndex === 0 || !this.visibleColumns.length) {\n      return 0;\n    }\n    if (initialIndex === this.allColumns.length - 1) {\n      return this.visibleColumns.length;\n    }\n\n    const leftSiblingIndex = initialIndex - 1;\n    for (let i = leftSiblingIndex; i >= 0; i--) {\n      const leftSibling = this.allColumns[i];\n      const index = this.visibleColumns.indexOf(leftSibling);\n      if (index !== -1) {\n        return index + 1;\n      }\n    }\n\n    const rightSiblingIndex = initialIndex + 1;\n    for (let i = rightSiblingIndex; i < this.allColumns.length; i++) {\n      const rightSibling = this.allColumns[i];\n      const index = this.visibleColumns.indexOf(rightSibling);\n      if (index !== -1) {\n        return index;\n      }\n    }\n\n    throw new Error(`Can't restore column position.`);\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterViewInit,\n  Attribute,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  HostBinding,\n  Inject,\n  Input,\n  IterableDiffers,\n  OnDestroy,\n  QueryList,\n  EmbeddedViewRef,\n  ViewContainerRef,\n  Optional,\n  SkipSelf,\n} from '@angular/core';\nimport { CDK_TABLE } from '@angular/cdk/table';\nimport { fromEvent, merge, Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\n\nimport { NB_DOCUMENT, NB_WINDOW } from '../../theme.options';\nimport { NbPlatform } from '../cdk/platform/platform-service';\nimport { NbDirectionality } from '../cdk/bidi/bidi-service';\nimport {\n  NB_TABLE_TEMPLATE,\n  NbTable,\n  NB_TABLE_PROVIDERS,\n  NB_VIEW_REPEATER_STRATEGY,\n} from '../cdk/table/table.module';\nimport { NB_STICKY_POSITIONING_LISTENER, NbRowContext } from '../cdk/table/type-mappings';\nimport { NbViewportRulerAdapter } from '../cdk/adapter/viewport-ruler-adapter';\nimport { NbTreeGridDataSource, NbTreeGridDataSourceBuilder } from './data-source/tree-grid-data-source';\nimport { NB_DEFAULT_ROW_LEVEL, NbTreeGridPresentationNode } from './data-source/tree-grid.model';\nimport { NbToggleOptions } from './data-source/tree-grid.service';\nimport { NB_TREE_GRID } from './tree-grid-injection-tokens';\nimport { NbTreeGridRowComponent } from './tree-grid-row.component';\nimport { NbTreeGridCellDirective } from './tree-grid-cell.component';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbTreeGridColumnDefDirective } from './tree-grid-column-def.directive';\nimport {\n  NbTreeGridFooterRowDefDirective,\n  NbTreeGridHeaderRowDefDirective,\n  NbTreeGridRowDefDirective,\n} from './tree-grid-def.component';\nimport { NbColumnsService } from './tree-grid-columns.service';\n\n/**\n * Tree grid component that can be used to display nested rows of data.\n * Supports filtering and sorting.\n * @stacked-example(Showcase, tree-grid/tree-grid-showcase.component)\n *\n * ### Installation\n *\n * Import `NbTreeGridModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbTreeGridModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n *\n * ### Usage\n *\n * As the most basic usage you need to define [nbTreeGridRowDef](docs/components/treegrid/api#nbtreegridrowdefdirective)\n * where you should pass columns to display in rows and\n * [nbTreeGridColumnDef](docs/components/treegrid/api#nbtreegridcolumndefdirective) - component containing cell\n * definitions for each column passed to row definition.\n * @stacked-example(Basic, tree-grid/tree-grid-basic.component)\n *\n * `NbTreeGridComponent`'s source input and `NbTreeGridDataSourceBuilder.create` expecting data to be an array of\n * objects with `data`, `children` and `expanded` properties. If your data doesn't match this interface, you can pass\n * getter functions for each property as arguments to `NbTreeGridDataSourceBuilder.create` method.\n * @stacked-example(Custom node structure, tree-grid/tree-grid-custom-node-structure.component)\n *\n * To use sorting you can add `nbSort` directive to table and subscribe to `sort` method. When user click on header,\n * sort event will be emitted. Event object contain clicked column name and desired sort direction.\n * @stacked-example(Sortable, tree-grid/tree-grid-sortable.component)\n *\n * You can use `Data Source Builder` to create `NbTreeGridDataSource` which would have toggle, sort and\n * filter methods. Then you can call this methods to change sort or toggle rows programmatically. Also `nbSort` and\n * `nbFilterInput` directives both support `NbTreeGridDataSource`, so you can pass it directly as an input and\n * directives will trigger sort, toggle themselves.\n * @stacked-example(Data Source Builder, tree-grid/tree-grid-showcase.component)\n *\n * You can create responsive grid by setting `hideOn` and `showOn` inputs of\n * [nbTreeGridColumnDef](docs/components/tree-grid/api#nbtreegridcolumndefdirective) directive.\n * When viewport reaches specified width grid hides or shows columns.\n * @stacked-example(Responsive columns, tree-grid/tree-grid-responsive.component)\n *\n * To customize sort or row toggle icons you can use `nbSortHeaderIcon` and `nbTreeGridRowToggle` directives\n * respectively. `nbSortHeaderIcon` is a structural directive and it's implicit context set to current direction.\n * Also context has three properties: `isAscending`, `isDescending` and `isNone`.\n * @stacked-example(Custom icons, tree-grid/tree-grid-custom-icons.component)\n *\n * By default, row to toggle happens when user clicks anywhere in the row. Also double click expands row deeply.\n * To disable this you can set `[clickToToggle]=\"false\"` input of `nbTreeGridRow`.\n * @stacked-example(Disable click toggle, tree-grid/tree-grid-disable-click-toggle.component)\n *\n * @styles\n *\n * tree-grid-cell-border-width:\n * tree-grid-cell-border-style:\n * tree-grid-cell-border-color:\n * tree-grid-row-min-height:\n * tree-grid-cell-padding:\n * tree-grid-header-background-color:\n * tree-grid-header-text-color:\n * tree-grid-header-text-font-family:\n * tree-grid-header-text-font-size:\n * tree-grid-header-text-font-weight:\n * tree-grid-header-text-line-height:\n * tree-grid-footer-background-color:\n * tree-grid-footer-text-color:\n * tree-grid-footer-text-font-family:\n * tree-grid-footer-text-font-size:\n * tree-grid-footer-text-font-weight:\n * tree-grid-footer-text-line-height:\n * tree-grid-row-background-color:\n * tree-grid-row-even-background-color:\n * tree-grid-row-hover-background-color:\n * tree-grid-row-text-color:\n * tree-grid-row-text-font-family:\n * tree-grid-row-text-font-size:\n * tree-grid-row-text-font-weight:\n * tree-grid-row-text-line-height:\n * tree-grid-sort-header-button-background-color:\n * tree-grid-sort-header-button-border:\n * tree-grid-sort-header-button-padding:\n */\n@Component({\n    selector: 'table[nbTreeGrid]',\n    template: NB_TABLE_TEMPLATE,\n    styleUrls: ['./tree-grid.component.scss'],\n    providers: [\n        { provide: NB_TREE_GRID, useExisting: NbTreeGridComponent },\n        { provide: CDK_TABLE, useExisting: NbTreeGridComponent },\n        NbColumnsService,\n        ...NB_TABLE_PROVIDERS,\n    ],\n    standalone: false\n})\nexport class NbTreeGridComponent<T> extends NbTable<NbTreeGridPresentationNode<T>>\n                                    implements AfterViewInit, OnDestroy {\n\n  constructor(private dataSourceBuilder: NbTreeGridDataSourceBuilder<T>,\n              differs: IterableDiffers,\n              changeDetectorRef: ChangeDetectorRef,\n              elementRef: ElementRef,\n              @Attribute('role') role: string,\n              dir: NbDirectionality,\n              @Inject(NB_DOCUMENT) document,\n              platform: NbPlatform,\n              @Inject(NB_WINDOW) private window,\n              @Inject(NB_VIEW_REPEATER_STRATEGY) protected readonly _viewRepeater,\n              _viewportRuler: NbViewportRulerAdapter,\n              @Optional() @SkipSelf() @Inject(NB_STICKY_POSITIONING_LISTENER)\n              protected readonly _stickyPositioningListener,\n  ) {\n    super(differs, changeDetectorRef, elementRef, role, dir, document, platform, _viewRepeater,\n          _viewportRuler, _stickyPositioningListener);\n    this.platform = platform;\n  }\n\n  private destroy$ = new Subject<void>();\n  private _source: NbTreeGridDataSource<T>;\n  private platform: NbPlatform;\n\n  /**\n   * The table's data\n   * @param data\n   * @type {<T>[] | NbTreeGridDataSource}\n   */\n  @Input('nbTreeGrid') set source(data: T[] | NbTreeGridDataSource<T>) {\n    if (!data) {\n      return;\n    }\n\n    if (data instanceof NbTreeGridDataSource) {\n      this._source = data;\n    } else {\n      this._source = this.dataSourceBuilder.create(data);\n    }\n    this.dataSource = this._source;\n  }\n\n  @Input() levelPadding: string = '';\n\n  /**\n   * Make all columns equal width. False by default.\n   */\n  @Input()\n  set equalColumnsWidth(value: boolean) {\n    this.equalColumnsWidthValue = convertToBoolProperty(value);\n  }\n  get equalColumnsWidth(): boolean {\n    return this.equalColumnsWidthValue;\n  }\n  private equalColumnsWidthValue: boolean = false;\n  static ngAcceptInputType_equalColumnsWidth: NbBooleanInput;\n\n  @HostBinding('class.nb-tree-grid') readonly treeClass = true;\n\n  ngAfterViewInit() {\n    this.checkDefsCount();\n    const rowsChange$ = merge(\n      this._contentRowDefs.changes,\n      this._contentHeaderRowDefs.changes,\n      this._contentFooterRowDefs.changes,\n    );\n    rowsChange$.pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.checkDefsCount());\n\n    if (this.platform.isBrowser) {\n      this.updateVisibleColumns();\n\n      const windowResize$ = fromEvent(this.window, 'resize').pipe(debounceTime(50));\n      merge(rowsChange$, this._contentColumnDefs.changes, windowResize$)\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(() => this.updateVisibleColumns());\n    }\n  }\n\n  ngOnDestroy() {\n    super.ngOnDestroy();\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  toggleRow(row: NbTreeGridRowComponent, options?: NbToggleOptions): void {\n    const context = this.getRowContext(row);\n    this._source.toggle(context.$implicit.data, options);\n  }\n\n  toggleCellRow(cell: NbTreeGridCellDirective): void {\n    const context = this.getCellContext(cell);\n    this._source.toggle(context.$implicit.data);\n  }\n\n  getColumnWidth(): string {\n    if (this.equalColumnsWidth) {\n      return `${100 / this.getColumnsCount()}%`;\n    }\n    return '';\n  }\n\n  getCellLevel(cell: NbTreeGridCellDirective, columnName: string): number {\n    if (this.isFirstColumn(columnName)) {\n      return this.getCellContext(cell).$implicit.level;\n    }\n    return NB_DEFAULT_ROW_LEVEL;\n  }\n\n  private getRowContext(row: NbTreeGridRowComponent): NbRowContext<NbTreeGridPresentationNode<T>> {\n    return this.getContextByRowEl(row.elementRef.nativeElement);\n  }\n\n  private getCellContext(cell: NbTreeGridCellDirective): NbRowContext<NbTreeGridPresentationNode<T>> {\n    return this.getContextByCellEl(cell.elementRef.nativeElement);\n  }\n\n  private getContextByCellEl(cellEl: HTMLElement): NbRowContext<NbTreeGridPresentationNode<T>> {\n    return this.getContextByRowEl(cellEl.parentElement);\n  }\n\n  private getContextByRowEl(rowEl: HTMLElement): NbRowContext<NbTreeGridPresentationNode<T>> {\n    const rowsContainer: ViewContainerRef = this._rowOutlet.viewContainer;\n\n    for (let i = 0; i < rowsContainer.length; i++) {\n      const rowViewRef = rowsContainer.get(i) as EmbeddedViewRef<NbRowContext<NbTreeGridPresentationNode<T>>>;\n\n      if (rowViewRef.rootNodes.includes(rowEl)) {\n        return rowViewRef.context;\n      }\n    }\n\n    return undefined;\n  }\n\n  private getColumns(): string[] {\n    let rowDef: NbTreeGridHeaderRowDefDirective | NbTreeGridRowDefDirective<any>;\n\n    if (this._contentHeaderRowDefs.length) {\n      rowDef = this._contentHeaderRowDefs.first as NbTreeGridHeaderRowDefDirective;\n    } else {\n      rowDef = this._contentRowDefs.first as NbTreeGridRowDefDirective<any>;\n    }\n\n    return Array.from(rowDef.getVisibleColumns() || []);\n  }\n\n  private getColumnsCount(): number {\n    return this.getColumns().length;\n  }\n\n  private isFirstColumn(columnName: string): boolean {\n    return this.getColumns()[0] === columnName;\n  }\n\n  private checkDefsCount(): void {\n    if (this._contentRowDefs.length > 1) {\n      throw new Error(`Found multiple row definitions`);\n    }\n    if (this._contentHeaderRowDefs.length > 1) {\n      throw new Error(`Found multiple header row definitions`);\n    }\n    if (this._contentFooterRowDefs.length > 1) {\n      throw new Error(`Found multiple footer row definitions`);\n    }\n  }\n\n  private updateVisibleColumns(): void {\n    const width = this.window.innerWidth;\n    const columnDefs = (this._contentColumnDefs as QueryList<NbTreeGridColumnDefDirective>);\n\n    const columnsToHide: string[] = columnDefs\n      .filter((col: NbTreeGridColumnDefDirective) => col.shouldHide(width))\n      .map(col => col.name);\n\n    const columnsToShow: string[] = columnDefs\n      .filter((col: NbTreeGridColumnDefDirective) => col.shouldShow(width))\n      .map(col => col.name);\n\n    if (!columnsToHide.length && !columnsToShow.length) {\n      return;\n    }\n\n    const rowDefs = [\n      this._contentHeaderRowDefs.first as NbTreeGridHeaderRowDefDirective,\n      this._contentRowDefs.first as NbTreeGridRowDefDirective<any>,\n      this._contentFooterRowDefs.first as NbTreeGridFooterRowDefDirective,\n    ].filter(d => !!d);\n\n    for (const rowDef of rowDefs) {\n      for (const column of columnsToHide) {\n        rowDef.hideColumn(column);\n      }\n\n      for (const column of columnsToShow) {\n        rowDef.showColumn(column);\n      }\n    }\n  }\n}\n","import { Directive, Input, IterableDiffers, OnChanges, SimpleChanges, TemplateRef } from '@angular/core';\nimport {\n  NbCdkCellDef,\n  NbCdkFooterCellDef,\n  NbCdkFooterRowDef,\n  NbCdkHeaderCellDef,\n  NbCdkHeaderRowDef,\n  NbCdkRowDef,\n} from '../cdk/table/type-mappings';\nimport { NbCellDefDirective, NbFooterCellDefDirective, NbHeaderCellDefDirective } from '../cdk/table/cell';\nimport { NbFooterRowDefDirective, NbHeaderRowDefDirective, NbRowDefDirective } from '../cdk/table/row';\nimport { NbColumnsService } from './tree-grid-columns.service';\n\nexport interface NbTreeGridResponsiveRowDef {\n  hideColumn(column: string);\n  showColumn(column: string);\n}\n\n/**\n * Data row definition for the tree-grid.\n * Captures the header row's template and columns to display.\n */\n@Directive({\n    selector: '[nbTreeGridRowDef]',\n    providers: [{ provide: NbCdkRowDef, useExisting: NbTreeGridRowDefDirective }],\n    standalone: false\n})\nexport class NbTreeGridRowDefDirective<T> extends NbRowDefDirective<T>\n                                          implements OnChanges, NbTreeGridResponsiveRowDef {\n\n  /**\n   * Columns to be displayed on this row\n   */\n  @Input('nbTreeGridRowDefColumns') columns: Iterable<string>;\n\n  constructor(\n    template: TemplateRef<any>,\n    differs: IterableDiffers,\n    private columnsService: NbColumnsService,\n  ) {\n    super(template, differs);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    super.ngOnChanges(changes);\n\n    if (changes['columns']) {\n      this.updateColumns(this.columns);\n    }\n  }\n\n  updateColumns(columns: Iterable<string>) {\n    this.columnsService.setColumns(columns);\n  }\n\n  getVisibleColumns(): Iterable<string> {\n    return this.columnsService.getVisibleColumns();\n  }\n\n  /** @docs-private */\n  hideColumn(column: string): void {\n    this.columnsService.hideColumn(column);\n  }\n\n  /** @docs-private */\n  showColumn(column: string): void {\n    this.columnsService.showColumn(column);\n  }\n}\n\n@Directive({\n    selector: '[nbTreeGridHeaderRowDef]',\n    providers: [{ provide: NbCdkHeaderRowDef, useExisting: NbTreeGridHeaderRowDefDirective }],\n    standalone: false\n})\nexport class NbTreeGridHeaderRowDefDirective extends NbHeaderRowDefDirective\n                                             implements OnChanges, NbTreeGridResponsiveRowDef {\n  /**\n   * Columns to be displayed on this row\n   */\n  @Input('nbTreeGridHeaderRowDef') columns: Iterable<string>;\n\n  constructor(\n    template: TemplateRef<any>,\n    differs: IterableDiffers,\n    private columnsService: NbColumnsService,\n  ) {\n    super(template, differs);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    super.ngOnChanges(changes);\n\n    if (changes['columns']) {\n      this.updateColumns(this.columns);\n    }\n  }\n\n  updateColumns(columns: Iterable<string>) {\n    this.columnsService.setColumns(columns);\n  }\n\n  getVisibleColumns(): Iterable<string> {\n    return this.columnsService.getVisibleColumns();\n  }\n\n  /** @docs-private */\n  hideColumn(column: string): void {\n    this.columnsService.hideColumn(column);\n  }\n\n  /** @docs-private */\n  showColumn(column: string): void {\n    this.columnsService.showColumn(column);\n  }\n}\n\n@Directive({\n    selector: '[nbTreeGridFooterRowDef]',\n    providers: [{ provide: NbCdkFooterRowDef, useExisting: NbTreeGridFooterRowDefDirective }],\n    standalone: false\n})\nexport class NbTreeGridFooterRowDefDirective extends NbFooterRowDefDirective\n                                             implements OnChanges, NbTreeGridResponsiveRowDef {\n  /**\n   * Columns to be displayed on this row\n   */\n  @Input('nbTreeGridFooterRowDef') columns: Iterable<string>;\n\n  constructor(\n    template: TemplateRef<any>,\n    differs: IterableDiffers,\n    private columnsService: NbColumnsService,\n  ) {\n    super(template, differs);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    super.ngOnChanges(changes);\n\n    if (changes['columns']) {\n      this.updateColumns(this.columns);\n    }\n  }\n\n  updateColumns(columns: Iterable<string>) {\n    this.columnsService.setColumns(columns);\n  }\n\n  getVisibleColumns(): Iterable<string> {\n    return this.columnsService.getVisibleColumns();\n  }\n\n  /** @docs-private */\n  hideColumn(column: string): void {\n    this.columnsService.hideColumn(column);\n  }\n\n  /** @docs-private */\n  showColumn(column: string): void {\n    this.columnsService.showColumn(column);\n  }\n}\n\n/**\n * Cell definition for a nb-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\n@Directive({\n    selector: '[nbTreeGridCellDef]',\n    providers: [{ provide: NbCdkCellDef, useExisting: NbTreeGridCellDefDirective }],\n    standalone: false\n})\nexport class NbTreeGridCellDefDirective extends NbCellDefDirective {}\n\n/**\n * Header cell definition for the nb-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\n@Directive({\n    selector: '[nbTreeGridHeaderCellDef]',\n    providers: [{ provide: NbCdkHeaderCellDef, useExisting: NbTreeGridHeaderCellDefDirective }],\n    standalone: false\n})\nexport class NbTreeGridHeaderCellDefDirective extends NbHeaderCellDefDirective {}\n\n/**\n * Footer cell definition for the nb-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\n@Directive({\n    selector: '[nbTreeGridFooterCellDef]',\n    providers: [{ provide: NbCdkFooterCellDef, useExisting: NbTreeGridFooterCellDefDirective }],\n    standalone: false\n})\nexport class NbTreeGridFooterCellDefDirective extends NbFooterCellDefDirective {}\n","import { Component, ElementRef, HostListener, Inject, Input, OnDestroy } from '@angular/core';\nimport { Subject, timer } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { NbCdkFooterRow, NbCdkHeaderRow, NbCdkRow } from '../cdk/table/type-mappings';\nimport { NbFooterRowComponent, NbHeaderRowComponent, NbRowComponent } from '../cdk/table/row';\nimport { NbTreeGridComponent } from './tree-grid.component';\nimport { NB_TREE_GRID } from './tree-grid-injection-tokens';\n\nexport const NB_ROW_DOUBLE_CLICK_DELAY: number = 200;\n\n/**\n * Cells container. Adds the right class and role.\n */\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: 'tr[nbTreeGridRow]',\n    template: `<ng-container nbCellOutlet></ng-container>`,\n    // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n    host: {\n        class: 'nb-tree-grid-row',\n        role: 'row',\n    },\n    providers: [{ provide: NbCdkRow, useExisting: NbTreeGridRowComponent }],\n    standalone: false\n})\nexport class NbTreeGridRowComponent extends NbRowComponent implements OnDestroy {\n  private readonly doubleClick$ = new Subject<void>();\n  private readonly tree: NbTreeGridComponent<any>;\n\n  /**\n   * Time to wait for second click to expand row deeply.\n   * 200ms by default.\n   */\n  @Input() doubleClickDelay: number = NB_ROW_DOUBLE_CLICK_DELAY;\n\n  /**\n   * Toggle row on click. Enabled by default.\n   */\n  @Input() clickToToggle: boolean = true;\n\n  @HostListener('click')\n  toggleIfEnabledNode(): void {\n    if (!this.clickToToggle) {\n      return;\n    }\n\n    timer(NB_ROW_DOUBLE_CLICK_DELAY)\n      .pipe(take(1), takeUntil(this.doubleClick$))\n      .subscribe(() => this.tree.toggleRow(this));\n  }\n\n  @HostListener('dblclick')\n  toggleIfEnabledNodeDeep() {\n    if (!this.clickToToggle) {\n      return;\n    }\n\n    this.doubleClick$.next();\n    this.tree.toggleRow(this, { deep: true });\n  }\n\n  constructor(@Inject(NB_TREE_GRID) tree, public elementRef: ElementRef<HTMLElement>) {\n    super();\n    this.tree = tree as NbTreeGridComponent<any>;\n  }\n\n  ngOnDestroy() {\n    this.doubleClick$.complete();\n  }\n}\n\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: 'tr[nbTreeGridHeaderRow]',\n    template: ` <ng-container nbCellOutlet></ng-container>`,\n    // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n    host: {\n        class: 'nb-tree-grid-header-row',\n        role: 'row',\n    },\n    providers: [{ provide: NbCdkHeaderRow, useExisting: NbTreeGridHeaderRowComponent }],\n    standalone: false\n})\nexport class NbTreeGridHeaderRowComponent extends NbHeaderRowComponent {}\n\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: 'tr[nbTreeGridFooterRow]',\n    template: ` <ng-container nbCellOutlet></ng-container>`,\n    // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n    host: {\n        class: 'nb-tree-grid-footer-row',\n        role: 'row',\n    },\n    providers: [{ provide: NbCdkFooterRow, useExisting: NbTreeGridFooterRowComponent }],\n    standalone: false\n})\nexport class NbTreeGridFooterRowComponent extends NbFooterRowComponent {}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { NbCdkColumnDef } from '../cdk/table/type-mappings';\nimport { NB_SORT_HEADER_COLUMN_DEF, NbColumnDefDirective } from '../cdk/table/cell';\n\n/**\n * Column definition for the tree-grid.\n * Defines a set of cells available for a table column.\n */\n@Directive({\n    selector: '[nbTreeGridColumnDef]',\n    providers: [\n        { provide: NbCdkColumnDef, useExisting: NbTreeGridColumnDefDirective },\n        { provide: NB_SORT_HEADER_COLUMN_DEF, useExisting: NbTreeGridColumnDefDirective },\n    ],\n    standalone: false\n})\nexport class NbTreeGridColumnDefDirective extends NbColumnDefDirective implements OnChanges {\n  /**\n   * Column name\n   */\n  @Input('nbTreeGridColumnDef')\n  get name(): string {\n    return this._name;\n  }\n  set name(value: string) {\n    this._setNameInput(value);\n  }\n\n  private hideOnValue: number | null = null;\n  /**\n   * Amount of pixels of viewport at which column should be hidden.\n   * type number\n   */\n  @Input()\n  get hideOn(): number | null {\n    return this.hideOnValue;\n  }\n  set hideOn(value: number | null) {\n    this.hideOnValue = !value && value !== 0\n      ? null\n      : parseInt(value as unknown as string, 10);\n  }\n\n  private showOnValue: number | null = null;\n  /**\n   * Amount of pixels of viewport at which column should be shown.\n   * type number\n   */\n  @Input()\n  get showOn(): number | null {\n    return this.showOnValue;\n  }\n  set showOn(value: number | null) {\n    this.showOnValue = !value && value !== 0\n      ? null\n      : parseInt(value as unknown as string, 10);\n  }\n\n  ngOnChanges() {\n    if (this.hideOn != null && this.showOn != null) {\n      throw new Error(`hideOn and showOn are mutually exclusive and can't be used simultaneously.`);\n    }\n  }\n\n  shouldHide(width: number): boolean {\n    return !this.shouldShow(width);\n  }\n\n  shouldShow(width: number): boolean {\n    if (this.hideOn == null && this.showOn == null) {\n      return true;\n    }\n\n    if (this.hideOn != null) {\n      return width > this.hideOn;\n    }\n\n    return width >= this.showOn;\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectorRef,\n  Directive,\n  ElementRef,\n  HostBinding,\n  Inject,\n  OnInit,\n  OnDestroy,\n  PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { NbLayoutDirectionService } from '../../services/direction.service';\nimport { NB_WINDOW } from '../../theme.options';\nimport { NbCellDirective, NbFooterCellDirective, NbHeaderCellDirective } from '../cdk/table/cell';\nimport { NbCdkCell, NbCdkFooterCell, NbCdkHeaderCell } from '../cdk/table/type-mappings';\nimport { NB_TREE_GRID } from './tree-grid-injection-tokens';\nimport { NbTreeGridComponent } from './tree-grid.component';\nimport { NbTreeGridColumnDefDirective } from './tree-grid-column-def.directive';\nimport { NB_DEFAULT_ROW_LEVEL } from './data-source/tree-grid.model';\nimport { NbColumnsService } from './tree-grid-columns.service';\n\n@Directive({\n    selector: 'td[nbTreeGridCell]',\n    host: {\n        'class': 'nb-tree-grid-cell',\n        'role': 'gridcell',\n    },\n    providers: [{ provide: NbCdkCell, useExisting: NbTreeGridCellDirective }],\n    standalone: false\n})\nexport class NbTreeGridCellDirective extends NbCellDirective implements OnInit, OnDestroy {\n  private destroy$ = new Subject<void>();\n  private readonly tree: NbTreeGridComponent<any>;\n  private readonly columnDef: NbTreeGridColumnDefDirective;\n  private initialLeftPadding: string = '';\n  private initialRightPadding: string = '';\n  private latestWidth: string;\n  elementRef: ElementRef<HTMLElement>;\n\n  @HostBinding('style.width')\n  get columnWidth(): string {\n    this.latestWidth = this.tree.getColumnWidth();\n    if (this.latestWidth) {\n      return this.latestWidth;\n    }\n\n    return null;\n  }\n\n  @HostBinding('style.padding-left')\n  get leftPadding(): string | SafeStyle | null {\n    if (this.directionService.isLtr()) {\n      return this.getStartPadding();\n    }\n    return null;\n  }\n\n  @HostBinding('style.padding-right')\n  get rightPadding(): string | SafeStyle | null {\n    if (this.directionService.isRtl()) {\n      return this.getStartPadding();\n    }\n    return null;\n  }\n\n  constructor(\n    columnDef: NbTreeGridColumnDefDirective,\n    elementRef: ElementRef<HTMLElement>,\n    @Inject(NB_TREE_GRID) tree,\n    @Inject(PLATFORM_ID) private platformId,\n    @Inject(NB_WINDOW) private window,\n    private sanitizer: DomSanitizer,\n    private directionService: NbLayoutDirectionService,\n    private columnService: NbColumnsService,\n    private cd: ChangeDetectorRef,\n  ) {\n    super(columnDef, elementRef);\n    this.tree = tree as NbTreeGridComponent<any>;\n    this.columnDef = columnDef;\n    this.elementRef = elementRef;\n  }\n\n  ngOnInit() {\n    if (isPlatformBrowser(this.platformId)) {\n      const style = this.window.getComputedStyle(this.elementRef.nativeElement);\n      this.initialLeftPadding = style.paddingLeft;\n      this.initialRightPadding = style.paddingRight;\n    }\n\n    this.columnService.onColumnsChange()\n      .pipe(\n        filter(() => this.latestWidth !== this.tree.getColumnWidth()),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.cd.detectChanges());\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  toggleRow(): void {\n    this.tree.toggleCellRow(this);\n  }\n\n  private get initialStartPadding(): string {\n      return this.directionService.isLtr()\n      ? this.initialLeftPadding\n      : this.initialRightPadding;\n  }\n\n  private getStartPadding(): string | SafeStyle | null {\n    const rowLevel = this.tree.getCellLevel(this, this.columnDef.name);\n    if (rowLevel === NB_DEFAULT_ROW_LEVEL) {\n      return null;\n    }\n\n    const nestingLevel = rowLevel + 1;\n    let padding: string = '';\n    if (this.tree.levelPadding) {\n      padding = `calc(${this.tree.levelPadding} * ${nestingLevel})`;\n    } else if (this.initialStartPadding) {\n      padding = `calc(${this.initialStartPadding} * ${nestingLevel})`;\n    }\n\n    if (!padding) {\n      return null;\n    }\n\n    return this.sanitizer.bypassSecurityTrustStyle(padding);\n  }\n}\n\n@Directive({\n    selector: 'th[nbTreeGridHeaderCell]',\n    host: {\n        'class': 'nb-tree-grid-header-cell',\n        'role': 'columnheader',\n    },\n    providers: [{ provide: NbCdkHeaderCell, useExisting: NbTreeGridHeaderCellDirective }],\n    standalone: false\n})\nexport class NbTreeGridHeaderCellDirective extends NbHeaderCellDirective implements OnInit, OnDestroy {\n  private destroy$ = new Subject<void>();\n  private latestWidth: string;\n  private readonly tree: NbTreeGridComponent<any>;\n\n  @HostBinding('style.width')\n  get columnWidth(): string {\n    this.latestWidth = this.tree.getColumnWidth();\n    return this.latestWidth || null;\n  }\n\n  constructor(\n    columnDef: NbTreeGridColumnDefDirective,\n    elementRef: ElementRef<HTMLElement>,\n    @Inject(NB_TREE_GRID) tree,\n    private columnService: NbColumnsService,\n    private cd: ChangeDetectorRef,\n  ) {\n    super(columnDef, elementRef);\n    this.tree = tree as NbTreeGridComponent<any>;\n  }\n\n  ngOnInit() {\n    this.columnService.onColumnsChange()\n      .pipe(\n        filter(() => this.latestWidth !== this.tree.getColumnWidth()),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.cd.detectChanges());\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n\n@Directive({\n    selector: 'td[nbTreeGridFooterCell]',\n    host: {\n        'class': 'nb-tree-grid-footer-cell',\n        'role': 'gridcell',\n    },\n    providers: [{ provide: NbCdkFooterCell, useExisting: NbTreeGridFooterCellDirective }],\n    standalone: false\n})\nexport class NbTreeGridFooterCellDirective extends NbFooterCellDirective implements OnInit, OnDestroy {\n  private destroy$ = new Subject<void>();\n  private latestWidth: string;\n  private readonly tree: NbTreeGridComponent<any>;\n\n  @HostBinding('style.width')\n  get columnWidth(): string {\n    this.latestWidth = this.tree.getColumnWidth();\n    return this.latestWidth || null;\n  }\n\n  constructor(\n    columnDef: NbTreeGridColumnDefDirective,\n    elementRef: ElementRef,\n    @Inject(NB_TREE_GRID) tree,\n    private columnService: NbColumnsService,\n    private cd: ChangeDetectorRef,\n  ) {\n    super(columnDef, elementRef);\n    this.tree = tree as NbTreeGridComponent<any>;\n  }\n\n  ngOnInit() {\n    this.columnService.onColumnsChange()\n      .pipe(\n        filter(() => this.latestWidth !== this.tree.getColumnWidth()),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.cd.detectChanges());\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Directive, HostListener, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\n\nimport { NbFilterable } from './data-source/tree-grid-data-source';\n\n@Directive({\n    selector: '[nbFilter]',\n    standalone: false\n})\nexport class NbFilterDirective {\n  @Input('nbFilter') filterable: NbFilterable;\n\n  filter(filterRequest: string) {\n    this.filterable.filter(filterRequest);\n  }\n}\n\n/**\n * Helper directive to trigger data source's filter method when user types in input\n */\n@Directive({\n    selector: '[nbFilterInput]',\n    providers: [{ provide: NbFilterDirective, useExisting: NbFilterInputDirective }],\n    standalone: false\n})\nexport class NbFilterInputDirective extends NbFilterDirective implements OnInit, OnDestroy {\n  private search$: Subject<string> = new Subject<string>();\n  private destroy$ = new Subject<void>();\n\n  @Input('nbFilterInput') filterable: NbFilterable;\n\n  /**\n   * Debounce time before triggering filter method. Set in milliseconds.\n   * Default 200.\n   */\n  @Input() debounceTime: number = 200;\n\n  ngOnInit() {\n    this.search$\n      .pipe(\n        debounceTime(this.debounceTime),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((query: string) => {\n        super.filter(query)\n      });\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n    this.search$.complete();\n  }\n\n  @HostListener('input', ['$event'])\n  filter(event) {\n    this.search$.next(event.target.value);\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Directive, HostListener } from '@angular/core';\nimport { NbTreeGridCellDirective } from './tree-grid-cell.component';\n\n/**\n * When using custom row toggle, apply this directive on your toggle to toggle row on element click.\n */\n@Directive({\n    selector: '[nbTreeGridRowToggle]',\n    standalone: false\n})\nexport class NbTreeGridRowToggleDirective {\n  @HostListener('click', ['$event'])\n  toggleRow($event) {\n    this.cell.toggleRow();\n    $event.stopPropagation();\n  }\n\n  constructor(private cell: NbTreeGridCellDirective) {}\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, HostListener, Input } from '@angular/core';\nimport { NbTreeGridCellDirective } from './tree-grid-cell.component';\n\n/**\n * NbTreeGridRowToggleComponent\n */\n@Component({\n    selector: 'nb-tree-grid-row-toggle',\n    template: `\n    <button class=\"row-toggle-button\" [attr.aria-label]=\"expanded ? 'collapse' : 'expand'\">\n      <nb-icon [icon]=\"expanded ? 'chevron-down-outline' : 'chevron-right-outline'\"\n               pack=\"nebular-essentials\"\n               aria-hidden=\"true\">\n      </nb-icon>\n    </button>\n  `,\n    styles: [`\n    button {\n      background: transparent;\n      border: none;\n      padding: 0;\n    }\n  `],\n    standalone: false\n})\nexport class NbTreeGridRowToggleComponent {\n  private expandedValue: boolean;\n  @Input()\n  set expanded(value: boolean) {\n    this.expandedValue = value;\n  }\n  get expanded(): boolean {\n    return this.expandedValue;\n  }\n\n  @HostListener('click', ['$event'])\n  toggleRow($event) {\n    this.cell.toggleRow();\n    $event.stopPropagation();\n  }\n\n  constructor(private cell: NbTreeGridCellDirective) {}\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { NbTableModule } from '../cdk/table/table.module';\nimport { NbIconModule } from '../icon/icon.module';\nimport { NbTreeGridComponent } from './tree-grid.component';\nimport {\n  NbTreeGridCellDefDirective,\n  NbTreeGridFooterCellDefDirective,\n  NbTreeGridFooterRowDefDirective,\n  NbTreeGridHeaderCellDefDirective,\n  NbTreeGridHeaderRowDefDirective,\n  NbTreeGridRowDefDirective,\n} from './tree-grid-def.component';\nimport {\n  NbTreeGridFooterRowComponent,\n  NbTreeGridHeaderRowComponent,\n  NbTreeGridRowComponent,\n} from './tree-grid-row.component';\nimport {\n  NbTreeGridCellDirective,\n  NbTreeGridFooterCellDirective,\n  NbTreeGridHeaderCellDirective,\n} from './tree-grid-cell.component';\nimport {\n  NbSortDirective,\n  NbSortHeaderComponent,\n  NbSortHeaderIconDirective,\n  NbSortIconComponent,\n} from './tree-grid-sort.component';\nimport { NbTreeGridDataSourceBuilder } from './data-source/tree-grid-data-source';\nimport { NbTreeGridSortService } from './data-source/tree-grid-sort.service';\nimport { NbTreeGridFilterService } from './data-source/tree-grid-filter.service';\nimport { NbTreeGridService } from './data-source/tree-grid.service';\nimport { NbTreeGridDataService } from './data-source/tree-grid-data.service';\nimport { NbFilterDirective, NbFilterInputDirective } from './tree-grid-filter';\nimport { NbTreeGridRowToggleDirective } from './tree-grid-row-toggle.directive';\nimport { NbTreeGridColumnDefDirective } from './tree-grid-column-def.directive';\nimport { NbTreeGridRowToggleComponent } from './tree-grid-row-toggle.component';\n\nconst COMPONENTS = [\n  // Tree Grid\n  NbTreeGridComponent,\n\n  NbTreeGridRowDefDirective,\n  NbTreeGridRowComponent,\n  NbTreeGridCellDefDirective,\n  NbTreeGridCellDirective,\n\n  NbTreeGridHeaderRowDefDirective,\n  NbTreeGridHeaderRowComponent,\n  NbTreeGridHeaderCellDefDirective,\n  NbTreeGridHeaderCellDirective,\n\n  NbTreeGridFooterRowDefDirective,\n  NbTreeGridFooterRowComponent,\n  NbTreeGridFooterCellDefDirective,\n  NbTreeGridFooterCellDirective,\n\n  NbTreeGridColumnDefDirective,\n\n  // Sort directives\n  NbSortDirective,\n  NbSortHeaderComponent,\n  NbSortIconComponent,\n\n  // Filter directives\n  NbFilterDirective,\n  NbFilterInputDirective,\n\n  NbTreeGridRowToggleDirective,\n  NbTreeGridRowToggleComponent,\n  NbSortHeaderIconDirective,\n];\n\n@NgModule({\n  imports: [ CommonModule, NbTableModule, NbIconModule ],\n  declarations: [ ...COMPONENTS ],\n  exports: [ NbTableModule, ...COMPONENTS ],\n  providers: [\n    NbTreeGridSortService,\n    NbTreeGridFilterService,\n    NbTreeGridService,\n    NbTreeGridDataService,\n    NbTreeGridDataSourceBuilder,\n  ],\n})\nexport class NbTreeGridModule {}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  Input,\n  HostBinding,\n  forwardRef,\n  ChangeDetectorRef,\n  OnInit,\n  Output,\n  EventEmitter,\n  OnDestroy,\n  ChangeDetectionStrategy,\n  Renderer2,\n  ElementRef,\n  AfterViewInit,\n  NgZone,\n} from '@angular/core';\nimport { trigger, state, style, animate, transition } from '@angular/animations';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbLayoutDirectionService } from '../../services/direction.service';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\n\n/**\n * Toggle is a control representing `on` and `off` states.\n *\n * @stacked-example(Showcase, toggle/toggle-showcase.component)\n *\n * ### Installation\n *\n * Import `NbToggleComponent` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbToggleModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Toggle may have one of the following statuses: `basic`, `primary`, `success`, `warning`, `danger`, `info`, `control`\n *\n * @stacked-example(Toggle status, toggle/toggle-status.component)\n *\n * Toggle can be disabled via `disabled` input.\n *\n * @stacked-example(Disabled Toggles, toggle/toggle-disabled.component)\n *\n * Toggle may have a label with following positions: `left`, `right`, `start`, `end` (default)\n *\n * @stacked-example(Toggles With Labels, toggle/toggle-label-position.component.ts)\n *\n * You can set control state via `checked` binding:\n *\n * ```html\n * <nb-toggle [(checked)]=\"checked\"></nb-toggle>\n * ```\n *\n * Or it could be set via reactive forms or ngModel bindings:\n *\n * @stacked-example(Toggle form binding, toggle/toggle-form.component)\n *\n * @styles\n *\n * toggle-height:\n * toggle-width:\n * toggle-border-width:\n * toggle-border-radius:\n * toggle-outline-width:\n * toggle-outline-color:\n * toggle-switcher-size:\n * toggle-switcher-icon-size:\n * toggle-text-font-family:\n * toggle-text-font-size:\n * toggle-text-font-weight:\n * toggle-text-line-height:\n * toggle-cursor:\n * toggle-disabled-cursor:\n * toggle-basic-text-color:\n * toggle-basic-background-color:\n * toggle-basic-border-color:\n * toggle-basic-checked-background-color:\n * toggle-basic-checked-border-color:\n * toggle-basic-checked-switcher-background-color:\n * toggle-basic-checked-switcher-checkmark-color:\n * toggle-basic-focus-background-color:\n * toggle-basic-focus-border-color:\n * toggle-basic-focus-checked-background-color:\n * toggle-basic-focus-checked-border-color:\n * toggle-basic-hover-background-color:\n * toggle-basic-hover-border-color:\n * toggle-basic-hover-checked-background-color:\n * toggle-basic-hover-checked-border-color:\n * toggle-basic-active-background-color:\n * toggle-basic-active-border-color:\n * toggle-basic-active-checked-background-color:\n * toggle-basic-active-checked-border-color:\n * toggle-basic-disabled-background-color:\n * toggle-basic-disabled-border-color:\n * toggle-basic-disabled-switcher-background-color:\n * toggle-basic-disabled-checked-switcher-checkmark-color:\n * toggle-basic-disabled-text-color:\n * toggle-primary-text-color:\n * toggle-primary-background-color:\n * toggle-primary-border-color:\n * toggle-primary-checked-background-color:\n * toggle-primary-checked-border-color:\n * toggle-primary-checked-switcher-background-color:\n * toggle-primary-checked-switcher-checkmark-color:\n * toggle-primary-focus-background-color:\n * toggle-primary-focus-border-color:\n * toggle-primary-focus-checked-background-color:\n * toggle-primary-focus-checked-border-color:\n * toggle-primary-hover-background-color:\n * toggle-primary-hover-border-color:\n * toggle-primary-hover-checked-background-color:\n * toggle-primary-hover-checked-border-color:\n * toggle-primary-active-background-color:\n * toggle-primary-active-border-color:\n * toggle-primary-active-checked-background-color:\n * toggle-primary-active-checked-border-color:\n * toggle-primary-disabled-background-color:\n * toggle-primary-disabled-border-color:\n * toggle-primary-disabled-switcher-background-color:\n * toggle-primary-disabled-checked-switcher-checkmark-color:\n * toggle-primary-disabled-text-color:\n * toggle-success-text-color:\n * toggle-success-background-color:\n * toggle-success-border-color:\n * toggle-success-checked-background-color:\n * toggle-success-checked-border-color:\n * toggle-success-checked-switcher-background-color:\n * toggle-success-checked-switcher-checkmark-color:\n * toggle-success-focus-background-color:\n * toggle-success-focus-border-color:\n * toggle-success-focus-checked-background-color:\n * toggle-success-focus-checked-border-color:\n * toggle-success-hover-background-color:\n * toggle-success-hover-border-color:\n * toggle-success-hover-checked-background-color:\n * toggle-success-hover-checked-border-color:\n * toggle-success-active-background-color:\n * toggle-success-active-border-color:\n * toggle-success-active-checked-background-color:\n * toggle-success-active-checked-border-color:\n * toggle-success-disabled-background-color:\n * toggle-success-disabled-border-color:\n * toggle-success-disabled-switcher-background-color:\n * toggle-success-disabled-checked-switcher-checkmark-color:\n * toggle-success-disabled-text-color:\n * toggle-info-text-color:\n * toggle-info-background-color:\n * toggle-info-border-color:\n * toggle-info-checked-background-color:\n * toggle-info-checked-border-color:\n * toggle-info-checked-switcher-background-color:\n * toggle-info-checked-switcher-checkmark-color:\n * toggle-info-focus-background-color:\n * toggle-info-focus-border-color:\n * toggle-info-focus-checked-background-color:\n * toggle-info-focus-checked-border-color:\n * toggle-info-hover-background-color:\n * toggle-info-hover-border-color:\n * toggle-info-hover-checked-background-color:\n * toggle-info-hover-checked-border-color:\n * toggle-info-active-background-color:\n * toggle-info-active-border-color:\n * toggle-info-active-checked-background-color:\n * toggle-info-active-checked-border-color:\n * toggle-info-disabled-background-color:\n * toggle-info-disabled-border-color:\n * toggle-info-disabled-switcher-background-color:\n * toggle-info-disabled-checked-switcher-checkmark-color:\n * toggle-info-disabled-text-color:\n * toggle-warning-text-color:\n * toggle-warning-background-color:\n * toggle-warning-border-color:\n * toggle-warning-checked-background-color:\n * toggle-warning-checked-border-color:\n * toggle-warning-checked-switcher-background-color:\n * toggle-warning-checked-switcher-checkmark-color:\n * toggle-warning-focus-background-color:\n * toggle-warning-focus-border-color:\n * toggle-warning-focus-checked-background-color:\n * toggle-warning-focus-checked-border-color:\n * toggle-warning-hover-background-color:\n * toggle-warning-hover-border-color:\n * toggle-warning-hover-checked-background-color:\n * toggle-warning-hover-checked-border-color:\n * toggle-warning-active-background-color:\n * toggle-warning-active-border-color:\n * toggle-warning-active-checked-background-color:\n * toggle-warning-active-checked-border-color:\n * toggle-warning-disabled-background-color:\n * toggle-warning-disabled-border-color:\n * toggle-warning-disabled-switcher-background-color:\n * toggle-warning-disabled-checked-switcher-checkmark-color:\n * toggle-warning-disabled-text-color:\n * toggle-danger-text-color:\n * toggle-danger-background-color:\n * toggle-danger-border-color:\n * toggle-danger-checked-background-color:\n * toggle-danger-checked-border-color:\n * toggle-danger-checked-switcher-background-color:\n * toggle-danger-checked-switcher-checkmark-color:\n * toggle-danger-focus-background-color:\n * toggle-danger-focus-border-color:\n * toggle-danger-focus-checked-background-color:\n * toggle-danger-focus-checked-border-color:\n * toggle-danger-hover-background-color:\n * toggle-danger-hover-border-color:\n * toggle-danger-hover-checked-background-color:\n * toggle-danger-hover-checked-border-color:\n * toggle-danger-active-background-color:\n * toggle-danger-active-border-color:\n * toggle-danger-active-checked-background-color:\n * toggle-danger-active-checked-border-color:\n * toggle-danger-disabled-background-color:\n * toggle-danger-disabled-border-color:\n * toggle-danger-disabled-switcher-background-color:\n * toggle-danger-disabled-checked-switcher-checkmark-color:\n * toggle-danger-disabled-text-color:\n * toggle-control-text-color:\n * toggle-control-background-color:\n * toggle-control-border-color:\n * toggle-control-checked-background-color:\n * toggle-control-checked-border-color:\n * toggle-control-checked-switcher-background-color:\n * toggle-control-checked-switcher-checkmark-color:\n * toggle-control-focus-background-color:\n * toggle-control-focus-border-color:\n * toggle-control-focus-checked-background-color:\n * toggle-control-focus-checked-border-color:\n * toggle-control-hover-background-color:\n * toggle-control-hover-border-color:\n * toggle-control-hover-checked-background-color:\n * toggle-control-hover-checked-border-color:\n * toggle-control-active-background-color:\n * toggle-control-active-border-color:\n * toggle-control-active-checked-background-color:\n * toggle-control-active-checked-border-color:\n * toggle-control-disabled-background-color:\n * toggle-control-disabled-border-color:\n * toggle-control-disabled-switcher-background-color:\n * toggle-control-disabled-checked-switcher-checkmark-color:\n * toggle-control-disabled-text-color:\n */\n@Component({\n    selector: 'nb-toggle',\n    animations: [\n        trigger('position', [\n            state('right', style({ right: 0, left: '*' })),\n            state('left', style({ left: 0, right: '*' })),\n            transition(':enter', [animate(0)]),\n            transition('right <=> left', [animate('0.15s')]),\n        ]),\n    ],\n    template: `\n    <label class=\"toggle-label\">\n      <input type=\"checkbox\"\n             class=\"native-input visually-hidden\"\n             role=\"switch\"\n             [attr.aria-checked]=\"checked\"\n             [disabled]=\"disabled\"\n             [checked]=\"checked\"\n             (change)=\"updateValue($event)\"\n             (blur)=\"onTouched()\"\n             (click)=\"onInputClick($event)\">\n      <div class=\"toggle\" [class.checked]=\"checked\">\n        <span [@position]=\"checkState()\" class=\"toggle-switcher\">\n          <nb-icon *ngIf=\"checked\" icon=\"checkmark-bold-outline\" pack=\"nebular-essentials\"></nb-icon>\n        </span>\n      </div>\n      <span class=\"text\">\n        <ng-content></ng-content>\n      </span>\n    </label>\n  `,\n    styleUrls: [`./toggle.component.scss`],\n    providers: [{\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => NbToggleComponent),\n            multi: true,\n        }],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbToggleComponent implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n  onChange: any = () => { };\n  onTouched: any = () => { };\n\n  private destroy$ = new Subject<void>();\n\n  /**\n   * Toggle checked\n   * @type {boolean}\n   */\n  @Input()\n  get checked(): boolean {\n    return this._checked;\n  }\n  set checked(value: boolean) {\n    this._checked = convertToBoolProperty(value);\n  }\n  private _checked: boolean = false;\n  static ngAcceptInputType_checked: NbBooleanInput;\n\n  /**\n   * Controls input disabled state\n   */\n  @Input()\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = convertToBoolProperty(value);\n  }\n  private _disabled: boolean = false;\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  /**\n   * Toggle status.\n   * Possible values are: `basic`, `primary`, `success`, `warning`, `danger`, `info`, `control`.\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Toggle label position.\n   * Possible values are: `left`, `right`, `start`, `end` (default)\n   */\n  @Input() labelPosition: 'left' | 'right' | 'start' | 'end' = 'end';\n\n  /**\n   * Output when checked state is changed by a user\n   * @type EventEmitter<boolean>\n   */\n  @Output() checkedChange = new EventEmitter<boolean>();\n\n  @HostBinding('class.status-primary')\n  get primary() {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-success')\n  get success() {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning() {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger() {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-info')\n  get info() {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic() {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control() {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  @HostBinding('class.toggle-label-left')\n  get labelLeft() {\n    return this.labelPosition === 'left';\n  }\n\n  @HostBinding('class.toggle-label-right')\n  get labelRight() {\n    return this.labelPosition === 'right';\n  }\n\n  @HostBinding('class.toggle-label-start')\n  get labelStart() {\n    return this.labelPosition === 'start';\n  }\n\n  @HostBinding('class.toggle-label-end')\n  get labelEnd() {\n    return this.labelPosition === 'end';\n  }\n\n  constructor(\n    private changeDetector: ChangeDetectorRef,\n    private layoutDirection: NbLayoutDirectionService,\n    private renderer: Renderer2,\n    private hostElement: ElementRef<HTMLElement>,\n    private zone: NgZone,\n    protected statusService: NbStatusService,\n  ) {}\n\n  ngOnInit(): void {\n    this.layoutDirection.onDirectionChange()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.changeDetector.detectChanges());\n  }\n\n  ngAfterViewInit() {\n    // TODO: #2254\n    this.zone.runOutsideAngular(() => setTimeout(() => {\n      this.renderer.addClass(this.hostElement.nativeElement, 'nb-transition');\n    }));\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  checkState(): string {\n    if (this.checked) {\n      return this.layoutDirection.isLtr() ? 'right' : 'left';\n    }\n\n    return this.layoutDirection.isLtr() ? 'left' : 'right';\n  }\n\n  registerOnChange(fn: any) {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any) {\n    this.onTouched = fn;\n  }\n\n  writeValue(val: any) {\n    this.checked = val;\n    this.changeDetector.markForCheck();\n  }\n\n  setDisabledState(val: boolean) {\n    this.disabled = convertToBoolProperty(val);\n    this.changeDetector.markForCheck();\n  }\n\n  updateValue(event: Event): void {\n    const input = (event.target as HTMLInputElement);\n    this.checked = input.checked;\n    this.checkedChange.emit(this.checked);\n    this.onChange(this.checked);\n  }\n\n  onInputClick(event: Event) {\n    event.stopPropagation();\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NbIconModule } from '../icon/icon.module';\n\nimport { NbToggleComponent } from './toggle.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    NbIconModule,\n  ],\n  declarations: [NbToggleComponent],\n  exports: [NbToggleComponent],\n})\nexport class NbToggleModule { }\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nexport * from './theme.options';\nexport * from './theme.module';\nexport * from './services/theme.service';\nexport * from './services/spinner.service';\nexport * from './services/breakpoints.service';\nexport * from './services/color.helper';\nexport * from './services/direction.service';\nexport * from './services/scroll.service';\nexport * from './services/ruler.service';\nexport * from './services/status.service';\nexport * from './services/js-themes-registry.service';\nexport * from './services/js-themes/corporate.theme';\nexport * from './services/js-themes/cosmic.theme';\nexport * from './services/js-themes/default.theme';\nexport * from './services/js-themes/dark.theme';\nexport * from './services/js-themes/theme.options';\nexport * from './components/component-size';\nexport * from './components/component-shape';\nexport * from './components/component-status';\nexport * from './components/card/card.module';\nexport * from './components/card/card.component';\nexport * from './components/card/flip-card/flip-card.component';\nexport * from './components/card/reveal-card/reveal-card.component';\nexport * from './components/card/shared/shared.component';\nexport * from './components/calendar/calendar.module';\nexport * from './components/calendar/calendar.component';\nexport * from './components/calendar/calendar-range.module';\nexport * from './components/calendar/calendar-range.component';\n/* eslint-disable max-len */\nexport { NbCalendarDayCellComponent } from './components/calendar-kit/components/calendar-day-picker/calendar-day-cell.component';\nexport { NbDateTimePickerComponent } from './components/datepicker/date-timepicker.component';\nexport { NbCalendarYearPickerComponent } from './components/calendar-kit/components/calendar-year-picker/calendar-year-picker.component';\nexport {\n  NbCalendarMonthPickerComponent,\n  MONTHS_IN_VIEW,\n  MONTHS_IN_COLUMN,\n} from './components/calendar-kit/components/calendar-month-picker/calendar-month-picker.component';\nexport { NbCalendarDayPickerComponent } from './components/calendar-kit/components/calendar-day-picker/calendar-day-picker.component';\nexport { NbCalendarViewModeComponent } from './components/calendar-kit/components/calendar-navigation/calendar-view-mode.component';\nexport { NbCalendarPageableNavigationComponent } from './components/calendar-kit/components/calendar-navigation/calendar-pageable-navigation.component';\nexport { NbCalendarDaysNamesComponent } from './components/calendar-kit/components/calendar-days-names/calendar-days-names.component';\nexport { NbCalendarWeekNumberComponent } from './components/calendar-kit/components/calendar-week-number/calendar-week-number.component';\nexport { NbCalendarMonthCellComponent } from './components/calendar-kit/components/calendar-month-picker/calendar-month-cell.component';\nexport { NbCalendarYearCellComponent } from './components/calendar-kit/components/calendar-year-picker/calendar-year-cell.component';\nexport { NbCalendarPickerRowComponent } from './components/calendar-kit/components/calendar-picker/calendar-picker-row.component';\nexport { NbCalendarPickerComponent } from './components/calendar-kit/components/calendar-picker/calendar-picker.component';\nexport { NbCalendarActionsComponent } from './components/calendar-kit/components/calendar-actions/calendar-actions.component';\n/* eslint-enable max-len */\nexport * from './components/calendar/base-calendar.component';\nexport * from './components/calendar/base-calendar.module';\nexport * from './components/calendar/base-calendar-range-cell';\nexport * from './components/calendar/calendar-range-day-cell.component';\nexport * from './components/calendar/calendar-range-month-cell.component';\nexport * from './components/calendar/calendar-range-year-cell.component';\nexport { NbCalendarMonthModelService } from './components/calendar-kit/services/calendar-month-model.service';\nexport * from './components/calendar-kit/services/calendar-year-model.service';\nexport * from './components/calendar-kit/services/calendar-time-model.service';\nexport { NbNativeDateService } from './components/calendar-kit/services/native-date.service';\nexport { NbDateService, NbDayPeriod } from './components/calendar-kit/services/date.service';\nexport * from './components/calendar-kit/model';\nexport * from './components/calendar-kit/calendar-kit.module';\nexport * from './components/layout/layout.module';\nexport * from './components/layout/layout.component';\nexport * from './components/layout/layout-direction.directive';\nexport * from './components/layout/restore-scroll-top.service';\nexport * from './components/menu/menu.module';\nexport { NbMenuService, NbMenuItem, NbMenuBag } from './components/menu/menu.service';\nexport * from './components/menu/menu.component';\nexport * from './components/route-tabset/route-tabset.module';\nexport * from './components/route-tabset/route-tabset.component';\nexport * from './components/sidebar/sidebar.module';\nexport { NbSidebarService } from './components/sidebar/sidebar.service';\nexport * from './components/sidebar/sidebar.component';\nexport * from './components/tabset/tabset.module';\nexport * from './components/datepicker/date-timepicker.component';\nexport * from './components/datepicker/calendar-with-time.component';\nexport * from './components/tabset/tabset.component';\nexport * from './components/tabset/tab-content.directive';\nexport * from './components/tabset/tab-title.directive';\nexport * from './components/user/user.module';\nexport * from './components/user/user.component';\nexport * from './components/actions/actions.module';\nexport * from './components/actions/actions.component';\nexport * from './components/search/search.module';\nexport * from './components/search/search.service';\nexport * from './components/search/search.component';\nexport * from './components/checkbox/checkbox.component';\nexport * from './components/checkbox/checkbox.module';\nexport * from './components/badge/badge.component';\nexport * from './components/badge/badge.module';\nexport * from './components/popover/popover.directive';\nexport * from './components/popover/popover.module';\nexport * from './components/popover/popover.component';\nexport * from './components/context-menu/context-menu.directive';\nexport * from './components/context-menu/context-menu.component';\nexport * from './components/context-menu/context-menu.module';\nexport * from './components/progress-bar/progress-bar.component';\nexport * from './components/progress-bar/progress-bar.module';\nexport * from './components/alert/alert.component';\nexport * from './components/alert/alert.module';\nexport * from './components/chat/chat.component';\nexport * from './components/chat/chat-message.component';\nexport * from './components/chat/chat-message-map.component';\nexport * from './components/chat/chat-message-file.component';\nexport * from './components/chat/chat-message-quote.component';\nexport * from './components/chat/chat-message-text.component';\nexport * from './components/chat/chat-form.component';\nexport * from './components/chat/chat.module';\nexport * from './components/chat/chat.options';\nexport * from './components/chat/chat-avatar.component';\nexport * from './components/chat/chat-custom-message.directive';\nexport * from './components/chat/chat-custom-message.service';\nexport * from './components/chat/chat-title.directive';\nexport * from './components/spinner/spinner.component';\nexport * from './components/spinner/spinner.directive';\nexport * from './components/spinner/spinner.module';\nexport * from './components/stepper/stepper-tokens';\nexport * from './components/stepper/stepper.component';\nexport * from './components/stepper/step.component';\nexport * from './components/stepper/stepper-button.directive';\nexport * from './components/stepper/stepper.module';\nexport * from './components/accordion/accordion.component';\nexport * from './components/accordion/accordion-item.component';\nexport * from './components/accordion/accordion-item-body.component';\nexport * from './components/accordion/accordion-item-header.component';\nexport * from './components/accordion/accordion.module';\nexport * from './components/button/base-button';\nexport * from './components/button/button.component';\nexport * from './components/button/button.module';\nexport * from './components/button-group/button-group.component';\nexport * from './components/button-group/button-group.module';\nexport * from './components/button-group/button-toggle.directive';\nexport * from './components/button-group/button-group-injection-tokens';\nexport * from './components/list/list.component';\nexport * from './components/list/list.module';\nexport * from './components/list/list-page-tracker.directive';\nexport * from './components/list/infinite-list.directive';\nexport * from './components/input/input.directive';\nexport * from './components/input/input.module';\nexport * from './components/cdk/overlay/overlay.module';\nexport * from './components/cdk/overlay/overlay-service';\nexport * from './components/cdk/overlay/overlay-position';\nexport * from './components/cdk/overlay/overlay-container';\nexport * from './components/cdk/overlay/overlay-trigger';\nexport * from './components/cdk/overlay/mapping';\nexport * from './components/cdk/overlay/position-helper';\nexport * from './components/cdk/overlay/dynamic/dynamic-overlay';\nexport * from './components/cdk/overlay/dynamic/dynamic-overlay-handler';\nexport * from './components/cdk/platform/platform-service';\nexport * from './components/cdk/a11y/a11y.module';\nexport * from './components/cdk/a11y/focus-trap';\nexport * from './components/cdk/a11y/focus-key-manager';\nexport * from './components/cdk/adapter/adapter.module';\nexport * from './components/cdk/adapter/block-scroll-strategy-adapter';\nexport * from './components/cdk/adapter/overlay-container-adapter';\nexport * from './components/cdk/adapter/scroll-dispatcher-adapter';\nexport * from './components/cdk/adapter/viewport-ruler-adapter';\nexport * from './components/cdk/bidi/bidi-service';\nexport * from './components/cdk/bidi/bidi.module';\nexport * from './components/cdk/table/cell';\nexport * from './components/cdk/table/data-source';\nexport * from './components/cdk/table/row';\nexport * from './components/cdk/table/table.module';\nexport * from './components/dialog/dialog-config';\nexport * from './components/dialog/dialog-ref';\nexport * from './components/dialog/dialog.service';\nexport * from './components/dialog/dialog.module';\nexport * from './components/toastr/toastr.module';\nexport * from './components/toastr/toastr.service';\nexport * from './components/toastr/model';\nexport * from './components/toastr/toast.component';\nexport * from './components/toastr/toastr-config';\nexport * from './components/toastr/toastr-container.component';\nexport * from './components/tooltip/tooltip.module';\nexport * from './components/tooltip/tooltip.directive';\nexport * from './components/tooltip/tooltip.component';\nexport * from './components/select/select.module';\nexport * from './components/select-with-autocomplete/select-with-autocomplete.module';\nexport * from './components/select/select.component';\nexport * from './components/select-with-autocomplete/select-with-autocomplete.component';\nexport * from './components/option/option-list.module';\nexport * from './components/option/option.component';\nexport * from './components/option/option-group.component';\nexport * from './components/option/option-list.component';\nexport * from './components/select/select-injection-tokens';\nexport * from './components/autocomplete/autocomplete.module';\nexport * from './components/autocomplete/autocomplete.component';\nexport * from './components/autocomplete/autocomplete.directive';\nexport * from './components/window/window.module';\nexport * from './components/window/window.service';\nexport * from './components/window/window-ref';\nexport * from './components/window/window.options';\nexport * from './components/window/window.component';\nexport * from './components/window/windows-container.component';\nexport * from './components/timepicker/timepicker.module';\nexport * from './components/timepicker/model';\nexport * from './components/timepicker/timepicker.component';\nexport * from './components/timepicker/timepicker.directive';\nexport * from './components/timepicker/timepicker-cell.component';\nexport * from './components/datepicker/datepicker.module';\nexport * from './components/datepicker/datepicker.directive';\nexport * from './components/datepicker/datepicker-adapter';\nexport * from './components/datepicker/datepicker-container.component';\nexport * from './components/datepicker/datepicker.component';\nexport * from './components/dialog/dialog-container';\nexport * from './components/radio/radio.module';\nexport * from './components/radio/radio-group.component';\nexport * from './components/radio/radio.component';\nexport * from './components/tag/tag.module';\nexport * from './components/tag/tag.component';\nexport * from './components/tag/tag-list.component';\nexport * from './components/tag/tag-input.directive';\nexport * from './components/tree-grid/tree-grid.module';\nexport * from './components/tree-grid/tree-grid.component';\nexport * from './components/tree-grid/tree-grid-row.component';\nexport * from './components/tree-grid/tree-grid-injection-tokens';\nexport * from './components/tree-grid/tree-grid-sort.component';\nexport * from './components/tree-grid/tree-grid-row-toggle.component';\nexport * from './components/tree-grid/tree-grid-column-def.directive';\nexport * from './components/tree-grid/tree-grid-cell.component';\nexport * from './components/tree-grid/tree-grid-def.component';\nexport * from './components/tree-grid/tree-grid-filter';\nexport * from './components/tree-grid/tree-grid-row-toggle.directive';\nexport * from './components/tree-grid/data-source/tree-grid.model';\nexport * from './components/tree-grid/data-source/tree-grid-data-source';\nexport * from './components/tree-grid/data-source/tree-grid-data.service';\nexport * from './components/tree-grid/data-source/tree-grid-filter.service';\nexport * from './components/tree-grid/data-source/tree-grid.service';\nexport * from './components/tree-grid/data-source/tree-grid-sort.service';\nexport * from './components/tree-grid/tree-grid-columns.service';\nexport * from './components/icon/icon.module';\nexport * from './components/icon/icon.component';\nexport * from './components/icon/icon';\nexport * from './components/icon/icon-pack';\nexport * from './components/icon/icon-libraries';\nexport * from './components/toggle/toggle.module';\nexport * from './components/toggle/toggle.component';\nexport * from './components/form-field/form-field.module';\nexport * from './components/form-field/form-field.component';\nexport * from './components/form-field/prefix.directive';\nexport * from './components/form-field/suffix.directive';\nexport * from './components/form-field/form-field-control';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["palette","i1.NbMediaBreakpointsService","i2.NbJSThemesRegistry","i1.NbLayoutDirectionService","i1.NbViewportRulerAdapter","i2.NbPlatform","i3.NbOverlayPositionBuilder","i4.NbOverlayContainerAdapter","i1.NbPortalOutletDirective","i2","i1.NbOverlay","i2.NbLayoutDirectionService","i2.NbLayoutScrollService","observableFromEvent","observableMerge","i1","i2.NbIconLibraries","i3.NbStatusService","i1.NbIconLibraries","i1.NbStatusService","i2.NbIconComponent","i1.NbDateService","i2.NbCalendarYearModelService","i3.NbButtonComponent","i4.NbIconComponent","i2.NbButtonComponent","i3.NbIconComponent","i2.NbCalendarPickerRowComponent","i3.NbCalendarPickerComponent","i2.NbCalendarPickerComponent","i1.NbCalendarMonthModelService","i3.NbCalendarDaysNamesComponent","i4.NbCalendarPickerComponent","i5.NbCalendarWeekNumberComponent","i3.NbCalendarViewModeComponent","i4.NbCalendarPageableNavigationComponent","i5.NbCalendarYearPickerComponent","i6.NbCalendarMonthPickerComponent","i7.NbCalendarDayPickerComponent","i8","i9.NbCardComponent","i9.NbCardBodyComponent","i9.NbCardHeaderComponent","i1.NbBaseCalendarComponent","COMPONENTS","i2.NbBaseCalendarComponent","i1.NbPlatform","i2.NbCalendarTimeModelService","i3.NbDateService","i4","i5.NbPortalDirective","i6.NbListComponent","i6.NbListItemComponent","i7.NbCardComponent","i7.NbCardFooterComponent","i7.NbCardHeaderComponent","i8.NbCalendarActionsComponent","i9.NbTimePickerCellComponent","i3.NbPortalOutletDirective","i4.NbCardComponent","i4.NbCardBodyComponent","i4.NbCardFooterComponent","i5.NbBaseCalendarComponent","i6.NbTimePickerComponent","i7.NbCalendarActionsComponent","i1.NbOverlayContainerComponent","i1.NbPositionBuilderService","i2.NbTriggerStrategyBuilderService","i3.NbOverlayService","i4.NbDateService","i5.NbCalendarTimeModelService","i1.NbThemeService","i2.NbSpinnerService","i3.NbLayoutDirectionService","i4.NbLayoutScrollService","i5.NbLayoutRulerService","i6.NbRestoreScrollTopHelper","i7.NbOverlayContainerAdapter","i1.NbLayoutDirection","i1.NbMenuService","i3","i5.NbIconComponent","i6.NbBadgeComponent","i1.NbMenuInternalService","i4.NbMergeConfigsPipe","i1.NbSidebarService","i2.NbThemeService","i3.NbBadgeComponent","observableOf","i4.NbSearchService","i5.NbThemeService","i6","i7.NbOverlayService","i8.NbPortalDirective","i1.NbOverlayService","i2.NbOverlayContainer","i3.NbDynamicOverlay","i4.NbLayoutDirectionService","i1.NbDynamicOverlayHandler","i1.NbMenuComponent","i2.NbDynamicOverlayHandler","i1.NbFocusMonitor","i2.NbStatusService","i5.NbInputDirective","i6.NbButtonComponent","i4.NbChatMessageTextComponent","i2.NbChatMessageTextComponent","i1.NbChatOptions","i2.NbChatMessageFileComponent","i2.NbChatCustomMessageService","i5.NbChatMessageFileComponent","i6.NbChatMessageQuoteComponent","i7.NbChatMessageMapComponent","i8.NbChatAvatarComponent","i1.NbChatCustomMessageService","i1.NbStepperComponent","i1.NbAccordionComponent","i1.NbAccordionItemComponent","i1.NbLayoutScrollService","i2.NbLayoutRulerService","i1.NbDirectionality","i1.NbDialogConfig","i2.NbFocusTrapFactoryService","i2.NbOverlayService","i2.NbPositionHelper","i4.NbToastComponent","i2.NbCheckboxComponent","i2.NbPositionBuilderService","i3.NbTriggerStrategyBuilderService","i4.NbFocusKeyManagerFactoryService","i5.NbFocusMonitor","i6.NbStatusService","i7","i9.NbIconComponent","i10.NbOptionListComponent","NB_SELECT_COMPONENTS","i7.NbActiveDescendantKeyManagerFactoryService","i9.NbPortalDirective","i10.NbInputDirective","i11.NbIconComponent","i12.NbOptionListComponent","i13.NbFormFieldComponent","i14.NbSuffixDirective","i2.NbPortalDirective","i3.NbOptionListComponent","i3.NbPositionBuilderService","i4.NbActiveDescendantKeyManagerFactoryService","i1.NbWindowRef","i2.NbWindowConfig","i3.NbFocusTrapFactoryService","i5.NbOverlayContainerComponent","i6.NbCardComponent","i6.NbCardBodyComponent","i6.NbCardHeaderComponent","i7.NbIconComponent","i8.NbButtonComponent","i2.NbOverlayPositionBuilder","i3.NbBlockScrollStrategyAdapter","i4.NbCalendarTimeModelService","i5.NbDateService","i2.NbActiveDescendantKeyManagerFactoryService","i4.NbStatusService","i1.NbTreeGridFilterService","i2.NbTreeGridSortService","i3.NbTreeGridService","i4.NbTreeGridDataService","i1.NbTreeGridDataSourceBuilder","i2.NbDirectionality","i4.NbViewportRulerAdapter","i5.NbDataRowOutletDirective","i5.NbHeaderRowOutletDirective","i5.NbFooterRowOutletDirective","i5.NbNoDataRowOutletDirective","i1.NbColumnsService","i1.NbCellOutletDirective","i1.NbTreeGridColumnDefDirective","i4.NbColumnsService","i1.NbTreeGridCellDirective"],"mappings":"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"}