{"version":3,"file":"ngx-mat-multi-sort.mjs","sources":["../../../src/lib/mat-multi-sort.directive.ts","../../../src/lib/mat-multi-sort-header/mat-multi-sort-header.component.ts","../../../src/lib/mat-multi-sort-header/mat-multi-sort-header.component.html","../../../src/lib/mat-multi-sort-table-settings/mat-multi-sort-table-settings.component.ts","../../../src/lib/mat-multi-sort-table-settings/mat-multi-sort-table-settings.component.html","../../../src/lib/mat-multi-sort.module.ts","../../../src/lib/utils.ts","../../../src/lib/table-data.ts","../../../src/lib/mat-multi-sort-data-source.ts","../../../src/public_api.ts","../../../src/ngx-mat-multi-sort.ts"],"sourcesContent":["import { Directive, OnInit} from '@angular/core';\nimport { MatSort, MatSortable, SortDirection } from '@angular/material/sort';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: '[matMultiSort]',\n    exportAs: 'matMultiSort'\n})\nexport class MatMultiSort extends MatSort implements OnInit {\n\n  start = 'asc' as 'asc' | 'desc';\n  private _allDirections: SortDirection[] = ['asc', 'desc'];\n\n  directions: SortDirection[] = [];\n  actives: string[] = [];\n\n  ngOnInit(): void {\n    super.ngOnInit();\n  }\n\n  sort(sortable: MatSortable): void {\n    this.updateMultipleSorts(sortable);\n    super.sort(sortable);\n  }\n\n  updateMultipleSorts(sortable: MatSortable): void {\n    const i = this.actives.findIndex(activeId => activeId === sortable.id);\n\n    if (this.isActive(sortable)) {\n      if (this.activeDirection(sortable) === (sortable.start ? sortable.start : this.start)) {\n        this.directions.splice(i, 1, this.getNextSortDirection(sortable));\n      } else {\n        this.actives.splice(i, 1);\n        this.directions.splice(i, 1);\n      }\n    } else {\n      this.actives.push(sortable.id);\n      this.directions.push(sortable.start ? sortable.start : this.start);\n    }\n  }\n\n  isActive(sortable: MatSortable) {\n    const i = this.actives.findIndex(activeId => activeId === sortable.id);\n    return i > -1;\n  }\n\n  activeDirection(sortable: MatSortable): 'asc' | 'desc' {\n    const i = this.actives.findIndex(activeId => activeId === sortable.id);\n    return this.directions[i] || (sortable.start ? sortable.start : this.start);\n  }\n\n  getNextSortDirection(sortable: MatSortable): SortDirection {\n    const i = this._allDirections.indexOf(this.activeDirection(sortable));\n    return this._allDirections[(i + 1) % this._allDirections.length];\n  }\n}\n","import {\n  Component,\n  Input,\n  ChangeDetectorRef,\n  ViewEncapsulation,\n  ElementRef,\n  inject,\n  InjectionToken\n} from '@angular/core';\nimport {MatSort, MatSortHeader, MatSortHeaderIntl} from '@angular/material/sort';\nimport { MatMultiSort } from '../mat-multi-sort.directive';\nimport { FocusMonitor } from '@angular/cdk/a11y';\n\n\n/** Column definition associated with a `MatSortHeader`. */\ninterface C2MatSortHeaderColumnDef {\n  name: string;\n}\n\n@Component({\n// eslint-disable-next-line @angular-eslint/component-selector\n  selector: '[mat-multi-sort-header]',\n  exportAs: 'matMultiSortHeader',\n  templateUrl: './mat-multi-sort-header.component.html',\n  styleUrls: ['./mat-multi-sort-header.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  imports: [],\n  providers: [{provide: MatSort, useExisting: MatMultiSort}],\n})\nexport class MatMultiSortHeaderComponent extends MatSortHeader {\n  _intl: MatSortHeaderIntl;\n  _mySort?: MatMultiSort;\n  _myColumnDef?: C2MatSortHeaderColumnDef;\n\n  start = 'asc' as 'asc' | 'desc';\n  @Input('mat-multi-sort-header') id: string = '';\n\n  constructor() {\n    const _intl = inject(MatSortHeaderIntl);\n    const changeDetectorRef = inject(ChangeDetectorRef);\n    const _sort = inject(MatMultiSort, { optional: true });\n    const _columnDef = inject<C2MatSortHeaderColumnDef>(new InjectionToken('C2_SORT_HEADER_COLUMN_DEF'), { optional: true });\n    const _focusMonitor = inject(FocusMonitor);\n    const _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n    super(_intl, changeDetectorRef, _sort, _columnDef, _focusMonitor, _elementRef);\n\n    this._intl = _intl;\n    if(_sort) this._mySort = _sort;\n    if(_columnDef) this._myColumnDef = _columnDef;\n  }\n\n  _isSorted() {\n    return this._mySort ? this._mySort.actives.findIndex(activeId => activeId === this.id) > -1 : false;\n  }\n\n  _sortId() {\n    return this._mySort ? this._mySort.actives.findIndex(activeId => activeId === this.id) + 1 : false;\n  }\n\n  _renderArrow() {\n    return !this._isDisabled() || this._isSorted();\n  }\n\n  getSortDirection(): 'asc' | 'desc' | '' {\n    const i = this._mySort ? this._mySort.actives.findIndex(activeIds => activeIds === this.id) : 0;\n    const direction = this._mySort ? this._mySort.directions[i] : 'asc';\n    return this._isSorted() ? direction : (this.start || (this._mySort && this._mySort.start));\n  }\n}\n","<div class=\"mat-sort-header-container\"\n  [class.mat-sort-header-sorted]=\"_isSorted()\"\n  [class.mat-sort-header-position-before]=\"arrowPosition === 'before'\"\n  [class.mat-sort-header-ascending]=\"getSortDirection() === 'asc'\"\n  [class.mat-sort-header-deascending]=\"getSortDirection() === 'desc'\">\n\n  <div class=\"mat-sort-header-content\">\n    <ng-content></ng-content>\n  </div>\n  @if (_renderArrow() && _isSorted()) {\n    <div class=\"mat-sort-header-arrow\"\n         animate.enter=\"opacity: 1; transform: translateY(0)\"\n         animate.leave=\"opacity: 0; transform: translateY(-25%)\">\n      <svg [class.asc]=\"getSortDirection() === 'asc'\"\n        [class.desc]=\"getSortDirection() === 'desc'\"\n        viewBox=\"0 -960 960 960\" focusable=\"false\" aria-hidden=\"true\">\n        <path d=\"M440-240v-368L296-464l-56-56 240-240 240 240-56 56-144-144v368h-80Z\"></path>\n      </svg>\n    </div>\n  }\n  @if (_isSorted()) {\n    <div>{{_sortId()}}</div>\n  }\n</div>\n","import { Component, ContentChild, ElementRef, Input, OnInit, TemplateRef, ViewChild, ViewContainerRef, inject } from '@angular/core';\nimport {CdkDrag, CdkDragDrop, CdkDragHandle, CdkDropList, moveItemInArray} from '@angular/cdk/drag-drop';\nimport { TableData } from '../table-data';\nimport {BlockScrollStrategy, Overlay, OverlayRef, ScrollStrategy, ViewportRuler} from '@angular/cdk/overlay';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport {MatChipRow, MatChipSet} from '@angular/material/chips';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {MatTooltip} from '@angular/material/tooltip';\nimport {MatIcon} from '@angular/material/icon';\nimport {FormsModule} from '@angular/forms';\n\n\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n    selector: 'mat-multi-sort-table-settings',\n    templateUrl: './mat-multi-sort-table-settings.component.html',\n    styleUrls: ['./mat-multi-sort-table-settings.component.scss'],\n  imports: [MatCheckboxModule, CdkDropList, NgTemplateOutlet, MatTooltip, MatIcon, CdkDrag, CdkDragHandle, FormsModule, MatChipSet, MatChipRow]\n})\nexport class MatMultiSortTableSettingsComponent<T> implements OnInit {\n  private overlay = inject(Overlay);\n  private viewContainerRef = inject(ViewContainerRef);\n  private viewportRuler = inject(ViewportRuler);\n\n  _tableData!: TableData<T>;\n  sort: { id: string, name: string, direction: string }[] = [];\n  overlayRef!: OverlayRef;\n\n  @ViewChild('templateRef', { static: true }) private templateRef!: TemplateRef<HTMLElement>;\n\n  @ViewChild('settingsMenu') buttonRef!: ElementRef;\n\n  @ContentChild('sortIndicator', { static: false }) sortIndicatorRef!: TemplateRef<{direction:string, columnName: string}>;\n\n  @Input()\n  sortToolTip: string = '';\n\n  @Input()\n  closeDialogOnChoice = true;\n\n  @Input()\n  scrollStrategy: ScrollStrategy = new BlockScrollStrategy(this.viewportRuler, document);\n\n  @Input()\n  set tableData(tableData: TableData<T>) {\n    this._tableData = tableData;\n  }\n\n  @Input()\n  disableSortIndicators = false;\n\n  ngOnInit(): void {\n    this.sort = this.getSort();\n    this._tableData.sortObservable.subscribe(() => this.sort = this.getSort());\n    this._tableData.onColumnsChange().subscribe(() => this.sort = this.getSort());\n  }\n\n  openDialog() {\n    const button = this.buttonRef.nativeElement;\n    const positionStrategyBuilder = this.overlay.position();\n    const positionStrategy = positionStrategyBuilder\n      .flexibleConnectedTo(button)\n      .withFlexibleDimensions(true)\n      .withViewportMargin(10)\n      .withGrowAfterOpen(true)\n      .withPush(true)\n      .withPositions([{\n        originX: 'end',\n        originY: 'bottom',\n        overlayX: 'end',\n        overlayY: 'top'\n      }]);\n    this.overlayRef = this.overlay.create({\n      hasBackdrop: true,\n      backdropClass: 'cdk-overlay-transparent-backdrop',\n      panelClass: 'column-overlay',\n      positionStrategy,\n      scrollStrategy: this.scrollStrategy\n    });\n    const templatePortal = new TemplatePortal(this.templateRef, this.viewContainerRef);\n    this.overlayRef.attach(templatePortal);\n\n    this.overlayRef.backdropClick().subscribe(() => {\n\n      this.overlayRef.dispose();\n    });\n  }\n\n  drop(event: CdkDragDrop<string[]>) {\n    moveItemInArray(this._tableData.columns, event.previousIndex, event.currentIndex);\n    this._tableData.displayedColumns = this._tableData.columns.filter(c => c.isActive).map(c => c.id);\n    this._tableData.storeTableSettings();\n  }\n\n  toggle() {\n    this._tableData.displayedColumns = this._tableData.columns.filter(c => {\n      if (!c.isActive) {\n        this.sort = this.sort.filter(s => s.id !== c.id);\n      }\n\n      return c.isActive;\n    }).map(c => c.id);\n    this.updateSort();\n    if (this.closeDialogOnChoice) {\n      this.overlayRef.dispose();\n    }\n  }\n\n  dropSort(event: CdkDragDrop<string[]>) {\n    moveItemInArray(this.sort, event.previousIndex, event.currentIndex);\n    this.updateSort();\n  }\n\n  getSort(): { id: string, name: string, direction: string }[] {\n    const sorting: { id: string, name: string, direction: string }[] = [];\n    for (let i = 0; i < this._tableData.sortParams.length; i++) {\n      sorting.push({\n        id: this._tableData.sortParams[i],\n        name: this._tableData.columns.find(c => c.id === this._tableData.sortParams[i])?.name ?? '',\n        direction: this._tableData.sortDirs[i]\n      });\n    }\n    return sorting;\n  }\n\n  remove(id: string) {\n    this.sort = this.sort.filter(v => v.id !== id);\n    this.updateSort();\n  }\n\n  updateDirection(id: string) {\n    const i = this.sort.findIndex(v => v.id === id);\n    if(i !== -1) {\n      if (this.sort[i].direction === 'asc') {\n        this.sort[i].direction = 'desc';\n      } else {\n        this.sort[i].direction = 'asc';\n      }\n    }\n    this.updateSort();\n  }\n\n  private updateSort() {\n    this._tableData.sortParams = this.sort.map(v => v.id);\n    this._tableData.sortDirs = this.sort.map(v => v.direction);\n    this._tableData.updateSortHeaders();\n  }\n}\n\n\n","<div class=\"table-settings\">\n  <div class=\"table-settings-sort\">\n    <mat-chip-set class=\"drag-chip-list\" cdkDropList cdkDropListOrientation='horizontal'\n      (cdkDropListDropped)=\"dropSort($event)\" [disabled]=\"disableSortIndicators\">\n      @for (item of sort; track item.id) {\n        <mat-chip-row class=\"drag-chip\" cdkDrag (removed)=\"remove(item.id)\"\n          (click)=\"updateDirection(item.id)\">\n          <div class=\"chip-content\">\n            @if (sortIndicatorRef) {\n              <ng-container\n                [ngTemplateOutlet]=\"sortIndicatorRef\"\n                [ngTemplateOutletContext]=\"{direction:item.direction, columnName: item.name }\">\n              </ng-container>\n            } @else {\n              <div>\n                {{item.name}}:\n                <div class=\"sorting\" [matTooltip]=\"sortToolTip\">\n                  {{item.direction}}\n                </div>\n              </div>\n            }\n            <mat-icon class=\"mat-mdc-chip-trailing-icon\" (click)=\"remove(item.id)\">cancel</mat-icon>\n          </div>\n        </mat-chip-row>\n      }\n    </mat-chip-set>\n  </div>\n  <div style=\"flex: 1 1 auto;\"></div>\n  <div #settingsMenu (click)=\"openDialog()\" class=\"table-settings-menu\">\n    <ng-content #menuRef></ng-content>\n  </div>\n</div>\n\n<ng-template #templateRef>\n  <div cdkDropList class=\"column-list\" (cdkDropListDropped)=\"drop($event)\">\n    @for (column of _tableData.columns; track column) {\n      <div class=\"column-item\" cdkDrag>\n        <mat-icon cdkDragHandle>drag_indicator</mat-icon>\n        <mat-checkbox [(ngModel)]=\"column.isActive\" (change)=\"toggle()\">{{column.name}}</mat-checkbox>\n      </div>\n    }\n  </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { MatMultiSort } from './mat-multi-sort.directive';\nimport { MatMultiSortHeaderComponent } from './mat-multi-sort-header/mat-multi-sort-header.component';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { FormsModule } from '@angular/forms';\nimport { MatMultiSortTableSettingsComponent } from './mat-multi-sort-table-settings/mat-multi-sort-table-settings.component';\nimport { MatDialogModule } from '@angular/material/dialog';\n\n\n@NgModule({\n  declarations: [],\n  exports: [],\n  imports: [\n    CommonModule,\n    MatDividerModule,\n    DragDropModule,\n    MatIconModule,\n    MatCheckboxModule,\n    MatMenuModule,\n    MatButtonModule,\n    FormsModule,\n    MatChipsModule,\n    MatTooltipModule,\n    MatDialogModule,\n    MatMultiSort,\n    MatMultiSortHeaderComponent,\n    MatMultiSortTableSettingsComponent\n  ]\n})\nexport class MatMultiSortModule {\n}\n","export class Settings {\n    private _columns: Array<{ id: string, name: string, isActive?: boolean }>;\n    private _sortParams: string[];\n    private _sortDirs: string[];\n    private _key: string;\n\n    constructor(key: string) {\n        this._key = key;\n        this._columns = [];\n        this._sortParams = [];\n        this._sortDirs = [];\n    }\n\n    public load() {\n      const storedValue = localStorage.getItem(this._key);\n        const value = storedValue ? JSON.parse(storedValue) : undefined;\n        if (value) {\n            this._columns = value._columns || [];\n            this._sortDirs = value._sortDirs || [];\n            this._sortParams = value._sortParams || [];\n        }\n    }\n\n    public save(): void {\n        const settingsString = JSON.stringify(this);\n        localStorage.setItem(this._key, settingsString);\n    }\n\n    public get columns(): Array<{ id: string, name: string, isActive?: boolean }> {\n        return this._columns;\n    }\n\n    public get sortParams(): string[] {\n        return this._sortParams;\n    }\n\n    public get sortDirs(): string[] {\n        return this._sortDirs;\n    }\n\n    public get key(): string {\n        return this._key;\n    }\n\n    public set columns(columns: Array<{ id: string, name: string, isActive?: boolean }>) {\n        this._columns = columns;\n    }\n\n    public set sortParams(sortParams: string[]) {\n        this._sortParams = sortParams;\n    }\n\n    public set sortDirs(sortDirs: string[]) {\n        this._sortDirs = sortDirs;\n    }\n}\n","import { Subject, BehaviorSubject, delay, filter, tap } from 'rxjs';\nimport { MatMultiSortTableDataSource } from './mat-multi-sort-data-source';\nimport { SortDirection } from '@angular/material/sort';\nimport { Settings } from './utils';\nimport { PageEvent } from '@angular/material/paginator';\n\nexport class TableData<T> {\n    private _dataSource!: MatMultiSortTableDataSource<T>;\n    private readonly _columns: BehaviorSubject<{ id: string, name: string, isActive?: boolean }[]>;\n    private _displayedColumns: string[] = [];\n    pageSize = 0;\n    pageIndex = 0;\n    private _pageSizeOptions: number[];\n    private _totalElements = 0\n    private _sortParams: string[];\n    private _sortDirs: string[];\n    private _key = '';\n\n    private _nextObservable: Subject<void> = new Subject<void>();\n    private _previousObservable: Subject<void> = new Subject<void>();\n    private _sizeObservable: Subject<void> = new Subject<void>();\n    private _sortObservable: Subject<void> = new Subject<void>();\n    private _displayedSortDirs?: string[]\n    private _displayedSortParams?: string[]\n\n    private _sortHeadersObservable: Subject<string[]> = new Subject<string[]>();\n\n    // TODO refactor\n    constructor(columns: { id: string, name: string, isActive?: boolean }[],\n        options?: {\n            defaultSortParams?: string[],\n            defaultSortDirs?: string[],\n            pageSizeOptions?: number[],\n            totalElements?: number,\n            localStorageKey?: string\n        }) {\n        this._columns = new BehaviorSubject(columns.map(c => { if (c.isActive === undefined) { c.isActive = true; } return c; }));\n\n        if (options) {\n            if (options.pageSizeOptions && options.pageSizeOptions.length < 1) {\n                throw Error('Array of pageSizeOptions must contain at least one entry');\n            }\n\n            if (options.defaultSortParams) {\n                options.defaultSortParams.map(s => {\n                    if (this._columns.value.find(column => column.id === s) === undefined) {\n                        throw Error(`Provided sort parameter \"${s}\" is not a column.`);\n                    }\n                });\n            }\n\n            this._sortParams = options.defaultSortParams || [];\n            this._sortDirs = options.defaultSortDirs || [];\n\n            if (this._sortParams.length !== this._sortDirs.length) {\n                this._sortDirs = this._sortParams.map(() => 'asc');\n            }\n\n            this._totalElements = options.totalElements || 0;\n            this._pageSizeOptions = options.pageSizeOptions || [10, 20, 50, 100];\n            this._key = options.localStorageKey ?? '';\n        } else {\n            this._pageSizeOptions = [10, 20, 50, 100];\n            this._sortParams = [];\n            this._sortDirs = [];\n        }\n        this.init();\n    }\n\n    public onSortEvent() {\n        this._sortParams = this._dataSource.sort['actives'];\n        this._sortDirs = this._dataSource.sort['directions'];\n        this._clientSideSort();\n        this._sortObservable.next();\n        this.storeTableSettings();\n    }\n\n    public onPaginationEvent($event: PageEvent) {\n        const tmpPageSize: number = this.pageSize;\n        this.pageSize = $event.pageSize;\n        this.pageIndex = $event.pageIndex;\n\n        if (tmpPageSize !== this.pageSize) {\n            this._sizeObservable.next();\n        } else if ($event.previousPageIndex !== undefined && $event.previousPageIndex < $event.pageIndex) {\n            this._nextObservable.next();\n        } else if ($event.previousPageIndex !== undefined && $event.previousPageIndex > $event.pageIndex) {\n            this._previousObservable.next();\n        }\n    }\n\n    public updateSortHeaders(): void {\n        // Dirty hack to display default sort column(s)\n        const temp = Object.assign([], this._displayedColumns);\n        this._sortHeadersObservable.next([]);\n        this._sortHeadersObservable.next(temp);\n        this._clientSideSort();\n        this._sortObservable.next();\n        this.storeTableSettings();\n    }\n\n    // this fixes an infine loop of rerendering\n    private subscribeSortHeaders(): void {\n        this._sortHeadersObservable.pipe(\n            delay(0),\n            // ignore when there is no update in the sort (params or dirs)\n            filter(() => this._displayedSortDirs !== this.sortDirs && this._displayedSortParams !== this.sortParams),\n            tap((column) => {\n                // update the displayed sort when it is not the empty array\n                if(column.length > 0) {\n                    this._displayedSortDirs = this.sortDirs;\n                    this._displayedSortParams = this.sortParams;\n                }\n            })\n        ).subscribe(columns => this._displayedColumns = columns)\n    }\n\n    private init() {\n        this.subscribeSortHeaders();\n        if (this._key) {\n            const settings = new Settings(this._key);\n            settings.load();\n            if (this._isLocalStorageSettingsValid(settings)) {\n                // load column configuration from localstorage and update the name\n                this.columns = settings.columns.map(storedColumn => {\n                  return {...storedColumn, name: this.columns.find(column => column.id === storedColumn.id)?.name ?? storedColumn.name};\n                });\n                this._sortDirs = settings.sortDirs;\n                this._sortParams = settings.sortParams;\n            } else {\n                console.warn(\"Stored tableSettings are invalid. Using default\");\n            }\n        }\n        this.displayedColumns = this.columns.filter(c => c.isActive).map(c => c.id);\n    }\n\n    private _clientSideSort() {\n        this._dataSource.orderData();\n    }\n\n    private _isLocalStorageSettingsValid(settings: Settings): boolean {\n        // check if number of columns matching\n        if (settings.columns.length !== this._columns.value.length) {\n            return false;\n        }\n\n        // check if columns are the same\n        for (const column of settings.columns) {\n            const match = this._columns.value.find(c => c.id === column.id);\n            if (match === undefined) {\n                return false;\n            }\n        }\n        return true;\n    }\n\n    public storeTableSettings(): void {\n        if (this._key) {\n            const settings: Settings = new Settings(this._key);\n            settings.columns = this._columns.value;\n            settings.sortParams = this._sortParams;\n            settings.sortDirs = this._sortDirs;\n            settings.save();\n        }\n    }\n\n    public set totalElements(totalElements: number) {\n        this._totalElements = totalElements;\n    }\n\n    public get totalElements(): number {\n        return this._totalElements;\n    }\n\n    public set displayedColumns(displayedColumns: string[]) {\n        this._displayedColumns = displayedColumns;\n        this._columns.next(this._columns.value.map(c => {\n            c.isActive = this._displayedColumns.includes(c.id);\n            return c;\n        }));\n    }\n\n    public get displayedColumns(): string[] {\n        return this._displayedColumns;\n    }\n\n    public set dataSource(dataSource: MatMultiSortTableDataSource<T>) {\n        this._dataSource = dataSource;\n        if (this._sortParams.length > 0) {\n            this._dataSource.sort.actives = this._sortParams;\n            this._dataSource.sort.directions = this._sortDirs.map(v => v as SortDirection);\n            this.updateSortHeaders();\n        }\n    }\n\n    public get dataSource(): MatMultiSortTableDataSource<T> {\n        return this._dataSource;\n    }\n\n    public set data(data: T[]) {\n        this._dataSource.data = data;\n        this._clientSideSort();\n    }\n\n    public set columns(v: { id: string, name: string, isActive?: boolean }[]) {\n        this._columns.next(v.map(c => { if (c.isActive === undefined) { c.isActive = true; } return c; }));\n    }\n\n    public onColumnsChange(): BehaviorSubject<{ id: string, name: string, isActive?: boolean }[]> {\n        return this._columns;\n    }\n\n    public updateColumnNames(v: { id: string, name: string }[]) {\n        const dict: { [key: string]: string } = {};\n        v.forEach(c => dict[c.id] = c.name);\n        this._columns.next(this._columns.value.map(c => { c.name = dict[c.id] || c.name; return c; }));\n    }\n\n    public get nextObservable() {\n        return this._nextObservable;\n    }\n\n    public get previousObservable() {\n        return this._previousObservable;\n    }\n\n    public get sizeObservable() {\n        return this._sizeObservable;\n    }\n\n    public get sortObservable() {\n        return this._sortObservable;\n    }\n\n    public get sortParams(): string[] {\n        return this._sortParams;\n    }\n\n    public get sortDirs(): string[] {\n        return this._sortDirs;\n    }\n\n    public get columns(): { id: string, name: string, isActive?: boolean }[] {\n        return this._columns.value;\n    }\n\n    public get pageSizeOptions(): number[] {\n        return this._pageSizeOptions;\n    }\n\n    public set sortParams(v: string[]) {\n        this._sortParams = v;\n        this._dataSource.sort.actives = this._sortParams;\n    }\n\n    public set sortDirs(v: string[]) {\n        this._sortDirs = v;\n        this._dataSource.sort.directions = this._sortDirs.map(elem => elem as SortDirection);\n    }\n}\n","import { DataSource } from '@angular/cdk/collections';\nimport { BehaviorSubject } from 'rxjs';\nimport { MatMultiSort } from './mat-multi-sort.directive';\n\nexport class MatMultiSortTableDataSource<T> extends DataSource<T> {\n    private _data: BehaviorSubject<T[]> = new BehaviorSubject<T[]>([]);\n    private clientSideSorting;\n    sort: MatMultiSort;\n\n    constructor(sort: MatMultiSort, clientSideSorting = false) {\n        super();\n        this.sort = sort;\n        this.clientSideSorting = clientSideSorting;\n    }\n\n    public set data(data: T[]) {\n        this._data.next(data);\n    }\n\n    public get data(): T[] {\n        return this._data.value;\n    }\n\n    connect(): BehaviorSubject<T[]> {\n        return this._data;\n    }\n\n    disconnect(): void {\n        this._data.complete();\n    }\n\n    orderData() {\n        this._data.next(this.sortData(this._data.value, this.sort.actives, this.sort.directions));\n    }\n\n    sortData(data: T[], actives: string[], directions: string[]): T[] {\n        const _data = Object.assign(new Array<T>(), data);\n        if (this.clientSideSorting) {\n            return _data.sort((i1, i2) => {\n                return this._sortData(i1, i2, actives, directions);\n            });\n        }\n        return _data;\n    }\n\n    _sortData(d1: T, d2: T, params: string[], dirs: string[]): number {\n        // @ts-expect-error -- need a typesafe way to express these accessor operations, ts-ignore could be a solution\n        // if there's not a suitable solution offered by typescript\n        if (d1[params[0]] > d2[params[0]]) {\n            return dirs[0] === 'asc' ? 1 : -1;\n        // @ts-expect-error --- same\n        } else if (d1[params[0]] < d2[params[0]]) {\n            return dirs[0] === 'asc' ? -1 : 1;\n        } else {\n            if (params.length > 1) {\n                params = params.slice(1, params.length);\n                dirs = dirs.slice(1, dirs.length);\n                return this._sortData(d1, d2, params, dirs);\n            } else {\n                return 0;\n            }\n        }\n    }\n}\n","\n/*\n * Public API Surface of mat-multi-sort\n */\n\nexport * from './lib/mat-multi-sort.directive';\nexport * from './lib/mat-multi-sort-header/mat-multi-sort-header.component';\nexport * from './lib/mat-multi-sort-table-settings/mat-multi-sort-table-settings.component';\nexport * from './lib/mat-multi-sort.module';\nexport * from './lib/table-data';\nexport * from './lib/mat-multi-sort-data-source';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}