{"version":3,"file":"notiz-ngx-tablo.mjs","sources":["../../../projects/ngx-tablo/src/lib/is-defined.ts","../../../projects/ngx-tablo/src/lib/nested-value.ts","../../../projects/ngx-tablo/src/lib/cell-value.pipe.ts","../../../projects/ngx-tablo/src/lib/has-cell-value.pipe.ts","../../../projects/ngx-tablo/src/lib/ngx-tablo.component.ts","../../../projects/ngx-tablo/src/lib/nested-column-name.pipe.ts","../../../projects/ngx-tablo/src/lib/datasource/loading.data-source.ts","../../../projects/ngx-tablo/src/lib/datasource/nested-object.data-source.ts","../../../projects/ngx-tablo/src/public-api.ts","../../../projects/ngx-tablo/src/notiz-ngx-tablo.ts"],"sourcesContent":["export function isDefined(value: any): boolean {\n  return value !== undefined && value !== null;\n}\n","export const resolveNestedValue = (row: any, path: string) =>\n  path.split(/\\./).reduce((o, p) => o && o[p], row);\n\nexport const resolveNestedColumnValue = (row: any, columnName: string): any => {\n  if (columnName.match(/\\./)) {\n    return resolveNestedValue(row, columnName);\n  } else {\n    return row[columnName];\n  }\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isDefined } from './is-defined';\nimport { resolveNestedColumnValue } from './nested-value';\nimport { TabloColumn } from './tablo-column';\n\n@Pipe({ name: 'cellValue', standalone: true })\nexport class CellValuePipe<T> implements PipeTransform {\n  transform(row: T, column: TabloColumn<T>): any | undefined {\n    if (isDefined(column.cellTemplate)) {\n      return column.cellTemplate;\n    }\n    if (column.cell && isDefined(column.cell(row))) {\n      return column.cell(row);\n    }\n\n    const resolvedNestedColumnValue = resolveNestedColumnValue(\n      row,\n      column.columnName,\n    );\n    if (isDefined(resolveNestedColumnValue)) {\n      return resolvedNestedColumnValue;\n    }\n\n    return undefined;\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isDefined } from './is-defined';\nimport { resolveNestedColumnValue } from './nested-value';\nimport { TabloColumn } from './tablo-column';\n\n@Pipe({ name: 'hasCellValue', standalone: true })\nexport class HasCellValuePipe<T> implements PipeTransform {\n  transform(row: T, column: TabloColumn<T>): boolean {\n    if (\n      isDefined(column.cellTemplate) ||\n      (column.cell && isDefined(column.cell(row))) ||\n      isDefined(resolveNestedColumnValue(row, column.columnName))\n    ) {\n      return true;\n    }\n    return false;\n  }\n}\n","import { DataSource } from '@angular/cdk/collections';\nimport {\n  CurrencyPipe,\n  DatePipe,\n  DecimalPipe,\n  NgTemplateOutlet,\n  PercentPipe,\n  TitleCasePipe,\n} from '@angular/common';\nimport {\n  AfterViewInit,\n  Component,\n  OnDestroy,\n  OnInit,\n  computed,\n  effect,\n  input,\n  model,\n  output,\n  viewChild,\n} from '@angular/core';\nimport {\n  MatPaginator,\n  MatPaginatorModule,\n  PageEvent,\n} from '@angular/material/paginator';\nimport {\n  MatSort,\n  MatSortModule,\n  Sort,\n  SortDirection,\n} from '@angular/material/sort';\nimport { MatTableDataSource, MatTableModule } from '@angular/material/table';\nimport { Observable, Subject, takeUntil } from 'rxjs';\nimport { CellValuePipe } from './cell-value.pipe';\nimport { HasCellValuePipe } from './has-cell-value.pipe';\nimport { TabloColumns } from './tablo-column';\n\n@Component({\n  selector: 'ngx-tablo',\n  imports: [\n    NgTemplateOutlet,\n    DatePipe,\n    DecimalPipe,\n    PercentPipe,\n    CurrencyPipe,\n    TitleCasePipe,\n    MatTableModule,\n    MatPaginatorModule,\n    MatSortModule,\n    HasCellValuePipe,\n    CellValuePipe,\n  ],\n  template: `\n    <table\n      [class]=\"tableClasses()\"\n      mat-table\n      [dataSource]=\"dataSource()\"\n      matSort\n      [matSortActive]=\"sortActive()\"\n      [matSortDirection]=\"sortDirection()\"\n    >\n      @for (column of columns(); track column; let i = $index) {\n        <ng-container [matColumnDef]=\"column.columnName\">\n          <th\n            mat-header-cell\n            [mat-sort-header]=\"column.sortHeader || column.columnName\"\n            [disabled]=\"!column.sort\"\n            *matHeaderCellDef\n          >\n            @if (column.headerTemplate; as content) {\n              <ng-container\n                [ngTemplateOutlet]=\"headerContentTemplate\"\n                [ngTemplateOutletContext]=\"{\n                  content: content,\n                  column: column,\n                }\"\n              ></ng-container>\n            } @else {\n              @if (\n                (column.headerHTMLContent &&\n                  column.headerHTMLContent(column)) ||\n                  column.header;\n                as content\n              ) {\n                <div\n                  [class]=\"column.headerClassName\"\n                  [innerHTML]=\"content\"\n                ></div>\n              }\n            }\n          </th>\n          <td mat-cell *matCellDef=\"let row\" [class]=\"column.cellClass\">\n            @if (row | hasCellValue: column; as content) {\n              <ng-container\n                [ngTemplateOutlet]=\"cellContentTemplate\"\n                [ngTemplateOutletContext]=\"{\n                  content: row | cellValue: column,\n                  row: row,\n                  className: column.className,\n                  format: column.format,\n                }\"\n              >\n              </ng-container>\n            }\n          </td>\n        </ng-container>\n      }\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns()\"></tr>\n      <tr\n        mat-row\n        *matRowDef=\"let row; columns: displayedColumns()\"\n        (click)=\"rowClick.emit(row)\"\n      ></tr>\n    </table>\n\n    @if (showPaging()) {\n      <mat-paginator\n        [disabled]=\"pagingDisabled()\"\n        [hidePageSize]=\"hidePageSize()\"\n        [pageSizeOptions]=\"pageSizeOptions()\"\n        [pageSize]=\"pageSize()\"\n        [pageIndex]=\"pageIndex()\"\n        [length]=\"length()\"\n        [showFirstLastButtons]=\"showFirstLastButtons()\"\n        [attr.aria-label]=\"pageAriaLabel()\"\n      >\n      </mat-paginator>\n    }\n\n    <ng-template\n      #headerContentTemplate\n      let-content=\"content\"\n      let-column=\"column\"\n    >\n      <ng-container\n        [ngTemplateOutlet]=\"content\"\n        [ngTemplateOutletContext]=\"{ column: column }\"\n      ></ng-container>\n    </ng-template>\n\n    <ng-template\n      #cellContentTemplate\n      let-content=\"content\"\n      let-row=\"row\"\n      let-className=\"className\"\n      let-format=\"format\"\n    >\n      @if (!content.createEmbeddedView) {\n        @if (format) {\n          <div [class]=\"className\">\n            <!-- NOTE: each specified format will be displayed currently -->\n            @if (format.date) {\n              {{ content | date: format.date }}\n            }\n            @if (format.decimal) {\n              {{ content | number: format.decimal }}\n            }\n            @if (format.percent) {\n              {{ content | percent: format.percent }}\n            }\n            @if (format.currency) {\n              {{ content | currency: format.currency }}\n            }\n            @if (format.titleCase) {\n              {{ content | titlecase }}\n            }\n          </div>\n        } @else {\n          <div [class]=\"className\" [innerHTML]=\"content\"></div>\n        }\n      } @else {\n        <ng-container\n          [ngTemplateOutlet]=\"content\"\n          [ngTemplateOutletContext]=\"{ row: row }\"\n        ></ng-container>\n      }\n    </ng-template>\n  `,\n  styles: [\n    `\n      table {\n        width: 100%;\n      }\n    `,\n  ],\n})\nexport class Tablo<T> implements OnInit, AfterViewInit, OnDestroy {\n  tableClasses = input<string>('');\n\n  /**\n   * Add custom dataSource.\n   *\n   * Default: MatTableDataSource\n   */\n  dataSource = input<DataSource<T>>(new MatTableDataSource());\n\n  data = model<T[] | Observable<T[]> | undefined>();\n\n  columns = input<TabloColumns<T>>([]);\n\n  protected displayedColumns = computed(() =>\n    this.columns().map((column) => column.columnName),\n  );\n\n  mode = input<'client' | 'server'>('client');\n\n  /**\n   * Sorting\n   */\n  sortActive = model('');\n  sortDirection = model<SortDirection>('');\n  /**\n   * Custom sorting function for `MatTableDataSource`.\n   *\n   * Use this if data properties don't match column names or for complex data objects.\n   *\n   * Default expects column `xyz` to represent `data['xyz']`.\n   *\n   */\n  sortingDataAccessor =\n    input<(data: T, sortHeaderId: string) => string | number>();\n\n  /**\n   * Filter value for `MatTableDataSource`.\n   */\n  filter = input<string>();\n\n  /**\n   * Custom filter function for `MatTableDataSource`.\n   */\n  filterPredicate = input<(data: T, filter: string) => boolean>();\n\n  /**\n   * Paging\n   */\n  showPaging = model(false);\n  pagingDisabled = model(false);\n  hidePageSize = model(false);\n  showFirstLastButtons = model(true);\n  pageSize = model(0);\n  pageIndex = model(0);\n  length = model<number>(0);\n  pageSizeOptions = model([10, 20, 50, 100]);\n  pageAriaLabel = model('Select page');\n  /**\n   * default to false\n   */\n  resetPageOnSort = model<boolean>(false);\n\n  /**\n   * Outputs\n   */\n  rowClick = output<T>();\n  pageChange = output<PageEvent>();\n  sortChange = output<Sort>();\n\n  private paginator = viewChild<MatPaginator>(MatPaginator);\n  private sort = viewChild.required(MatSort);\n\n  private destroy$ = new Subject<void>();\n\n  constructor() {\n    effect(() => {\n      this.fillData();\n    });\n\n    effect(() => {\n      const filter = this.filter();\n\n      if (this.dataSource() instanceof MatTableDataSource) {\n        this.getMatTableDataSource().filter = filter || '';\n      }\n    });\n  }\n\n  ngOnInit(): void {\n    this.columns().forEach((column) => {\n      if (column.lifecycle?.onInit) {\n        column.lifecycle.onInit(column);\n      }\n    });\n\n    if (this.dataSource() instanceof MatTableDataSource) {\n      if (this.filterPredicate()) {\n        this.getMatTableDataSource().filterPredicate = this.filterPredicate()!;\n      }\n\n      if (this.sortingDataAccessor()) {\n        this.getMatTableDataSource().sortingDataAccessor =\n          this.sortingDataAccessor()!;\n      }\n    }\n  }\n\n  ngAfterViewInit() {\n    this.columns().forEach((column) => {\n      if (column.lifecycle?.afterViewInit) {\n        column.lifecycle.afterViewInit(column);\n      }\n    });\n\n    this.sort().sortChange.subscribe((sort) => {\n      this.sortChange.emit(sort);\n      if (this.resetPageOnSort()) {\n        this.firstPage();\n      }\n    });\n\n    if (this.paginator()) {\n      this.paginator()!.page.subscribe((page) => this.pageChange.emit(page));\n    }\n\n    if (\n      this.mode() === 'client' &&\n      this.dataSource() instanceof MatTableDataSource\n    ) {\n      this.getMatTableDataSource().paginator = this.paginator()!;\n      this.getMatTableDataSource().sort = this.sort();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  firstPage() {\n    if (this.paginator()) {\n      this.paginator()!.firstPage();\n    }\n  }\n\n  lastPage() {\n    if (this.paginator()) {\n      this.paginator()!.lastPage();\n    }\n  }\n\n  clearFilter() {\n    if (this.dataSource() instanceof MatTableDataSource) {\n      this.getMatTableDataSource().filter = '';\n    }\n  }\n\n  private fillData() {\n    if (this.data() && this.dataSource() instanceof MatTableDataSource) {\n      if (this.data() instanceof Observable) {\n        (this.data() as Observable<T[]>)\n          .pipe(takeUntil(this.destroy$))\n          .subscribe((data) => (this.getMatTableDataSource().data = data));\n      } else {\n        this.getMatTableDataSource().data = this.data() as T[];\n      }\n    }\n  }\n\n  private getMatTableDataSource(): MatTableDataSource<T> {\n    return this.dataSource() as MatTableDataSource<T>;\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { resolveNestedColumnValue } from './nested-value';\n\n@Pipe({ name: 'nestedColumnName', standalone: true })\nexport class NestedColumnNamePipe implements PipeTransform {\n  transform(value: any, columnName: string): any {\n    return resolveNestedColumnValue(value, columnName);\n  }\n}\n","import { CollectionViewer, DataSource } from '@angular/cdk/collections';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nexport abstract class LoadingDataSource<T> implements DataSource<T> {\n  protected dataSubject = new BehaviorSubject<T[]>([]);\n  protected loadingSubject = new BehaviorSubject<boolean>(false);\n  protected disconnect$ = new Subject<void>();\n\n  loading$ = this.loadingSubject.asObservable();\n\n  connect(collectionViewer: CollectionViewer): Observable<readonly T[]> {\n    return this.dataSubject.asObservable();\n  }\n\n  disconnect(collectionViewer: CollectionViewer): void {\n    this.dataSubject.complete();\n    this.loadingSubject.complete();\n\n    this.disconnect$.next();\n    this.disconnect$.complete();\n  }\n}\n","import { _isNumberValue } from '@angular/cdk/coercion';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { resolveNestedValue } from '../nested-value';\n\n/**\n * MatTableDataSource that supports sorting for nested objects.\n */\nexport class NestedObjectDataSource<T> extends MatTableDataSource<T> {\n  constructor(initialData?: T[]) {\n    super(initialData);\n  }\n\n  override sortingDataAccessor: (\n    data: T,\n    sortHeaderId: string,\n  ) => string | number = (data: T, sortHeaderId: string): string | number => {\n    const value = resolveNestedValue(data, sortHeaderId);\n    return _isNumberValue(value) ? Number(value) : value;\n  };\n}\n\nexport const nestedObjectDataSource = <T>(initialData?: T[]) =>\n  new NestedObjectDataSource(initialData);\n","/*\n * Public API Surface of ngx-tablo\n */\n\nexport * from './lib/ngx-tablo.component';\nexport * from './lib/tablo-column';\n\nexport * from './lib/nested-column-name.pipe';\nexport * from './lib/nested-value';\n\nexport * from './lib/datasource';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}