{"version":3,"file":"dereekb-dbx-web-table.mjs","sources":["../../../../packages/dbx-web/table/src/lib/date/date.table.column.header.component.ts","../../../../packages/dbx-web/table/src/lib/table.ts","../../../../packages/dbx-web/table/src/lib/table.store.ts","../../../../packages/dbx-web/table/src/lib/date/daterange.table.cell.input.component.ts","../../../../packages/dbx-web/table/src/lib/date/table.date.module.ts","../../../../packages/dbx-web/table/src/lib/table.cell.action.component.ts","../../../../packages/dbx-web/table/src/lib/table.cell.input.component.ts","../../../../packages/dbx-web/table/src/lib/table.cell.summaryend.component.ts","../../../../packages/dbx-web/table/src/lib/table.cell.summarystart.component.ts","../../../../packages/dbx-web/table/src/lib/table.column.directive.ts","../../../../packages/dbx-web/table/src/lib/table.column.header.component.ts","../../../../packages/dbx-web/table/src/lib/table.column.footer.component.ts","../../../../packages/dbx-web/table/src/lib/table.column.size.directive.ts","../../../../packages/dbx-web/table/src/lib/table.column.size.ts","../../../../packages/dbx-web/table/src/lib/table.item.directive.ts","../../../../packages/dbx-web/table/src/lib/table.item.cell.component.ts","../../../../packages/dbx-web/table/src/lib/table.item.header.component.ts","../../../../packages/dbx-web/table/src/lib/table.item.action.component.ts","../../../../packages/dbx-web/table/src/lib/table.group.directive.ts","../../../../packages/dbx-web/table/src/lib/table.group.header.component.ts","../../../../packages/dbx-web/table/src/lib/table.group.footer.component.ts","../../../../packages/dbx-web/table/src/lib/table.fullsummaryrow.component.ts","../../../../packages/dbx-web/table/src/lib/table.component.ts","../../../../packages/dbx-web/table/src/lib/table.component.html","../../../../packages/dbx-web/table/src/lib/table.directive.ts","../../../../packages/dbx-web/table/src/lib/table.module.ts","../../../../packages/dbx-web/table/src/lib/table.reader.ts","../../../../packages/dbx-web/table/src/dereekb-dbx-web-table.ts"],"sourcesContent":["import { Component, signal } from '@angular/core';\nimport { type DbxInjectionComponentConfig, type DbxInjectionComponentConfigFactory } from '@dereekb/dbx-core';\nimport { type Maybe } from '@dereekb/util';\nimport { type DbxTableColumn } from '../table';\nimport { DatePipe } from '@angular/common';\n\n/**\n * A table header component used for rendering date values on the header.\n */\n@Component({\n  template: `\n    @if (dateSignal()) {\n      <div class=\"dbx-table-date-column-header\">\n        <span class=\"dbx-table-date-column-header-left\">{{ dateSignal() | date: left }}</span>\n        <span>{{ dateSignal() | date: right }}</span>\n      </div>\n    }\n  `,\n  imports: [DatePipe]\n})\nexport class DbxTableDateHeaderComponent {\n  readonly left = 'E';\n  readonly right = 'MMM d';\n\n  private readonly _dateSignal = signal<Maybe<Date>>(undefined);\n  readonly dateSignal = this._dateSignal.asReadonly();\n\n  get date() {\n    return this._dateSignal();\n  }\n\n  set date(date: Maybe<Date>) {\n    this._dateSignal.set(date);\n  }\n}\n\n/**\n * Creates a factory that produces injection component configs for rendering date column headers.\n *\n * The factory initializes each {@link DbxTableDateHeaderComponent} with the column's date metadata.\n *\n * @returns A factory function that maps a date column to its header injection config.\n */\nexport function dbxTableDateHeaderInjectionFactory(): DbxInjectionComponentConfigFactory<DbxTableColumn<Date>, DbxTableDateHeaderComponent> {\n  return (column: DbxTableColumn<Date>) => {\n    const config: DbxInjectionComponentConfig<DbxTableDateHeaderComponent> = {\n      componentClass: DbxTableDateHeaderComponent,\n      init: (x) => {\n        x.date = column.meta;\n      }\n    };\n\n    return config;\n  };\n}\n","import { type Observable } from 'rxjs';\nimport { type LoadingState, type ObservableOrValue, type PageListLoadingState } from '@dereekb/rxjs';\nimport { type CssClassesArray, type Maybe } from '@dereekb/util';\nimport { type DbxInjectionComponentConfig } from '@dereekb/dbx-core';\nimport { type TrackByFunction } from '@angular/core';\n\n/**\n * Delegate used for retrieving data for a table.\n */\nexport interface DbxTableContextDataDelegate<I, C, T> {\n  /**\n   * Loads data given the input.\n   *\n   * @param input\n   */\n  loadData(input: I): Observable<LoadingState<DbxTableContextData<I, C, T>>>;\n}\n\nexport interface DbxTableContextData<I, C, T> {\n  /**\n   * Original context input\n   */\n  readonly input: I;\n  /**\n   * All columns in this data context.\n   */\n  readonly columns: DbxTableColumn<C>[];\n  /**\n   * All currently loaded items.\n   */\n  readonly items$: Observable<PageListLoadingState<T>>;\n  /**\n   * Loads more items, if applicable.\n   */\n  loadMore?(): void;\n}\n\nexport interface DbxTableColumn<C> {\n  /**\n   * Unique column name\n   */\n  readonly columnName: string;\n  /**\n   * Column metadata\n   */\n  readonly meta: C;\n}\n\nexport const NO_GROUPS_ID = 'none';\n\n/**\n * Unique identifier used for grouping items together.\n */\nexport type DbxTableGroupId = string;\n\nexport interface DbxTableItemGroup<T, G = unknown> {\n  readonly groupId: DbxTableGroupId;\n  readonly items: T[];\n  readonly meta: G;\n}\n\nexport interface DefaultDbxTableItemGroup<T, G = unknown> extends DbxTableItemGroup<T, G> {\n  readonly groupId: typeof NO_GROUPS_ID;\n  readonly default: true;\n}\n\n/**\n * Creates a default (ungrouped) table item group that wraps all items under the {@link NO_GROUPS_ID} identifier.\n *\n * Used when no explicit grouping function is provided to the table.\n *\n * @param items - The array of items to include in the default group.\n * @returns A default group containing all the provided items.\n */\nexport function defaultDbxTableItemGroup<T, G = unknown>(items: T[]): DefaultDbxTableItemGroup<T, G> {\n  return {\n    groupId: NO_GROUPS_ID,\n    items,\n    meta: undefined as G,\n    default: true\n  };\n}\n\nexport type DbxTableGroupByFunction<T, G = unknown> = (items: T[]) => ObservableOrValue<DbxTableItemGroup<T, G>[]>;\n\n/**\n * Delegate used for generating view configurations given the input.\n */\n\nexport interface DbxTableViewDelegate<I = unknown, C = unknown, T = unknown, G = unknown> {\n  /**\n   * Track by\n   */\n  readonly trackBy?: TrackByFunction<T>;\n  /**\n   * If provided, will group items together\n   */\n  readonly groupBy?: DbxTableGroupByFunction<T, G>;\n  /**\n   * Input picker view configuration\n   */\n  readonly inputHeader?: Maybe<DbxInjectionComponentConfig<any>>;\n  /**\n   * Action header view configuration\n   */\n  readonly actionHeader?: Maybe<DbxInjectionComponentConfig<any>>;\n  /**\n   * Full-width summary row view configuration.\n   */\n  readonly fullSummaryRow?: Maybe<DbxInjectionComponentConfig<any>>;\n  /**\n   * Summary row header view configuration.\n   */\n  readonly summaryRowHeader?: Maybe<DbxInjectionComponentConfig<any>>;\n  /**\n   * Summary row end view configuration\n   */\n  readonly summaryRowEnd?: Maybe<DbxInjectionComponentConfig<any>>;\n  /**\n   * Group row header view configuration for a specific group.\n   *\n   * If this function returns undefined, the group row will not be shown.\n   *\n   * @param group\n   */\n  groupHeader?(group: DbxTableItemGroup<T, G>): Maybe<DbxInjectionComponentConfig<any>>;\n  /**\n   * Group row footer view configuration for a specific group.\n   *\n   * If this function returns undefined, the group row will not be shown.\n   *\n   * @param group\n   */\n  groupFooter?(group: DbxTableItemGroup<T, G>): Maybe<DbxInjectionComponentConfig<any>>;\n  /**\n   * Column header view configuration for a specific column.\n   *\n   * @param item\n   */\n  columnHeader?(column: DbxTableColumn<C>): Maybe<DbxInjectionComponentConfig<any>>;\n  /**\n   * Optional column footer view configuration for a specific column.\n   *\n   * @param item\n   */\n  columnFooter?(column: DbxTableColumn<C>): Maybe<DbxInjectionComponentConfig<any>>;\n  /**\n   * Item header view (left-most column for an item row) configuration for a specific item.\n   *\n   * @param item\n   */\n  itemHeader(item: T): Maybe<DbxInjectionComponentConfig<any>>;\n  /**\n   * Item cell view (middle columns for an item row) configuration for a specific item and column.\n   *\n   * @param item\n   */\n  itemCell(column: DbxTableColumn<C>, item: T): Maybe<DbxInjectionComponentConfig<any>>;\n  /**\n   * Item action view (right-most column for an item row) configuration for a specific item.\n   *\n   * @param item\n   */\n  itemAction?(item: T): Maybe<DbxInjectionComponentConfig<any>>;\n  /**\n   * Optional classes to apply to the table.\n   */\n  tableClasses?: CssClassesArray;\n}\n","import { Injectable } from '@angular/core';\nimport { asObservable, beginLoading, filterMaybe, type LoadingState, mapLoadingStateValueWithOperator, type PageListLoadingState, valueFromFinishedLoadingState } from '@dereekb/rxjs';\nimport { spaceSeparatedCssClasses, type Maybe } from '@dereekb/util';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { type Observable, distinctUntilChanged, first, map, shareReplay, switchMap, tap, combineLatest, of } from 'rxjs';\nimport { type DbxTableColumn, type DbxTableContextData, type DbxTableContextDataDelegate, type DbxTableItemGroup, type DbxTableViewDelegate, defaultDbxTableItemGroup } from './table';\n\nexport interface DbxTableStoreState<I, C, T, G> {\n  /**\n   * Contextual input that is passed to the data delegate.\n   */\n  readonly input: Maybe<I>;\n  /**\n   * Delegate used for retrieving info given the selection.\n   */\n  readonly dataDelegate: Maybe<DbxTableContextDataDelegate<I, C, T>>;\n  /**\n   * Delegate used for retrieving view configurations.\n   */\n  readonly viewDelegate: Maybe<DbxTableViewDelegate<I, C, T, G>>;\n}\n\n@Injectable()\nexport class DbxTableStore<I = unknown, C = unknown, T = unknown, G = unknown> extends ComponentStore<DbxTableStoreState<I, C, T, G>> {\n  constructor() {\n    super({\n      input: null,\n      dataDelegate: null,\n      viewDelegate: null\n    });\n  }\n\n  // MARK: Effects\n  readonly loadMore = this.effect((input: Observable<void>) => {\n    return input.pipe(\n      switchMap(() =>\n        this.data$.pipe(\n          first(),\n          tap((x) => {\n            if (x.loadMore) {\n              x.loadMore();\n            }\n          })\n        )\n      )\n    );\n  });\n\n  // MARK: Accessors\n  readonly input$ = this.state$.pipe(\n    map((x) => x.input),\n    distinctUntilChanged(),\n    shareReplay(1)\n  );\n\n  readonly dataDelegate$ = this.state$.pipe(\n    map((x) => x.dataDelegate),\n    distinctUntilChanged(),\n    shareReplay(1)\n  );\n\n  readonly currentViewDelegate$ = this.state$.pipe(\n    map((x) => x.viewDelegate),\n    distinctUntilChanged(),\n    shareReplay(1)\n  );\n\n  readonly viewDelegate$ = this.currentViewDelegate$.pipe(filterMaybe());\n  readonly tableCssClasses$ = this.viewDelegate$.pipe(map((x) => x.tableClasses));\n  readonly spaceSeparatedTableCssClasses$ = this.tableCssClasses$.pipe(\n    map((x) => spaceSeparatedCssClasses(x)),\n    distinctUntilChanged(),\n    shareReplay(1)\n  );\n\n  readonly dataState$: Observable<LoadingState<DbxTableContextData<I, C, T>>> = combineLatest([this.input$, this.dataDelegate$]).pipe(\n    switchMap(([input, dataDelegate]) => {\n      let obs: Observable<LoadingState<DbxTableContextData<I, C, T>>>;\n\n      if (input && dataDelegate) {\n        obs = dataDelegate.loadData(input);\n      } else {\n        obs = of(beginLoading<DbxTableContextData<I, C, T>>());\n      }\n\n      return obs;\n    }),\n    shareReplay(1)\n  );\n\n  readonly data$: Observable<DbxTableContextData<I, C, T>> = this.dataState$.pipe(\n    //\n    valueFromFinishedLoadingState(),\n    filterMaybe(),\n    distinctUntilChanged(),\n    shareReplay(1)\n  );\n\n  readonly columns$: Observable<DbxTableColumn<C>[]> = this.data$.pipe(\n    map((x) => x.columns),\n    shareReplay(1)\n  );\n\n  readonly itemsState$: Observable<PageListLoadingState<T>> = this.data$.pipe(\n    switchMap((x) => x.items$),\n    shareReplay(1)\n  );\n\n  readonly items$: Observable<T[]> = this.itemsState$.pipe(valueFromFinishedLoadingState(), filterMaybe(), shareReplay(1));\n\n  readonly groupsState$: Observable<LoadingState<DbxTableItemGroup<T, G>[]>> = this.itemsState$.pipe(\n    mapLoadingStateValueWithOperator(\n      switchMap((x) => {\n        return this.viewDelegate$.pipe(\n          switchMap((viewDelegate) => {\n            let groups: Observable<DbxTableItemGroup<T, G>[]>;\n\n            if (viewDelegate.groupBy) {\n              groups = asObservable(viewDelegate.groupBy(x));\n            } else {\n              groups = of([defaultDbxTableItemGroup<T, G>(x)]);\n            }\n\n            return groups;\n          })\n        );\n      })\n    ),\n    shareReplay(1)\n  );\n\n  readonly groups$: Observable<DbxTableItemGroup<T, G>[]> = this.groupsState$.pipe(valueFromFinishedLoadingState(), filterMaybe(), shareReplay(1));\n\n  // MARK: State Changes\n  readonly setInput = this.updater((state, input: Maybe<I>) => ({ ...state, input }));\n  readonly setDataDelegate = this.updater((state, dataDelegate: Maybe<DbxTableContextDataDelegate<I, C, T>>) => ({ ...state, dataDelegate }));\n  readonly setViewDelegate = this.updater((state, viewDelegate: Maybe<DbxTableViewDelegate<I, C, T, G>>) => ({ ...state, viewDelegate }));\n}\n","import { Component, Injectable, inject, signal, computed } from '@angular/core';\nimport { type DateRangeDayDistanceInput, isSameDateDay } from '@dereekb/date';\nimport { DbxTableStore } from '../table.store';\nimport { type MatDateRangeSelectionStrategy, DateRange, MAT_DATE_RANGE_SELECTION_STRATEGY, MatDatepickerModule } from '@angular/material/datepicker';\nimport { DateAdapter } from '@angular/material/core';\nimport { type Days, type Maybe } from '@dereekb/util';\nimport { FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { addDays, format as formatDate } from 'date-fns';\nimport { distinctUntilChanged, filter, startWith, throttleTime } from 'rxjs';\nimport { cleanSubscription, type DbxInjectionComponentConfig } from '@dereekb/dbx-core';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Injectable()\nexport class DbxTableDateRangeDayDistanceInputCellInputRangeSelectionStrategy<D> implements MatDateRangeSelectionStrategy<D> {\n  private readonly _dateAdapter = inject(DateAdapter<D>);\n  private readonly dbxTableDateRangeDayDistanceInputCellInputComponent = inject(DbxTableDateRangeDayDistanceInputCellInputComponent);\n\n  selectionFinished(date: Maybe<D>): DateRange<D> {\n    return this._createFiveDayRange(date);\n  }\n\n  createPreview(activeDate: Maybe<D>): DateRange<D> {\n    return this._createFiveDayRange(activeDate);\n  }\n\n  private _createFiveDayRange(date: Maybe<D>): DateRange<D> {\n    let result: DateRange<D>;\n\n    if (date) {\n      const start = date;\n      const end = this._dateAdapter.addCalendarDays(date, this.dbxTableDateRangeDayDistanceInputCellInputComponent.daysDistance);\n      result = new DateRange<D>(start, end);\n    } else {\n      result = new DateRange<D>(null, null);\n    }\n\n    return result;\n  }\n}\n\nexport interface DbxTableDateRangeDayDistanceInputCellInputComponentConfig {\n  /**\n   * Button format for the dates\n   */\n  readonly buttonFormat?: string;\n  /**\n   * Distance from the start to span.\n   */\n  readonly daysDistance: Days;\n  readonly minDate?: Maybe<Date>;\n  readonly maxDate?: Maybe<Date>;\n}\n\nexport const DEFAULT_DBX_TABLE_DATE_RANGE_DAY_DISTIANCE_INPUT_CELL_COMPONENT_CONFIG = { daysDistance: 6 };\n\nexport const DEFAULT_DBX_TABLE_DATE_RANGE_DAY_BUTTON_FORMAT = 'MMM dd';\n\n/**\n * Cell input for a DateRangeDayDistanceInput value.\n */\n@Component({\n  template: `\n    <div class=\"dbx-table-date-range-distance-input-cell\">\n      <mat-date-range-input class=\"dbx-table-date-range-distance-input\" [min]=\"minDateSignal()\" [max]=\"maxDateSignal()\" [formGroup]=\"range\" [rangePicker]=\"picker\">\n        <input matStartDate formControlName=\"start\" placeholder=\"Start date\" />\n        <input matEndDate formControlName=\"end\" placeholder=\"End date\" />\n      </mat-date-range-input>\n      <button mat-stroked-button color=\"primary\" (click)=\"picker.open()\">{{ dateRangeStringSignal() }}</button>\n      <mat-date-range-picker #picker (opened)=\"pickerOpened()\" (closed)=\"pickerClosed()\"></mat-date-range-picker>\n    </div>\n  `,\n  providers: [\n    {\n      provide: MAT_DATE_RANGE_SELECTION_STRATEGY,\n      useClass: DbxTableDateRangeDayDistanceInputCellInputRangeSelectionStrategy\n    }\n  ],\n  imports: [MatDatepickerModule, ReactiveFormsModule, MatButtonModule]\n})\nexport class DbxTableDateRangeDayDistanceInputCellInputComponent {\n  readonly tableStore = inject(DbxTableStore<DateRangeDayDistanceInput>);\n\n  private readonly _syncSub = cleanSubscription();\n  private readonly _valueSub = cleanSubscription();\n\n  private readonly _pickerOpenedSignal = signal<boolean>(false);\n  private readonly _configSignal = signal<DbxTableDateRangeDayDistanceInputCellInputComponentConfig>(DEFAULT_DBX_TABLE_DATE_RANGE_DAY_DISTIANCE_INPUT_CELL_COMPONENT_CONFIG);\n\n  readonly range = new FormGroup({\n    start: new FormControl<Maybe<Date>>(null),\n    end: new FormControl<Maybe<Date>>(null)\n  });\n\n  readonly pickerOpened$ = this.range.valueChanges.pipe(startWith(this.range.value));\n\n  readonly minDateSignal = computed(() => this._configSignal().minDate ?? null);\n  readonly maxDateSignal = computed(() => this._configSignal().maxDate ?? null);\n  readonly buttonFormatSignal = computed(() => this._configSignal().buttonFormat ?? DEFAULT_DBX_TABLE_DATE_RANGE_DAY_BUTTON_FORMAT);\n\n  readonly rangeValue$ = this.range.valueChanges.pipe(startWith(this.range.value));\n  readonly dateRangeStringSignal = computed(() => {\n    const buttonFormat = this.buttonFormatSignal();\n    const { start, end } = this.range.value;\n\n    return start && end ? `${formatDate(start, buttonFormat)} - ${formatDate(end, buttonFormat)}` : `Select Date`;\n  });\n\n  constructor() {\n    cleanSubscription(\n      this.tableStore.input$.subscribe((x) => {\n        const start = x?.date ?? null;\n        const end = start ? addDays(start, this.daysDistance) : undefined;\n\n        this.range.setValue({\n          start,\n          end\n        });\n      })\n    );\n\n    cleanSubscription(\n      this.rangeValue$\n        .pipe(\n          filter((x) => Boolean(x.start)),\n          distinctUntilChanged((a, b) => isSameDateDay(a?.start, b?.start)),\n          throttleTime(100, undefined, { trailing: true })\n        )\n        .subscribe((x) => {\n          if (x.start) {\n            this.tableStore.setInput({ date: x.start, distance: this.daysDistance });\n          }\n        })\n    );\n  }\n\n  get daysDistance() {\n    return this._configSignal().daysDistance;\n  }\n\n  get config() {\n    return this._configSignal();\n  }\n\n  set config(config: Maybe<DbxTableDateRangeDayDistanceInputCellInputComponentConfig>) {\n    this._configSignal.set(config || DEFAULT_DBX_TABLE_DATE_RANGE_DAY_DISTIANCE_INPUT_CELL_COMPONENT_CONFIG);\n  }\n\n  pickerOpened() {\n    this._pickerOpenedSignal.set(true);\n  }\n\n  pickerClosed() {\n    this._pickerOpenedSignal.set(false);\n  }\n}\n\n/**\n * Creates an injection component config for a date-range day-distance input cell.\n *\n * Initializes the component with the provided configuration for day distance, date bounds, and button format.\n *\n * @param componentConfig - Optional configuration for the date range input (day distance, min/max dates, button format)\n * @returns An injection component config that renders a {@link DbxTableDateRangeDayDistanceInputCellInputComponent}\n */\nexport function dbxTableDateRangeDayDistanceInputCellInput(componentConfig?: DbxTableDateRangeDayDistanceInputCellInputComponentConfig): DbxInjectionComponentConfig<DbxTableDateRangeDayDistanceInputCellInputComponent> {\n  const config: DbxInjectionComponentConfig<DbxTableDateRangeDayDistanceInputCellInputComponent> = {\n    componentClass: DbxTableDateRangeDayDistanceInputCellInputComponent,\n    init: (x) => {\n      x.config = componentConfig;\n    }\n  };\n\n  return config;\n}\n","import { NgModule } from '@angular/core';\nimport { DbxTableDateHeaderComponent } from './date.table.column.header.component';\nimport { DbxTableDateRangeDayDistanceInputCellInputComponent } from './daterange.table.cell.input.component';\n\nconst importsAndExports = [DbxTableDateHeaderComponent, DbxTableDateRangeDayDistanceInputCellInputComponent];\n\n@NgModule({\n  imports: importsAndExports,\n  exports: importsAndExports\n})\nexport class DbxTableDateModule {}\n","import { Component, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map, distinctUntilChanged } from 'rxjs';\nimport { DbxTableStore } from './table.store';\nimport { DbxInjectionComponent } from '@dereekb/dbx-core';\n\n@Component({\n  selector: 'dbx-table-action-cell',\n  template: `\n    <dbx-injection [config]=\"configSignal()\"></dbx-injection>\n  `,\n  imports: [DbxInjectionComponent]\n})\nexport class DbxTableActionCellComponent {\n  readonly tableStore = inject(DbxTableStore);\n\n  readonly config$ = this.tableStore.viewDelegate$.pipe(\n    map((x) => x.actionHeader),\n    distinctUntilChanged()\n  );\n\n  readonly configSignal = toSignal(this.config$);\n}\n","import { Component, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map, distinctUntilChanged } from 'rxjs';\nimport { DbxTableStore } from './table.store';\nimport { DbxInjectionComponent } from '@dereekb/dbx-core';\n\n/**\n * A table header component used for injecting the input picker view.\n */\n@Component({\n  selector: 'dbx-table-input-cell',\n  template: `\n    <dbx-injection [config]=\"configSignal()\"></dbx-injection>\n  `,\n  imports: [DbxInjectionComponent]\n})\nexport class DbxTableInputCellComponent {\n  readonly tableStore = inject(DbxTableStore);\n\n  readonly config$ = this.tableStore.viewDelegate$.pipe(\n    map((x) => x.inputHeader),\n    distinctUntilChanged()\n  );\n\n  readonly configSignal = toSignal(this.config$);\n}\n","import { Component, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map, distinctUntilChanged } from 'rxjs';\nimport { DbxTableStore } from './table.store';\nimport { DbxInjectionComponent } from '@dereekb/dbx-core';\n\n@Component({\n  selector: 'dbx-table-summary-end-cell',\n  template: `\n    <dbx-injection [config]=\"configSignal()\"></dbx-injection>\n  `,\n  imports: [DbxInjectionComponent]\n})\nexport class DbxTableSummaryEndCellComponent {\n  readonly tableStore = inject(DbxTableStore);\n\n  readonly config$ = this.tableStore.viewDelegate$.pipe(\n    map((x) => x.summaryRowEnd),\n    distinctUntilChanged()\n  );\n\n  readonly configSignal = toSignal(this.config$);\n}\n","import { Component, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map, distinctUntilChanged } from 'rxjs';\nimport { DbxTableStore } from './table.store';\nimport { DbxInjectionComponent } from '@dereekb/dbx-core';\n\n/**\n * A table header component used for injecting the input picker view.\n */\n@Component({\n  selector: 'dbx-table-summary-start-cell',\n  template: `\n    <dbx-injection [config]=\"configSignal()\"></dbx-injection>\n  `,\n  imports: [DbxInjectionComponent]\n})\nexport class DbxTableSummaryStartCellComponent {\n  readonly tableStore = inject(DbxTableStore);\n\n  readonly config$ = this.tableStore.viewDelegate$.pipe(\n    map((x) => x.summaryRowHeader),\n    distinctUntilChanged()\n  );\n\n  readonly configSignal = toSignal(this.config$);\n}\n","import { filterMaybe } from '@dereekb/rxjs';\nimport { Directive, inject, input } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged } from 'rxjs';\nimport { DbxTableStore } from './table.store';\nimport { type Maybe } from '@dereekb/util';\nimport { type DbxTableColumn } from './table';\n\n/**\n * Abstract directive that has a column input.\n */\n@Directive()\nexport class AbstractDbxTableColumnDirective<C> {\n  readonly tableStore = inject(DbxTableStore<unknown, C>);\n\n  readonly column = input<Maybe<DbxTableColumn<C>>>();\n  readonly column$ = toObservable(this.column).pipe(filterMaybe(), distinctUntilChanged());\n}\n","import { Component } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map, distinctUntilChanged, switchMap, of } from 'rxjs';\nimport { AbstractDbxTableColumnDirective } from './table.column.directive';\nimport { DbxInjectionComponent } from '@dereekb/dbx-core';\n\n@Component({\n  selector: 'dbx-table-column-header',\n  template: `\n    <dbx-injection [config]=\"configSignal()\"></dbx-injection>\n  `,\n  imports: [DbxInjectionComponent]\n})\nexport class DbxTableColumnHeaderComponent<C> extends AbstractDbxTableColumnDirective<C> {\n  readonly config$ = this.tableStore.viewDelegate$.pipe(\n    switchMap((viewDelegate) => {\n      const columnHeader = viewDelegate.columnHeader;\n\n      return columnHeader ? this.column$.pipe(map((x) => columnHeader(x))) : of(undefined);\n    }),\n    distinctUntilChanged()\n  );\n\n  readonly configSignal = toSignal(this.config$);\n}\n","import { Component } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map, distinctUntilChanged, switchMap, of } from 'rxjs';\nimport { AbstractDbxTableColumnDirective } from './table.column.directive';\nimport { DbxInjectionComponent } from '@dereekb/dbx-core';\n\n@Component({\n  selector: 'dbx-table-column-footer',\n  template: `\n    <dbx-injection [config]=\"configSignal()\"></dbx-injection>\n  `,\n  imports: [DbxInjectionComponent]\n})\nexport class DbxTableColumnFooterComponent<C> extends AbstractDbxTableColumnDirective<C> {\n  readonly config$ = this.tableStore.viewDelegate$.pipe(\n    switchMap((viewDelegate) => {\n      const columnFooter = viewDelegate.columnFooter;\n\n      return columnFooter ? this.column$.pipe(map((x) => columnFooter(x))) : of(undefined);\n    }),\n    distinctUntilChanged()\n  );\n\n  readonly configSignal = toSignal(this.config$);\n}\n","import { computed, Directive, ElementRef, inject, input, type OnInit } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { clean, completeOnDestroy } from '@dereekb/dbx-core';\nimport { resizeSignal } from '@dereekb/dbx-web';\nimport { type Maybe } from '@dereekb/util';\nimport { BehaviorSubject } from 'rxjs';\n\nexport type DbxColumnSizeColumnValue = 'head' | 'tail' | number;\n\n@Directive({\n  exportAs: 'dbxTableColumnSize',\n  selector: '[dbxTableColumnSize]'\n})\nexport class DbxTableColumnSizeDirective {\n  readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n  readonly resized = resizeSignal(this.elementRef);\n\n  private readonly _columnsMap = completeOnDestroy(new BehaviorSubject(new Map<DbxColumnSizeColumnValue, DbxColumnSizeColumnDirective>()));\n  readonly columns$ = this._columnsMap.asObservable();\n\n  readonly columnsSignal = toSignal(this.columns$);\n  readonly visibleColumnsSignal = computed(() => {\n    const resized = this.resized();\n    const columnsMap = this.columnsSignal() as Map<DbxColumnSizeColumnValue, DbxColumnSizeColumnDirective>;\n\n    const { width } = resized.newRect;\n    let visibleColumns = 0;\n\n    const itemColumns: DbxColumnSizeColumnDirective[] = [];\n\n    let headerColumn: Maybe<DbxColumnSizeColumnDirective>;\n    let tailColumn: Maybe<DbxColumnSizeColumnDirective>;\n\n    columnsMap.forEach((column) => {\n      const index = column.index();\n\n      switch (index) {\n        case 'head':\n          headerColumn = column;\n          break;\n        case 'tail':\n          tailColumn = column;\n          break;\n        default:\n          itemColumns[index] = column;\n          break;\n      }\n    });\n\n    const headerColumnWidth = headerColumn?.width || 0;\n    const tailColumnWidth = tailColumn?.width || 0;\n\n    let remainingTableWidth = width - headerColumnWidth;\n    visibleColumns = 1;\n    let i = 0;\n\n    while (remainingTableWidth > 0 && i < itemColumns.length) {\n      const nextColumn = itemColumns[i];\n      i += 1;\n\n      const columnWidth = nextColumn.width;\n\n      remainingTableWidth -= columnWidth;\n\n      if (remainingTableWidth >= 0) {\n        visibleColumns += 1;\n      }\n    }\n\n    // show the tail column\n    if (tailColumn != null && visibleColumns === itemColumns.length + 1 && Math.abs(remainingTableWidth - tailColumnWidth) < 3) {\n      visibleColumns += 1;\n    }\n\n    return visibleColumns;\n  });\n\n  addColumn(column: DbxColumnSizeColumnDirective) {\n    this._columnsMap.value.set(column.index(), column);\n    this._columnsMap.next(this._columnsMap.value);\n  }\n\n  removeColumn(column: DbxColumnSizeColumnDirective) {\n    if (this._columnsMap.value.delete(column.index())) {\n      this._columnsMap.next(this._columnsMap.value);\n    }\n  }\n}\n\n/**\n * References a specific element and the index of the column.\n */\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: '[dbx-column-size-column]'\n})\nexport class DbxColumnSizeColumnDirective implements OnInit {\n  readonly dbxColumnSizeDirective = inject(DbxTableColumnSizeDirective);\n\n  readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  readonly index = input.required<DbxColumnSizeColumnValue>({ alias: 'dbx-column-size-column' });\n\n  constructor() {\n    clean(() => this.dbxColumnSizeDirective.removeColumn(this));\n  }\n\n  ngOnInit(): void {\n    // called after the index value has been input/set. Indexes are unique and set only once.\n    this.dbxColumnSizeDirective.addColumn(this);\n  }\n\n  get width(): number {\n    return this.elementRef.nativeElement.clientWidth;\n  }\n}\n","import { type ElementRef, InjectionToken } from '@angular/core';\n\nexport const DBX_TABLE_COLUMN_SIZE_PARENT_ELEMENT_REF_TOKEN = new InjectionToken<ElementRef<HTMLElement>>('DBX_TABLE_COLUMN_SIZE_PARENT_ELEMENT_REF_TOKEN');\n","import { toObservable } from '@angular/core/rxjs-interop';\nimport { Directive, inject, input } from '@angular/core';\nimport { DbxTableStore } from './table.store';\nimport { type Maybe } from '@dereekb/util';\n\n/**\n * Abstract directive that has an element input.\n */\n@Directive()\nexport abstract class AbstractDbxTableItemDirective<T, C = unknown> {\n  readonly tableStore = inject(DbxTableStore<unknown, C, T>);\n\n  readonly item = input<Maybe<T>>();\n  readonly item$ = toObservable(this.item);\n}\n","import { Component, input } from '@angular/core';\nimport { toSignal, toObservable } from '@angular/core/rxjs-interop';\nimport { map, switchMap, combineLatest } from 'rxjs';\nimport { type Maybe } from '@dereekb/util';\nimport { AbstractDbxTableItemDirective } from './table.item.directive';\nimport { type DbxTableColumn } from './table';\nimport { DbxInjectionComponent } from '@dereekb/dbx-core';\n\n@Component({\n  selector: 'dbx-table-item-cell',\n  template: `\n    <dbx-injection [config]=\"configSignal()\"></dbx-injection>\n  `,\n  imports: [DbxInjectionComponent]\n})\nexport class DbxTableItemCellComponent<T, C> extends AbstractDbxTableItemDirective<T, C> {\n  readonly column = input<Maybe<DbxTableColumn<C>>>();\n  readonly column$ = toObservable(this.column);\n\n  readonly config$ = this.tableStore.viewDelegate$.pipe(switchMap((viewDelegate) => combineLatest([this.column$, this.item$]).pipe(map(([column, item]) => (column && item ? viewDelegate.itemCell(column, item) : undefined)))));\n\n  readonly configSignal = toSignal(this.config$);\n}\n","import { Component } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map, switchMap } from 'rxjs';\nimport { AbstractDbxTableItemDirective } from './table.item.directive';\nimport { maybeValueFromObservableOrValue } from '@dereekb/rxjs';\nimport { DbxInjectionComponent } from '@dereekb/dbx-core';\n\n@Component({\n  selector: 'dbx-table-item-header',\n  template: `\n    <dbx-injection [config]=\"configSignal()\"></dbx-injection>\n  `,\n  imports: [DbxInjectionComponent]\n})\nexport class DbxTableItemHeaderComponent<T> extends AbstractDbxTableItemDirective<T> {\n  readonly config$ = this.tableStore.viewDelegate$.pipe(\n    switchMap((viewDelegate) => this.item$.pipe(map((x) => (x == null ? undefined : viewDelegate.itemHeader(x))))),\n    maybeValueFromObservableOrValue()\n  );\n\n  readonly configSignal = toSignal(this.config$);\n}\n","import { Component } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs';\nimport { AbstractDbxTableItemDirective } from './table.item.directive';\nimport { DbxInjectionComponent, type DbxInjectionComponentConfig } from '@dereekb/dbx-core';\nimport { type MaybeObservableOrValue, maybeValueFromObservableOrValue } from '@dereekb/rxjs';\n\n@Component({\n  selector: 'dbx-table-item-action',\n  template: `\n    <dbx-injection [config]=\"configSignal()\"></dbx-injection>\n  `,\n  imports: [DbxInjectionComponent]\n})\nexport class DbxTableItemActionComponent<T> extends AbstractDbxTableItemDirective<T> {\n  readonly config$ = this.tableStore.viewDelegate$.pipe(\n    map((viewDelegate) => {\n      const itemAction = viewDelegate.itemAction;\n      let obs: MaybeObservableOrValue<DbxInjectionComponentConfig> = undefined;\n\n      if (itemAction) {\n        obs = this.item$.pipe(map((x) => (x == null ? undefined : itemAction(x))));\n      }\n\n      return obs;\n    }),\n    maybeValueFromObservableOrValue()\n  );\n\n  readonly configSignal = toSignal(this.config$);\n}\n","import { toObservable } from '@angular/core/rxjs-interop';\nimport { filterMaybe } from '@dereekb/rxjs';\nimport { Directive, inject, input } from '@angular/core';\nimport { distinctUntilChanged } from 'rxjs';\nimport { DbxTableStore } from './table.store';\nimport { type Maybe } from '@dereekb/util';\nimport { type DbxTableItemGroup } from './table';\n\n/**\n * Abstract directive that has an element input.\n */\n@Directive()\nexport abstract class AbstractDbxTableGroupDirective<T, C = unknown, G = unknown> {\n  readonly tableStore = inject(DbxTableStore<unknown, C, T, G>);\n\n  readonly group = input<Maybe<DbxTableItemGroup<T, G>>>();\n  readonly group$ = toObservable(this.group).pipe(filterMaybe(), distinctUntilChanged());\n}\n","import { Component } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map, distinctUntilChanged } from 'rxjs';\nimport { type MaybeObservableOrValue, maybeValueFromObservableOrValue } from '@dereekb/rxjs';\nimport { DbxInjectionComponent, type DbxInjectionComponentConfig } from '@dereekb/dbx-core';\nimport { AbstractDbxTableGroupDirective } from './table.group.directive';\n\n@Component({\n  selector: 'dbx-table-group-header',\n  template: `\n    <dbx-injection [config]=\"configSignal()\"></dbx-injection>\n  `,\n  imports: [DbxInjectionComponent]\n})\nexport class DbxTableGroupHeaderComponent<T> extends AbstractDbxTableGroupDirective<T> {\n  readonly config$ = this.tableStore.viewDelegate$.pipe(\n    map((viewDelegate) => {\n      const groupHeader = viewDelegate.groupHeader;\n      let obs: MaybeObservableOrValue<DbxInjectionComponentConfig> = undefined;\n\n      if (groupHeader) {\n        obs = this.group$.pipe(map((x) => groupHeader(x)));\n      }\n\n      return obs;\n    }),\n    maybeValueFromObservableOrValue(),\n    distinctUntilChanged()\n  );\n\n  readonly configSignal = toSignal(this.config$);\n}\n","import { Component } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map, distinctUntilChanged } from 'rxjs';\nimport { type MaybeObservableOrValue, maybeValueFromObservableOrValue } from '@dereekb/rxjs';\nimport { DbxInjectionComponent, type DbxInjectionComponentConfig } from '@dereekb/dbx-core';\nimport { AbstractDbxTableGroupDirective } from './table.group.directive';\n\n@Component({\n  selector: 'dbx-table-group-footer',\n  template: `\n    <dbx-injection [config]=\"configSignal()\"></dbx-injection>\n  `,\n  imports: [DbxInjectionComponent]\n})\nexport class DbxTableGroupFooterComponent<T> extends AbstractDbxTableGroupDirective<T> {\n  readonly config$ = this.tableStore.viewDelegate$.pipe(\n    map((viewDelegate) => {\n      const groupFooter = viewDelegate.groupFooter;\n      let obs: MaybeObservableOrValue<DbxInjectionComponentConfig> = undefined;\n\n      if (groupFooter) {\n        obs = this.group$.pipe(map((x) => groupFooter(x)));\n      }\n\n      return obs;\n    }),\n    maybeValueFromObservableOrValue(),\n    distinctUntilChanged()\n  );\n\n  readonly configSignal = toSignal(this.config$);\n}\n","import { Component, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map, distinctUntilChanged } from 'rxjs';\nimport { DbxTableStore } from './table.store';\nimport { DbxInjectionComponent } from '@dereekb/dbx-core';\n\n/**\n * A table header component used for injecting the input picker view.\n */\n@Component({\n  selector: 'dbx-table-full-summary-row',\n  template: `\n    <dbx-injection [config]=\"configSignal()\"></dbx-injection>\n  `,\n  imports: [DbxInjectionComponent],\n  host: {\n    class: 'dbx-h100 dbx-flex-bar'\n  }\n})\nexport class DbxTableFullSummaryRowComponent {\n  readonly tableStore = inject(DbxTableStore);\n\n  readonly config$ = this.tableStore.viewDelegate$.pipe(\n    map((x) => x.fullSummaryRow),\n    distinctUntilChanged()\n  );\n\n  readonly configSignal = toSignal(this.config$);\n}\n","import { Component, type TrackByFunction, inject, computed, input, type Signal, viewChild, ElementRef } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { DbxTableStore } from './table.store';\nimport { type LoadingState, loadingStateContext, mapLoadingStateValueWithOperator, valueFromFinishedLoadingState } from '@dereekb/rxjs';\nimport { shareReplay, map, type Observable, switchMap, throttleTime } from 'rxjs';\nimport { DbxLoadingComponent } from '@dereekb/dbx-web';\nimport { InfiniteScrollDirective } from 'ngx-infinite-scroll';\nimport { MatTable, MatTableModule } from '@angular/material/table';\nimport { DbxTableInputCellComponent } from './table.cell.input.component';\nimport { DbxTableSummaryEndCellComponent } from './table.cell.summaryend.component';\nimport { DbxTableSummaryStartCellComponent } from './table.cell.summarystart.component';\nimport { DbxTableColumnFooterComponent } from './table.column.footer.component';\nimport { DbxTableItemCellComponent } from './table.item.cell.component';\nimport { DbxTableItemHeaderComponent } from './table.item.header.component';\nimport { DbxTableItemActionComponent } from './table.item.action.component';\nimport { DbxTableActionCellComponent } from './table.cell.action.component';\nimport { DbxTableColumnHeaderComponent } from './table.column.header.component';\nimport { type DbxTableItemGroup, type DefaultDbxTableItemGroup } from './table';\nimport { DbxTableGroupHeaderComponent } from './table.group.header.component';\nimport { DbxTableGroupFooterComponent } from './table.group.footer.component';\nimport { pushArrayItemsIntoArray } from '@dereekb/util';\nimport { NgClass } from '@angular/common';\nimport { DbxTableFullSummaryRowComponent } from './table.fullsummaryrow.component';\nimport { DbxTableColumnSizeDirective, DbxColumnSizeColumnDirective } from './table.column.size.directive';\nimport { DBX_TABLE_COLUMN_SIZE_PARENT_ELEMENT_REF_TOKEN } from './table.column.size';\n\nexport const DBX_TABLE_ITEMS_COLUMN_NAME = '_items';\nexport const DBX_TABLE_ACTIONS_COLUMN_NAME = '_actions';\n\nexport interface DbxTableViewGroupElement<T, G> {\n  readonly type: 'group';\n  readonly location: 'header' | 'footer';\n  readonly group: DbxTableItemGroup<T, G>;\n}\n\nexport interface DbxTableViewItemElement<T, G> {\n  readonly type: 'item';\n  readonly item: T;\n}\n\nexport type DbxTableViewElement<T, G> = DbxTableViewGroupElement<T, G> | DbxTableViewItemElement<T, G>;\n\n/**\n * Type guard that checks whether a table view element is a group element (header or footer).\n *\n * @param element - The table view element to check.\n * @returns `true` if the element represents a group header or footer row.\n */\nexport function isDbxTableViewGroupElement<T, G>(element: DbxTableViewElement<T, G>): element is DbxTableViewGroupElement<T, G> {\n  return element.type === 'group';\n}\n\n/**\n * Type guard that checks whether a table view element is an item data element.\n *\n * @param element - The table view element to check.\n * @returns `true` if the element represents an item data row.\n */\nexport function isDbxTableViewItemElement<T, G>(element: DbxTableViewElement<T, G>): element is DbxTableViewItemElement<T, G> {\n  return element.type === 'item';\n}\n\n/**\n * A table with fixed content\n */\n@Component({\n  selector: 'dbx-table-view',\n  templateUrl: './table.component.html',\n  imports: [\n    DbxLoadingComponent,\n    NgClass,\n    InfiniteScrollDirective,\n    MatTableModule,\n    DbxTableInputCellComponent,\n    DbxTableItemHeaderComponent,\n    DbxTableItemCellComponent,\n    DbxTableItemActionComponent,\n    DbxTableActionCellComponent,\n    DbxTableColumnHeaderComponent,\n    DbxTableColumnFooterComponent,\n    DbxTableSummaryStartCellComponent,\n    DbxTableSummaryEndCellComponent,\n    DbxTableGroupHeaderComponent,\n    DbxTableGroupFooterComponent,\n    DbxTableFullSummaryRowComponent,\n    DbxTableColumnSizeDirective,\n    DbxColumnSizeColumnDirective\n  ],\n  providers: [\n    {\n      provide: DBX_TABLE_COLUMN_SIZE_PARENT_ELEMENT_REF_TOKEN,\n      useExisting: ElementRef\n    }\n  ]\n})\nexport class DbxTableViewComponent<I, C, T, G = unknown> {\n  readonly tableStore = inject(DbxTableStore<I, C, T, G>);\n  readonly table = viewChild.required<MatTable<DbxTableViewElement<T, G>>>(MatTable);\n\n  readonly DEFAULT_TRACK_BY_FUNCTION: TrackByFunction<any> = (index) => {\n    return index;\n  };\n\n  readonly scrollDistance = input<number>(0.5);\n  readonly throttleScroll = input<number>(50);\n\n  readonly itemsColumnName = DBX_TABLE_ITEMS_COLUMN_NAME;\n  readonly actionsColumnName = DBX_TABLE_ACTIONS_COLUMN_NAME;\n\n  readonly innerColumns$ = this.tableStore.columns$;\n  readonly innerColumnNames$ = this.innerColumns$.pipe(\n    map((x) => x.map((y) => y.columnName)),\n    shareReplay(1)\n  );\n\n  readonly innerColumnsSignal = toSignal(this.innerColumns$);\n  readonly innerColumnNamesSignal = toSignal(this.innerColumnNames$);\n\n  readonly elementsState$: Observable<LoadingState<DbxTableViewElement<T, G>[]>> = this.tableStore.groupsState$.pipe(\n    mapLoadingStateValueWithOperator(\n      switchMap((groups) => {\n        return this.tableStore.viewDelegate$.pipe(\n          map((viewDelegate) => {\n            const { groupHeader: inputGroupHeader, groupFooter: inputGroupFooter } = viewDelegate;\n            const hasGroupHeader = inputGroupHeader == null ? () => false : (group: DbxTableItemGroup<T, G>) => inputGroupHeader(group) != null;\n            const hasGroupFooter = inputGroupFooter == null ? () => false : (group: DbxTableItemGroup<T, G>) => inputGroupFooter(group) != null;\n\n            return groups.flatMap((group) => {\n              const { items } = group;\n\n              const itemElements: DbxTableViewItemElement<T, G>[] = items.map((item) => ({\n                type: 'item',\n                item\n              }));\n\n              let elements: DbxTableViewElement<T, G>[];\n\n              if ((group as DefaultDbxTableItemGroup<T, G>).default) {\n                elements = itemElements;\n              } else {\n                const header = hasGroupHeader(group);\n                const footer = hasGroupFooter(group);\n\n                elements = [];\n\n                if (header) {\n                  elements.push({\n                    type: 'group',\n                    location: 'header',\n                    group\n                  });\n                }\n\n                pushArrayItemsIntoArray(elements, itemElements);\n\n                if (footer) {\n                  elements.push({\n                    type: 'group',\n                    location: 'footer',\n                    group\n                  });\n                }\n              }\n\n              return elements;\n            });\n          })\n        );\n      })\n    ),\n    shareReplay(1)\n  );\n\n  readonly elements$ = this.elementsState$.pipe(\n    valueFromFinishedLoadingState(() => []),\n    throttleTime(50, undefined, { leading: true, trailing: true }),\n    shareReplay(1)\n  );\n\n  readonly displayedColumns$ = this.innerColumnNames$.pipe(\n    map((columnNames) => {\n      return [this.itemsColumnName, ...columnNames, this.actionsColumnName];\n    }),\n    shareReplay(1)\n  );\n\n  readonly displayedColumnsSignal = computed(() => {\n    const columnNames = this.innerColumnNamesSignal() || [];\n    return [this.itemsColumnName, ...columnNames, this.actionsColumnName];\n  });\n\n  readonly trackByFunction$: Observable<TrackByFunction<T>> = this.tableStore.viewDelegate$.pipe(\n    map((x) => x.trackBy ?? this.DEFAULT_TRACK_BY_FUNCTION),\n    shareReplay(1)\n  );\n\n  readonly inputTrackByFunctionSignal = toSignal(this.trackByFunction$, { initialValue: this.DEFAULT_TRACK_BY_FUNCTION });\n  readonly trackElementByFunctionSignal: Signal<TrackByFunction<DbxTableViewElement<T, G>>> = computed(() => {\n    const trackByFunction = this.inputTrackByFunctionSignal() as TrackByFunction<T>;\n\n    const fn: TrackByFunction<DbxTableViewElement<T, G>> = (index: number, element: DbxTableViewElement<T, G>) => {\n      return element.type === 'item' ? `i_${trackByFunction(index, element.item)}` : `g_${element.group.groupId}`;\n    };\n\n    return fn;\n  });\n\n  readonly context = loadingStateContext({ obs: this.tableStore.dataState$ });\n  readonly dataLoadingContext = loadingStateContext({ obs: this.elementsState$ });\n\n  readonly contextSignal = toSignal(this.context.state$);\n  readonly dataLoadingContextSignal = toSignal(this.dataLoadingContext.state$);\n\n  readonly viewDelegateSignal = toSignal(this.tableStore.viewDelegate$);\n  readonly elementsSignal = toSignal(this.elements$, { initialValue: [] });\n\n  readonly tableCssClasses = toSignal(this.tableStore.spaceSeparatedTableCssClasses$);\n\n  onScrollDown(): void {\n    this.tableStore.loadMore();\n  }\n\n  showItemRow(_: number, row: DbxTableViewElement<T, G>): boolean {\n    return row.type === 'item';\n  }\n\n  showGroupHeaderRow(_: number, row: DbxTableViewElement<T, G>): boolean {\n    return row.type === 'group' && row.location === 'header';\n  }\n\n  showGroupFooterRow(_: number, row: DbxTableViewElement<T, G>): boolean {\n    return row.type === 'group' && row.location === 'footer';\n  }\n\n  readonly showFooterRowSignal = computed(() => {\n    const viewDelegate = this.viewDelegateSignal();\n    return viewDelegate && (viewDelegate.summaryRowHeader != null || viewDelegate.columnFooter != null || viewDelegate.summaryRowEnd != null);\n  });\n\n  readonly showFullSummaryRowSignal = computed(() => {\n    const viewDelegate = this.viewDelegateSignal();\n    return viewDelegate?.fullSummaryRow != null;\n  });\n}\n","<dbx-loading [context]=\"context\">\n  <dbx-loading class=\"dbx-table-view-loading\" [linear]=\"true\" [context]=\"dataLoadingContext\"></dbx-loading>\n  <div class=\"dbx-table-view\" [ngClass]=\"tableCssClasses()\">\n    <section class=\"dbx-table-view-table-wrapper\" dbxTableColumnSize #columnSize=\"dbxTableColumnSize\" infinite-scroll [infiniteScrollDistance]=\"scrollDistance()\" [infiniteScrollThrottle]=\"throttleScroll()\" [scrollWindow]=\"false\" (scrolled)=\"onScrollDown()\">\n      <table class=\"dbx-table-view-table\" mat-table [dataSource]=\"elementsSignal()\" [trackBy]=\"trackElementByFunctionSignal()\" multiTemplateDataRows>\n        <!-- Groups -->\n        <!-- Group Header column -->\n        <ng-container matColumnDef=\"groupHeaderColumn\" [sticky]=\"true\">\n          <td mat-cell [attr.colspan]=\"columnSize.visibleColumnsSignal()\" *matCellDef=\"let element\">\n            <dbx-table-group-header [group]=\"element.group\"></dbx-table-group-header>\n          </td>\n        </ng-container>\n\n        <!-- Group Footer column -->\n        <ng-container matColumnDef=\"groupFooterColumn\" [sticky]=\"true\">\n          <td mat-cell [attr.colspan]=\"columnSize.visibleColumnsSignal()\" *matCellDef=\"let element\">\n            <dbx-table-group-footer [group]=\"element.group\"></dbx-table-group-footer>\n          </td>\n        </ng-container>\n\n        <!-- Items -->\n        <!-- Header/Item column -->\n        <ng-container [matColumnDef]=\"itemsColumnName\" [sticky]=\"true\">\n          <th dbx-column-size-column=\"head\" mat-header-cell *matHeaderCellDef>\n            <dbx-table-input-cell></dbx-table-input-cell>\n          </th>\n          <td mat-cell *matCellDef=\"let element\">\n            <dbx-table-item-header [item]=\"element.item\"></dbx-table-item-header>\n          </td>\n          <td mat-footer-cell *matFooterCellDef>\n            <dbx-table-summary-start-cell></dbx-table-summary-start-cell>\n          </td>\n        </ng-container>\n\n        <!-- Column Definitions -->\n        @for (column of innerColumnsSignal(); track column.columnName) {\n          <ng-container [matColumnDef]=\"column.columnName\" [sticky]=\"false\">\n            <th [dbx-column-size-column]=\"$index\" mat-header-cell *matHeaderCellDef>\n              <dbx-table-column-header [column]=\"column\"></dbx-table-column-header>\n            </th>\n            <td mat-cell *matCellDef=\"let element\">\n              <dbx-table-item-cell [item]=\"element.item\" [column]=\"column\"></dbx-table-item-cell>\n            </td>\n            <td mat-footer-cell *matFooterCellDef>\n              <dbx-table-column-footer [column]=\"column\"></dbx-table-column-footer>\n            </td>\n          </ng-container>\n        }\n\n        <!-- Tail/Action column -->\n        <ng-container [matColumnDef]=\"actionsColumnName\" [stickyEnd]=\"true\">\n          <th dbx-column-size-column=\"tail\" mat-header-cell *matHeaderCellDef>\n            <dbx-table-action-cell></dbx-table-action-cell>\n          </th>\n          <td mat-cell *matCellDef=\"let element\">\n            <dbx-table-item-action [item]=\"element.item\"></dbx-table-item-action>\n          </td>\n          <td mat-footer-cell *matFooterCellDef>\n            <dbx-table-summary-end-cell></dbx-table-summary-end-cell>\n          </td>\n        </ng-container>\n\n        <!-- Table View -->\n        <tr mat-header-row *matHeaderRowDef=\"displayedColumnsSignal(); sticky: true\"></tr>\n\n        <tr mat-row *matRowDef=\"let row; columns: ['groupHeaderColumn']; when: showGroupHeaderRow\"></tr>\n        <tr mat-row *matRowDef=\"let row; columns: displayedColumnsSignal(); when: showItemRow\"></tr>\n        <tr mat-row *matRowDef=\"let row; columns: ['groupFooterColumn']; when: showGroupFooterRow\"></tr>\n\n        <tr [ngClass]=\"{ 'dbx-hide': !showFooterRowSignal() }\" mat-footer-row *matFooterRowDef=\"displayedColumnsSignal(); sticky: true\"></tr>\n      </table>\n    </section>\n    <!-- Full summary row -->\n    @if (showFullSummaryRowSignal()) {\n      <div class=\"mat-mdc-table dbx-table-view-full-summary-row-container\">\n        <div class=\"mdc-data-table__cell mat-mdc-row\">\n          <dbx-table-full-summary-row></dbx-table-full-summary-row>\n        </div>\n      </div>\n    }\n  </div>\n</dbx-loading>\n","import { Directive, inject, input, effect } from '@angular/core';\nimport { DbxTableStore } from './table.store';\nimport { type Maybe } from '@dereekb/util';\nimport { type DbxTableContextDataDelegate, type DbxTableViewDelegate } from './table';\n\n/**\n * Directive for providing and configuring a DbxTableStore\n */\n@Directive({\n  selector: '[dbxTable]',\n  providers: [DbxTableStore]\n})\nexport class DbxTableDirective<I, C, T> {\n  readonly tableStore = inject(DbxTableStore<I, C, T>);\n\n  readonly dbxTableInput = input<Maybe<I>>();\n  readonly dbxTableViewDelegate = input<Maybe<DbxTableViewDelegate<I, C, T>>>();\n  readonly dbxTableDataDelegate = input<Maybe<DbxTableContextDataDelegate<I, C, T>>>();\n\n  protected readonly _setOnTableStoreEffect = effect(() => {\n    this.tableStore.setInput(this.dbxTableInput());\n    this.tableStore.setViewDelegate(this.dbxTableViewDelegate());\n    this.tableStore.setDataDelegate(this.dbxTableDataDelegate());\n  });\n}\n","import { NgModule } from '@angular/core';\nimport { DbxTableViewComponent } from './table.component';\nimport { DbxTableDirective } from './table.directive';\n\nconst importsAndExports = [DbxTableDirective, DbxTableViewComponent];\n\n@NgModule({\n  imports: importsAndExports,\n  exports: importsAndExports\n})\nexport class DbxTableModule {}\n","import { combineLatest, map, type Observable, of, shareReplay, startWith, switchMap } from 'rxjs';\nimport { type PrimativeKey, type Maybe, filterMaybeArrayValues, type ReadRequiredKeyFunction } from '@dereekb/util';\nimport { type DbxTableColumn } from './table';\nimport { type DbxTableStore } from './table.store';\n\nexport interface DbxTableReaderCellPair<C, T> {\n  readonly column: DbxTableColumn<C>;\n  readonly item: T;\n}\n\nexport interface DbxTableReaderCellDataPair<C, T, O> extends DbxTableReaderCellPair<C, T> {\n  readonly value: O;\n}\n\n/**\n * Key used for tracking columns.\n *\n * Generally the table name is used for this.\n */\nexport type DbxTableReaderColumnKey = string;\n\n/**\n * Key used for tracking items.\n *\n * Generally the item's unique identifier is used for this.\n */\nexport type DbxTableReaderItemKey = PrimativeKey;\n\n/**\n * Default track by function for DbxTableColumn.\n *\n * Returns the column name.\n *\n * @param column\n * @returns\n */\nexport const DEFAULT_DBX_TABLE_READER_COLUMN_TRACK_BY: ReadRequiredKeyFunction<DbxTableColumn<DbxTableReaderColumnKey>> = (column) => column.columnName;\n\n/**\n * Function used for tracking unique columns using the column's data.\n *\n * If the column key value is the same between those two columns, then the metadata of both columns will be considered the same/equal.\n */\nexport type DbxTableReaderColumnTrackByFunction<C> = ReadRequiredKeyFunction<DbxTableColumn<C>, DbxTableReaderColumnKey>;\n\n/**\n * Function used for tracking unique columns using the column's data.\n *\n * If the column key value is the same between those two columns, then the metadata of both columns will be considered the same/equal.\n */\nexport type DbxTableReaderItemTrackByFunction<T> = ReadRequiredKeyFunction<T, DbxTableReaderItemKey>;\n\nexport interface DbxTableReaderDelegate<C, T, O> {\n  /**\n   * Retrieves the data for a specific column and item/row.\n   *\n   * @param column\n   * @param item\n   */\n  readItemCellDataForColumn(column: DbxTableColumn<C>, item: T): Observable<O>;\n  /**\n   * Used for tracking unique columns.\n   *\n   * Use if the metadata between columns should be used for unique identification.\n   *\n   * Defaults to using the column name as the key if not defined.\n   */\n  trackColumn?: DbxTableReaderColumnTrackByFunction<C>;\n  /**\n   * Used for tracking unique items/rows.\n   *\n   * Use if the metadata between items should be used for unique identification.\n   *\n   * Defaults to using the item itself as the key if not defined.\n   */\n  trackItem: DbxTableReaderItemTrackByFunction<T>;\n}\n\nexport interface DbxTableReaderConfig<C, T, O, G = any> {\n  /**\n   * Delegate used for retrieving the data for a specific column and item/row.\n   */\n  readonly delegate: DbxTableReaderDelegate<C, T, O>;\n  /**\n   * The table store used for retrieving the items.\n   */\n  readonly tableStore: DbxTableStore<any, C, T, G>;\n}\n\nexport interface DbxTableReader<C, T, O, G = any> extends DbxTableReaderConfig<C, T, O, G> {\n  /**\n   * Retrieves all cell data pairs for a specific column.\n   */\n  cellDataPairsForColumn(column: DbxTableColumn<C>): Observable<DbxTableReaderCellDataPair<C, T, O>[]>;\n  /**\n   * Retrieves all cell data for a specific column.\n   */\n  cellDataForColumn(column: DbxTableColumn<C>): Observable<O[]>;\n  /**\n   * Retrieves the cell data pair for a specific column and item.\n   *\n   * Returns null if the column is not visible or the item is not found.\n   */\n  cellDataPairForColumnAndItem(column: DbxTableColumn<C>, item: T): Observable<Maybe<DbxTableReaderCellDataPair<C, T, O>>>;\n  /**\n   * Retrieves the cell data for a specific column and item.\n   *\n   * Returns null if the column is not visible or the item is not found.\n   */\n  cellDataForColumnAndItem(column: DbxTableColumn<C>, item: T): Observable<Maybe<O>>;\n}\n\n/**\n * Creates a {@link DbxTableReader} that provides reactive access to cell data across all columns and items in the table.\n *\n * @param config - The reader configuration containing the delegate and table store.\n * @returns A {@link DbxTableReader} instance with observable accessors for cell data.\n */\nexport function dbxTableReader<C, T, O, G = any>(config: DbxTableReaderConfig<C, T, O, G>): DbxTableReader<C, T, O, G> {\n  const { delegate, tableStore } = config;\n  const { items$ } = tableStore;\n  const { readItemCellDataForColumn, trackColumn: inputTrackColumn, trackItem } = delegate;\n  const trackColumn = (inputTrackColumn ?? DEFAULT_DBX_TABLE_READER_COLUMN_TRACK_BY) as DbxTableReaderColumnTrackByFunction<C>;\n\n  interface DbxTableReaderCellDataAccessorsForColumn {\n    readonly column: DbxTableColumn<C>;\n    readonly allValues$: Observable<DbxTableReaderCellDataPair<C, T, O>[]>;\n    readonly accessorsRecord: DbxTableReaderCellDataAccessorsForColumnRecord;\n  }\n\n  type DbxTableReaderCellDataAccessorsForColumnRecord = Record<DbxTableReaderItemKey, Observable<DbxTableReaderCellDataPair<C, T, O>>>;\n\n  const _cellDataAccessorsForColumn = (column: DbxTableColumn<C>): Observable<DbxTableReaderCellDataAccessorsForColumn> => {\n    return items$.pipe(\n      map((x) => {\n        const allObservables: Observable<DbxTableReaderCellDataPair<C, T, O>>[] = [];\n        const accessorsRecord: DbxTableReaderCellDataAccessorsForColumnRecord = {};\n\n        x.forEach((item) => {\n          const itemKey = trackItem(item);\n          const accessor$ = readItemCellDataForColumn(column, item).pipe(\n            map((value) => {\n              return {\n                column,\n                item,\n                value\n              };\n            })\n          );\n\n          accessorsRecord[itemKey] = accessor$;\n          allObservables.push(accessor$);\n        });\n\n        const allValues$ = combineLatest(allObservables).pipe(startWith([]), shareReplay(1));\n\n        return {\n          column,\n          allValues$,\n          accessorsRecord\n        };\n      }),\n      shareReplay(1)\n    );\n  };\n\n  interface DbxTableReaderColumnDataCellsAccessor {\n    readonly columnKey: DbxTableReaderColumnKey;\n    readonly column: DbxTableColumn<C>;\n    readonly cellDataAccessors$: Observable<DbxTableReaderCellDataAccessorsForColumn>;\n    readonly cellData$: Observable<DbxTableReaderCellDataPair<C, T, O>[]>;\n  }\n\n  function columnDataCellsAccessor(columnKey: DbxTableReaderColumnKey, column: DbxTableColumn<C>): DbxTableReaderColumnDataCellsAccessor {\n    const cellDataAccessors$ = _cellDataAccessorsForColumn(column);\n    const cellData$ = cellDataAccessors$.pipe(\n      switchMap((record) => record.allValues$),\n      startWith([]),\n      shareReplay(1)\n    );\n\n    return {\n      columnKey,\n      column,\n      cellDataAccessors$,\n      cellData$\n    };\n  }\n\n  interface DbxTableReaderColumnDataAccumulator {\n    readonly record: DbxTableReaderColumnDataRecord;\n  }\n\n  type DbxTableReaderColumnDataRecord = Record<DbxTableReaderColumnKey, DbxTableReaderColumnDataCellsAccessor>;\n\n  const allColumnsData$: Observable<DbxTableReaderColumnDataAccumulator> = tableStore.columns$.pipe(\n    map((nextColumns: DbxTableColumn<C>[]) => {\n      const record: DbxTableReaderColumnDataRecord = {};\n\n      nextColumns.forEach((column) => {\n        const columnKey = trackColumn(column);\n        record[columnKey] = columnDataCellsAccessor(columnKey, column);\n      });\n\n      return {\n        record\n      };\n    }),\n    shareReplay(1)\n  );\n\n  const _columnAccessorForColumn = (column: DbxTableColumn<C>): Observable<Maybe<DbxTableReaderColumnDataCellsAccessor>> => {\n    const columnKey = trackColumn(column);\n    return allColumnsData$.pipe(\n      map((columnsData) => columnsData.record[columnKey]),\n      shareReplay(1)\n    );\n  };\n\n  const loadCellDataPairsForColumn = (column: DbxTableColumn<C>): Observable<DbxTableReaderCellDataPair<C, T, O>[]> => {\n    return _columnAccessorForColumn(column).pipe(\n      switchMap((accessor) => {\n        // when visibility changes, the data will change to be an empty array\n        return accessor ? accessor.cellData$ : of([]);\n      }),\n      shareReplay(1)\n    );\n  };\n\n  const cellDataPairsForColumn = (column: DbxTableColumn<C>): Observable<DbxTableReaderCellDataPair<C, T, O>[]> => {\n    return loadCellDataPairsForColumn(column);\n  };\n\n  const cellDataForColumn = (column: DbxTableColumn<C>): Observable<O[]> => {\n    return cellDataPairsForColumn(column).pipe(\n      map((pairs) => filterMaybeArrayValues(pairs.map((pair) => pair.value))),\n      shareReplay(1)\n    );\n  };\n\n  const cellDataPairForColumnAndItem = (column: DbxTableColumn<C>, item: T): Observable<Maybe<DbxTableReaderCellDataPair<C, T, O>>> => {\n    const itemKey = trackItem(item);\n    return _columnAccessorForColumn(column).pipe(\n      switchMap((columnsData) => {\n        return columnsData\n          ? columnsData.cellDataAccessors$.pipe(\n              switchMap((cellDataAccessor) => {\n                const itemAccessor = cellDataAccessor.accessorsRecord[itemKey];\n                const result: Observable<Maybe<DbxTableReaderCellDataPair<C, T, O>>> = itemAccessor || of(null);\n                return result;\n              })\n            )\n          : of(null);\n      }),\n      shareReplay(1)\n    );\n  };\n\n  const cellDataForColumnAndItem = (column: DbxTableColumn<C>, item: T): Observable<Maybe<O>> => {\n    return cellDataPairForColumnAndItem(column, item).pipe(map((pair) => pair?.value));\n  };\n\n  return {\n    tableStore,\n    delegate,\n    cellDataPairsForColumn,\n    cellDataForColumn,\n    cellDataPairForColumnAndItem,\n    cellDataForColumnAndItem\n  };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["formatDate","importsAndExports","i1"],"mappings":"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"}