{"version":3,"file":"k5cjs-select.mjs","sources":["../../../projects/select/src/lib/tokens/kc-select.token.ts","../../../projects/select/src/lib/tokens/kc-selection.token.ts","../../../projects/select/src/lib/tokens/kc-value.token.ts","../../../projects/select/src/lib/directives/kc-clear/kc-clear.directive.ts","../../../projects/select/src/lib/directives/kc-close/kc-close.directive.ts","../../../projects/select/src/lib/directives/kc-deselect-all/kc-deselect-all.directive.ts","../../../projects/select/src/lib/directives/kc-group/kc-group.directive.ts","../../../projects/select/src/lib/directives/kc-option/kc-option.directive.ts","../../../projects/select/src/lib/directives/kc-options/kc-options.directive.ts","../../../projects/select/src/lib/directives/kc-origin/kc-origin.directive.ts","../../../projects/select/src/lib/directives/kc-select-all/kc-select-all.directive.ts","../../../projects/select/src/lib/directives/kc-submit/kc-submit.directive.ts","../../../projects/select/src/lib/directives/kc-toggle/kc-toggle.directive.ts","../../../projects/select/src/lib/directives/kc-value/kc-value.directive.ts","../../../projects/select/src/lib/helpers/is-option-chunks.helper.ts","../../../projects/select/src/lib/helpers/is-option-group-value.helper.ts","../../../projects/select/src/lib/helpers/map-emit-select.helpers.ts","../../../projects/select/src/lib/helpers/get-selected-options.helper.ts","../../../projects/select/src/lib/helpers/get-value.helper.ts","../../../projects/select/src/lib/components/kc-option/kc-option.component.ts","../../../projects/select/src/lib/components/kc-option/kc-option.component.html","../../../projects/select/src/lib/helpers/provide-kc-options.helper.ts","../../../projects/select/src/lib/helpers/is-option-group.helper.ts","../../../projects/select/src/lib/helpers/search.helper.ts","../../../projects/select/src/lib/components/kc-group/kc-group.component.ts","../../../projects/select/src/lib/components/kc-group/kc-group.component.html","../../../projects/select/src/lib/components/kc-options/kc-options.component.ts","../../../projects/select/src/lib/components/kc-options/kc-options.component.html","../../../projects/select/src/lib/components/kc-value/kc-value.component.ts","../../../projects/select/src/lib/components/kc-value/kc-value.component.html","../../../projects/select/src/lib/config/default-connected-positions.config.ts","../../../projects/select/src/lib/kc-select.component.ts","../../../projects/select/src/lib/kc-select.component.html","../../../projects/select/src/lib/kc-select.module.ts","../../../projects/select/src/lib/types/kc-option.type.ts","../../../projects/select/src/public-api.ts","../../../projects/select/src/k5cjs-select.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport { KcSelect } from '../types';\n\nexport const KC_SELECT = new InjectionToken<KcSelect>('KC_SELECT');\n","import { InjectionToken } from '@angular/core';\n\nimport { MapEmitSelect } from '../helpers';\n\nexport const KC_SELECTION = new InjectionToken<MapEmitSelect<unknown>>('KC_SELECTION');\n","import { InjectionToken } from '@angular/core';\n\nimport { KcOptionGroupValue, KcOptionValue } from '../types';\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport const KC_VALUE = new InjectionToken<KcOptionValue<unknown> | KcOptionGroupValue<unknown>>('KC_VALUE');\n","import { Directive, HostListener, Inject } from '@angular/core';\n\nimport { KC_SELECT } from '../../tokens';\nimport { KcSelect } from '../../types';\n\n@Directive({\n  selector: '[kcClear]',\n})\nexport class KcClearDirective {\n  constructor(@Inject(KC_SELECT) private _kcSelect: KcSelect) {}\n\n  @HostListener('click') onClick() {\n    this._kcSelect.clear();\n  }\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, HostListener, Inject, Input } from '@angular/core';\n\nimport { KC_SELECT } from '../../tokens';\nimport { KcSelect } from '../../types';\n\n@Directive({\n  selector: '[kcClose]',\n})\nexport class KcCloseDirective {\n  @Input({ transform: coerceBooleanProperty }) kcClose = true;\n\n  constructor(@Inject(KC_SELECT) private _kcSelect: KcSelect) {}\n\n  @HostListener('click', ['$event']) onClick(event: MouseEvent) {\n    if (this.kcClose) this._kcSelect.close(event);\n  }\n}\n","import { Directive, HostListener, Inject } from '@angular/core';\n\nimport { KC_SELECT } from '../../tokens';\nimport { KcSelect } from '../../types';\n\n@Directive({\n  selector: '[kcDeselectAll]',\n})\nexport class KcDeselectAllDirective {\n  constructor(@Inject(KC_SELECT) private _kcSelect: KcSelect) {}\n\n  @HostListener('click')\n  click() {\n    this._kcSelect.deselectAll();\n  }\n}\n","import { ChangeDetectorRef, Directive, EmbeddedViewRef, TemplateRef, ViewContainerRef } from '@angular/core';\n\nimport { KcGroup } from '../../types';\n\ntype Context<V, K, L> = { $implicit: KcGroup<V, K, L> };\n\n@Directive({\n  selector: '[kcGroup]',\n})\nexport class KcGroupDirective<V, K, L> {\n  private _embeddedViewRef: EmbeddedViewRef<Context<V, K, L>> | undefined;\n\n  constructor(\n    private _template: TemplateRef<Context<V, K, L>>,\n    private _viewContainer: ViewContainerRef,\n    private _cdr: ChangeDetectorRef,\n  ) {}\n\n  static ngTemplateContextGuard<V, K, L>(\n    _dir: KcGroupDirective<V, K, L>,\n    _ctx: Context<V, K, L>,\n  ): _ctx is Context<V, K, L> {\n    return true;\n  }\n\n  render(options: KcGroup<V, K, L>) {\n    if (this._embeddedViewRef) this._embeddedViewRef.context.$implicit = options;\n    else this._embeddedViewRef = this._viewContainer.createEmbeddedView(this._template, { $implicit: options });\n\n    this._cdr.detectChanges();\n  }\n\n  clear() {\n    this._embeddedViewRef = undefined;\n    this._viewContainer.clear();\n\n    this._cdr.detectChanges();\n  }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\nimport { KcOption } from '../../types';\n\ntype Context<V, K, L> = { $implicit: KcOption<V, K, L> };\n\n@Directive({ selector: '[kcOption]' })\nexport class KcOptionDirective<V, K, L> {\n  @Input('kcOptionType') public type!: KcOption<V, K, L>;\n\n  constructor(public template: TemplateRef<Context<V, K, L>>) {}\n\n  static ngTemplateContextGuard<V, K, L>(\n    _dir: KcOptionDirective<V, K, L>,\n    _ctx: Context<V, K, L>,\n  ): _ctx is Context<V, K, L> {\n    return true;\n  }\n}\n","import { ChangeDetectorRef, Directive, EmbeddedViewRef, Input, TemplateRef, ViewContainerRef } from '@angular/core';\n\nimport { KcOption } from '../../types';\n\ntype Context<V, K, L> = { $implicit: KcOption<V, K, L>[] };\n\n@Directive({ selector: '[kcOptions]' })\nexport class KcOptionsDirective<V, K, L> {\n  @Input('kcOptionsType') public type!: KcOption<V, K, L>;\n\n  private _embeddedViewRef: EmbeddedViewRef<Context<V, K, L>> | undefined;\n\n  constructor(\n    private _template: TemplateRef<Context<V, K, L>>,\n    private _viewContainer: ViewContainerRef,\n    private _cdr: ChangeDetectorRef,\n  ) {}\n\n  static ngTemplateContextGuard<V, K, L>(\n    _dir: KcOptionsDirective<V, K, L>,\n    _ctx: Context<V, K, L>,\n  ): _ctx is Context<V, K, L> {\n    return true;\n  }\n\n  render(options: KcOption<V, K, L>[]): void {\n    if (this._embeddedViewRef) this._embeddedViewRef.context.$implicit = options;\n    else this._embeddedViewRef = this._viewContainer.createEmbeddedView(this._template, { $implicit: options });\n\n    this._cdr.detectChanges();\n  }\n\n  clear(): void {\n    this._embeddedViewRef = undefined;\n    this._viewContainer.clear();\n\n    this._cdr.detectChanges();\n  }\n}\n","import { CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n  selector: '[kcOrigin]',\n  exportAs: 'kcOrigin',\n})\nexport class KcOriginDirective extends CdkOverlayOrigin {\n  override elementRef!: ElementRef<HTMLElement>;\n}\n","import { Directive, HostListener, Inject } from '@angular/core';\n\nimport { KC_SELECT } from '../../tokens';\nimport { KcSelect } from '../../types';\n\n@Directive({\n  selector: '[kcSelectAll]',\n})\nexport class KcSelectAllDirective {\n  constructor(@Inject(KC_SELECT) private _kcSelect: KcSelect) {}\n\n  @HostListener('click')\n  click() {\n    this._kcSelect.selectAll();\n  }\n}\n","import { Directive, HostListener, Inject } from '@angular/core';\n\nimport { KC_SELECT } from '../../tokens';\nimport { KcSelect } from '../../types';\n\n@Directive({\n  selector: '[kcSubmit]',\n})\nexport class KcSubmitDirective {\n  constructor(@Inject(KC_SELECT) private _kcSelect: KcSelect) {}\n\n  @HostListener('click')\n  click() {\n    this._kcSelect.submit();\n  }\n}\n","import { Directive, HostListener, Inject } from '@angular/core';\n\nimport { KC_SELECT } from '../../tokens';\nimport { KcSelect } from '../../types';\n\n@Directive({\n  selector: '[kcToggle]',\n})\nexport class KcToggleDirective {\n  constructor(@Inject(KC_SELECT) private _kcSelect: KcSelect) {}\n\n  @HostListener('click')\n  click() {\n    this._kcSelect.toggle();\n  }\n}\n","import { ChangeDetectorRef, Directive, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Directive({ selector: '[kcValue]' })\nexport class KcValueDirective {\n  constructor(public template: TemplateRef<unknown>, private _cdr: ChangeDetectorRef) {}\n\n  render(viewContainer: ViewContainerRef): void {\n    viewContainer.createEmbeddedView(this.template);\n\n    this._cdr.detectChanges();\n  }\n\n  clear(viewContainer: ViewContainerRef): void {\n    viewContainer.clear();\n\n    this._cdr.detectChanges();\n  }\n}\n","import { KcGroup, KcOption } from '../types';\n\nexport const isOptionChunks = <V, K, L>(\n  option: KcOption<V, K, L>[] | KcOption<V, K, L>[][] | KcGroup<V, K, L>,\n): option is KcOption<V, K, L>[][] => Array.isArray(option) && Array.isArray(option[0]);\n","import { KcOptionGroupValue, KcOptionValue } from '../types';\n\nexport const isOptionGroupValue = <V>(\n  option: KcOptionValue<V> | KcOptionGroupValue<V>,\n): option is KcOptionGroupValue<V> => typeof option === 'object' && option !== null && !Array.isArray(option);\n","import { MapEmit } from '@k5cjs/selection-model';\n\nexport class MapEmitSelect<V, K = V, T extends boolean = false> extends MapEmit<K, V, T> {\n  constructor(multiple: T, initiallyValues?: T extends false ? [K, V] : [K, V][]) {\n    super(multiple, initiallyValues);\n  }\n\n  get test(): T extends false ? V | null : V[] {\n    const selected = super.selectedEntries;\n\n    if (selected) {\n      if (this._isUnion(selected)) return selected.map(([, value]) => value) as T extends false ? V | null : V[];\n      else {\n        const [k, value] = selected;\n        const key: string = k as string;\n\n        if (this._isMapEmitSelect(value)) return { [key]: value.selected } as T extends false ? V | null : V[];\n        return { [key]: value } as T extends false ? V | null : V[];\n      }\n    }\n\n    return selected as T extends false ? V | null : V[];\n  }\n\n  private _isMapEmitSelect(value: unknown): value is MapEmitSelect<V, K, T> {\n    return value instanceof MapEmitSelect;\n  }\n\n  private _isUnion(value: [K, V] | [K, V][]): value is [K, V][] {\n    return Array.isArray(value[0]);\n  }\n}\n","import { KcGroup, KcOption, KcOptionGroupValue, KcOptionValue } from '../types';\n\nimport { isOptionChunks } from './is-option-chunks.helper';\nimport { isOptionGroupValue } from './is-option-group-value.helper';\nimport { MapEmitSelect } from './map-emit-select.helpers';\n\ntype Options<V, K, L> = KcOption<V, K, L>[] | KcOption<V, K, L>[][] | KcGroup<V, K, L>;\ntype Value<V> = KcOptionValue<V> | KcOptionGroupValue<V>;\n\nconst compareOptions = <V, K, L>(value: V | KcOptionGroupValue<V> | undefined, option: KcOption<V, K, L>): boolean => {\n  if (typeof value === 'undefined') return false;\n\n  if (option.compareFn) return option.compareFn(value, option.value);\n\n  if ('key' in option) return option.key === value;\n\n  return option.value === value;\n};\n\nconst simpleOptions = <V, K, L>(options: KcOption<V, K, L>[] | KcOption<V, K, L>[][], value: Value<V>) => {\n  if (isOptionChunks(options)) {\n    return options.flat().filter((option) => {\n      if (Array.isArray(value)) return value.some((value) => compareOptions(value, option));\n\n      return compareOptions(value, option);\n    });\n  } else {\n    return options.filter((option) => {\n      if (Array.isArray(value)) return value.some((value) => compareOptions(value, option));\n\n      return compareOptions(value, option);\n    });\n  }\n};\n\nconst groupOptions = <V, K, L>(\n  options: KcGroup<V, K, L>,\n  values: KcOptionGroupValue<V>,\n): [K | V, KcOption<V, K, L>][] => {\n  return (\n    Object.entries(options)\n      .filter(([key]) => values[key])\n      .map(([key, { value }]) => {\n        const allOptions = value as KcOption<V, K, L>[];\n        const selectedValues = values[key];\n        // TODO: check if is nested group\n        const selectedValue = selectedValues;\n\n        const filter = allOptions.filter((option) => {\n          if (Array.isArray(selectedValue))\n            return selectedValue.some((value) => value === option.key || value === option.value);\n\n          return selectedValue === option.key || selectedValue === option.value;\n        });\n\n        const selectedOptions: [K, V][] = filter.map((option) => [option.key || option.value, option]) as [K, V][];\n\n        const group = Array.isArray(selectedValue)\n          ? new MapEmitSelect<V, K, true>(true, selectedOptions as unknown as [K, V][])\n          : new MapEmitSelect(false, selectedOptions[0]);\n\n        return {\n          key,\n          value: group,\n        };\n      }) as unknown as KcOption<V, K, L>[]\n  ).map((option) => [option.key || option.value, option.value as KcOption<V, K, L>]);\n};\n\nexport const getSelectedOptions = <V, K, L>(\n  options: Options<V, K, L>,\n  value: Value<V> | undefined,\n): [K | V, KcOption<V, K, L>][] | undefined => {\n  if (typeof value === 'undefined') return undefined;\n\n  if (Array.isArray(options)) {\n    return simpleOptions(options, value).map((option) => [option.key || option.value, option]);\n  } else if (options) {\n    if (isOptionGroupValue(value)) return groupOptions(options, value);\n\n    throw new Error('Value is not a group value');\n  }\n\n  return undefined;\n};\n","import { KcOption, KcOptionGroupValue, KcOptionSelection, KcOptionValue } from '../types';\n\nimport { MapEmitSelect } from './map-emit-select.helpers';\n\ntype Options<V, K, L> = KcOptionSelection<V, K, L> | KcOption<V, K, L>;\ntype OptionsValue<V> = KcOptionGroupValue<V> | KcOptionValue<V>;\ntype Item<V, K, L> = [K | V, Options<V, K, L>];\n\nexport function getValues<V, K, L>(values: KcOptionSelection<V, K, L>): OptionsValue<V> | undefined {\n  /**\n   * check if map is multiple\n   * is is multiple we need to iterate over all values\n   */\n  if (values.isMultiple()) {\n    return (values.selectedEntries as unknown as Item<V, K, L>[]).reduce<OptionsValue<V> | undefined>(\n      (acc, [key, item]) => {\n        if (checkIsOption(item)) return [...(acc as []), item.value];\n        /**\n         * check if accumulator is an array that means is the first iteration\n         * when we have a nested group we change the accumulator to an object\n         */\n        if (Array.isArray(acc)) acc = {};\n        /**\n         * get value from nested group\n         */\n        const value = getValues(item);\n        /**\n         * when the group has no value we return the accumulator\n         */\n        if (checkIsEmpty(value)) return acc;\n\n        return {\n          ...acc,\n          [key as unknown as string]: value,\n        };\n      },\n      [],\n    );\n  }\n\n  if (!values.selectedEntries) return;\n\n  const [key, item] = values.selectedEntries as Item<V, K, L>;\n\n  if (checkIsOption(item)) return item.value;\n\n  const value = getValues(item);\n\n  if (checkIsEmpty(value)) return;\n\n  return { [key as unknown as string]: value };\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction checkIsEmpty<V>(item: OptionsValue<V> | undefined): item is undefined | [] | {} {\n  /**\n   * check if items is undefined\n   */\n  if (item === undefined) return true;\n  /**\n   * check if object is empty\n   */\n  if (typeof item === 'object' && Object.keys(item || {}).length === 0) return true;\n  /**\n   * check if array and is empty\n   */\n  if (Array.isArray(item) && item.length === 0) return true;\n\n  return false;\n}\n\nfunction checkIsOption<V, K, L>(item: Options<V, K, L>): item is KcOption<V, K, L> {\n  return !(item instanceof MapEmitSelect);\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  HostListener,\n  Inject,\n  Input,\n  OnDestroy,\n} from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { MapEmitSelect } from '../../helpers/map-emit-select.helpers';\nimport { KC_SELECTION } from '../../tokens';\nimport { KcOption } from '../../types';\n\n@Component({\n  selector: 'kc-option',\n  templateUrl: './kc-option.component.html',\n  styleUrls: ['./kc-option.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KcOptionComponent<V, K, L> implements OnDestroy {\n  @Input() option!: KcOption<V, K, L>;\n\n  protected _destroy: Subject<void>;\n\n  constructor(\n    @Inject(KC_SELECTION) protected _selection: MapEmitSelect<KcOption<V, K, L>, K | V, boolean>,\n    protected _cdr: ChangeDetectorRef,\n  ) {\n    this._destroy = new Subject();\n\n    this._selection.changed.pipe(takeUntil(this._destroy)).subscribe(() => this._cdr.markForCheck());\n  }\n\n  ngOnDestroy(): void {\n    this._destroy.next();\n    this._destroy.complete();\n  }\n\n  get selected(): boolean {\n    return this._selection.has(this.option.key || this.option.value);\n  }\n\n  @HostListener('click')\n  click(): void {\n    this.toggle();\n  }\n\n  toggle(): void {\n    if (this.selected) this.deselect();\n    else this.select();\n  }\n\n  select(): void {\n    this._selection.set(this.option.key || this.option.value, this.option);\n  }\n\n  deselect(): void {\n    this._selection.delete(this.option.key || this.option.value);\n  }\n}\n","<span>{{ option.label }}</span>\n<span *ngIf=\"selected\">(selected)</span>\n","import { Provider, Type, forwardRef } from '@angular/core';\n\nimport { KcOptionComponent } from '../components/kc-option/kc-option.component';\n\nexport function provideKcOption<T extends KcOptionComponent<unknown, unknown, unknown>>(type: Type<T>): Provider {\n  return {\n    provide: KcOptionComponent,\n    useExisting: forwardRef(() => type),\n  };\n}\n","import { KcGroup, OptionGroup } from '../types';\n\nexport const isOptionGroup = <V, K, L>(\n  option: KcGroup<V, K, L> | OptionGroup<V, K, L>,\n): option is OptionGroup<V, K, L> => !!option.value;\n","import { KcGroup, KcOption } from '../types';\n\nimport { isOptionChunks } from './is-option-chunks.helper';\nimport { isOptionGroup } from './is-option-group.helper';\n\nexport function filterNestedOptions(options: KcOption<string, string>[], search: string): KcOption<string, string>[];\nexport function filterNestedOptions(\n  options: KcOption<string, string>[][],\n  search: string,\n): KcOption<string, string>[][];\nexport function filterNestedOptions(options: KcGroup<string, string>, search: string): KcGroup<string, string>;\nexport function filterNestedOptions(\n  options: KcOption<string, string>[] | KcOption<string, string>[][] | KcGroup<string, string>,\n  search: string,\n): KcOption<string, string>[] | KcOption<string, string>[][] | KcGroup<string, string> {\n  if (isOptionChunks(options)) return options.map((option) => filterNestedOptions(option, search));\n  else if (Array.isArray(options))\n    return options.filter((option) => option.label?.toLowerCase().includes(search.toLowerCase()));\n  else {\n    return Object.entries(options).reduce<KcGroup<string, string>>((acc, [key, item]) => {\n      if (isOptionGroup(item))\n        acc[key] = {\n          ...item,\n          value: isOptionChunks(item.value)\n            ? filterNestedOptions(item.value, search)\n            : filterNestedOptions(item.value, search),\n        };\n      else acc[key] = filterNestedOptions(item, search);\n\n      return acc;\n    }, {});\n  }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChildren,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  QueryList,\n  SkipSelf,\n  forwardRef,\n} from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { KcGroupDirective, KcOptionsDirective } from '../../directives';\nimport { MapEmitSelect } from '../../helpers';\nimport { KC_SELECT, KC_SELECTION, KC_VALUE } from '../../tokens';\nimport {\n  KcGroup,\n  KcOption,\n  KcOptionGroupValue,\n  KcOptionSelection,\n  KcOptionValue,\n  KcSelect,\n  OptionGroup,\n} from '../../types';\n\n@Component({\n  selector: 'kc-group',\n  templateUrl: './kc-group.component.html',\n  styleUrls: ['./kc-group.component.scss'],\n  providers: [\n    {\n      provide: KC_SELECTION,\n      useFactory: (autocomplete: KcGroupComponent<unknown, unknown, unknown>) => autocomplete.selection,\n      deps: [forwardRef(() => KcGroupComponent)],\n    },\n    {\n      provide: KC_VALUE,\n      useFactory: (component: KcGroupComponent<unknown, unknown, unknown>) => component.value,\n      deps: [forwardRef(() => KcGroupComponent)],\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KcGroupComponent<V, K, L> implements OnInit, AfterContentInit, OnDestroy {\n  @Input()\n  get options(): KcGroup<V, K, L> {\n    return this._options;\n  }\n  set options(options: KcGroup<V, K, L>) {\n    this._options = options;\n    this._render();\n  }\n  private _options!: KcGroup<V, K, L>;\n\n  @Input() key!: string;\n\n  @Input()\n  get multiple(): boolean {\n    return this._multiple;\n  }\n  set multiple(value: BooleanInput) {\n    this._multiple = coerceBooleanProperty(value);\n  }\n  private _multiple = false;\n\n  @ContentChildren(KcGroupDirective) groups!: QueryList<KcGroupDirective<V, K, L>>;\n  @ContentChildren(KcOptionsDirective) option!: QueryList<KcOptionsDirective<V, K, L>>;\n\n  selection!: MapEmitSelect<KcOption<V, K, L> | KcOptionSelection<V, K, L>, string | K | V, boolean>;\n\n  private _destroy: Subject<void>;\n\n  constructor(\n    @SkipSelf()\n    @Inject(KC_SELECTION)\n    private _selection: MapEmitSelect<KcOptionSelection<V, K, L>, string, boolean>,\n    @SkipSelf() @Inject(KC_SELECT) private _select: KcSelect<V>,\n  ) {\n    this._destroy = new Subject();\n  }\n\n  get value(): KcOptionValue<V> | KcOptionGroupValue<V> {\n    const value = this._select.value;\n    if (this._isOptionGroupValue(value)) return value[this.key];\n\n    return value;\n  }\n\n  ngAfterContentInit(): void {\n    this._render();\n  }\n\n  ngOnInit(): void {\n    this._initSelection();\n  }\n\n  ngOnDestroy(): void {\n    this._destroy.next();\n  }\n\n  private _initSelection(): void {\n    this.selection = this._getSelection();\n    /**\n     * If the selection is empty, set the selection to the current option.\n     * we need to check if the selection is empty because the selection can be set from previous render.\n     */\n    if (this._selection.isEmpty()) this._selection.set(this.key, this.selection);\n\n    this.selection.changed.pipe(takeUntil(this._destroy)).subscribe(() => {\n      if (this._selection.has(this.key)) this._selection.update(this.key, this.selection);\n      else this._selection.set(this.key, this.selection);\n    });\n  }\n\n  private _render(): void {\n    if (!this.groups) return;\n\n    this.groups.forEach((group) => group.render(this._getGroup(this.options)));\n    this.option.forEach((group, index) => group.render(this._getOptions(this.options)[index]));\n  }\n\n  private _getSelection(): MapEmitSelect<KcOption<V, K, L> | KcOptionSelection<V, K, L>, string | K | V, boolean> {\n    if (this._selection.has(this.key)) return this._selection.get(this.key)!;\n\n    const option = this._getOption();\n    const options = option && (this.multiple ? option : option[0]);\n\n    return new MapEmitSelect<KcOption<V, K, L> | KcOptionSelection<V, K, L>, string, boolean>(this.multiple, options);\n  }\n\n  private _getOption(): [string, KcOption<V, K, L>][] | undefined {\n    if (this._isOptionGroup(this.options[this.key]))\n      return this._getOptions(this.options)\n        .flat()\n        .filter((option) => {\n          if (Array.isArray(this.value)) return this.value.some((value) => value === option.value);\n\n          return this.value === option.value;\n        })\n        .map((option) => [(option.key || option.value) as unknown as string, option]);\n\n    return undefined;\n  }\n\n  private _getGroup(options: KcGroup<V, K, L>): KcGroup<V, K, L> {\n    return options[this.key] as KcGroup<V, K, L>;\n  }\n\n  private _getOptionGroup(options: KcGroup<V, K, L>): OptionGroup<V, K, L> {\n    return options[this.key] as OptionGroup<V, K, L>;\n  }\n\n  private _getOptions(options: KcGroup<V, K, L>): KcOption<V, K, L>[][] {\n    const value = this._getOptionGroup(options).value;\n\n    if (this._isOptionChunks(value)) return value;\n\n    return [value];\n  }\n\n  private _isOptionGroup(option: KcGroup<V, K, L> | OptionGroup<V, K, L>): option is OptionGroup<V, K, L> {\n    return !!option.value;\n  }\n\n  private _isOptionGroupValue(value: KcOptionValue<V> | KcOptionGroupValue<V>): value is KcOptionGroupValue<V> {\n    return typeof value === 'object' && !Array.isArray(value);\n  }\n\n  private _isOptionChunks(option: KcOption<V, K, L>[] | KcOption<V, K, L>[][]): option is KcOption<V, K, L>[][] {\n    return Array.isArray(option[0]);\n  }\n}\n","<!-- ng-content is for header elements and for options template -->\n<ng-content></ng-content>\n<!-- ng-content is for footer elements -->\n<ng-content select=\"[footer]\"></ng-content>\n","import { ChangeDetectionStrategy, Component, ContentChild, Input, ViewChild, ViewContainerRef } from '@angular/core';\n\nimport { KcOptionDirective } from '../../directives';\nimport { KcOption } from '../../types';\n\n@Component({\n  selector: 'kc-options',\n  templateUrl: './kc-options.component.html',\n  styleUrls: ['./kc-options.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KcOptionsComponent<V, K, L> {\n  @Input()\n  get options(): KcOption<V, K, L>[] {\n    return this._options;\n  }\n  set options(options: KcOption<V, K, L>[]) {\n    this._options = options;\n    this._render();\n  }\n  private _options!: KcOption<V, K, L>[];\n\n  /**\n   *  { static: true } needs to be set when you want to access the ViewChild in ngOnInit.\n   */\n  @ContentChild(KcOptionDirective, { static: true }) public optionTemplate!: KcOptionDirective<V, K, L>;\n  @ViewChild('outlet', { static: true, read: ViewContainerRef }) protected _outlet!: ViewContainerRef;\n\n  protected _render(): void {\n    // TODO: implement trackBy\n    this._outlet.clear();\n\n    this.options.forEach((option) => {\n      const dialog = this.optionTemplate.template.createEmbeddedView({ $implicit: option });\n      this._outlet.insert(dialog);\n    });\n  }\n}\n","<!-- ng-content is for header elements and for option template -->\n<ng-content></ng-content>\n<!-- ng-template is to render all the options -->\n<ng-template #outlet></ng-template>\n<!-- ng-content is for footer elements -->\n<ng-content select=\"[footer]\"></ng-content>\n","import { ChangeDetectionStrategy, Component, HostBinding, Inject } from '@angular/core';\nimport { Observable, map, startWith } from 'rxjs';\n\nimport { MapEmitSelect } from '../../helpers';\nimport { KC_SELECTION } from '../../tokens';\nimport { KcOption } from '../../types';\n\n@Component({\n  selector: 'kc-value',\n  templateUrl: './kc-value.component.html',\n  styleUrls: ['./kc-value.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KcValueComponent<T extends boolean = false> {\n  value!: Observable<string | undefined>;\n\n  constructor(@Inject(KC_SELECTION) private _selection: MapEmitSelect<KcOption<string, unknown>, string, T>) {\n    this.value = this._selection.changed.pipe(\n      startWith({ source: { selected: this._selection.selected } }),\n      map(({ source: { selected } }) => {\n        if (Array.isArray(selected)) return selected.map(({ label }) => label).join(', ');\n        else if (selected && selected.label) return selected.label;\n        else if (selected && typeof selected === 'object') return 'Object logic';\n\n        return;\n      }),\n    );\n  }\n\n  @HostBinding('attr.prevent-close') get preventClose(): boolean {\n    return true;\n  }\n\n  removeTag(event: Event): void {\n    event.stopPropagation();\n  }\n}\n","<ng-container *ngIf=\"value | async as value; else placeholder\">\n  <div>{{ value }}</div>\n</ng-container>\n\n<ng-template #placeholder>\n  <div #ref>\n    <ng-content placeholder></ng-content>\n  </div>\n\n  <span *ngIf=\"!ref.children.length\">Please choose an option</span>\n</ng-template>\n\n<ng-content></ng-content>\n","import { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport const DEFAULT_CONNECTED_POSITIONS: ConnectedPosition[] = [\n  {\n    originX: 'start',\n    originY: 'bottom',\n    overlayX: 'start',\n    overlayY: 'top',\n  },\n  {\n    originX: 'start',\n    originY: 'top',\n    overlayX: 'start',\n    overlayY: 'bottom',\n  },\n  {\n    originX: 'end',\n    originY: 'top',\n    overlayX: 'end',\n    overlayY: 'bottom',\n  },\n  {\n    originX: 'end',\n    originY: 'bottom',\n    overlayX: 'end',\n    overlayY: 'top',\n  },\n];\n","import { ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  ConnectedPosition,\n  FlexibleConnectedPositionStrategy,\n  FlexibleConnectedPositionStrategyOrigin,\n  GlobalPositionStrategy,\n  Overlay,\n  OverlayConfig,\n  OverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n  AfterContentInit,\n  Attribute,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  OnInit,\n  Output,\n  QueryList,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef,\n  forwardRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor } from '@angular/forms';\nimport {\n  BehaviorSubject,\n  Observable,\n  ReplaySubject,\n  Subscription,\n  first,\n  isObservable,\n  map,\n  switchMap,\n  tap,\n} from 'rxjs';\n\nimport { KcControl, KcControlType, kcControlProviders } from '@k5cjs/control';\n\nimport { KcOptionComponent } from './components';\nimport { DEFAULT_CONNECTED_POSITIONS } from './config';\nimport { KcGroupDirective, KcOptionsDirective, KcOriginDirective, KcValueDirective } from './directives';\nimport { MapEmitSelect, getSelectedOptions, getValues, isOptionChunks } from './helpers';\nimport { KC_SELECT, KC_SELECTION, KC_VALUE } from './tokens';\nimport { KcGroup, KcOption, KcOptionGroupValue, KcOptionSelection, KcOptionValue, KcSelect } from './types';\n\n@Component({\n  selector: 'kc-select',\n  templateUrl: './kc-select.component.html',\n  styleUrls: ['./kc-select.component.scss'],\n  providers: [\n    kcControlProviders(KcSelectComponent),\n    {\n      provide: KC_SELECT,\n      useExisting: forwardRef(() => KcSelectComponent),\n    },\n    {\n      provide: KC_SELECTION,\n      useFactory: (component: KcSelectComponent<unknown, unknown, unknown>) => component.selection,\n      deps: [forwardRef(() => KcSelectComponent)],\n    },\n    {\n      provide: KC_VALUE,\n      useFactory: (component: KcSelectComponent<unknown, unknown, unknown>) => component.value,\n      deps: [forwardRef(() => KcSelectComponent)],\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  exportAs: 'kcSelect',\n})\nexport class KcSelectComponent<V, K, L>\n  extends KcControl<KcOptionValue<V> | KcOptionGroupValue<V>>\n  implements\n    OnInit,\n    AfterContentInit,\n    ControlValueAccessor,\n    KcSelect,\n    KcControlType<KcOptionValue<V> | KcOptionGroupValue<V>>\n{\n  @Input()\n  get options(): Observable<KcOption<V, K, L>[] | KcOption<V, K, L>[][] | KcGroup<V, K, L>> {\n    return this._options;\n  }\n  set options(\n    options:\n      | Observable<KcOption<V, K, L>[] | KcOption<V, K, L>[][] | KcGroup<V, K, L>>\n      | KcOption<V, K, L>[]\n      | KcOption<V, K, L>[][]\n      | KcGroup<V, K, L>,\n  ) {\n    // TODO: check to implement shareReplay\n    if (isObservable(options)) this._options = options;\n    else this._createObservableOptions(options);\n  }\n  private _options!: Observable<KcOption<V, K, L>[] | KcOption<V, K, L>[][] | KcGroup<V, K, L>>;\n  private _optionsCache: ReplaySubject<KcOption<V, K, L>[] | KcOption<V, K, L>[][] | KcGroup<V, K, L>> | undefined;\n\n  /**\n   * allow user to open selection in modal\n   */\n  @Input()\n  get multiple(): boolean {\n    return this._multiple;\n  }\n  set multiple(value: boolean | string) {\n    this._multiple = coerceBooleanProperty(value);\n  }\n  private _multiple = false;\n  /**\n   * allow user to open selection in modal\n   */\n  @Input()\n  get dialog(): boolean {\n    return this._dialog;\n  }\n  set dialog(value: boolean | string) {\n    this._dialog = coerceBooleanProperty(value);\n  }\n  private _dialog = false;\n  /**\n   * allow user to change origin from where selection will be opened\n   */\n  @Input() origin: KcOriginDirective | undefined;\n\n  @Input() cdkOverlayConfig: OverlayConfig;\n  @Input() positions: ConnectedPosition[];\n\n  @Output() closed: EventEmitter<KcOptionValue<V> | KcOptionGroupValue<V>>;\n  @Output() submitted: EventEmitter<KcOptionValue<V> | KcOptionGroupValue<V>>;\n\n  @ViewChild('valueRef', { read: ViewContainerRef, static: true }) private _valueRef!: ViewContainerRef;\n\n  @ViewChild('templateRef', { static: true }) templateRef!: TemplateRef<unknown>;\n\n  @ContentChildren(KcOptionComponent, { descendants: true })\n  optionComponents!: QueryList<KcOptionComponent<V, K, L>>;\n\n  @ContentChild(KcValueDirective, { static: true })\n  private _valueDirective?: KcValueDirective;\n\n  @ContentChildren(KcGroupDirective, { descendants: true })\n  private _groupDirectives!: QueryList<KcGroupDirective<V, K, L>>;\n\n  @ContentChildren(KcOptionsDirective, { descendants: true })\n  private _optionsDirectives!: QueryList<KcOptionsDirective<V, K, L>>;\n\n  override set value(val: KcOptionValue<V> | KcOptionGroupValue<V>) {\n    this._value = val;\n    this._cdr.detectChanges();\n  }\n  override get value(): KcOptionValue<V> | KcOptionGroupValue<V> {\n    return this._value;\n  }\n  private _value!: KcOptionValue<V> | KcOptionGroupValue<V>;\n\n  /**\n   * selectionOpened variable is for check if the overlay or dialog is open\n   */\n  selectionOpened = false;\n  selection!: KcOptionSelection<V, K, L>;\n\n  allSelected: boolean;\n  allSelectedChanged: Observable<boolean>;\n\n  private _allSelectedChanged: BehaviorSubject<boolean>;\n\n  private _dialogOverlayRef: OverlayRef | undefined;\n\n  private _tabIndex: number;\n\n  private _subscriptionOptions?: Subscription;\n  private _subscriptionChanges?: Subscription;\n\n  constructor(\n    private _overlay: Overlay,\n    private _viewContainerRef: ViewContainerRef,\n    private _cdr: ChangeDetectorRef,\n    private _trap: ConfigurableFocusTrapFactory,\n    @Attribute('tabindex') tabIndex: string,\n  ) {\n    super();\n\n    this.closed = new EventEmitter<KcOptionValue<V> | KcOptionGroupValue<V>>();\n    this.submitted = new EventEmitter<KcOptionValue<V> | KcOptionGroupValue<V>>();\n    this.allSelected = false;\n\n    this._allSelectedChanged = new BehaviorSubject<boolean>(false);\n    this.allSelectedChanged = this._allSelectedChanged.asObservable();\n    this.positions = DEFAULT_CONNECTED_POSITIONS;\n\n    this._tabIndex = parseInt(tabIndex) || 0;\n    this.cdkOverlayConfig = {\n      hasBackdrop: false,\n      disposeOnNavigation: true,\n    };\n  }\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n\n    this.selection = new MapEmitSelect<KcOption<V, K, L> | KcOptionSelection<V, K, L>, K | V, boolean>(this.multiple);\n\n    this._subscriptionChanges = this._initSelectionModel();\n\n    if (this.origin) {\n      // TODO: remove event listener on destroy\n      this.origin.elementRef.nativeElement.addEventListener('click', () => {\n        if (this.selectionOpened) return;\n\n        this.elementRef.nativeElement.focus();\n        this.click();\n      });\n    }\n  }\n\n  ngAfterContentInit(): void {\n    if (this._valueDirective) this._valueDirective.render(this._valueRef);\n  }\n\n  override writeValue(obj: KcOptionValue<V> | KcOptionGroupValue<V>): void {\n    this.value = obj;\n    this._updateSelectionModel();\n  }\n  /**\n   * allow element to be focusable\n   */\n  @HostBinding('attr.tabindex') get tabindex(): number {\n    return this._tabIndex;\n  }\n\n  @HostListener('keydown', ['$event'])\n  protected _keydown(event: KeyboardEvent): void {\n    /**\n     * when user focus on element and press space, open selection\n     */\n    if (event.key === ' ') {\n      /**\n       * prevent scroll when user press space\n       */\n      event.preventDefault();\n      this.open();\n    } else if (event.key === 'Escape') this.close();\n    else if (event.key === 'Tab') {\n      if (this.selectionOpened) {\n        /**\n         * prevent to focus on next element when selection is opened\n         */\n        event.preventDefault();\n        this.close();\n      } else if (this.focused) {\n        this.focused = false;\n      }\n    }\n  }\n  /**\n   * open selection when user click on element\n   */\n  @HostListener('click')\n  click(): void {\n    if (this.selectionOpened) this.close();\n    else this.open();\n  }\n  /**\n   * focus on element when user press tab to focus on element\n   * and don't open selection, to open selection user need to press space\n   */\n  @HostListener('focus')\n  override _focus(): void {\n    this.focused = true;\n    this._stateChanges.next();\n  }\n\n  /**\n   * close selection when user press tab to blur on element\n   */\n  @HostListener('blur')\n  override _blur(): void {\n    if (this.selectionOpened) return;\n    /**\n     * blur element when user focused element but not open selection\n     * and focus on another element but not with tab key but with mouse click\n     */\n    this.focused = false;\n    this._stateChanges.next();\n  }\n\n  open(): void {\n    /**\n     * skip to open if selection is already opened\n     */\n    if (this.selectionOpened) return;\n\n    this._openOverlay();\n\n    this.selectionOpened = true;\n\n    this._removeOptionsSubscription();\n\n    this._subscriptionOptions = this.options.pipe(takeUntilDestroyed(this._destroy)).subscribe((options) => {\n      if (this._groupDirectives.length)\n        this._groupDirectives.forEach((group) => group.render(options as KcGroup<V, K, L>));\n      else if (this._optionsDirectives.length)\n        this._optionsDirectives.forEach((optionDirective, index) =>\n          optionDirective.render(this._getOptions(options as KcOption<V, K, L>[] | KcOption<V, K, L>[][])[index]),\n        );\n    });\n  }\n\n  close(): void {\n    /**\n     * skip to close if selection is already closed\n     */\n    if (!this.selectionOpened) return;\n\n    this._closeOverlay();\n\n    this.selectionOpened = false;\n\n    this._removeOptionsSubscription();\n\n    if (this._groupDirectives.length) this._groupDirectives.forEach((group) => group.clear());\n    else if (this._optionsDirectives.length)\n      this._optionsDirectives.forEach((optionDirective) => optionDirective.clear());\n\n    this.onTouchedNew();\n    /**\n     * mark for check when user try to close from KcSelect token\n     */\n    this._cdr.markForCheck();\n\n    this.closed.emit(this.value);\n    /**\n     * stay focused until user click outside of select\n     */\n    this.elementRef.nativeElement.focus();\n  }\n\n  submit(): void {\n    this.close();\n    this.submitted.emit(this.value);\n    this.clear();\n  }\n\n  keydown(event: KeyboardEvent): void {\n    /**\n     * close modal when user press ESC\n     */\n    if (event.key === 'Escape') this.close();\n  }\n\n  selectAll(): void {\n    this.optionComponents.forEach((option) => option.select());\n  }\n\n  deselectAll(): void {\n    this.optionComponents.forEach((option) => option.deselect());\n  }\n\n  toggle(): void {\n    if (this.allSelected) this.deselectAll();\n    else this.selectAll();\n  }\n\n  clear(): void {\n    this.allSelected = false;\n    this.selection.clear();\n  }\n\n  private _removeOptionsSubscription(): void {\n    if (!this._subscriptionOptions) return;\n\n    this._subscriptionOptions.unsubscribe();\n    this._subscriptionOptions = undefined;\n  }\n\n  private _initSelectionModel(): Subscription {\n    return this._getSelectedOptions\n      .pipe(\n        tap((options) => options && this.selection.set(options)),\n        switchMap(() => this.selection.changed),\n        takeUntilDestroyed(this._destroy),\n      )\n      .subscribe(() => {\n        /**\n         * When the groups are initialized, the selectionModel changes from the AfterContentInit hook\n         * Angular does not expect events to be raised during change detection, so any state change\n         * (such as a form control's 'ng-touched') will cause a changed-after-checked error.\n         */\n        void Promise.resolve().then(() => this._onSelect());\n      });\n  }\n\n  private _updateSelectionModel(): void {\n    if (!this.selection) return;\n\n    this._getSelectedOptions\n      .pipe(\n        tap((options) => {\n          this._subscriptionChanges?.unsubscribe();\n\n          this.selection.clear({ emitEvent: !options?.length });\n          if (options?.length) this.selection.set(options);\n\n          this._subscriptionChanges = this._initSelectionModel();\n        }),\n      )\n      .subscribe();\n  }\n\n  private _getOptions(options: KcOption<V, K, L>[] | KcOption<V, K, L>[][]): KcOption<V, K, L>[][] {\n    if (isOptionChunks(options)) return options;\n\n    return [options];\n  }\n\n  /**\n   * check selected options\n   */\n  private get _getSelectedOptions(): Observable<[K | V, KcOption<V, K, L>][] | undefined> {\n    return this.options.pipe(\n      map((options) => getSelectedOptions(options, this.value)),\n      first(),\n    );\n  }\n\n  private _createObservableOptions(options: KcOption<V, K, L>[] | KcOption<V, K, L>[][] | KcGroup<V, K, L>): void {\n    if (!this._optionsCache) {\n      this._optionsCache = new ReplaySubject();\n      this._options = this._optionsCache;\n    }\n\n    this._optionsCache.next(options);\n  }\n\n  private _openOverlay(): void {\n    const elementRef: ElementRef<HTMLElement> = this.origin?.elementRef || this.elementRef;\n    const minWidth: number = elementRef.nativeElement.offsetWidth;\n\n    const overlayRef = this._overlay.create({\n      scrollStrategy: this._overlay.scrollStrategies.reposition(),\n      positionStrategy: this._getPositionStrategy(elementRef),\n      minWidth,\n      ...this.cdkOverlayConfig,\n    });\n\n    const dialogPortal = new TemplatePortal(this.templateRef, this._viewContainerRef);\n    overlayRef.attach(dialogPortal);\n\n    const originalUpdatePosition = overlayRef.updatePosition.bind(overlayRef);\n    overlayRef.updatePosition = () => {\n      const scrollers: Array<[Element, number, number]> = [];\n      overlayRef.overlayElement.querySelectorAll('*').forEach((el: Element) => {\n        if (el.scrollTop || el.scrollLeft) {\n          scrollers.push([el, el.scrollTop, el.scrollLeft]);\n        }\n      });\n      originalUpdatePosition();\n      for (const [el, top, left] of scrollers) {\n        if (el.scrollTop !== top) el.scrollTop = top;\n        if (el.scrollLeft !== left) el.scrollLeft = left;\n      }\n    };\n\n    overlayRef\n      .outsidePointerEvents()\n      .pipe(takeUntilDestroyed(this._destroy))\n      .subscribe((event) => {\n        const pane = (event.target as HTMLElement)?.closest('.cdk-overlay-pane');\n        if (\n          pane &&\n          (pane === overlayRef.overlayElement ||\n            overlayRef.overlayElement.compareDocumentPosition(pane) & Node.DOCUMENT_POSITION_FOLLOWING)\n        ) {\n          return;\n        }\n        this.close();\n        this._stateChanges.next();\n      });\n\n    /**\n     * trap tab to be inside of modal\n     * for example search\n     */\n    const trap = this._trap.create(overlayRef.overlayElement);\n\n    void trap.focusInitialElementWhenReady().then((successfully) => {\n      if (successfully && trap.attachAnchors()) {\n        const elements = document.querySelectorAll('.cdk-focus-trap-anchor');\n        const first = elements[0];\n        const end = elements[elements.length - 1];\n\n        first.addEventListener('focus', () => {\n          trap.destroy();\n          this.elementRef.nativeElement.focus();\n          this.close();\n        });\n\n        end.addEventListener('focus', () => {\n          trap.destroy();\n          this.elementRef.nativeElement.focus();\n          this.close();\n        });\n      }\n    });\n\n    this._repositionOnScroll(overlayRef);\n    this._dialogOverlayRef = overlayRef;\n  }\n\n  private _repositionOnScroll(overlayRef: OverlayRef): void {\n    const onScroll = (event: Event) => {\n      if (overlayRef.overlayElement?.contains(event.target as Node)) return;\n      overlayRef.updatePosition();\n    };\n    window.addEventListener('scroll', onScroll, { capture: true, passive: true });\n    overlayRef.detachments().subscribe(() => window.removeEventListener('scroll', onScroll, true));\n\n    const origin: HTMLElement = (this.origin?.elementRef || this.elementRef).nativeElement;\n    const scrollParent = this._getScrollParent(origin);\n    if (!scrollParent) return;\n\n    const observer = new IntersectionObserver(([entry]) => !entry.isIntersecting && this.close(), {\n      root: scrollParent,\n    });\n    observer.observe(origin);\n    overlayRef.detachments().subscribe(() => observer.disconnect());\n  }\n\n  private _getScrollParent(node: HTMLElement): HTMLElement | null {\n    for (let el = node.parentElement; el; el = el.parentElement) {\n      const { overflowX, overflowY } = getComputedStyle(el);\n      if (/(auto|scroll|hidden)/.test(overflowX + overflowY)) return el;\n    }\n    return null;\n  }\n\n  private _getPositionStrategy(\n    elementRef: FlexibleConnectedPositionStrategyOrigin,\n  ): FlexibleConnectedPositionStrategy | GlobalPositionStrategy {\n    if (this.dialog) {\n      return this._overlay.position().global().centerHorizontally().centerVertically();\n    }\n\n    const offsetMargin = Math.max(\n      ...this.positions\n        .flatMap(({ offsetX, offsetY }) => [offsetX || 0, offsetY || 0])\n        .map((offset) => Math.abs(offset)),\n    );\n\n    return this._overlay\n      .position()\n      .flexibleConnectedTo(elementRef)\n      .withPush(false)\n      .withViewportMargin(20 + offsetMargin)\n      .withPositions(this.positions);\n  }\n\n  private _closeOverlay(): void {\n    this._dialogOverlayRef!.dispose();\n    this._dialogOverlayRef = undefined;\n  }\n\n  /** Invoked when an option is clicked. */\n  private _onSelect(): void {\n    const valueToEmit = getValues<V, K, L>(this.selection);\n\n    this._value = valueToEmit!;\n    this.onChange(valueToEmit);\n\n    this.allSelected = [...this.optionComponents].every((option) => option.selected);\n    this._allSelectedChanged.next(this.allSelected);\n\n    this._stateChanges.next();\n\n    this._cdr.detectChanges();\n  }\n}\n","<ng-template #valueRef></ng-template>\n\n<ng-template #templateRef>\n  <ng-content></ng-content>\n</ng-template>\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { KcGroupComponent, KcOptionComponent, KcOptionsComponent, KcValueComponent } from './components';\nimport {\n  KcClearDirective,\n  KcCloseDirective,\n  KcDeselectAllDirective,\n  KcGroupDirective,\n  KcOptionDirective,\n  KcOptionsDirective,\n  KcOriginDirective,\n  KcSelectAllDirective,\n  KcSubmitDirective,\n  KcToggleDirective,\n  KcValueDirective,\n} from './directives';\nimport { KcSelectComponent } from './kc-select.component';\n\nconst components = [KcSelectComponent, KcValueComponent, KcGroupComponent, KcOptionsComponent, KcOptionComponent];\n\nconst directives = [\n  KcValueDirective,\n  KcGroupDirective,\n  KcOptionsDirective,\n  KcOptionDirective,\n  KcCloseDirective,\n  KcSelectAllDirective,\n  KcDeselectAllDirective,\n  KcToggleDirective,\n  KcClearDirective,\n  KcSubmitDirective,\n  KcOriginDirective,\n];\n\n@NgModule({\n  declarations: [...components, ...directives],\n  imports: [CommonModule, OverlayModule],\n  exports: [...components, ...directives],\n})\nexport class KcSelectModule {}\n","/**\n * options type for input options\n */\n// TODO: move K to be second generic and put default to unknown\n\nimport { MapEmitSelect } from '../helpers';\n\n// because key is optional\nexport interface KcOption<V, K = V, L = string> {\n  value: V;\n  key?: K;\n  label?: L;\n  compareFn?: (selectedOption: V | KcOptionGroupValue<V>, currentOption: V) => boolean;\n}\n\nexport type KcGroup<V, K = V, L = string> = {\n  [K: string]: KcGroup<V, K, L> | OptionGroup<V, K, L>;\n};\n\nexport interface OptionGroup<V, K = V, L = string> {\n  value: KcOption<V, K, L>[] | KcOption<V, K, L>[][];\n  label?: string;\n}\n\n/**\n * options type for output options\n */\nexport type KcOptionValue<V> = V | V[];\n\nexport type KcOptionGroupValue<V> = {\n  [K: string]: KcOptionValue<V> | KcOptionGroupValue<V>;\n};\n\n/**\n * options for internal structure\n */\nexport type KcOptionSelection<V, K, L> = MapEmitSelect<\n  KcOption<V, K, L> | KcOptionSelection<V, K, L>,\n  string | V | K,\n  boolean\n>;\n","/*\n * Public API Surface of select\n */\nexport * from './lib/components';\nexport * from './lib/directives';\nexport * from './lib/helpers';\nexport * from './lib/kc-select.component';\nexport * from './lib/kc-select.module';\nexport * from './lib/tokens';\nexport * from './lib/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}