{"version":3,"file":"med-table.mjs","sources":["../../../projects/med-table/src/lib/types/cellTypes.ts","../../../projects/med-table/src/lib/types/filterTypes.ts","../../../projects/med-table/src/lib/directives/med-template.directive.ts","../../../projects/med-table/src/lib/services/med-table.service.ts","../../../projects/med-table/src/lib/constants/selectors.ts","../../../projects/med-table/src/lib/services/StickyHeader.ts","../../../projects/med-table/src/lib/mixins/TemplatesMixin.ts","../../../projects/med-table/src/lib/configs/primengTranslations.ts","../../../projects/med-table/src/lib/services/FilterDataHandler/FilterMethods.ts","../../../projects/med-table/src/lib/mixins/PrimengConfigMixin.ts","../../../projects/med-table/src/lib/configs/columnConfigKeys.ts","../../../projects/med-table/src/lib/services/CellConfigsFactory.ts","../../../projects/med-table/src/lib/configs/defaultTableSettings.ts","../../../projects/med-table/src/lib/constants/xlsxFormatConstants.ts","../../../projects/med-table/src/lib/services/SheetsGenerator/CellBuilder.ts","../../../projects/med-table/src/lib/constants/string.ts","../../../projects/med-table/src/lib/services/SheetsGenerator/RowBuilder.ts","../../../projects/med-table/src/lib/services/SheetsGenerator/WorkSheetSettings.ts","../../../projects/med-table/src/lib/utils.ts","../../../projects/med-table/src/lib/services/SheetsGenerator/TableHeaderBuilder.ts","../../../projects/med-table/src/lib/services/SheetsGenerator/SheetsGenerator.ts","../../../projects/med-table/src/lib/services/TableCell.ts","../../../projects/med-table/src/lib/services/FilterDataHandler/filterMethodsMap.ts","../../../projects/med-table/src/lib/services/FilterDataHandler/FilterDataHandler.ts","../../../projects/med-table/src/lib/components/table-head-cell/table-head-cell.component.ts","../../../projects/med-table/src/lib/components/table-head-cell/table-head-cell.component.html","../../../projects/med-table/src/lib/components/filters/filter-select/filter-select.component.ts","../../../projects/med-table/src/lib/components/filters/filter-select/filter-select.component.html","../../../projects/med-table/src/lib/mixins/FormInputMixin.ts","../../../projects/med-table/src/lib/components/forms/date-range/date-range.component.ts","../../../projects/med-table/src/lib/components/forms/date-range/date-range.component.html","../../../projects/med-table/src/lib/components/filters/filter-date/filter-date.component.ts","../../../projects/med-table/src/lib/components/filters/filter-date/filter-date.component.html","../../../projects/med-table/src/lib/components/filters/filter-checkbox/filter-checkbox.component.ts","../../../projects/med-table/src/lib/components/filters/filter-checkbox/filter-checkbox.component.html","../../../projects/med-table/src/lib/components/filters/filter-text/filter-text.component.ts","../../../projects/med-table/src/lib/components/filters/filter-text/filter-text.component.html","../../../projects/med-table/src/lib/components/table-cell/editor-builder.ts","../../../projects/med-table/src/lib/components/table-cell/table-cell.component.ts","../../../projects/med-table/src/lib/components/table-cell/table-cell.component.html","../../../projects/med-table/src/lib/med-table.component.ts","../../../projects/med-table/src/lib/med-table.component.html","../../../projects/med-table/src/lib/med-table.module.ts","../../../projects/med-table/src/public-api.ts","../../../projects/med-table/src/med-table.ts"],"sourcesContent":["export enum CELL_TYPES {\n  TEXT = 'text',\n  LINK = 'link',\n}\n","export enum FILTER_TYPES {\n  TEXT = 'text',\n  SELECT = 'select',\n  DATE = 'date',\n  CHECKBOX = 'checkbox',\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n  selector: '[mTemplate]'\n})\nexport class MedTemplateDirective {\n  @Input() type!: string;\n  @Input('mTemplate') name!: string;\n\n  constructor(public template: TemplateRef<any>) {}\n\n  getType(): string {\n    return this.name;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { MedDynamicFormService } from 'med-dynamic-form';\n\nimport { PrimeFilters } from '../types/PrimeFilter';\nimport { MedSelectOption } from '../types/MedSelectOption';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class MedTableService {\n  private _filters: PrimeFilters = {};\n  private _filterSelectData: Record<string, string[]> = {};\n  private _data: Record<string, any>[] = [];\n\n  constructor(private dynamicFormService: MedDynamicFormService) {}\n\n  setFilterSelectData(data: string[], key: string): void {\n    this._filterSelectData[key] = data;\n  }\n\n  getFilterSelectData(key: string): string[] {\n    return this._filterSelectData[key] || [];\n  }\n\n  setSelectData(data: MedSelectOption<any>[], key: string): void {\n    this.dynamicFormService.setSelectData(data, key);\n  }\n\n  setDatalist(data: string[], key: string): void {\n    this.dynamicFormService.setDatalist(data, key);\n  }\n\n  get filters(): PrimeFilters {\n    return this._filters;\n  }\n\n  set filters(data: PrimeFilters) {\n    this._filters = data;\n  }\n\n  get data(): Record<string, any>[] {\n    return this._data;\n  }\n\n  set data(data: Record<string, any>[]) {\n    this._data = data;\n  }\n}\n","export const APP_SELECTOR = 'med-table';\n\nexport const SELECTOR_AFTER_WEB_COMPONENT = 'div'; // web component doesn't have a height\nexport const FOOTER_SELECTOR = 'body footer';\n\nexport const TABLE_SELECTOR = `${APP_SELECTOR} p-table .p-datatable-wrapper`;\nexport const PAGINATOR_SELECTOR = `${APP_SELECTOR} p-paginator ${SELECTOR_AFTER_WEB_COMPONENT}`;\nexport const UP_SCROLL_SELECTOR = `${APP_SELECTOR} .med-table__up-scroll`;\n","import {\n  FOOTER_SELECTOR,\n  TABLE_SELECTOR,\n  PAGINATOR_SELECTOR,\n  UP_SCROLL_SELECTOR,\n} from '../constants/selectors';\n\nexport class StickyHeader {\n  /**\n   * should call in \"ngAfterViewInit\" hook\n   */\n  get tableHeight(): string {\n    const MARGINS = 20; // 20px margin app in prod\n    const contentHeight = this.headerHeight() + this.footerHeight()\n      + this.paginatorHeight() + this.upScrollHeight() + MARGINS;\n\n    return `calc(100vh - ${contentHeight}px)`;\n  }\n\n  private headerHeight(): number {\n    const app = document.querySelector<HTMLElement>(TABLE_SELECTOR);\n\n    if (!app) return 0;\n\n    return app.getBoundingClientRect().top;\n  }\n\n  private paginatorHeight(): number {\n    return this.getElementHeight(PAGINATOR_SELECTOR);\n  }\n\n  private footerHeight(): number {\n    return this.getElementHeight(FOOTER_SELECTOR);\n  }\n\n  private upScrollHeight(): number {\n    return this.getElementHeight(UP_SCROLL_SELECTOR);\n  }\n\n  private getElementHeight(selector: string): number {\n    const block = document.querySelector<HTMLElement>(selector);\n\n    if (!block) return 0;\n\n    return block.offsetHeight;\n  }\n}\n","import { AfterContentInit, Component, ContentChildren, QueryList, TemplateRef } from '@angular/core';\n\nimport { MedTemplateDirective } from '../directives/med-template.directive';\n\n@Component({\n  template: '',\n})\nexport class TemplatesMixin implements AfterContentInit {\n  @ContentChildren(MedTemplateDirective) templates!: QueryList<MedTemplateDirective>;\n\n  rowExpansion?: TemplateRef<any>;\n  toolbarTemplate?: TemplateRef<any>;\n  tableDataTemplate?: TemplateRef<any>;\n  tableHeadTemplate?: TemplateRef<any>;\n  paginatorTemplate?: TemplateRef<any>;\n  captionTemplate?: TemplateRef<any>;\n\n  ngAfterContentInit() {\n    this.templates.forEach((item) => {\n      switch (item.getType()) {\n        case 'toolbar':\n          this.toolbarTemplate = item.template;\n          break;\n        case 'caption':\n          this.captionTemplate = item.template;\n          break;\n        case 'tableHead':\n          this.tableHeadTemplate = item.template;\n          break;\n        case 'tableData':\n          this.tableDataTemplate = item.template;\n          break;\n        case 'paginator':\n          this.paginatorTemplate = item.template;\n          break;\n        case 'rowExpansion':\n          this.rowExpansion = item.template;\n          break;\n      }\n    });\n  }\n}\n","import { Translation } from 'primeng/api/translation';\n\nexport const PRIMENG_TRANSLATIONS: Translation = {\n  'dayNames': ['Неділя', 'Понеділок', 'Вівторок', 'Середа', 'Четвер', 'П\\'ятниця', 'Субота'],\n  'dayNamesShort': ['Нд', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],\n  'dayNamesMin': ['Нд', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],\n  'monthNames': ['Січень','Лютий','Березень','Квітень','Травень','Червень','Липень','Серпень','Вересень','Жовтень','Листопад','Грудень'],\n  'monthNamesShort': ['Січ.', 'Лют.', 'Бер.', 'Квіт.', 'Трав.', 'Черв.','Лип.', 'Серп.', 'Вер.', 'Жовт.', 'Лис.', 'Гру.'],\n};\n","export class FilterMethods {\n  static dateRangeHandler(value?: string, filter?: (Date | undefined)[]): boolean {\n    const END_DATE = { HOURS: 23, MINUTES: 59 };\n    const [startDate, endDate] = filter || [];\n\n    if (!startDate) return true;\n\n    if (!value) return false;\n\n    const currentDate = new Date(value).getTime();\n\n    if (endDate) {\n      return startDate.getTime() <= currentDate && currentDate < endDate.setHours(END_DATE.HOURS, END_DATE.MINUTES);\n    }\n\n    return startDate.getTime() <= currentDate;\n  }\n\n  static selectHandler(value?: string, filter?: string[]): boolean {\n    return !filter ? true : filter.includes(value || '');\n  }\n\n  static checkboxHandler(value?: any, filter?: boolean): boolean {\n    if (filter === null) {\n      return true;\n    }\n\n    return Boolean(value) === filter;\n  }\n\n  static textHandler(value?: string, filter?: string): boolean {\n    const regexp = new RegExp(`${filter?.trim()}`, 'i');\n    return regexp.test(value || '');\n  }\n}\n","import { FilterService, PrimeNGConfig } from 'primeng/api';\nimport { Component, OnInit } from '@angular/core';\n\nimport { TemplatesMixin } from './TemplatesMixin';\nimport { PRIMENG_TRANSLATIONS } from '../configs/primengTranslations';\nimport { FilterMethods } from \"../services/FilterDataHandler/FilterMethods\";\n\n@Component({\n  template: '',\n})\nexport class PrimengConfigMixin extends TemplatesMixin implements OnInit {\n   constructor(private primeConfig: PrimeNGConfig, private filterService: FilterService) {\n     super();\n   }\n\n  ngOnInit() {\n    this.primeConfig.setTranslation(PRIMENG_TRANSLATIONS);\n\n    this.filterService.register('custom-contains', FilterMethods.textHandler);\n  }\n}\n","export const CONFIG_KEY_CHILDREN = 'children';\n","import {CellDataConfigLocal} from '../types/CellDataConfigLocal';\nimport {MedTableColumnConfig} from '../types/MedTableColumnConfig';\n\nexport class CellConfigsFactory {\n  build(list: MedTableColumnConfig[]): CellDataConfigLocal[] {\n    return this.flatChildren(list).map(el => this.cellBuilder(el));\n  }\n\n  private flatChildren(list: MedTableColumnConfig[]): MedTableColumnConfig[] {\n    const newList = list.map(el => el.children ? el.children : el).flat();\n    const hasChildren = newList.some(el => el.children);\n\n    if (hasChildren) {\n      return this.flatChildren(newList)\n    }\n\n    return newList;\n  }\n\n  private cellBuilder(el: MedTableColumnConfig): CellDataConfigLocal {\n    return {\n      ...el,\n      key: el.key || '',\n      children: undefined,\n    }\n  }\n}\n","import { MedTableSettingsLocal } from '../types/MedTableSettingsLocal';\n\nexport const DEFAULT_TABLE_SETTINGS: MedTableSettingsLocal = {\n  rows: 25,\n  lazy: false,\n  sticky: true,\n  filterDelay: 0,\n  totalRecords: 0,\n  paginator: true,\n  scrollHeight: 'flex',\n  colMinWidth: '15rem',\n  colMaxWidth: '20rem',\n  expandedDataKey: '',\n  doubleScrollbar: false,\n  showCurrentPageReport: true,\n  showGlobalSearchFilter: true,\n  emptyMessage: 'Дані відсутні.',\n  rowsPerPageOptions: [10,25,50,100],\n  currentPageReportTemplate: 'Показано {first} – {last} із {totalRecords} записів',\n};\n","export const FONTS = {\n    TIMES: 'Times New Roman',\n};\n\nexport const FONT_SIZES = {\n    SMALL: 12,\n    MEDIUM: 14,\n    LARGE: 16,\n    EXTRA_LARGE: 18,\n};\n\nexport const CELL_TYPE_STRING = 's';\n\nexport const DEFAULT_CELL_STYLE = {\n    size: FONT_SIZES.SMALL,\n    bold: false,\n};\n","import { CellObject } from 'xlsx-js-style';\nimport { FONTS, FONT_SIZES, DEFAULT_CELL_STYLE, CELL_TYPE_STRING } from '../../constants/xlsxFormatConstants';\n\nexport interface ICellBuilder {\n  createEmptyCell(): CellObject\n  createLinkCell(v: string, link: string): CellObject\n  createTextCell(v: string, style?: { size?: number; bold?: boolean }): CellObject\n}\n\nexport class CellBuilder implements ICellBuilder {\n  createEmptyCell(): CellObject {\n    return this.createTextCell('');\n  }\n\n  createTextCell(v: string, style?: { size?: number; bold?: boolean }): CellObject {\n    const {size, bold} = style || DEFAULT_CELL_STYLE;\n\n    return {\n      v,\n      t: CELL_TYPE_STRING,\n      s: {\n        font: {\n          name: FONTS.TIMES,\n          sz: size,\n          bold,\n        },\n        alignment: {\n          wrapText: true,\n          vertical: 'top',\n        },\n      },\n    };\n  }\n\n  createLinkCell(v: string, link: string): CellObject {\n    return {\n      v,\n      t: CELL_TYPE_STRING,\n      l: {Target: link},\n      s: {\n        font: {\n          name: FONTS.TIMES,\n          sz: FONT_SIZES.SMALL,\n          underline: true,\n          color: {\n            rgb: '0563c1',\n          },\n        },\n        alignment: {\n          wrapText: true,\n          vertical: 'top',\n        },\n      },\n    };\n  }\n}\n","export const STRING = {\n    EMPTY: '',\n    SPACE: ' ',\n    DOT: '.',\n    ZERO: '0',\n    HASHTAG: '#',\n    SEMICOLON: ';',\n    HYPHEN: '–',\n    DASH: '-',\n    LINE_BREAK: '\\n',\n    DELIMITER: {\n        HYPHEN_WITH_SPACE: ' – ',\n        COMMA: ', ',\n    },\n} as const;\n","import { get } from 'lodash';\nimport { CellObject } from 'xlsx-js-style';\nimport { CellBuilder } from './CellBuilder';\nimport { STRING } from '../../constants/string';\n\nimport { CellDataConfigLocal } from '../../types/CellDataConfigLocal';\n\nconst DEFAULT_VIEW_HANDLER = (data: any) => data;\n\nexport interface IRowBuilder {\n  createTableRow(config: CellDataConfigLocal[], row: Record<string, any>): CellObject[]\n}\n\nexport class RowBuilder<RowValueType extends Record<string, any>> implements IRowBuilder {\n  private readonly cellBuilder = new CellBuilder();\n\n  createTableRow(config: CellDataConfigLocal[], row: RowValueType): CellObject[] {\n    return config.map((item) =>\n      this.cellBuilder.createTextCell(this.getField(row, item)));\n  }\n\n  private getField<T>(data: RowValueType, config: CellDataConfigLocal): T {\n    const { key, sortKey, defaultValue = STRING.HYPHEN, viewHandler = DEFAULT_VIEW_HANDLER } = config;\n    const field = viewHandler(get(data, sortKey || key));\n    return field || defaultValue;\n  }\n}\n","import { Range } from 'xlsx-js-style'\n\nexport interface IWorkSheetSettings {\n  merges: Range[]\n  updateRowIndex(): void\n  addColMerge(start: number, end: number): void\n  addRowMerge(rowspan: number, colIndex: number): void\n}\n\nexport class WorkSheetSettings implements IWorkSheetSettings {\n  private _rowIndex = 0;\n  private _merges: Range[] = [];\n\n  get merges (): Range[] {\n    return this._merges;\n  }\n\n  updateRowIndex (count?: number): void {\n    this._rowIndex += count || 1;\n  }\n\n  addColMerge (start: number, end: number): void {\n    // s - start, e - end; r - row, c - column\n    this._merges.push({\n      s: { r: this._rowIndex, c: start },\n      e: { r: this._rowIndex, c: end },\n    });\n  }\n\n  addRowMerge (count: number, colIndex: number): void {\n    // s - start, e - end; r - row, c - column\n    this._merges.push({\n      s: { r: this._rowIndex, c: colIndex },\n      e: { r: this._rowIndex + (count - 1), c: colIndex },\n    });\n  }\n}\n","import { isEqual } from 'lodash';\n\nexport const isExist = (value: any) => value !== undefined && value !== null && value !== '' || Array.isArray(value) && value.length;\n\nexport const deepClone = <R>(data: R): R => JSON.parse(JSON.stringify(data));\n\nexport const getMaxDeepKeyLevel = <T extends Record<string, any>>(data: T[], key: string, deep: number = 1): number => {\n  const STEP = 1;\n  const levels: number[] = data.map(({ [key]: prop }) => prop ? getMaxDeepKeyLevel(prop, key, deep + STEP) : deep);\n  return Math.max(...levels);\n}\n\nexport const getNestedList = <T extends Record<string, any> | undefined>(data: T[], key: string, deep: number): any[] => {\n  const STEP = 1;\n  if (!deep) return data;\n  const mapHandler = (data: T[]) => data.map(el => el ? el[key] : el).flat(deep);\n  return deep - STEP ? mapHandler(getNestedList(data, key, deep - STEP)) : mapHandler(data);\n}\n\nexport const getColspanByKey = <T extends Record<string, any>>(column: T, key: string): number => {\n  const ONE_COL = 1;\n  const { [key]: prop } = column;\n\n  if (!prop || !prop.length) return ONE_COL;\n  let total = 0;\n\n  (prop as T[]).forEach(el => {\n    total += el[key] ? getColspanByKey(el, key) : ONE_COL;\n  });\n\n  return total;\n}\n\nexport const getRowspanByLevelAndKey = <T extends Record<string, any>>(\n  data: T,\n  key: string,\n  deepLevel: number,\n  currentLevel: number,\n): number => {\n  const DELTA = 1;\n  const {[key]: prop = []} = data;\n  const levelsToDown = getMaxDeepKeyLevel(prop, key);\n  const emptyRows = !currentLevel ? deepLevel - (levelsToDown + DELTA) : 0;\n\n  if (!isFinite(levelsToDown)) return deepLevel - currentLevel;\n  return deepLevel - (levelsToDown + currentLevel + emptyRows);\n}\n\nexport const getObjectsByLevel = <T extends Record<string, any>>(list: T[], level: number, childKey: keyof T): T[] => {\n  if (!level) return list;\n\n  const newList: T[] = list.map(el => el[childKey] ? el[childKey] : el).flat() as T[];\n  const hasChildren = newList.some(el => el[childKey]);\n\n  if (hasChildren) {\n    return getObjectsByLevel<T>(newList, --level, childKey);\n  }\n\n  return newList;\n}\n\nexport const getColumnIndex = <T extends Record<string, any>>(list: T[], obj: T, childKey: keyof T): number => {\n  const index = list.findIndex((el) => isEqual(obj, el));\n\n  if (index < 0) return 0;\n\n  const elementsBeforeCurrent = list.slice(0, index);\n\n  return elementsBeforeCurrent\n    .map(({ [childKey]: children }) => children ? children.length : 1)\n    .reduce<number>((acc, cur) => acc + cur, 0);\n}\n\nexport const createArrayByNumber = (length: number): number[] => Array(length).fill(0).map((x,i) => i);\n","import { isEqual } from 'lodash';\nimport { CellObject } from 'xlsx-js-style';\nimport { CellBuilder } from './CellBuilder';\nimport { IWorkSheetSettings } from './WorkSheetSettings';\nimport { CONFIG_KEY_CHILDREN } from '../../configs/columnConfigKeys';\nimport { MedTableColumnConfig } from '../../types/MedTableColumnConfig';\nimport {\n  getNestedList,\n  getColumnIndex,\n  getColspanByKey,\n  getObjectsByLevel,\n  getMaxDeepKeyLevel,\n  createArrayByNumber,\n} from '../../utils';\n\nexport interface ITableHeaderBuilder {\n  getHeaderRows(): CellObject[][]\n}\n\nexport class TableHeaderBuilder implements ITableHeaderBuilder {\n  private readonly cellBuilder = new CellBuilder();\n\n  constructor(\n    private readonly sheetSettings: IWorkSheetSettings,\n    private readonly columnsConfig: MedTableColumnConfig[],\n  ) {}\n\n  private get maxDeepKeyLevel(): number {\n    return getMaxDeepKeyLevel<MedTableColumnConfig>(this.columnsConfig, CONFIG_KEY_CHILDREN);\n  }\n\n  private get tableHeadLevels(): number[] {\n    return createArrayByNumber(this.maxDeepKeyLevel);\n  }\n\n  getHeaderRows(): CellObject[][] {\n    return this.tableHeadLevels.map((level, index) => {\n      if (index) this.sheetSettings.updateRowIndex();\n\n      const allColumnsBeforeLevel = this.getAllColumnsBeforeLevel(level);\n      const visibleColumns = this.getVisibleColumns(level);\n\n      return allColumnsBeforeLevel.map((column, index) => {\n        const cols: CellObject[] = [];\n        const range = this.getColspan(column);\n        const isVisibleColumn = Boolean(visibleColumns.find(col => isEqual(col, column)));\n        const startIndex = getColumnIndex(allColumnsBeforeLevel, column, CONFIG_KEY_CHILDREN);\n\n        this.sheetSettings.addColMerge(startIndex, startIndex + range);\n\n        if (isVisibleColumn) {\n          cols.push(this.cellBuilder.createTextCell(column.label, { bold: true }));\n        } else {\n          cols.push(this.cellBuilder.createEmptyCell());\n        }\n\n        createArrayByNumber(range).map(() => {\n          cols.push(this.cellBuilder.createEmptyCell());\n        });\n\n        return cols;\n      }).flat();\n    });\n  }\n\n  private getAllColumnsBeforeLevel(level: number): MedTableColumnConfig[] {\n    return getObjectsByLevel(this.columnsConfig, level, CONFIG_KEY_CHILDREN);\n  }\n\n  private getVisibleColumns(level: number): MedTableColumnConfig[] {\n    return getNestedList(this.columnsConfig, CONFIG_KEY_CHILDREN, level).filter(Boolean);\n  }\n\n  private getColspan(column: MedTableColumnConfig): number {\n    const DELTA = 1;\n    return getColspanByKey(column, CONFIG_KEY_CHILDREN) - DELTA;\n  }\n}\n","import * as XLSX from 'xlsx-js-style';\nimport {  RowBuilder } from './RowBuilder';\nimport { WorkSheetSettings } from './WorkSheetSettings';\nimport { CellConfigsFactory } from '../CellConfigsFactory';\nimport { CellDataConfigLocal } from '../../types/CellDataConfigLocal';\nimport { MedTableColumnConfig } from '../../types/MedTableColumnConfig';\nimport { ITableHeaderBuilder, TableHeaderBuilder } from './TableHeaderBuilder';\n\nexport interface ISheetsGenerator {\n  generate(fileName?: string): void\n}\n\nexport class SheetsGenerator<RowValueType extends Record<string, any>> implements ISheetsGenerator {\n  private readonly headerBuilder: ITableHeaderBuilder;\n  private readonly rowBuilder =  new RowBuilder();\n  private readonly dataRowConfig: CellDataConfigLocal[];\n  private readonly settings = new WorkSheetSettings();\n\n  constructor(private data: RowValueType[], config: MedTableColumnConfig[]) {\n    const filteredColumns: MedTableColumnConfig[] = this.hidePrivateFields(config);\n\n    this.headerBuilder = new TableHeaderBuilder(this.settings, filteredColumns);\n    this.dataRowConfig = new CellConfigsFactory().build(filteredColumns);\n  }\n\n  generate(fileName: string = 'document'): void {\n    const wb = XLSX.utils.book_new();\n    const ws = XLSX.utils.aoa_to_sheet([\n      this.headerBuilder.getHeaderRows(),\n      this.createTableData(),\n    ].flat());\n\n    ws['!merges'] = this.settings.merges;\n\n    XLSX.utils.book_append_sheet(wb, ws);\n    XLSX.writeFile(wb, `${fileName}.xlsx`);\n  }\n\n  private hidePrivateFields(list: MedTableColumnConfig[]): MedTableColumnConfig[] {\n    return list.filter(({ hideExport }) => !hideExport).map(column => {\n      if (column.children) {\n        return {\n          ...column,\n          children: this.hidePrivateFields(column.children),\n        };\n      }\n\n      return column;\n    });\n  }\n\n  private createTableData(): XLSX.CellObject[][] {\n    return this.data.map(row => this.rowBuilder.createTableRow(this.dataRowConfig, row));\n  }\n}\n","import { get } from 'lodash';\nimport { STRING } from '../constants/string';\nimport { FILTER_TYPES } from '../types/filterTypes';\nimport { CellDataConfigLocal } from '../types/CellDataConfigLocal';\n\nconst DEFAULT_HANDLER = (data: any) => data;\n\nexport interface ITableCell<T> {\n  fieldData: string\n  previewData: string\n  getValue(data: Record<string, any>, key: string): any\n  setItem(data: T): void\n  setConfig(config: CellDataConfigLocal): void\n}\n\nexport class TableCell<T extends Record<string, any>> implements ITableCell<T> {\n  private _item: T | {} = {};\n  private _config: CellDataConfigLocal = {key: '', label: ''};\n\n  get fieldData(): string {\n    return this.getValue(this._item, this._config.key);\n  }\n\n  get previewData(): string {\n    const { viewHandler = DEFAULT_HANDLER, key, sortKey } = this._config;\n    const value = this.getValue(this._item, sortKey || key);\n    return value ? viewHandler(value) : this.defaultValue;\n  }\n\n  private get defaultValue(): any {\n    const { defaultValue, filterType } = this._config;\n\n    if (defaultValue !== undefined) return defaultValue;\n    if (filterType === FILTER_TYPES.CHECKBOX) return 0;\n    return STRING.HYPHEN;\n  }\n\n  getValue(data: Record<string, any>, key: string): any {\n    return get(data, key) || '';\n  }\n\n  setItem(data: T): void {\n    this._item = data;\n  }\n\n  setConfig(config: CellDataConfigLocal): void {\n    this._config = config;\n  }\n}\n","import { FilterMethods } from './FilterMethods';\nimport { FILTER_TYPES } from '../../types/filterTypes';\n\nexport const filterMethodsMap = new Map<FILTER_TYPES, (value?: string, filter?: any) => boolean>()\n  .set(FILTER_TYPES.TEXT, FilterMethods.textHandler)\n  .set(FILTER_TYPES.SELECT, FilterMethods.selectHandler)\n  .set(FILTER_TYPES.CHECKBOX, FilterMethods.checkboxHandler)\n  .set(FILTER_TYPES.DATE, FilterMethods.dateRangeHandler);\n","import {TableCell} from '../TableCell';\nimport {filterMethodsMap} from './filterMethodsMap';\nimport {FILTER_TYPES} from '../../types/filterTypes';\nimport {PrimeFilter, PrimeFilters} from '../../types/PrimeFilter';\nimport {CellDataConfigLocal} from '../../types/CellDataConfigLocal';\n\nexport interface IFilterDataHandler<T extends Record<string, any>> {\n  setData(data: T[]): void\n  setConfig(config: CellDataConfigLocal[]): void\n  filter(filters: PrimeFilters, exitKey?: string): T[]\n}\n\nexport class FilterDataHandler<T extends Record<string, any>> implements IFilterDataHandler<T> {\n  private _data: T[] = [];\n  private _config: CellDataConfigLocal[] = [];\n\n  filter(filters: PrimeFilters, exitKey?: string): T[] {\n    return this._data.filter(row => this._config.every((col: CellDataConfigLocal): boolean => {\n      const key: string = col.sortKey || col.key;\n      const { value }: PrimeFilter = filters[key] || { matchMode: '' };\n\n      if (this.isEmptyValue(value, col.filterType) || exitKey === key) return true;\n\n      const filterType: FILTER_TYPES = col.filterType || FILTER_TYPES.TEXT;\n      const tableCell = new TableCell();\n      tableCell.setItem(row);\n      tableCell.setConfig(col);\n\n      const filterFn = filterMethodsMap.get(filterType);\n      return filterFn ? filterFn(tableCell.previewData, value) : true;\n    }));\n  }\n\n  setData(data: T[]): void {\n    this._data = data;\n  }\n\n  setConfig(config: CellDataConfigLocal[]): void {\n    this._config = config;\n  }\n\n  private isEmptyValue(value: any, filterType?: FILTER_TYPES): boolean {\n    if (filterType === FILTER_TYPES.SELECT || filterType === FILTER_TYPES.DATE) {\n      return !value || Array.isArray(value) && !value.length;\n    }\n\n    if (filterType === FILTER_TYPES.CHECKBOX) {\n      return false;\n    }\n\n    return !value;\n  }\n}\n","import {Component, ElementRef, Input, TemplateRef, ViewChild} from '@angular/core';\n\nimport {MedTableColumnConfig} from '../../types/MedTableColumnConfig';\n\n@Component({\n  selector: 'table-head-cell',\n  templateUrl: './table-head-cell.component.html',\n  styleUrls: ['./table-head-cell.component.scss']\n})\nexport class TableHeadCellComponent {\n  @Input() config!: MedTableColumnConfig;\n  @Input() template?: TemplateRef<any>;\n\n  @ViewChild('contentRef') contentRef!: ElementRef;\n\n  get isEmptyTemplate(): boolean {\n    // TODO should show default value if slot \"template\" is empty\n    const { nativeElement } = this.contentRef || {};\n    return !(nativeElement && nativeElement.innerText);\n  }\n}\n","<span>\n  <span #contentRef>\n    <ng-container *ngTemplateOutlet=\"\n      template || defaultTemplate;\n      context: { $implicit: config }\"\n    ></ng-container>\n  </span>\n\n  <ng-container\n    *ngIf=\"isEmptyTemplate\"\n    [ngTemplateOutlet]=\"defaultTemplate\"\n  ></ng-container>\n</span>\n\n<p-sortIcon\n  *ngIf=\"config.label && config.key && !config.hideSortIcon\"\n  [field]=\"config.sortKey || config.key\"\n></p-sortIcon>\n\n<ng-template #defaultTemplate>\n  {{ config.label }}\n</ng-template>\n","import { get } from 'lodash';\nimport { Component, Input, ViewChild, ElementRef, ChangeDetectorRef, AfterViewInit } from '@angular/core';\n\nimport { MedTableService } from '../../../services/med-table.service';\nimport { MedTableSettingsLocal } from '../../../types/MedTableSettingsLocal';\nimport { IFilterDataHandler } from '../../../services/FilterDataHandler/FilterDataHandler';\n\n@Component({\n  selector: 'filter-select',\n  templateUrl: './filter-select.component.html',\n  styleUrls: ['./filter-select.component.scss']\n})\nexport class FilterSelectComponent<T> implements AfterViewInit {\n  constructor(private store: MedTableService, private cd: ChangeDetectorRef) {}\n\n  @Input() key!: string;\n  @Input() settings!: MedTableSettingsLocal;\n  @Input() filterDataHandler!: IFilterDataHandler<T>;\n\n  @ViewChild('selectRef') selectRef!: ElementRef;\n\n  get filterSelectOptions(): string[] {\n    if (this.settings.lazy) {\n      return this.store.getFilterSelectData(this.key) || [];\n    }\n\n    const filteredData = this.filterDataHandler.filter(this.store.filters, this.key);\n    const options = filteredData.map(obj => get(obj, this.key)).filter(Boolean);\n    return [...new Set(options)]; // delete duplicates\n  }\n\n  ngAfterViewInit() {\n    this.cd.detectChanges();\n  }\n\n  onFilter({ filter }: Record<string, any>) {\n    const regexp = new RegExp(filter, 'i');\n    (this.selectRef as any)._filteredOptions = this.filterSelectOptions.filter((value) => regexp.test(value));\n  }\n}\n","<p-columnFilter [field]=\"key\" matchMode=\"in\" [showMenu]=\"false\">\n  <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n    <p-multiSelect\n      #selectRef\n      placeholder=\"Всі\"\n      styleClass=\"filter-select\"\n      [ngModel]=\"value\"\n      [options]=\"filterSelectOptions\"\n      (onChange)=\"filter($event.value)\"\n      (onFilter)=\"onFilter($event)\"\n    >\n    </p-multiSelect>\n  </ng-template>\n</p-columnFilter>\n","import { Component, Input, Output, EventEmitter, ViewChild, ElementRef } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\n@Component({\n  template: '',\n})\nexport class FormInputMixin<T> implements ControlValueAccessor {\n  protected _value: T | any = '';\n\n  @ViewChild('input') inputEl!: ElementRef;\n\n  @Output() leave = new EventEmitter<void>();\n\n  @Input() handler?: (data: any) => any;\n  @Input() autoFocus?: boolean;\n  @Input() inputId: string = '';\n  @Input() set value(val: T) {\n    this._value = val;\n    this.onChange(this._value);\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  ngAfterViewInit(): void {\n    if (this.autoFocus) {\n      setTimeout(() => {\n        const { nativeElement, el } = this.inputEl as any;\n        if (el === undefined) {\n          return nativeElement.focus();\n        }\n\n        el.nativeElement.querySelector('input').focus();\n      }, 0);\n    }\n  }\n\n  onChange(_: T) {}\n\n  writeValue(value: T) {\n    this.value = value;\n  }\n\n  registerOnChange(fn: any) {\n    this.onChange = fn;\n  }\n\n  registerOnTouched() {}\n}\n","import { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Component, EventEmitter, forwardRef, Output } from '@angular/core';\n\nimport { FormInputMixin } from '../../../mixins/FormInputMixin';\n\n@Component({\n  selector: 'date-range',\n  templateUrl: './date-range.component.html',\n  styleUrls: ['./date-range.component.scss'],\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => DateRangeComponent),\n    multi: true\n  }]\n})\nexport class DateRangeComponent extends FormInputMixin<Date[]> {\n  override _value: Date[] = [];\n\n  @Output() select = new EventEmitter<Date[]>();\n}\n","<p-calendar\n  #input\n  [touchUI]=\"true\"\n  [showIcon]=\"true\"\n  [inputId]=\"inputId\"\n  [(ngModel)]=\"value\"\n  dateFormat=\"dd.mm.yy\"\n  selectionMode=\"range\"\n  appendTo=\"body\"\n  (focusout)=\"leave.emit()\"\n  (keydown.enter)=\"leave.emit()\"\n  (onClose)=\"select.emit(value)\"\n  [panelStyle]=\"{'mim-width': '0', 'max-width': '360px'}\"\n></p-calendar>\n\n","import { Component, Input } from '@angular/core';\n\nimport { FilterService, SelectItem } from 'primeng/api';\nimport { FilterMethods } from '../../../services/FilterDataHandler/FilterMethods';\n\nconst dateRangeFilterName = 'date-range';\n\n@Component({\n  selector: 'filter-date',\n  templateUrl: './filter-date.component.html',\n  styleUrls: ['./filter-date.component.scss']\n})\nexport class FilterDateComponent {\n  constructor(private filterService: FilterService) {}\n\n  @Input() key!: string;\n\n  matchModeOptions: SelectItem[] = [\n    { label: 'Date range', value: dateRangeFilterName },\n  ];\n\n  ngOnInit() {\n    this.filterService.register(dateRangeFilterName, FilterMethods.dateRangeHandler);\n  }\n}\n","<p-columnFilter\n  type=\"date\"\n  matchMode=\"date-range\"\n  [showMenu]=\"false\"\n  [field]=\"key\"\n  [matchModeOptions]=\"matchModeOptions\"\n>\n  <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n    <date-range\n      [ngModel]=\"value\"\n      (select)=\"filter($event)\"\n    ></date-range>\n  </ng-template>\n</p-columnFilter>\n","import { Component, Input } from '@angular/core';\nimport { FilterService, SelectItem } from 'primeng/api';\nimport { FilterMethods } from '../../../services/FilterDataHandler/FilterMethods';\n\nconst checkboxFilterName = 'bool-exact';\n\n@Component({\n  selector: 'filter-checkbox',\n  templateUrl: './filter-checkbox.component.html',\n  styleUrls: ['./filter-checkbox.component.scss']\n})\nexport class FilterCheckboxComponent {\n  constructor(private filterService: FilterService) {}\n\n  @Input() key!: string;\n\n  matchModeOptions: SelectItem[] = [\n    { label: 'Checkbox', value: checkboxFilterName },\n  ];\n\n  ngOnInit() {\n    this.filterService.register(checkboxFilterName, FilterMethods.checkboxHandler);\n  }\n}\n","<p-columnFilter\n  type=\"boolean\"\n  matchMode=\"bool-exact\"\n  [field]=\"key\"\n  [matchModeOptions]=\"matchModeOptions\"\n></p-columnFilter>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'filter-text',\n  templateUrl: './filter-text.component.html',\n  styleUrls: ['./filter-text.component.scss']\n})\nexport class FilterTextComponent {\n  @Input() key!: string;\n}\n","<p-columnFilter\n  type=\"text\"\n  matchMode=\"contains\"\n  [field]=\"key\"\n  [showMenu]=\"false\"\n  [showClearButton]=\"false\"\n></p-columnFilter>\n","import {FIELD_TYPES, MedFormFieldConfig, PATTERN_TYPES} from 'med-dynamic-form';\nimport {CellDataConfigLocal} from '../../types/CellDataConfigLocal';\n\nexport interface EditorBuilderOptions extends CellDataConfigLocal {\n  onLeave: () => void\n}\n\nexport class EditorBuilder implements MedFormFieldConfig {\n  key: string;\n  editorType: FIELD_TYPES;\n  onLeave = () => {};\n  autoFocus: boolean = true;\n  wrappers: string[] = [];\n  inputMask: string = '';\n  fieldWrapperSelector: string = '.table-cell__content';\n  pattern: PATTERN_TYPES = PATTERN_TYPES.NONE;\n\n  constructor(options: EditorBuilderOptions) {\n    this.key = options.key;\n    this.onLeave = options.onLeave;\n    this.editorType = options.editorType || FIELD_TYPES.TEXT;\n    this.inputMask = options.inputMask || this.inputMask;\n    this.pattern = options.pattern || this.pattern;\n  }\n}\n","import {set} from 'lodash';\nimport {AbstractControl, FormBuilder, FormGroup} from '@angular/forms';\nimport {MedFormFieldConfig} from 'med-dynamic-form';\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\n\nimport {deepClone} from '../../utils';\nimport {STRING} from '../../constants/string';\nimport {EditorBuilder} from './editor-builder';\nimport {CELL_TYPES} from '../../types/cellTypes';\nimport {TableCell} from '../../services/TableCell';\nimport {MedUpdateEvent} from '../../types/MedUpdateEvent';\nimport {CellDataConfigLocal} from '../../types/CellDataConfigLocal';\n\nconst DEFAULT_VISIBLE_EDITOR_HANDLER = () => true;\n\n@Component({\n  selector: 'table-cell',\n  templateUrl: './table-cell.component.html',\n  styleUrls: ['./table-cell.component.scss']\n})\nexport class TableCellComponent<ItemType extends Record<string, any>> implements OnInit, AfterViewInit {\n  constructor(private cd: ChangeDetectorRef, private fb: FormBuilder) {}\n\n  @Input() template?: TemplateRef<any>;\n\n  @Input() set config(newValue: CellDataConfigLocal) {\n    this._tableCell.setConfig(newValue);\n    this._config = newValue;\n  }\n\n  get config(): CellDataConfigLocal {\n    return this._config;\n  }\n\n  @Input() set item(newValue: ItemType) {\n    this._tableCell.setItem(newValue);\n    this._item = newValue;\n  }\n\n  get item(): ItemType {\n    return this._item as ItemType;\n  }\n\n  @Output() update = new EventEmitter<MedUpdateEvent<ItemType>>();\n  @Output() onFocus = new EventEmitter<MedUpdateEvent<ItemType>>();\n\n  @ViewChild('contentRef') contentRef!: ElementRef;\n\n  readonly cellType = CELL_TYPES;\n  fields: MedFormFieldConfig[] = [];\n  form: any = new FormGroup({});\n  private _item: ItemType | {} = {};\n  private _config: CellDataConfigLocal = {key: '', label: ''};\n  private _tableCell = new TableCell<ItemType>();\n\n  get fieldData(): string {\n    return this._tableCell.fieldData;\n  }\n\n  get previewData(): string {\n    return this._tableCell.previewData;\n  }\n\n  get linkUrl(): string {\n    const { url, keyParam } = this.config.linkOptions || {};\n\n    if(!url) return STRING.EMPTY;\n\n    if (keyParam) {\n      const param = this._tableCell.getValue(this.item, keyParam);\n      return `${url}?${keyParam}=${param}`;\n    }\n\n    return url;\n  }\n\n  get linkTarget(): string {\n    const { linkOptions: { target } = {} } = this.config;\n    return target ? target : '_self';\n  }\n\n  get isEditable(): boolean {\n    const {editorType, visibleEditorHandler = DEFAULT_VISIBLE_EDITOR_HANDLER} = this.config;\n    return Boolean(editorType) && visibleEditorHandler(this.item);\n  }\n\n  get isEmptyTemplate(): boolean {\n    // TODO should show default value if slot \"template\" is empty\n    const { nativeElement } = this.contentRef || {};\n    return !(nativeElement && nativeElement.innerText);\n  }\n\n  ngOnInit(): void {\n    const { key } = this.config;\n    const keyList = key.split(STRING.DOT);\n    this.form.addControl(...this.setFormControl(keyList));\n  }\n\n  ngAfterViewInit() {\n    this.cd.detectChanges();\n  }\n\n  setEditor(): void {\n    if (!this.isEditable) {\n      return;\n    }\n\n    const field = new EditorBuilder({\n      ...this.config,\n      onLeave: this.onLeave.bind(this),\n    });\n    this.onFocus.emit({item: this.item, key: this.config.key});\n    this.fields.push(field);\n  }\n\n  private onLeave(): void {\n    const { key } = this.config;\n    const { value } = this.form;\n\n    if (this._tableCell.getValue(value, key) !== this.fieldData) {\n      const item = set(deepClone(this.item), key, this._tableCell.getValue(value, key));\n      this.update.emit({item, key});\n    }\n\n    this.fields = [];\n  }\n\n  private setFormControl([firstKey, ...keys]: string[]): [string, AbstractControl] {\n    if (!keys.length) return [firstKey, this.fb.control(this.fieldData)];\n\n    const [newKey, control] = this.setFormControl(keys);\n    return [firstKey, this.fb.group({[newKey]: control})];\n  }\n}\n","<div class=\"table-cell__item\">\n  <span class=\"table-cell__column-title\">\n    {{ config.label }}\n  </span>\n\n  <span class=\"table-cell__content\">\n    <med-dynamic-form\n      *ngIf=\"fields.length\"\n      [config]=\"fields\"\n      [form]=\"form\"\n    ></med-dynamic-form>\n\n    <div\n      [hidden]=\"fields.length\"\n      [className]=\"isEditable ? 'table-cell__editable' : ''\"\n      (click)=\"setEditor()\"\n    >\n      <span #contentRef>\n        <ng-container *ngTemplateOutlet=\"\n          template || defaultTemplate;\n          context: { $implicit: previewData, item: item }\"\n        ></ng-container>\n      </span>\n\n      <ng-container\n        *ngIf=\"isEmptyTemplate\"\n        [ngTemplateOutlet]=\"config.cellType === cellType.LINK ? linkTemplate : defaultTemplate\"\n      ></ng-container>\n    </div>\n  </span>\n</div>\n\n<ng-template #linkTemplate>\n  <a [attr.href]=\"linkUrl\" [attr.target]=\"linkTarget\" class=\"table-cell__link\">{{ previewData }}</a>\n</ng-template>\n\n<ng-template #defaultTemplate>\n  {{ previewData }}\n</ng-template>\n","import { get } from 'lodash';\nimport { Table } from 'primeng/table';\nimport {FilterService, PrimeNGConfig} from 'primeng/api';\nimport {\n  Component,\n  Input,\n  ViewChild,\n  ElementRef,\n  Output,\n  EventEmitter,\n  ChangeDetectorRef,\n  AfterViewInit,\n} from '@angular/core';\n\nimport { FILTER_TYPES } from './types/filterTypes';\nimport { APP_SELECTOR } from './constants/selectors';\nimport { StickyHeader } from './services/StickyHeader';\nimport { PrimeOnFilterEvent } from './types/PrimeFilter';\nimport { MedSelectOption } from './types/MedSelectOption';\nimport { MedTableSettings } from './types/MedTableSettings';\nimport { PrimengConfigMixin } from './mixins/PrimengConfigMixin';\nimport { CONFIG_KEY_CHILDREN } from './configs/columnConfigKeys';\nimport { MedTableService } from './services/med-table.service';\nimport { CellDataConfigLocal } from './types/CellDataConfigLocal';\nimport { CellConfigsFactory } from './services/CellConfigsFactory';\nimport { MedUpdateTableEvent } from './types/MedUpdateTableEvent';\nimport { MedTableColumnConfig } from './types/MedTableColumnConfig';\nimport { MedUpdateEvent } from './types/MedUpdateEvent';\nimport { MedTableSettingsLocal } from './types/MedTableSettingsLocal';\nimport { DEFAULT_TABLE_SETTINGS } from './configs/defaultTableSettings';\nimport { PrimeTableLazyLoadEvent } from './types/PrimeTableLazyLoadEvent';\nimport { SheetsGenerator } from './services/SheetsGenerator/SheetsGenerator';\nimport { FilterDataHandler } from './services/FilterDataHandler/FilterDataHandler';\nimport {\n  isExist,\n  getNestedList,\n  getColspanByKey,\n  getMaxDeepKeyLevel,\n  createArrayByNumber,\n  getRowspanByLevelAndKey,\n} from './utils';\n\n@Component({\n  selector: APP_SELECTOR,\n  templateUrl: 'med-table.component.html',\n  styleUrls: ['./med-table.component.scss'],\n})\nexport class MedTableComponent<ItemType> extends PrimengConfigMixin implements AfterViewInit {\n  constructor(primeConfig: PrimeNGConfig, filterService: FilterService, private cb: ChangeDetectorRef, private store: MedTableService) {\n    super(primeConfig, filterService);\n  }\n\n  public readonly FILTER_TYPES = FILTER_TYPES;\n  public readonly filterDataHandler = new FilterDataHandler<ItemType>();\n  public columnsConfig: MedTableColumnConfig[] = [];\n  private _data: ItemType[] = [];\n  private _config: CellDataConfigLocal[] = [];\n\n  @Input() loading: boolean = false;\n  @Input() settings: MedTableSettings = {};\n  @Input() set config(newValue: MedTableColumnConfig[]) {\n    const cellConfigList = new CellConfigsFactory().build(newValue);\n\n    this.columnsConfig = newValue;\n    this.filterDataHandler.setConfig(cellConfigList);\n    this._config = cellConfigList;\n  }\n\n  get config(): CellDataConfigLocal[] {\n    return this._config;\n  }\n\n  @Input() set data(newValue: ItemType[]) {\n    this.store.data = newValue;\n    this.filterDataHandler.setData(newValue);\n    this._data = newValue;\n  }\n\n  get data(): ItemType[] {\n    return this._data;\n  }\n\n  @Output() updateTable = new EventEmitter<MedUpdateTableEvent>();\n  @Output() updateRow = new EventEmitter<MedUpdateEvent<ItemType>>();\n  @Output() focusCell = new EventEmitter<MedUpdateEvent<ItemType>>();\n\n  @ViewChild('tableRef') tableRef!: Table;\n  @ViewChild('upScrollRef') upScrollRef!: ElementRef<HTMLElement>;\n  @ViewChild('upScrollItemRef') upScrollItemRef!: ElementRef<HTMLElement>;\n\n  get filterableFields(): string[] {\n    return this.config\n      .filter(({filterable}) => filterable)\n      .map(({key, sortKey}) => sortKey || key);\n  }\n\n  get localSettings(): MedTableSettingsLocal {\n    return {\n      ...DEFAULT_TABLE_SETTINGS,\n      ...this.settings,\n    };\n  }\n\n  get colspan(): number {\n    if (this.localSettings.expandedDataKey) {\n      return this.config.length + 1;\n    }\n\n    return this.config.length;\n  }\n\n  get maxDeepKeyLevel(): number {\n    return getMaxDeepKeyLevel<MedTableColumnConfig>(this.columnsConfig, CONFIG_KEY_CHILDREN);\n  }\n\n  get tableHeadLevels(): number[] {\n    return createArrayByNumber(this.maxDeepKeyLevel);\n  }\n\n  ngAfterViewInit() {\n    if (this.localSettings.doubleScrollbar) {\n      this.addDoubleScrollbar();\n    }\n\n    if (this.localSettings.sticky) {\n      this.updateDynamicHeight();\n    }\n\n    this.cb.detectChanges();\n  }\n\n  public clearFilters(): void {\n    this.store.filters = {};\n    this.tableRef.clear();\n  }\n\n  public exportData(data?: ItemType[]): void {\n    const sheetsGenerator = new SheetsGenerator(data || this.tableRef.filteredValue || this.data, this.columnsConfig);\n    sheetsGenerator.generate(this.localSettings.exportFileName);\n  }\n\n  /**\n   * Call this method when updated dynamic height of outside content\n   */\n  public updateDynamicHeight(): void {\n    setTimeout(() => {\n      const { tableHeight } = new StickyHeader();\n      this.settings.scrollHeight = tableHeight;\n    }, 0);\n  }\n\n  getHeadColumnClasses({ headCellClass, sticky }: MedTableColumnConfig): string {\n    return `${headCellClass || ''} ${ sticky ? `sticky ${sticky}` : '' }`;\n  }\n\n  getDataColumnClasses({ dataCellClass, sticky }: MedTableColumnConfig, row: ItemType): string {\n    const cellClass = dataCellClass ? dataCellClass(row) : '';\n    return `${cellClass} ${ sticky ? `sticky ${sticky}` : '' }`;\n  }\n\n  getHeadRowConfigByLevel(level: number): Array<MedTableColumnConfig | undefined> {\n    return getNestedList(this.columnsConfig, CONFIG_KEY_CHILDREN, level);\n  }\n\n  getColspan(column: MedTableColumnConfig): number {\n    return getColspanByKey(column, CONFIG_KEY_CHILDREN);\n  }\n\n  getRowspan(column: MedTableColumnConfig, level: number): number {\n    return getRowspanByLevelAndKey(column, CONFIG_KEY_CHILDREN, this.maxDeepKeyLevel, level);\n  }\n\n  getCellMinWidth({minWidth}: MedTableColumnConfig): string {\n    return minWidth || this.localSettings.colMinWidth;\n  }\n\n  getCellMaxWidth({maxWidth}: MedTableColumnConfig): string {\n    return maxWidth || this.localSettings.colMaxWidth;\n  }\n\n  getFilterSelectOptions({key, sortKey}: CellDataConfigLocal): MedSelectOption<string>[] {\n    const options = this.data\n      .map(obj => get(obj, sortKey || key))\n      .filter(Boolean);\n    return [...new Set(options)].map(value => ({ value, label: value })); // delete duplicates\n  }\n\n  onFilter({filters}: PrimeOnFilterEvent<ItemType>): void {\n    this.store.filters = filters;\n  }\n\n  onLazyLoad({first, rows, globalFilter, sortField, sortOrder, filters}: PrimeTableLazyLoadEvent) {\n    const formatFilters: any[] = Object.entries(filters)\n      .map(([key, data]) => ({key, value: data.value}))\n      .filter(({value}) => isExist(value));\n\n    const data = Object.entries({\n      rows,\n      sortField,\n      sortOrder,\n      search: globalFilter,\n      page: Math.ceil(first / rows),\n      filters: formatFilters,\n    }).filter(([, value]) => isExist(value));\n\n    this.updateTable.emit(Object.fromEntries(data) as MedUpdateTableEvent);\n  }\n\n  private addDoubleScrollbar() {\n    // TODO should create DoubleScrollbar service\n    const { nativeElement: upScrollRef } = this.upScrollRef;\n    const tableRef = this.tableRef.el.nativeElement.querySelector('.p-datatable-wrapper');\n    const { offsetWidth: tableWidth } = tableRef.querySelector('table');\n    this.upScrollItemRef.nativeElement.style.width = `${tableWidth}px`;\n\n    upScrollRef.onscroll = () => {\n      if (tableRef.scrollLeft !== upScrollRef.scrollLeft)\n        tableRef.scrollLeft = upScrollRef.scrollLeft;\n    };\n\n    tableRef.onscroll = () => {\n      if (upScrollRef.scrollLeft !== tableRef.scrollLeft)\n        upScrollRef.scrollLeft = tableRef.scrollLeft;\n    };\n  }\n}\n","<div\n  #upScrollRef\n  *ngIf=\"localSettings.doubleScrollbar\"\n  class=\"med-table__up-scroll\"\n>\n  <div #upScrollItemRef class=\"med-table__up-scroll-item\"></div>\n</div>\n\n<p-table\n  #tableRef\n  class=\"med-table\"\n  [value]=\"data\"\n  [columns]=\"config\"\n  [loading]=\"loading\"\n  [lazy]=\"localSettings.lazy\"\n  [rows]=\"localSettings.rows\"\n  [globalFilterFields]=\"filterableFields\"\n  [paginator]=\"localSettings.paginator\"\n  [filterDelay]=\"localSettings.filterDelay\"\n  [dataKey]=\"localSettings.expandedDataKey\"\n  [totalRecords]=\"localSettings.totalRecords\"\n  [scrollHeight]=\"localSettings.scrollHeight\"\n  [rowsPerPageOptions]=\"localSettings.rowsPerPageOptions\"\n  [showCurrentPageReport]=\"localSettings.showCurrentPageReport\"\n  [currentPageReportTemplate]=\"localSettings.currentPageReportTemplate\"\n  (onFilter)=\"onFilter($event)\"\n  (onLazyLoad)=\"onLazyLoad($event)\"\n>\n  <ng-template *ngIf=\"captionTemplate || localSettings.showGlobalSearchFilter\" pTemplate=\"caption\">\n    <span *ngIf=\"localSettings.showGlobalSearchFilter\" class=\"p-input-icon-left p-ml-auto mr-3\">\n      <i class=\"pi pi-search\"></i>\n      <input\n        pInputText\n        type=\"text\"\n        placeholder=\"Search keyword\"\n        (input)=\"tableRef.filterGlobal($any($event.target).value, 'custom-contains')\"\n      />\n    </span>\n\n    <ng-container *ngTemplateOutlet=\"captionTemplate || null\"></ng-container>\n  </ng-template>\n\n  <ng-template pTemplate=\"header\">\n    <tr *ngFor=\"let level of tableHeadLevels\">\n      <th\n        *ngIf=\"localSettings.expandedDataKey && !level\"\n        [attr.rowspan]=\"maxDeepKeyLevel\"\n        class=\"med-table__th\"\n      ></th>\n\n      <ng-container *ngFor=\"let col of getHeadRowConfigByLevel(level)\">\n        <th\n          *ngIf=\"col\"\n          [attr.colspan]=\"getColspan(col)\"\n          [attr.rowspan]=\"getRowspan(col, level)\"\n          [style.minWidth]=\"getCellMinWidth(col)\"\n          [style.maxWidth]=\"getCellMaxWidth(col)\"\n          [pSortableColumn]=\"col.sortKey || col.key || ''\"\n          [ngClass]=\"getHeadColumnClasses(col)\"\n          class=\"med-table__th\"\n        >\n          <table-head-cell\n            [config]=\"col\"\n            [template]=\"thTemplate\"\n          ></table-head-cell>\n        </th>\n      </ng-container>\n\n      <ng-template #thTemplate let-config>\n        <ng-container *ngTemplateOutlet=\"\n            tableHeadTemplate || null\n            context: { $implicit: config }\"\n        ></ng-container>\n      </ng-template>\n    </tr>\n\n    <tr *ngIf=\"filterableFields.length\">\n      <th *ngIf=\"localSettings.expandedDataKey\" class=\"med-table__th\"></th>\n\n      <th\n        *ngFor=\"let col of config\"\n        [ngClass]=\"getHeadColumnClasses(col)\"\n        class=\"med-table__th\"\n      >\n        <ng-container *ngIf=\"col.filterable\" [ngSwitch]=\"col.filterType\">\n          <filter-select\n            *ngSwitchCase=\"FILTER_TYPES.SELECT\"\n            [settings]=\"localSettings\"\n            [key]=\"col.sortKey || col.key\"\n            [filterDataHandler]=\"filterDataHandler\"\n          ></filter-select>\n\n          <filter-date\n            *ngSwitchCase=\"FILTER_TYPES.DATE\"\n            [key]=\"col.sortKey || col.key\"\n          ></filter-date>\n\n          <filter-checkbox\n            *ngSwitchCase=\"FILTER_TYPES.CHECKBOX\"\n            [key]=\"col.sortKey || col.key\"\n          ></filter-checkbox>\n\n          <filter-text *ngSwitchDefault [key]=\"col.sortKey || col.key\"></filter-text>\n        </ng-container>\n      </th>\n    </tr>\n  </ng-template>\n\n  <ng-template pTemplate=\"body\" let-item let-expanded=\"expanded\">\n    <tr class=\"med-table__row\">\n      <td *ngIf=\"localSettings.expandedDataKey\" class=\"med-table__td\">\n        <button\n          type=\"button\"\n          pButton\n          pRipple\n          [pRowToggler]=\"item\"\n          class=\"p-button-text p-button-rounded p-button-plain w-2rem h-2rem m-2\"\n          [icon]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"\n        ></button>\n      </td>\n\n      <td\n        *ngFor=\"let column of config\"\n        [ngClass]=\"getDataColumnClasses(column, item)\"\n        class=\"med-table__td\"\n      >\n        <table-cell\n          [item]=\"item\"\n          [config]=\"column\"\n          [template]=\"tdTemplate\"\n          (update)=\"updateRow.emit($event)\"\n          (onFocus)=\"focusCell.emit($event)\"\n        ></table-cell>\n\n        <ng-template #tdTemplate let-data let-item=\"item\">\n          <ng-container *ngTemplateOutlet=\"\n            tableDataTemplate || null\n            context: { $implicit: data, item: item, config: column }\"\n          ></ng-container>\n        </ng-template>\n      </td>\n    </tr>\n  </ng-template>\n\n  <ng-template pTemplate=\"rowexpansion\" let-item>\n    <tr>\n      <th [attr.colspan]=\"colspan\">\n        <ng-container *ngTemplateOutlet=\"\n          rowExpansion || null\n          context: { $implicit: item }\"\n        ></ng-container>\n      </th>\n    </tr>\n  </ng-template>\n\n  <ng-template pTemplate=\"emptymessage\">\n    <tr>\n      <td [attr.colspan]=\"colspan\">{{ localSettings.emptyMessage }}</td>\n    </tr>\n  </ng-template>\n\n  <ng-template *ngIf=\"paginatorTemplate\" pTemplate=\"paginatorleft\">\n    <ng-container *ngTemplateOutlet=\"paginatorTemplate || null\"></ng-container>\n  </ng-template>\n</p-table>\n","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n\nimport { TableModule } from 'primeng/table';\nimport { ButtonModule } from 'primeng/button';\nimport { CalendarModule } from 'primeng/calendar';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { MedDynamicFormModule } from 'med-dynamic-form';\n\nimport { MedTableComponent } from './med-table.component';\nimport { TableCellComponent } from './components/table-cell/table-cell.component';\nimport { DateRangeComponent } from './components/forms/date-range/date-range.component';\nimport { MedTemplateDirective } from './directives/med-template.directive';\nimport { FilterTextComponent } from './components/filters/filter-text/filter-text.component';\nimport { FilterDateComponent } from './components/filters/filter-date/filter-date.component';\nimport { FilterSelectComponent } from './components/filters/filter-select/filter-select.component';\nimport { FilterCheckboxComponent } from './components/filters/filter-checkbox/filter-checkbox.component';\nimport { TableHeadCellComponent } from './components/table-head-cell/table-head-cell.component';\n\n@NgModule({\n  declarations: [\n    MedTableComponent,\n    TableCellComponent,\n    DateRangeComponent,\n    MedTemplateDirective,\n    FilterTextComponent,\n    FilterDateComponent,\n    FilterSelectComponent,\n    FilterCheckboxComponent,\n    TableHeadCellComponent,\n  ],\n  imports: [\n    FormsModule,\n    TableModule,\n    ButtonModule,\n    BrowserModule,\n    CalendarModule,\n    InputTextModule,\n    MultiSelectModule,\n    ReactiveFormsModule,\n    MedDynamicFormModule,\n    BrowserAnimationsModule,\n  ],\n  exports: [\n    MedTableComponent,\n    MedTemplateDirective,\n  ]\n})\nexport class MedTableModule { }\n","/*\n * Public API Surface of med-table\n */\n\nexport { CELL_TYPES } from './lib/types/cellTypes';\nexport { FILTER_TYPES } from './lib/types/filterTypes';\nexport { FIELD_TYPES, PATTERN_TYPES } from 'med-dynamic-form';\n\nexport * from './lib/types/MedSelectOption';\nexport * from './lib/types/MedTableColumnConfig';\nexport * from './lib/types/MedTableSettings';\nexport * from './lib/types/MedUpdateEvent';\nexport * from './lib/types/MedUpdateTableEvent';\n\nexport * from './lib/directives/med-template.directive';\nexport * from './lib/services/med-table.service';\nexport * from './lib/med-table.component';\nexport * from './lib/med-table.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i1.MedTableService","i4","i3.DateRangeComponent","i3","i2.MedTableService","i4.TableHeadCellComponent","i5.FilterSelectComponent","i6.FilterDateComponent","i7.FilterCheckboxComponent","i8.FilterTextComponent","i9.TableCellComponent"],"mappings":"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"}