{"version":3,"file":"ngx-bootstrap-multiselect.mjs","sources":["../../../projects/ngx-bootstrap-multiselect/src/lib/search-filter.pipe.ts","../../../projects/ngx-bootstrap-multiselect/src/lib/autofocus.directive.ts","../../../projects/ngx-bootstrap-multiselect/src/lib/off-click.directive.ts","../../../projects/ngx-bootstrap-multiselect/src/lib/ngx-bootstrap-multiselect.component.ts","../../../projects/ngx-bootstrap-multiselect/src/lib/ngx-bootstrap-multiselect.component.html","../../../projects/ngx-bootstrap-multiselect/src/lib/ngx-bootstrap-multiselect.module.ts","../../../projects/ngx-bootstrap-multiselect/src/public-api.ts","../../../projects/ngx-bootstrap-multiselect/src/ngx-bootstrap-multiselect.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { IMultiSelectOption } from './types';\n\ninterface StringHashMap<T> {\n  [k: string]: T;\n}\n\n@Pipe({\n  name: 'searchFilter'\n})\nexport class MultiSelectSearchFilter implements PipeTransform {\n\n  private _lastOptions: IMultiSelectOption[];\n  private _searchCache: StringHashMap<IMultiSelectOption[]> = {};\n  private _searchCacheInclusive: StringHashMap<boolean | number> = {};\n  private _prevSkippedItems: StringHashMap<number> = {};\n\n  transform(\n    options: IMultiSelectOption[],\n    str = '',\n    limit = 0,\n    renderLimit = 0,\n    searchFunction: (str: string) => RegExp,\n  ): IMultiSelectOption[] {\n    str = str.toLowerCase();\n\n    // Drop cache because options were updated\n    if (options !== this._lastOptions) {\n      this._lastOptions = options;\n      this._searchCache = {};\n      this._searchCacheInclusive = {};\n      this._prevSkippedItems = {};\n    }\n\n    const filteredOpts = this._searchCache.hasOwnProperty(str)\n      ? this._searchCache[str]\n      : this._doSearch(options, str, limit, searchFunction);\n\n    const isUnderLimit = options.length <= limit;\n\n    return isUnderLimit\n      ? filteredOpts\n      : this._limitRenderedItems(filteredOpts, renderLimit);\n  }\n\n  private _getSubsetOptions(\n    options: IMultiSelectOption[],\n    prevOptions: IMultiSelectOption[],\n    prevSearchStr: string\n  ) {\n    const prevInclusiveOrIdx = this._searchCacheInclusive[prevSearchStr];\n\n    if (prevInclusiveOrIdx === true) {\n      // If have previous results and it was inclusive, do only subsearch\n      return prevOptions;\n    } else if (typeof prevInclusiveOrIdx === 'number') {\n      // Or reuse prev results with unchecked ones\n      return [...prevOptions, ...options.slice(prevInclusiveOrIdx)];\n    }\n\n    return options;\n  }\n\n  private _doSearch(options: IMultiSelectOption[], str: string, limit: number, searchFunction: (str: string) => RegExp) {\n    const prevStr = str.slice(0, -1);\n    const prevResults = this._searchCache[prevStr];\n    const prevResultShift = this._prevSkippedItems[prevStr] || 0;\n\n    if (prevResults) {\n      options = this._getSubsetOptions(options, prevResults, prevStr);\n    }\n\n    const optsLength = options.length;\n    const maxFound = limit > 0 ? Math.min(limit, optsLength) : optsLength;\n    const regexp = searchFunction(str);\n    const filteredOpts: IMultiSelectOption[] = [];\n\n    let i = 0, founded = 0, removedFromPrevResult = 0;\n\n    const doesOptionMatch = (option: IMultiSelectOption) => regexp.test(option.name);\n    const getChildren = (option: IMultiSelectOption) =>\n      options.filter(child => child.parentId === option.id);\n    const getParent = (option: IMultiSelectOption) =>\n      options.find(parent => option.parentId === parent.id);\n    const foundFn = (item: any) => { filteredOpts.push(item); founded++; };\n    const notFoundFn = prevResults ? () => removedFromPrevResult++ : () => { };\n\n    for (; i < optsLength && founded < maxFound; ++i) {\n      const option = options[i];\n      const directMatch = doesOptionMatch(option);\n\n      if (directMatch) {\n        foundFn(option);\n        continue;\n      }\n\n      if (typeof option.parentId === 'undefined') {\n        const childrenMatch = getChildren(option).some(doesOptionMatch);\n\n        if (childrenMatch) {\n          foundFn(option);\n          continue;\n        }\n      }\n\n      if (typeof option.parentId !== 'undefined') {\n        const parentMatch = doesOptionMatch(getParent(option));\n\n        if (parentMatch) {\n          foundFn(option);\n          continue;\n        }\n      }\n\n      notFoundFn();\n    }\n\n    const totalIterations = i + prevResultShift;\n\n    this._searchCache[str] = filteredOpts;\n    this._searchCacheInclusive[str] = i === optsLength || totalIterations;\n    this._prevSkippedItems[str] = removedFromPrevResult + prevResultShift;\n\n    return filteredOpts;\n  }\n\n  private _limitRenderedItems<T>(items: T[], limit: number): T[] {\n    return items.length > limit && limit > 0 ? items.slice(0, limit) : items;\n  }\n}\n","import { Directive, ElementRef, Host, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\n\n@Directive({\n  selector: '[ssAutofocus]'\n})\nexport class AutofocusDirective implements OnInit, OnChanges {\n\n  /**\n   * Will set focus if set to falsy value or not set at all\n   */\n  @Input() ssAutofocus: boolean;\n\n  get element(): { focus?: Function } {\n    return this.elemRef.nativeElement;\n  }\n\n  constructor(\n    @Host() private elemRef: ElementRef,\n  ) { }\n\n  ngOnInit() {\n    this.focus();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const ssAutofocusChange = changes.ssAutofocus;\n\n    if (ssAutofocusChange && !ssAutofocusChange.isFirstChange()) {\n      this.focus();\n    }\n  }\n\n  focus() {\n    if (this.ssAutofocus) {\n      return;\n    }\n\n    this.element.focus && this.element.focus();\n  }\n\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { EventEmitter } from '@angular/core';\nimport { Output } from '@angular/core';\n\n@Directive({\n  // tslint:disable-next-line:directive-selector\n  selector: '[offClick]',\n})\n\nexport class OffClickDirective {\n  @Output('offClick') onOffClick = new EventEmitter<any>();\n\n  private _clickEvent: MouseEvent;\n  private _touchEvent: TouchEvent;\n\n  @HostListener('click', ['$event']) \n  public onClick(event: MouseEvent): void {\n    this._clickEvent = event;\n  }\n\n  @HostListener('touchstart', ['$event'])\n  public onTouch(event: TouchEvent): void {\n    this._touchEvent = event;\n  }\n\n  @HostListener('document:click', ['$event']) \n  public onDocumentClick(event: MouseEvent): void {\n    if (event !== this._clickEvent) {\n      this.onOffClick.emit(event);\n    }\n  }\n\n  @HostListener('document:touchstart', ['$event'])\n  public onDocumentTouch(event: TouchEvent): void {\n    if (event !== this._touchEvent) {\n      this.onOffClick.emit(event);\n    }\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  DoCheck,\n  EventEmitter,\n  forwardRef,\n  Input,\n  IterableDiffers,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n} from '@angular/core';\n\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  FormBuilder,\n  FormControl,\n  NG_VALUE_ACCESSOR,\n  Validator,\n} from '@angular/forms';\n\nimport { takeUntil } from 'rxjs/operators';\nimport { MultiSelectSearchFilter } from './search-filter.pipe';\nimport { IMultiSelectOption, IMultiSelectSettings, IMultiSelectTexts, } from './types';\nimport { Subject, Observable } from 'rxjs';\n\nconst MULTISELECT_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => NgxDropdownMultiselectComponent),\n  multi: true,\n};\n\n// tslint:disable-next-line: no-conflicting-lifecycle\n@Component({\n  selector: 'ngx-bootstrap-multiselect',\n  templateUrl: './ngx-bootstrap-multiselect.component.html',\n  styleUrls: ['./ngx-bootstrap-multiselect.component.css'],\n  providers: [MULTISELECT_VALUE_ACCESSOR, MultiSelectSearchFilter],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgxDropdownMultiselectComponent implements OnInit,\n  OnChanges,\n  DoCheck,\n  OnDestroy,\n  ControlValueAccessor,\n  Validator {\n\n  private localIsVisible = false;\n  private workerDocClicked = false;\n\n  filterControl: FormControl = this.fb.control('');\n\n  @Input() options: Array<IMultiSelectOption>;\n  @Input() settings: IMultiSelectSettings;\n  @Input() texts: IMultiSelectTexts;\n  @Input() disabled = false;\n  @Input() disabledSelection = false;\n  @Input() searchFunction: (str: string) => RegExp = this._escapeRegExp;\n\n  @Output() selectionLimitReached = new EventEmitter();\n  @Output() dropdownClosed = new EventEmitter();\n  @Output() dropdownOpened = new EventEmitter();\n  @Output() added = new EventEmitter();\n  @Output() removed = new EventEmitter();\n  @Output() lazyLoad = new EventEmitter();\n  @Output() filter: Observable<string> = this.filterControl.valueChanges;\n\n  get focusBack(): boolean {\n    return this.settings.focusBack && this._focusBack;\n  }\n\n  destroyed$ = new Subject<void>();\n\n  filteredOptions: IMultiSelectOption[] = [];\n  lazyLoadOptions: IMultiSelectOption[] = [];\n  renderFilteredOptions: IMultiSelectOption[] = [];\n  model: any[] = [];\n  prevModel: any[] = [];\n  parents: any[];\n  title: string;\n  differ: any;\n  numSelected = 0;\n  set isVisible(val: boolean) {\n    this.localIsVisible = val;\n    this.workerDocClicked = val ? false : this.workerDocClicked;\n  }\n  get isVisible(): boolean {\n    return this.localIsVisible;\n  }\n  renderItems = true;\n  checkAllSearchRegister = new Set();\n  checkAllStatus = false;\n  loadedValueIds = [];\n  _focusBack = false;\n  focusedItem: IMultiSelectOption | undefined;\n\n  defaultSettings: IMultiSelectSettings = {\n    closeOnClickOutside: true,\n    pullRight: false,\n    enableSearch: false,\n    searchRenderLimit: 0,\n    searchRenderAfter: 1,\n    searchMaxLimit: 0,\n    searchMaxRenderedItems: 0,\n    checkedStyle: 'checkboxes',\n    buttonClasses: 'btn btn-primary dropdown-toggle',\n    containerClasses: 'dropdown-inline',\n    selectionLimit: 0,\n    minSelectionLimit: 0,\n    closeOnSelect: false,\n    autoUnselect: false,\n    showCheckAll: false,\n    showUncheckAll: false,\n    fixedTitle: false,\n    dynamicTitleMaxItems: 3,\n    maxHeight: '300px',\n    isLazyLoad: false,\n    stopScrollPropagation: false,\n    loadViewDistance: 1,\n    selectAddedValues: false,\n    ignoreLabels: false,\n    maintainSelectionOrderInTitle: false,\n    focusBack: true\n  };\n  defaultTexts: IMultiSelectTexts = {\n    checkAll: 'Select all',\n    uncheckAll: 'Unselect all',\n    checked: 'selected',\n    checkedPlural: 'selected',\n    searchPlaceholder: 'Search...',\n    searchEmptyResult: 'Nothing found...',\n    searchNoRenderText: 'Type in search box to see results...',\n    defaultTitle: 'Select',\n    allSelected: 'All selected',\n  };\n\n  get searchLimit(): number | undefined {\n    return this.settings.searchRenderLimit;\n  }\n\n  get searchRenderAfter(): number | undefined {\n    return this.settings.searchRenderAfter;\n  }\n\n  get searchLimitApplied(): boolean {\n    return this.searchLimit > 0 && this.options.length > this.searchLimit;\n  }\n\n  constructor(\n    private fb: FormBuilder,\n    private searchFilter: MultiSelectSearchFilter,\n    differs: IterableDiffers,\n    private cdRef: ChangeDetectorRef\n  ) {\n    this.differ = differs.find([]).create(null);\n    this.settings = this.defaultSettings;\n    this.texts = this.defaultTexts;\n  }\n\n  clickedOutside(): void {\n    if (!this.isVisible || !this.settings.closeOnClickOutside) { return; }\n\n    this.isVisible = false;\n    this._focusBack = true;\n    this.dropdownClosed.emit();\n  }\n\n  getItemStyle(option: IMultiSelectOption): any {\n    const style = {};\n    if (!option.isLabel) {\n      style['cursor'] = 'pointer';\n    }\n    if (option.disabled) {\n      style['cursor'] = 'default';\n    }\n  }\n\n  getItemStyleSelectionDisabled(): any {\n    if (this.disabledSelection) {\n      return { cursor: 'default' };\n    }\n  }\n\n  ngOnInit(): void {\n    this.title = this.texts.defaultTitle || '';\n\n    this.filterControl.valueChanges.pipe(takeUntil(this.destroyed$)).subscribe(() => {\n      this.updateRenderItems();\n      if (this.settings.isLazyLoad) {\n        this.load();\n      }\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['options']) {\n      this.options = this.options || [];\n      this.parents = this.options\n        .filter(option => typeof option.parentId === 'number')\n        .map(option => option.parentId);\n      this.updateRenderItems();\n\n      if (\n        this.settings.isLazyLoad &&\n        this.settings.selectAddedValues &&\n        this.loadedValueIds.length === 0\n      ) {\n        this.loadedValueIds = this.loadedValueIds.concat(\n          changes.options.currentValue.map(value => value.id)\n        );\n      }\n      if (\n        this.settings.isLazyLoad &&\n        this.settings.selectAddedValues &&\n        changes.options.previousValue\n      ) {\n        const addedValues = changes.options.currentValue.filter(\n          value => this.loadedValueIds.indexOf(value.id) === -1\n        );\n        this.loadedValueIds.concat(addedValues.map(value => value.id));\n        if (this.checkAllStatus) {\n          this.addChecks(addedValues);\n        } else if (this.checkAllSearchRegister.size > 0) {\n          this.checkAllSearchRegister.forEach((searchValue: string) =>\n            this.addChecks(this.applyFilters(addedValues, searchValue))\n          );\n        }\n      }\n\n      if (this.texts) {\n        this.updateTitle();\n      }\n\n      this.fireModelChange();\n    }\n\n    if (changes['settings']) {\n      this.settings = { ...this.defaultSettings, ...this.settings };\n    }\n\n    if (changes['texts']) {\n      this.texts = { ...this.defaultTexts, ...this.texts };\n      if (!changes['texts'].isFirstChange()) { this.updateTitle(); }\n    }\n  }\n\n  ngOnDestroy() {\n    this.destroyed$.next();\n  }\n\n  updateRenderItems() {\n    this.renderItems =\n      !this.searchLimitApplied ||\n      this.filterControl.value.length >= this.searchRenderAfter;\n    this.filteredOptions = this.applyFilters(\n      this.options,\n      this.settings.isLazyLoad ? '' : this.filterControl.value\n    );\n    this.renderFilteredOptions = this.renderItems ? this.filteredOptions : [];\n    this.focusedItem = undefined;\n  }\n\n  applyFilters(options: IMultiSelectOption[], value: string): IMultiSelectOption[] {\n    return this.searchFilter.transform(\n      options,\n      value,\n      this.settings.searchMaxLimit,\n      this.settings.searchMaxRenderedItems,\n      this.searchFunction\n    );\n  }\n\n  fireModelChange(): void {\n    if (this.model != this.prevModel) {\n      this.prevModel = this.model;\n      this.onModelChange(this.model);\n      this.onModelTouched();\n      this.cdRef.markForCheck();\n    }\n  }\n\n  onModelChange: Function = (_: any) => { };\n  onModelTouched: Function = () => { };\n\n  writeValue(value: any): void {\n    if (value !== undefined && value !== null) {\n      this.model = Array.isArray(value) ? value : [value];\n      this.ngDoCheck();\n    } else {\n      this.model = [];\n    }\n  }\n\n  registerOnChange(fn: Function): void {\n    this.onModelChange = fn;\n  }\n\n  registerOnTouched(fn: Function): void {\n    this.onModelTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n  }\n\n  ngDoCheck() {\n    const changes = this.differ.diff(this.model);\n    if (changes) {\n      this.updateNumSelected();\n      this.updateTitle();\n    }\n  }\n\n  validate(_c: AbstractControl): { [key: string]: any } {\n    if (this.model && this.model.length) {\n      return {\n        required: {\n          valid: false\n        }\n      };\n    }\n\n    if (this.options.filter(o => this.model.indexOf(o.id) && !o.disabled).length === 0) {\n      return {\n        selection: {\n          valid: false\n        }\n      };\n    }\n\n    return null;\n  }\n\n  registerOnValidatorChange(_fn: () => void): void {\n    throw new Error('Method not implemented.');\n  }\n\n  clearSearch(event: Event) {\n    this.maybeStopPropagation(event);\n    this.filterControl.setValue('');\n  }\n\n  toggleDropdown(e?: Event) {\n    if (this.isVisible) {\n      this._focusBack = true;\n    }\n\n    this.isVisible = !this.isVisible;\n    this.isVisible ? this.dropdownOpened.emit() : this.dropdownClosed.emit();\n    this.focusedItem = undefined;\n  }\n\n  closeDropdown(e?: Event) {\n    this.isVisible = true;\n    this.toggleDropdown(e);\n  }\n\n  isSelected(option: IMultiSelectOption): boolean {\n    return this.model && this.model.indexOf(option.id) > -1;\n  }\n\n  setSelected(_event: Event, option: IMultiSelectOption) {\n    if (option.isLabel) {\n      return;\n    }\n\n    if (option.disabled) {\n      return;\n    }\n\n    if (this.disabledSelection) {\n      return;\n    }\n\n    setTimeout(() => {\n      this.maybeStopPropagation(_event);\n      this.maybePreventDefault(_event);\n      const index = this.model.indexOf(option.id);\n      const isAtSelectionLimit =\n        this.settings.selectionLimit > 0 &&\n        this.model.length >= this.settings.selectionLimit;\n      const removeItem = (idx, id): void => {\n        this.model.splice(idx, 1);\n        this.removed.emit(id);\n        if (\n          this.settings.isLazyLoad &&\n          this.lazyLoadOptions.some(val => val.id === id)\n        ) {\n          this.lazyLoadOptions.splice(\n            this.lazyLoadOptions.indexOf(\n              this.lazyLoadOptions.find(val => val.id === id)\n            ),\n            1\n          );\n        }\n      };\n\n      if (index > -1) {\n        if (\n          this.settings.minSelectionLimit === undefined ||\n          this.numSelected > this.settings.minSelectionLimit\n        ) {\n          removeItem(index, option.id);\n        }\n        const parentIndex =\n          option.parentId && this.model.indexOf(option.parentId);\n        if (parentIndex > -1) {\n          removeItem(parentIndex, option.parentId);\n        } else if (this.parents.indexOf(option.id) > -1) {\n          this.options\n            .filter(\n              child =>\n                this.model.indexOf(child.id) > -1 &&\n                child.parentId === option.id\n            )\n            .forEach(child =>\n              removeItem(this.model.indexOf(child.id), child.id)\n            );\n        }\n      } else if (isAtSelectionLimit && !this.settings.autoUnselect) {\n        this.selectionLimitReached.emit(this.model.length);\n        return;\n      } else {\n        const addItem = (id): void => {\n          this.model.push(id);\n          this.added.emit(id);\n          if (\n            this.settings.isLazyLoad &&\n            !this.lazyLoadOptions.some(val => val.id === id)\n          ) {\n            this.lazyLoadOptions.push(option);\n          }\n        };\n\n        addItem(option.id);\n        if (!isAtSelectionLimit) {\n          if (option.parentId && !this.settings.ignoreLabels) {\n            const children = this.options.filter(\n              child =>\n                child.id !== option.id && child.parentId === option.parentId\n            );\n            if (children.every(child => this.model.indexOf(child.id) > -1)) {\n              addItem(option.parentId);\n            }\n          } else if (this.parents.indexOf(option.id) > -1) {\n            const children = this.options.filter(\n              child =>\n                this.model.indexOf(child.id) < 0 && child.parentId === option.id\n            );\n            children.forEach(child => addItem(child.id));\n          }\n        } else {\n          removeItem(0, this.model[0]);\n        }\n      }\n      if (this.settings.closeOnSelect) {\n        this.toggleDropdown();\n      }\n      this.model = this.model.slice();\n      this.fireModelChange();\n\n    }, 0)\n  }\n\n  updateNumSelected() {\n    this.numSelected =\n      this.model.filter(id => this.parents.indexOf(id) < 0).length || 0;\n  }\n\n  updateTitle() {\n    let numSelectedOptions = this.options.length;\n    if (this.settings.ignoreLabels) {\n      numSelectedOptions = this.options.filter(\n        (option: IMultiSelectOption) => !option.isLabel\n      ).length;\n    }\n    if (this.numSelected === 0 || this.settings.fixedTitle) {\n      this.title = this.texts ? this.texts.defaultTitle : '';\n    } else if (\n      this.settings.displayAllSelectedText &&\n      this.model.length === numSelectedOptions\n    ) {\n      this.title = this.texts ? this.texts.allSelected : '';\n    } else if (\n      this.settings.dynamicTitleMaxItems &&\n      this.settings.dynamicTitleMaxItems >= this.numSelected\n    ) {\n      const useOptions =\n        this.settings.isLazyLoad && this.lazyLoadOptions.length\n          ? this.lazyLoadOptions\n          : this.options;\n\n      let titleSelections: Array<IMultiSelectOption>;\n\n      if (this.settings.maintainSelectionOrderInTitle) {\n        const optionIds = useOptions.map((selectOption: IMultiSelectOption, idx: number) => selectOption.id);\n        titleSelections = this.model\n          .map((selectedId) => optionIds.indexOf(selectedId))\n          .filter((optionIndex) => optionIndex > -1)\n          .map((optionIndex) => useOptions[optionIndex]);\n      } else {\n        titleSelections = useOptions.filter((option: IMultiSelectOption) => this.model.indexOf(option.id) > -1);\n      }\n\n      this.title = titleSelections.map((option: IMultiSelectOption) => option.name).join(', ');\n    } else {\n      this.title =\n        this.numSelected +\n        ' ' +\n        (this.numSelected === 1\n          ? this.texts.checked\n          : this.texts.checkedPlural);\n    }\n    this.cdRef.markForCheck();\n  }\n\n  searchFilterApplied() {\n    return (\n      this.settings.enableSearch &&\n      this.filterControl.value &&\n      this.filterControl.value.length > 0\n    );\n  }\n\n  addChecks(options) {\n    const checkedOptions = options\n      .filter((option: IMultiSelectOption) => {\n        if (\n          !option.disabled &&\n          (\n            this.model.indexOf(option.id) === -1 &&\n            !(this.settings.ignoreLabels && option.isLabel)\n          )\n        ) {\n          this.added.emit(option.id);\n          return true;\n        }\n        return false;\n      })\n      .map((option: IMultiSelectOption) => option.id);\n\n    this.model = this.model.concat(checkedOptions);\n  }\n\n  checkAll(): void {\n    if (!this.disabledSelection) {\n      this.addChecks(\n        !this.searchFilterApplied() ? this.options : this.filteredOptions\n      );\n      if (this.settings.isLazyLoad && this.settings.selectAddedValues) {\n        if (this.searchFilterApplied() && !this.checkAllStatus) {\n          this.checkAllSearchRegister.add(this.filterControl.value);\n        } else {\n          this.checkAllSearchRegister.clear();\n          this.checkAllStatus = true;\n        }\n        this.load();\n      }\n      this.fireModelChange();\n    }\n  }\n\n  uncheckAll(): void {\n    if (!this.disabledSelection) {\n      const checkedOptions = this.model;\n      let unCheckedOptions = !this.searchFilterApplied()\n        ? this.model\n        : this.filteredOptions.map((option: IMultiSelectOption) => option.id);\n      // set unchecked options only to the ones that were checked\n      unCheckedOptions = checkedOptions.filter(item => unCheckedOptions.indexOf(item) > -1);\n      this.model = this.model.filter((id: number) => {\n        if (\n          (unCheckedOptions.indexOf(id) < 0 &&\n            this.settings.minSelectionLimit === undefined) ||\n          unCheckedOptions.indexOf(id) < this.settings.minSelectionLimit\n        ) {\n          return true;\n        } else {\n          this.removed.emit(id);\n          return false;\n        }\n      });\n      if (this.settings.isLazyLoad && this.settings.selectAddedValues) {\n        if (this.searchFilterApplied()) {\n          if (this.checkAllSearchRegister.has(this.filterControl.value)) {\n            this.checkAllSearchRegister.delete(this.filterControl.value);\n            this.checkAllSearchRegister.forEach(function(searchTerm) {\n              const filterOptions = this.applyFilters(this.options.filter(option => unCheckedOptions.indexOf(option.id) > -1), searchTerm);\n              this.addChecks(filterOptions);\n            });\n          }\n        } else {\n          this.checkAllSearchRegister.clear();\n          this.checkAllStatus = false;\n        }\n        this.load();\n      }\n      this.fireModelChange();\n    }\n  }\n\n  preventCheckboxCheck(event: Event, option: IMultiSelectOption): void {\n    if (\n      option.disabled ||\n      (\n        this.settings.selectionLimit &&\n        !this.settings.autoUnselect &&\n        this.model.length >= this.settings.selectionLimit &&\n        this.model.indexOf(option.id) === -1 &&\n        this.maybePreventDefault(event)\n      )\n    ) {\n      this.maybePreventDefault(event);\n    }\n  }\n\n  isCheckboxDisabled(option?: IMultiSelectOption): boolean {\n    return this.disabledSelection || option && option.disabled;\n  }\n\n  checkScrollPosition(ev): void {\n    const scrollTop = ev.target.scrollTop;\n    const scrollHeight = ev.target.scrollHeight;\n    const scrollElementHeight = ev.target.clientHeight;\n    const roundingPixel = 1;\n    const gutterPixel = 1;\n\n    if (\n      scrollTop >=\n      scrollHeight -\n      (1 + this.settings.loadViewDistance) * scrollElementHeight -\n      roundingPixel -\n      gutterPixel\n    ) {\n      this.load();\n    }\n  }\n\n  checkScrollPropagation(ev, element): void {\n    const scrollTop = element.scrollTop;\n    const scrollHeight = element.scrollHeight;\n    const scrollElementHeight = element.clientHeight;\n\n    if (\n      (ev.deltaY > 0 && scrollTop + scrollElementHeight >= scrollHeight) ||\n      (ev.deltaY < 0 && scrollTop <= 0)\n    ) {\n      ev = ev || window.event;\n      this.maybePreventDefault(ev);\n      ev.returnValue = false;\n    }\n  }\n\n  trackById(idx: number, selectOption: IMultiSelectOption): void {\n    return selectOption.id;\n  }\n\n  load(): void {\n    this.lazyLoad.emit({\n      length: this.options.length,\n      filter: this.filterControl.value,\n      checkAllSearches: this.checkAllSearchRegister,\n      checkAllStatus: this.checkAllStatus,\n    });\n  }\n\n  focusItem(dir: number, e?: Event): void {\n    if (!this.isVisible) {\n      return;\n    }\n\n    this.maybePreventDefault(e);\n\n    const idx = this.filteredOptions.indexOf(this.focusedItem);\n\n    if (idx === -1) {\n      this.focusedItem = this.filteredOptions[0];\n      return;\n    }\n\n    const nextIdx = idx + dir;\n    const newIdx =\n      nextIdx < 0\n        ? this.filteredOptions.length - 1\n        : nextIdx % this.filteredOptions.length;\n\n    this.focusedItem = this.filteredOptions[newIdx];\n  }\n\n  private maybePreventDefault(e?: Event): void {\n    if (e && e.preventDefault) {\n      e.preventDefault();\n    }\n  }\n\n  private maybeStopPropagation(e?: Event): void {\n    if (e && e.stopPropagation) {\n      e.stopPropagation();\n    }\n  }\n\n  private _escapeRegExp(str: string): RegExp {\n    const regExpStr = str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n    return new RegExp(regExpStr, 'i');\n  }\n}\n","<div *ngIf=\"options\" class=\"dropdown\" [ngClass]=\"settings.containerClasses\" [class.open]=\"isVisible\" (offClick)=\"clickedOutside()\">\n  <button type=\"button\" class=\"dropdown-toggle\" [ngClass]=\"settings.buttonClasses\" (click)=\"toggleDropdown($event)\" [disabled]=\"disabled\"\n    [ssAutofocus]=\"!focusBack\">\n    {{ title }}\n    <span class=\"caret\"></span>\n  </button>\n  <div #scroller *ngIf=\"isVisible\" class=\"dropdown-menu\" [ngClass]=\"{'chunkydropdown-menu': settings.checkedStyle == 'visual' }\"\n    (scroll)=\"settings.isLazyLoad ? checkScrollPosition($event) : null\" (wheel)=\"settings.stopScrollPropagation ? checkScrollPropagation($event, scroller) : null\"\n    [class.pull-right]=\"settings.pullRight\" [class.dropdown-menu-right]=\"settings.pullRight\" [style.max-height]=\"settings.maxHeight\"\n    style=\"display: block; height: auto; overflow-y: auto;\" (keydown.tab)=\"focusItem(1, $event)\" (keydown.shift.tab)=\"focusItem(-1, $event)\">\n    <div class=\"input-group search-container\" *ngIf=\"settings.enableSearch && (renderFilteredOptions.length > 1 || filterControl.value.length > 0)\">\n      <div class=\"input-group-prepend\">\n        <span class=\"input-group-text\" id=\"basic-addon1\">\n          <i class=\"fa fa-search\" aria-hidden=\"true\"></i>\n        </span>\n      </div>\n      <input type=\"text\" class=\"form-control\" [ssAutofocus] [formControl]=\"filterControl\" [placeholder]=\"texts.searchPlaceholder\"\n        class=\"form-control\">\n      <div class=\"input-group-append\" *ngIf=\"filterControl.value.length>0\">\n        <button class=\"btn btn-default btn-secondary\" type=\"button\" (click)=\"clearSearch($event)\">\n          <i class=\"fa fa-times\"></i>\n        </button>\n      </div>\n    </div>\n    <a role=\"menuitem\" href=\"javascript:;\" tabindex=\"-1\" class=\"dropdown-item check-control check-control-check\" *ngIf=\"settings.showCheckAll && !disabledSelection && renderFilteredOptions.length > 1\"\n      (click)=\"checkAll()\">\n      <span style=\"width: 16px;\"><span [ngClass]=\"{'glyphicon glyphicon-ok': settings.checkedStyle !== 'fontawesome','fa fa-check': settings.checkedStyle === 'fontawesome'}\"></span></span>\n      {{ texts.checkAll }}\n    </a>\n    <a role=\"menuitem\" href=\"javascript:;\" tabindex=\"-1\" class=\"dropdown-item check-control check-control-uncheck\" *ngIf=\"settings.showUncheckAll && !disabledSelection && renderFilteredOptions.length > 1\"\n      (click)=\"uncheckAll()\">\n      <span style=\"width: 16px;\"><span [ngClass]=\"{'glyphicon glyphicon-remove': settings.checkedStyle !== 'fontawesome','fa fa-times': settings.checkedStyle === 'fontawesome'}\"></span></span>\n      {{ texts.uncheckAll }}\n    </a>\n    <a *ngIf=\"settings.showCheckAll || settings.showUncheckAll\" href=\"javascript:;\" class=\"dropdown-divider divider\"></a>\n    <a *ngIf=\"!renderItems\" href=\"javascript:;\" class=\"dropdown-item empty\">{{ texts.searchNoRenderText }}</a>\n    <a *ngIf=\"renderItems && !renderFilteredOptions.length\" href=\"javascript:;\" class=\"dropdown-item empty\">{{ texts.searchEmptyResult }}</a>\n    <a class=\"dropdown-item\" href=\"javascript:;\" *ngFor=\"let option of renderFilteredOptions; trackBy: trackById\" [class.active]=\"isSelected(option)\"\n      [ngStyle]=\"getItemStyle(option)\" [ngClass]=\"option.classes\" [class.dropdown-header]=\"option.isLabel\" [ssAutofocus]=\"option !== focusedItem\"\n      tabindex=\"-1\" (click)=\"setSelected($event, option)\" (keydown.space)=\"setSelected($event, option)\" (keydown.enter)=\"setSelected($event, option)\">\n      <span *ngIf=\"!option.isLabel; else label\" role=\"menuitem\" tabindex=\"-1\" [style.padding-left]=\"this.parents.length>0&&this.parents.indexOf(option.id)<0&&'30px'\"\n        [ngStyle]=\"getItemStyleSelectionDisabled()\">\n        <ng-container [ngSwitch]=\"settings.checkedStyle\">\n          <input *ngSwitchCase=\"'checkboxes'\" type=\"checkbox\" [checked]=\"isSelected(option)\" (click)=\"preventCheckboxCheck($event, option)\"\n            [disabled]=\"isCheckboxDisabled(option)\" [ngStyle]=\"getItemStyleSelectionDisabled()\" />\n          <span *ngSwitchCase=\"'glyphicon'\" style=\"width: 16px;\" class=\"glyphicon\" [class.glyphicon-ok]=\"isSelected(option)\" [class.glyphicon-lock]=\"isCheckboxDisabled(option)\"></span>\n          <span *ngSwitchCase=\"'fontawesome'\" style=\"width: 16px;display: inline-block;\">\n            <span *ngIf=\"isSelected(option)\"><i class=\"fa fa-check\" aria-hidden=\"true\"></i></span>\n            <span *ngIf=\"isCheckboxDisabled(option)\"><i class=\"fa fa-lock\" aria-hidden=\"true\"></i></span>\n          </span>\n          <span *ngSwitchCase=\"'visual'\" style=\"display:block;float:left; border-radius: 0.2em; border: 0.1em solid rgba(44, 44, 44, 0.63);background:rgba(0, 0, 0, 0.1);width: 5.5em;\">\n            <div class=\"slider\" [ngClass]=\"{'slideron': isSelected(option)}\">\n              <img *ngIf=\"option.image != null\" [src]=\"option.image\" style=\"height: 100%; width: 100%; object-fit: contain\" />\n              <div *ngIf=\"option.image == null\" style=\"height: 100%; width: 100%;text-align: center; display: table; background-color:rgba(0, 0, 0, 0.74)\">\n                <div class=\"content_wrapper\">\n                  <span style=\"font-size:3em;color:white\" class=\"glyphicon glyphicon-eye-close\"></span>\n                </div>\n              </div>\n            </div>\n          </span>\n        </ng-container>\n        <span [ngClass]=\"{'chunkyrow': settings.checkedStyle == 'visual' }\" [class.disabled]=\"isCheckboxDisabled(option)\" [ngClass]=\"settings.itemClasses\"\n          [style.font-weight]=\"this.parents.indexOf(option.id)>=0?'bold':'normal'\">\n          {{ option.name }}\n        </span>\n      </span>\n      <ng-template #label>\n        <span [class.disabled]=\"isCheckboxDisabled(option)\">{{ option.name }}</span>\n      </ng-template>\n    </a>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { NgxDropdownMultiselectComponent } from './ngx-bootstrap-multiselect.component';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MultiSelectSearchFilter } from './search-filter.pipe';\nimport { AutofocusDirective } from './autofocus.directive';\nimport { OffClickDirective } from './off-click.directive';\n\n@NgModule({\n  declarations: [\n    NgxDropdownMultiselectComponent,\n    MultiSelectSearchFilter,\n    AutofocusDirective,\n    OffClickDirective\n  ],\n  imports: [\n    CommonModule,\n    ReactiveFormsModule\n  ],\n  exports: [\n    NgxDropdownMultiselectComponent,\n    MultiSelectSearchFilter,\n  ],\n})\nexport class NgxBootstrapMultiselectModule { }\n","/*\n * Public API Surface of ngx-bootstrap-multiselect\n */\n\nexport * from './lib/types';\nexport * from './lib/search-filter.pipe';\nexport * from './lib/ngx-bootstrap-multiselect.module';\nexport * from './lib/ngx-bootstrap-multiselect.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.MultiSelectSearchFilter","i4.AutofocusDirective","i5.OffClickDirective"],"mappings":"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"}