{"version":3,"file":"intzi1992-mat-table-filter.mjs","sources":["../../../projects/mat-table-filter/src/lib/mat-table-filter.enum.ts","../../../projects/mat-table-filter/src/lib/services/filter-predicate.ts","../../../projects/mat-table-filter/src/lib/services/alpha-numeric-predicate.service.ts","../../../projects/mat-table-filter/src/lib/services/array-predicate.service.ts","../../../projects/mat-table-filter/src/lib/services/mat-table-filter.service.ts","../../../projects/mat-table-filter/src/lib/mat-table-filter.directive.ts","../../../projects/mat-table-filter/src/lib/mat-table-filter.module.ts","../../../projects/mat-table-filter/src/public-api.ts","../../../projects/mat-table-filter/src/intzi1992-mat-table-filter.ts"],"sourcesContent":["export enum MatTableFilter {\n  EQUALS = 'EQUALS',\n  ANYWHERE = 'ANYWHERE',\n  STARTS_WITH = 'STARTS_WITH',\n  ENDS_WITH = 'ENDS_WITH'\n}\n","import { MatTableFilter } from '../mat-table-filter.enum';\nimport { ItemPair } from '../item-pair';\nimport isString from 'lodash-es/isString';\nimport { Options } from '../options';\n\nexport abstract class FilterPredicate<T> {\n\n  public abstract equals(itemPair: ItemPair<T>): boolean;\n  public abstract anywhere(itemPair: ItemPair<T>): boolean;\n  public abstract startsWith(itemPair: ItemPair<T>): boolean;\n  public abstract endsWith(itemPair: ItemPair<T>): boolean;\n\n  public executeCondition(itemPair: ItemPair<T>, options: Options): boolean {\n    this.handleLetterCasing(itemPair, options.caseSensitive);\n    switch (options.filterType) {\n      case MatTableFilter.EQUALS:\n        return this.equals(itemPair);\n      case MatTableFilter.ANYWHERE:\n        return this.anywhere(itemPair);\n      case MatTableFilter.STARTS_WITH:\n        return this.startsWith(itemPair);\n      case MatTableFilter.ENDS_WITH:\n        return this.endsWith(itemPair);\n      default:\n        return true;\n    }\n  }\n\n  private handleLetterCasing(itemPair: ItemPair<any>, caseSensitive?: boolean): void {\n    if (!caseSensitive) {\n      this.transformAllLowerCase(itemPair);\n    }\n  }\n\n  private transformAllLowerCase(object: any) {\n    // tslint:disable-next-line:forin\n    for (const key in object) {\n      const value = object[key];\n      if (isString(value)) {\n        object[key] = value.toLowerCase();\n      } else {\n        this.transformAllLowerCase(value);\n      }\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { FilterPredicate } from './filter-predicate';\nimport { ItemPair } from '../item-pair';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AlphaNumericPredicateService extends FilterPredicate<string> {\n\n  constructor() {\n    super();\n   }\n\n  public equals(itemPair: ItemPair<string>): boolean {\n    return itemPair.example === itemPair.item;\n  }\n  public anywhere(itemPair: ItemPair<string>): boolean {\n    return itemPair.item.includes(itemPair.example);\n  }\n  public startsWith(itemPair: ItemPair<string>): boolean {\n    return itemPair.item.startsWith(itemPair.example);\n  }\n  public endsWith(itemPair: ItemPair<string>): boolean {\n    return itemPair.item.endsWith(itemPair.example);\n  }\n\n}\n","import { Injectable } from '@angular/core';\nimport { FilterPredicate } from './filter-predicate';\nimport isEqual from 'lodash-es/isEqual';\nimport difference from 'lodash-es/difference';\nimport flatten from 'lodash-es/flatten';\nimport { ItemPair } from '../item-pair';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ArrayPredicateService extends FilterPredicate<Array<any>> {\n\n  // tslint:disable-next-line:max-line-length\n  private static readonly UNSUPPORTED_OPERATION_WARNING = 'This filterType is unsupported for array filtering. FilterType.ANYWHERE is executed instead!';\n  private static readonly SUGGESTION_WARNING = 'You can set a custom predicate for the array property through PropertyOptions!';\n  constructor() {\n    super();\n  }\n\n  private static warn() {\n    console.warn(ArrayPredicateService.UNSUPPORTED_OPERATION_WARNING);\n    console.warn(ArrayPredicateService.SUGGESTION_WARNING);\n  }\n\n  public equals(itemPair: ItemPair<Array<any>>): boolean {\n    return isEqual(itemPair.example.sort(), itemPair.item.sort());\n  }\n  public anywhere(itemPair: ItemPair<Array<any>>): boolean {\n    return this.isSubset(itemPair.example, itemPair.item);\n  }\n  public startsWith(itemPair: ItemPair<Array<any>>): boolean {\n    ArrayPredicateService.warn();\n    return this.anywhere(itemPair);\n  }\n  public endsWith(itemPair: ItemPair<Array<any>>): boolean {\n    ArrayPredicateService.warn();\n    return this.anywhere(itemPair);\n  }\n\n  private isSubset(example: Array<any>, item: Array<any>): boolean {\n    return !difference(flatten(example), flatten(item)).length;\n  }\n\n}\n","import { PropertyOptions, PredicateFunc } from '../property-options';\nimport { ItemPair } from './../item-pair';\nimport { ArrayPredicateService } from './array-predicate.service';\nimport { AlphaNumericPredicateService } from './alpha-numeric-predicate.service';\nimport { Injectable } from '@angular/core';\nimport isEqual from 'lodash-es/isEqual';\nimport cloneDeep from 'lodash-es/cloneDeep';\nimport isNil from 'lodash-es/isNil';\nimport every from 'lodash-es/every';\nimport isFunction from 'lodash-es/isFunction';\nimport isArray from 'lodash-es/isArray';\nimport isBoolean from 'lodash-es/isBoolean';\nimport isString from 'lodash-es/isString';\nimport isNumber from 'lodash-es/isNumber';\nimport isEmpty from 'lodash-es/isEmpty';\nimport { Options } from '../options';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class MatTableFilterService {\n  constructor(private _alphaNumericService: AlphaNumericPredicateService, private _arrayService: ArrayPredicateService) {}\n\n  public filterPredicate(itemPair: ItemPair<any>, propertyOptions: PropertyOptions,\n                         commonOptions: Options | PredicateFunc, propertyName?: string): boolean {\n    // tslint:disable-next-line:forin\n    const exampleKeys = Object.keys(itemPair.example);\n    for (const key of exampleKeys) {\n      const exampleValue = cloneDeep(itemPair.example[key]);\n      if (isNil(exampleValue) || every(exampleValue, isEmpty) && typeof exampleValue !== 'boolean') {\n        // if example entity's property is undefined/null/empty then it means the caller wants all the data\n        continue;\n      }\n      if (itemPair.item?.hasOwnProperty(key)) {\n        // if example entity has additional columns then search fails\n        const itemValue = cloneDeep(itemPair.item[key]);\n        const nextPropertyName = this.getNextPropertyName(key, propertyName);\n        const options = this.finalizeOptionsForProperty(commonOptions, propertyOptions, nextPropertyName);\n        if (isFunction(options)) { // if user defined predicate is present for property\n          const customPredicate = options as PredicateFunc;\n          if (!customPredicate(itemValue)) {\n            return false;\n          }\n        } else {\n          const columnOptions = options as Options;\n          if (this.isAlphaNumeric(itemValue)) {\n            const valuePair: ItemPair<string> = {item: itemValue.toString(), example: exampleValue};\n            if (!this._alphaNumericService.executeCondition(valuePair, columnOptions)) {\n              return false;\n            }\n          } else if (isArray(itemValue)) {\n            const valuePair: ItemPair<any[]> = {item: itemValue, example: exampleValue};\n            if (!this._arrayService.executeCondition(valuePair, columnOptions)) {\n              return false;\n            }\n          } else if (isBoolean(itemValue)) {\n            if (itemValue !== exampleValue) {\n              return false;\n            }\n          } else {\n            const valuePair: ItemPair<any> = {item: itemValue, example: exampleValue};\n            if (!this.filterPredicate(valuePair, propertyOptions, options, nextPropertyName)) {\n              // if one of the inner properties returns true, this shouldnt affect the whole item's filtering\n              // however if it returns false then the item must not be in the list\n              return false;\n            }\n          }\n        }\n      } else {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  private finalizeOptionsForProperty(commonOptions: Options | PredicateFunc, propertyOptions: PropertyOptions, propertyName: string):\n   Options | PredicateFunc {\n    if (propertyOptions && propertyOptions.hasOwnProperty(propertyName)) {\n      return propertyOptions[propertyName];\n    } else {\n      return commonOptions;\n    }\n  }\n\n  private getNextPropertyName(key: string, propertyName?: string): string {\n    return propertyName ? (propertyName + '.' + key) : key;\n  }\n\n  public isChanged(oldEntity: any, newEntity: any): boolean {\n    return !isEqual(this.toPlainJson(oldEntity), this.toPlainJson(newEntity));\n  }\n\n  public toPlainJson(object?: any): JSON | null {\n    if (!object)\n      return null;\n    return JSON.parse(JSON.stringify(object));\n  }\n\n  private isAlphaNumeric(value: any): boolean {\n    return isString(value) || isNumber(value);\n  }\n}\n","import { PropertyOptions } from './property-options';\nimport { Directive, DoCheck, Input, Host, Self, Optional } from '@angular/core';\nimport { MatTable, MatTableDataSource } from '@angular/material/table';\nimport { BehaviorSubject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { MatTableFilter } from './mat-table-filter.enum';\nimport { MatTableFilterService } from './services/mat-table-filter.service';\n\n@Directive({\n  selector: '[matTableFilter]',\n  exportAs: 'matTableFilter'\n})\nexport class MatTableFilterDirective implements DoCheck {\n  private _oldExampleEntity: any;\n\n  @Input() exampleEntity: any;\n\n  /**\n   * in millis\n   */\n  @Input() debounceTime = 400;\n  @Input() filterType: MatTableFilter = MatTableFilter.ANYWHERE;\n  @Input() caseSensitive = false;\n  @Input() customPredicate: (data: any) => boolean;\n  @Input() propertyOptions: PropertyOptions;\n  private _exampleEntitySubject: BehaviorSubject<void>;\n\n\n  constructor(\n    private _filterService: MatTableFilterService,\n    @Host() @Self() @Optional() private _table: MatTable<any>\n  ) {\n    this.initDebounceSubject();\n  }\n\n  ngDoCheck(): void {\n    if (this._filterService.isChanged(this._oldExampleEntity, this.exampleEntity)) {\n      this._oldExampleEntity = this._filterService.toPlainJson(this.exampleEntity);\n      this._exampleEntitySubject.next(undefined);\n    }\n  }\n\n\n  private initDebounceSubject() {\n    this._exampleEntitySubject = new BehaviorSubject<void>(undefined);\n    this._exampleEntitySubject.pipe(\n      debounceTime(this.debounceTime))\n      .subscribe(_ => {\n        this.updateFilterPredicate();\n      });\n  }\n\n  private updateFilterPredicate() {\n    const matDataSource = this.getMatDataSource();\n    if (matDataSource) {\n      matDataSource.filterPredicate = this.getFilterPredicate();\n      matDataSource.filter = this.exampleEntity as any;\n    }\n  }\n\n  private getFilterPredicate() {\n    if (this.customPredicate) {\n      return this.customPredicate;\n    } else {\n      return (item: any): boolean => {\n        return this._filterService.filterPredicate({ example: this.exampleEntity, item }, this.propertyOptions,\n          { filterType: this.filterType, caseSensitive: this.caseSensitive });\n      };\n    }\n  }\n\n  private getMatDataSource(): MatTableDataSource<any> {\n    const matTable = this._table as MatTable<any>;\n    return (matTable.dataSource as MatTableDataSource<any>);\n  }\n\n}\n","import { NgModule } from '@angular/core';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTableFilterDirective } from './mat-table-filter.directive';\n\n@NgModule({\n  declarations: [MatTableFilterDirective],\n  imports: [\n    MatTableModule\n  ],\n  exports: [MatTableFilterDirective]\n})\nexport class MatTableFilterModule { }\n","/*\n * Public API Surface of mat-table-filter\n */\n\nexport * from './lib/mat-table-filter.module';\nexport { MatTableFilterService } from './lib/services/mat-table-filter.service';\nexport { MatTableFilter } from './lib/mat-table-filter.enum';\nexport { Options } from './lib/options';\nexport * from './lib/property-options';\nexport { MatTableFilterDirective } from './lib/mat-table-filter.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AlphaNumericPredicateService","i2.ArrayPredicateService","i1.MatTableFilterService"],"mappings":"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"}