{"version":3,"file":"ngx-com-components-table.mjs","sources":["../../../projects/com/components/table/table-header-cell-def.directive.ts","../../../projects/com/components/table/table-cell-def.directive.ts","../../../projects/com/components/table/table-footer-cell-def.directive.ts","../../../projects/com/components/table/table-column-def.directive.ts","../../../projects/com/components/table/table-header-row-def.directive.ts","../../../projects/com/components/table/table-row-def.directive.ts","../../../projects/com/components/table/table-footer-row-def.directive.ts","../../../projects/com/components/table/table-no-data-row.directive.ts","../../../projects/com/components/table/table-data-source.ts","../../../projects/com/components/table/table-row-click.types.ts","../../../projects/com/components/table/table.variants.ts","../../../projects/com/components/table/table.component.ts","../../../projects/com/components/table/table-row-click.directive.ts","../../../projects/com/components/table/index.ts","../../../projects/com/components/table/ngx-com-components-table.ts"],"sourcesContent":["import { Directive, inject, TemplateRef } from '@angular/core';\n\n/**\n * Structural directive that captures the template for a header cell.\n *\n * Use with the star syntax inside a `comColumnDef` container.\n *\n * @tokens none\n *\n * @example\n * ```html\n * <ng-container comColumnDef=\"name\">\n *   <th *comHeaderCellDef>Name</th>\n *   <td *comCellDef=\"let row\">{{ row.name }}</td>\n * </ng-container>\n * ```\n */\n@Directive({\n  selector: '[comHeaderCellDef]',\n})\nexport class ComHeaderCellDef {\n  readonly templateRef: TemplateRef<void> = inject(TemplateRef<void>);\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\nimport type { CellDefContext } from './table.types';\n\n/**\n * Structural directive that captures the template for a body cell.\n *\n * Use with the star syntax inside a `comColumnDef` container.\n *\n * @tokens none\n *\n * @example\n * ```html\n * <ng-container comColumnDef=\"name\">\n *   <th *comHeaderCellDef>Name</th>\n *   <td *comCellDef=\"let row\">{{ row.name }}</td>\n * </ng-container>\n * ```\n */\n@Directive({\n  selector: '[comCellDef]',\n})\nexport class ComCellDef<T = unknown> {\n  readonly templateRef: TemplateRef<CellDefContext<T>> = inject(TemplateRef<CellDefContext<T>>);\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n/**\n * Structural directive that captures the template for a footer cell.\n *\n * Use with the star syntax inside a `comColumnDef` container.\n *\n * @tokens none\n *\n * @example\n * ```html\n * <ng-container comColumnDef=\"amount\">\n *   <th *comHeaderCellDef>Amount</th>\n *   <td *comCellDef=\"let row\">{{ row.amount | currency }}</td>\n *   <td *comFooterCellDef>{{ total() | currency }}</td>\n * </ng-container>\n * ```\n */\n@Directive({\n  selector: '[comFooterCellDef]',\n})\nexport class ComFooterCellDef {\n  readonly templateRef: TemplateRef<void> = inject(TemplateRef<void>);\n}\n","import { contentChild, Directive, input } from '@angular/core';\nimport type { InputSignal, Signal } from '@angular/core';\nimport { ComHeaderCellDef } from './table-header-cell-def.directive';\nimport { ComCellDef } from './table-cell-def.directive';\nimport { ComFooterCellDef } from './table-footer-cell-def.directive';\n\n/**\n * Defines a single column in a `com-table`.\n *\n * Contains a header cell template, a body cell template, and an optional footer cell template.\n *\n * @tokens none\n *\n * @example\n * ```html\n * <ng-container comColumnDef=\"name\">\n *   <th *comHeaderCellDef>Name</th>\n *   <td *comCellDef=\"let row\">{{ row.name }}</td>\n * </ng-container>\n * ```\n */\n@Directive({\n  selector: '[comColumnDef]',\n  exportAs: 'comColumnDef',\n})\nexport class ComColumnDef {\n  /** The column name — used to match header/row column lists. */\n  readonly name: InputSignal<string> = input.required<string>({ alias: 'comColumnDef' });\n\n  /** @internal Header cell template for this column. */\n  readonly headerCellDef: Signal<ComHeaderCellDef | undefined> =\n    contentChild<ComHeaderCellDef>(ComHeaderCellDef);\n\n  /** @internal Body cell template for this column. */\n  readonly cellDef: Signal<ComCellDef | undefined> = contentChild<ComCellDef>(ComCellDef);\n\n  /** @internal Optional footer cell template for this column. */\n  readonly footerCellDef: Signal<ComFooterCellDef | undefined> =\n    contentChild<ComFooterCellDef>(ComFooterCellDef);\n}\n","import { booleanAttribute, Directive, input } from '@angular/core';\nimport type { InputSignal, InputSignalWithTransform } from '@angular/core';\n\n/**\n * Defines which columns appear in the header row and their order.\n *\n * @tokens none\n *\n * @example\n * ```html\n * <tr comHeaderRowDef=\"['name', 'email', 'role']\"></tr>\n * ```\n *\n * @example Sticky header row\n * ```html\n * <tr comHeaderRowDef=\"['name', 'email']\" comHeaderRowDefSticky></tr>\n * ```\n *\n * @example Custom class on header row\n * ```html\n * <tr [comHeaderRowDef]=\"['name', 'email']\" comHeaderRowDefClass=\"uppercase\"></tr>\n * ```\n */\n@Directive({\n  selector: '[comHeaderRowDef]',\n})\nexport class ComHeaderRowDef {\n  /** Ordered list of column names to display. */\n  readonly columns: InputSignal<string[]> = input.required<string[]>({ alias: 'comHeaderRowDef' });\n\n  /** Makes this header row sticky (alternative to table-level `stickyHeader`). */\n  readonly sticky: InputSignalWithTransform<boolean, unknown> = input(false, {\n    alias: 'comHeaderRowDefSticky',\n    transform: booleanAttribute,\n  });\n\n  /** Additional CSS classes to merge onto the header `<tr>`. */\n  readonly headerRowClass: InputSignal<string> = input<string>('', { alias: 'comHeaderRowDefClass' });\n}\n","import { Directive, input } from '@angular/core';\nimport type { InputSignal } from '@angular/core';\n\n/**\n * Defines which columns appear in each body row and their order.\n *\n * @tokens none\n *\n * @example\n * ```html\n * <tr comRowDef [comRowDefColumns]=\"['name', 'email', 'role']\"></tr>\n * ```\n *\n * @example Custom class on body rows\n * ```html\n * <tr comRowDef [comRowDefColumns]=\"['name', 'email']\" comRowDefClass=\"even:bg-blue-50\"></tr>\n * ```\n */\n@Directive({\n  selector: '[comRowDef]',\n})\nexport class ComRowDef {\n  /** Ordered list of column names to display per body row. */\n  readonly columns: InputSignal<string[]> = input.required<string[]>({\n    alias: 'comRowDefColumns',\n  });\n\n  /** Additional CSS classes to merge onto each body `<tr>`. */\n  readonly rowClass: InputSignal<string> = input<string>('', { alias: 'comRowDefClass' });\n}\n","import { Directive, input } from '@angular/core';\nimport type { InputSignal } from '@angular/core';\n\n/**\n * Defines which columns appear in the footer row and their order.\n *\n * @tokens none\n *\n * @example\n * ```html\n * <tr comFooterRowDef=\"['description', 'amount']\"></tr>\n * ```\n *\n * @example Custom class on footer row\n * ```html\n * <tr comFooterRowDef=\"['description', 'amount']\" comFooterRowDefClass=\"font-bold\"></tr>\n * ```\n */\n@Directive({\n  selector: '[comFooterRowDef]',\n})\nexport class ComFooterRowDef {\n  /** Ordered list of column names in the footer. */\n  readonly columns: InputSignal<string[]> = input.required<string[]>({\n    alias: 'comFooterRowDef',\n  });\n\n  /** Additional CSS classes to merge onto the footer `<tr>`. */\n  readonly footerRowClass: InputSignal<string> = input<string>('', { alias: 'comFooterRowDefClass' });\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n/**\n * Structural directive for the empty-state row shown when the data source is empty.\n *\n * Place inside `com-table`. The template receives the column count for colspan.\n *\n * @tokens none\n *\n * @example\n * ```html\n * <com-table [dataSource]=\"data()\">\n *   <!-- column defs... -->\n *\n *   <ng-template comNoDataRow>\n *     <td [attr.colspan]=\"displayedColumns().length\" class=\"text-center py-8\">\n *       No results found.\n *     </td>\n *   </ng-template>\n * </com-table>\n * ```\n */\n@Directive({\n  selector: '[comNoDataRow]',\n})\nexport class ComNoDataRow {\n  readonly templateRef: TemplateRef<void> = inject(TemplateRef<void>);\n}\n","import type { Signal } from '@angular/core';\nimport { signal } from '@angular/core';\n\n/**\n * Abstract data source for ComTable.\n *\n * Implement `connect()` to provide a signal of data, and `disconnect()` to clean up.\n * The table calls `connect()` on init and `disconnect()` on destroy.\n *\n * @example Signal-based data source\n * ```typescript\n * class MyDataSource extends ComDataSource<User> {\n *   private readonly data = signal<User[]>([]);\n *\n *   connect(): Signal<readonly User[]> {\n *     return this.data.asReadonly();\n *   }\n *\n *   disconnect(): void {\n *     // cleanup if needed\n *   }\n *\n *   setData(users: User[]): void {\n *     this.data.set(users);\n *   }\n * }\n * ```\n */\nexport abstract class ComDataSource<T> {\n  /** Returns a signal of the current data set. Called once when the table initializes. */\n  abstract connect(): Signal<readonly T[]>;\n\n  /** Cleanup resources. Called when the table is destroyed. */\n  abstract disconnect(): void;\n}\n\n/**\n * Simple array-backed data source.\n *\n * Wraps a plain array in a writable signal so it can be used with ComTable's DataSource API.\n */\nexport class ComArrayDataSource<T> extends ComDataSource<T> {\n  private readonly data = signal<readonly T[]>([]);\n\n  constructor(initialData: T[] = []) {\n    super();\n    this.data.set(initialData);\n  }\n\n  connect(): Signal<readonly T[]> {\n    return this.data.asReadonly();\n  }\n\n  disconnect(): void {\n    // No cleanup needed for a simple array\n  }\n\n  /** Replace the entire data set. */\n  setData(data: T[]): void {\n    this.data.set(data);\n  }\n}\n\n/**\n * Type guard to check if a value is a ComDataSource instance.\n */\nexport function isDataSource<T>(value: unknown): value is ComDataSource<T> {\n  return value instanceof ComDataSource;\n}\n\n/** The types that ComTable accepts for its dataSource input. */\nexport type ComTableDataSourceInput<T> = T[] | ComDataSource<T>;\n","import { InjectionToken } from '@angular/core';\nimport type { Signal } from '@angular/core';\n\n/** Data context that ComTable pushes to ComRowClick to avoid circular DI. */\nexport interface ComRowClickContext<T = unknown> {\n  readonly renderData: Signal<readonly T[]>;\n  readonly bodyColumns: Signal<string[]>;\n}\n\n/** Minimal interface that ComTable reads to detect an active row-click directive. */\nexport interface ComRowClickRef<T = unknown> {\n  /** Whether row-click behavior is currently active (exists and not disabled). */\n  readonly isActive: Signal<boolean>;\n\n  /** Called by ComTable to provide data context — avoids circular injection. */\n  _setContext(ctx: ComRowClickContext<T>): void;\n}\n\n/**\n * Injection token used by ComTable to optionally detect a ComRowClick directive.\n * Breaks the circular dependency between ComTable and ComRowClick.\n */\nexport const COM_ROW_CLICK: InjectionToken<ComRowClickRef> =\n  new InjectionToken<ComRowClickRef>('COM_ROW_CLICK');\n","import { cva, type VariantProps } from 'class-variance-authority';\n\n// Table variant types\nexport type TableVariant = 'default' | 'striped';\nexport type TableDensity = 'compact' | 'default' | 'comfortable';\nexport type HeaderVariant = 'default' | 'muted';\n\n/**\n * CVA variants for the table container wrapper.\n */\nexport const tableContainerVariants: (props?: Record<string, never>) => string = cva(\n  'relative overflow-x-auto'\n);\n\nexport type TableContainerVariants = VariantProps<typeof tableContainerVariants>;\n\n/**\n * CVA variants for the `<table>` element.\n *\n * @tokens `--color-foreground`\n */\nexport const tableVariants: (props?: Record<string, never>) => string = cva(\n  'w-full caption-bottom text-sm text-foreground'\n);\n\nexport type TableVariants = VariantProps<typeof tableVariants>;\n\n/**\n * CVA variants for the `<thead>` element.\n *\n * @tokens `--color-background`, `--color-muted`, `--color-muted-foreground`, `--color-border`\n */\nexport const tableHeaderVariants: (props?: {\n  sticky?: boolean;\n  headerVariant?: HeaderVariant;\n}) => string = cva('', {\n  variants: {\n    sticky: {\n      true: 'sticky top-0 z-10 bg-background',\n      false: '',\n    },\n    headerVariant: {\n      default: '',\n      muted: 'bg-muted text-muted-foreground border-b border-border',\n    },\n  },\n  compoundVariants: [\n    {\n      sticky: true,\n      headerVariant: 'muted',\n      class: 'sticky top-0 z-10 bg-muted text-muted-foreground border-b border-border',\n    },\n  ],\n  defaultVariants: {\n    sticky: false,\n    headerVariant: 'default',\n  },\n});\n\nexport type TableHeaderVariants = VariantProps<typeof tableHeaderVariants>;\n\n/**\n * CVA variants for the header `<tr>` — applies base styles to child `<th>` cells via child selectors.\n *\n * @tokens `--color-muted-foreground`\n */\nexport const tableHeaderRowVariants: (props?: {\n  density?: TableDensity;\n}) => string = cva(\n  '[&>th]:text-left [&>th]:align-middle [&>th]:font-medium [&>th]:text-muted-foreground [&>th:has([comSortHeader])]:cursor-pointer',\n  {\n    variants: {\n      density: {\n        compact: '[&>th]:h-8 [&>th]:px-3 [&>th]:text-xs',\n        default: '[&>th]:h-10 [&>th]:px-4 [&>th]:text-xs',\n        comfortable: '[&>th]:h-12 [&>th]:px-5 [&>th]:text-sm',\n      },\n    },\n    defaultVariants: {\n      density: 'default',\n    },\n  }\n);\n\nexport type TableHeaderRowVariants = VariantProps<typeof tableHeaderRowVariants>;\n\n/**\n * CVA variants for `<tbody> <tr>` rows — includes row-level styles and child `<td>` cell styles.\n *\n * @tokens `--color-border-subtle`, `--color-muted`, `--color-muted-hover`\n */\nexport const tableRowVariants: (props?: {\n  variant?: TableVariant;\n  density?: TableDensity;\n}) => string = cva(\n  'transition-colors hover:bg-muted-hover last:border-b-0 [&>td]:align-middle [&>td:has(com-checkbox)]:w-px',\n  {\n    variants: {\n      variant: {\n        default: 'border-b border-border-subtle',\n        striped: 'border-b border-border-subtle even:bg-muted-stripe',\n      },\n      density: {\n        compact: '[&>td]:px-3 [&>td]:py-1.5',\n        default: '[&>td]:px-4 [&>td]:py-2.5',\n        comfortable: '[&>td]:px-5 [&>td]:py-3.5',\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n      density: 'default',\n    },\n  }\n);\n\nexport type TableRowVariants = VariantProps<typeof tableRowVariants>;\n\n/**\n * CVA variants for the footer `<tr>` — applies base styles to child `<td>` cells via child selectors.\n *\n * @tokens `--color-foreground`, `--color-border`\n */\nexport const tableFooterRowVariants: (props?: {\n  density?: TableDensity;\n}) => string = cva(\n  '[&>td]:align-middle [&>td]:font-medium [&>td]:text-foreground [&>td]:border-t [&>td]:border-border',\n  {\n    variants: {\n      density: {\n        compact: '[&>td]:h-8 [&>td]:px-3 [&>td]:text-xs',\n        default: '[&>td]:h-10 [&>td]:px-4 [&>td]:text-sm',\n        comfortable: '[&>td]:h-12 [&>td]:px-5 [&>td]:text-sm',\n      },\n    },\n    defaultVariants: {\n      density: 'default',\n    },\n  }\n);\n\nexport type TableFooterRowVariants = VariantProps<typeof tableFooterRowVariants>;\n\n// ─── Deprecated aliases (remove in next major) ───\n\n/** @deprecated Use `tableHeaderRowVariants` instead. */\nexport const tableHeaderCellVariants: typeof tableHeaderRowVariants = tableHeaderRowVariants;\n/** @deprecated Use `tableHeaderRowVariants` instead. */\nexport type TableHeaderCellVariants = TableHeaderRowVariants;\n\n/** @deprecated Body cell styles are now part of `tableRowVariants`. */\nexport const tableBodyCellVariants: typeof tableRowVariants = tableRowVariants;\n/** @deprecated Body cell styles are now part of `tableRowVariants`. */\nexport type TableBodyCellVariants = TableRowVariants;\n\n/** @deprecated Use `tableFooterRowVariants` instead. */\nexport const tableFooterCellVariants: typeof tableFooterRowVariants = tableFooterRowVariants;\n/** @deprecated Use `tableFooterRowVariants` instead. */\nexport type TableFooterCellVariants = TableFooterRowVariants;\n","import {\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  contentChild,\n  contentChildren,\n  DestroyRef,\n  inject,\n  input,\n  ViewEncapsulation,\n} from '@angular/core';\nimport type {\n  InputSignal,\n  InputSignalWithTransform,\n  Signal,\n  TrackByFunction,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ComSpinner } from 'ngx-com/components/spinner';\nimport { ComColumnDef } from './table-column-def.directive';\nimport { ComHeaderRowDef } from './table-header-row-def.directive';\nimport { ComRowDef } from './table-row-def.directive';\nimport { ComFooterRowDef } from './table-footer-row-def.directive';\nimport { ComNoDataRow } from './table-no-data-row.directive';\nimport { isDataSource } from './table-data-source';\nimport type { ComTableDataSourceInput } from './table-data-source';\nimport { COM_ROW_CLICK } from './table-row-click.types';\nimport { mergeClasses } from './table.utils';\nimport type { HeaderVariant, TableVariant, TableDensity } from './table.variants';\nimport {\n  tableContainerVariants,\n  tableVariants,\n  tableHeaderVariants,\n  tableHeaderRowVariants,\n  tableRowVariants,\n  tableFooterRowVariants,\n} from './table.variants';\n\n/**\n * Declarative data table component using native HTML `<table>` semantics.\n *\n * Define columns via `comColumnDef` with `*comHeaderCellDef` and `*comCellDef`,\n * then declare row structure via `comHeaderRowDef` and `comRowDef`.\n *\n * Accepts either a plain `T[]` or a `ComDataSource<T>` for the data source.\n *\n * @tokens `--color-background`, `--color-foreground`, `--color-muted`, `--color-muted-foreground`,\n *         `--color-muted-hover`, `--color-border`, `--color-border-subtle`\n *\n * @example Basic table\n * ```html\n * <com-table [dataSource]=\"users()\">\n *   <ng-container comColumnDef=\"name\">\n *     <th *comHeaderCellDef>Name</th>\n *     <td *comCellDef=\"let row\">{{ row.name }}</td>\n *   </ng-container>\n *\n *   <ng-container comColumnDef=\"email\">\n *     <th *comHeaderCellDef>Email</th>\n *     <td *comCellDef=\"let row\">{{ row.email }}</td>\n *   </ng-container>\n *\n *   <tr comHeaderRowDef=\"['name', 'email']\"></tr>\n *   <tr comRowDef [comRowDefColumns]=\"['name', 'email']\"></tr>\n * </com-table>\n * ```\n *\n * @example With DataSource\n * ```typescript\n * class UserDataSource extends ComDataSource<User> {\n *   private data = signal<User[]>([]);\n *   connect() { return this.data.asReadonly(); }\n *   disconnect() {}\n *   setData(users: User[]) { this.data.set(users); }\n * }\n * ```\n * ```html\n * <com-table [dataSource]=\"userDataSource\">\n *   ...\n * </com-table>\n * ```\n */\n@Component({\n  selector: 'com-table',\n  exportAs: 'comTable',\n  template: `\n    <div [class]=\"containerClasses()\">\n      <table [class]=\"tableClasses()\" [attr.aria-label]=\"ariaLabel()\" [attr.aria-busy]=\"loading() || null\">\n        <thead [class]=\"theadClasses()\">\n          <tr [class]=\"headerTrClasses()\">\n            @for (colName of headerColumns(); track colName) {\n              @let colDef = columnDefMap().get(colName);\n              @if (colDef?.headerCellDef(); as headerDef) {\n                <ng-container [ngTemplateOutlet]=\"headerDef.templateRef\" />\n              }\n            }\n          </tr>\n        </thead>\n\n        <tbody>\n          @if (!loading() && renderData().length === 0 && noDataRow()) {\n            <tr>\n              <ng-container [ngTemplateOutlet]=\"noDataRow()!.templateRef\" />\n            </tr>\n          } @else {\n            @for (row of renderData(); track trackByFn()($index, row); let idx = $index) {\n              <tr [class]=\"trClasses()\" [attr.tabindex]=\"isRowClickable() ? 0 : null\">\n                @for (colName of bodyColumns(); track colName) {\n                  @let colDef = columnDefMap().get(colName);\n                  @if (colDef?.cellDef(); as cellDef) {\n                    <ng-container\n                      [ngTemplateOutlet]=\"cellDef.templateRef\"\n                      [ngTemplateOutletContext]=\"{ $implicit: row, index: idx }\"\n                    />\n                  }\n                }\n              </tr>\n            }\n          }\n        </tbody>\n\n        @if (footerRowDef()) {\n          <tfoot>\n            <tr [class]=\"footerTrClasses()\">\n              @for (colName of footerColumns(); track colName) {\n                @let colDef = columnDefMap().get(colName);\n                @if (colDef?.footerCellDef(); as footerDef) {\n                  <ng-container [ngTemplateOutlet]=\"footerDef.templateRef\" />\n                }\n              }\n            </tr>\n          </tfoot>\n        }\n      </table>\n\n      @if (loading()) {\n        <div class=\"absolute inset-0 flex items-center justify-center bg-overlay\" aria-live=\"polite\">\n          <com-spinner size=\"lg\" color=\"primary\" label=\"Loading...\" />\n        </div>\n      }\n    </div>\n  `,\n  imports: [NgTemplateOutlet, ComSpinner],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class]': 'hostClass()',\n  },\n})\nexport class ComTable<T> {\n  private readonly destroyRef: DestroyRef = inject(DestroyRef);\n  private readonly rowClickRef = inject(COM_ROW_CLICK, { optional: true, self: true });\n\n  // ─── Inputs ───\n\n  /** The data to render — accepts a plain array or a ComDataSource. */\n  readonly dataSource: InputSignal<ComTableDataSourceInput<T>> = input<ComTableDataSourceInput<T>>(\n    [] as T[]\n  );\n\n  /** Track function for `@for`. Defaults to tracking by index. */\n  readonly trackByFn: InputSignal<TrackByFunction<T>> = input<TrackByFunction<T>>(\n    (index: number, _item: T) => index\n  );\n\n  /** Visual treatment of body rows. */\n  readonly variant: InputSignal<TableVariant> = input<TableVariant>('default');\n\n  /** Row height / cell padding. */\n  readonly density: InputSignal<TableDensity> = input<TableDensity>('default');\n\n  /** Whether the header row sticks on scroll. */\n  readonly stickyHeader: InputSignalWithTransform<boolean, unknown> = input(false, {\n    transform: booleanAttribute,\n  });\n\n  /** Shows a loading overlay with spinner. */\n  readonly loading: InputSignalWithTransform<boolean, unknown> = input(false, {\n    transform: booleanAttribute,\n  });\n\n  /** Accessible label for the table element. */\n  readonly ariaLabel: InputSignal<string | undefined> = input<string | undefined>(undefined);\n\n  /** Additional CSS classes to merge onto the host element. */\n  readonly userClass: InputSignal<string> = input<string>('', { alias: 'class' });\n\n  /** Additional CSS classes to merge onto the container `<div>`. */\n  readonly containerClass: InputSignal<string> = input<string>('');\n\n  /** Additional CSS classes to merge onto the `<table>` element. */\n  readonly tableClass: InputSignal<string> = input<string>('');\n\n  /** Additional CSS classes to merge onto the `<thead>` element. */\n  readonly theadClass: InputSignal<string> = input<string>('');\n\n  /** Visual treatment of the header — `'muted'` adds a filled background. */\n  readonly headerVariant: InputSignal<HeaderVariant> = input<HeaderVariant>('default');\n\n  // ─── Content Queries ───\n\n  /** @internal All column definitions projected into the table. */\n  readonly columnDefs: Signal<readonly ComColumnDef[]> = contentChildren<ComColumnDef>(ComColumnDef);\n\n  /** @internal Header row definition. */\n  readonly headerRowDef: Signal<ComHeaderRowDef | undefined> =\n    contentChild<ComHeaderRowDef>(ComHeaderRowDef);\n\n  /** @internal Body row definition. */\n  readonly rowDef: Signal<ComRowDef | undefined> = contentChild<ComRowDef>(ComRowDef);\n\n  /** @internal Optional footer row definition. */\n  readonly footerRowDef: Signal<ComFooterRowDef | undefined> =\n    contentChild<ComFooterRowDef>(ComFooterRowDef);\n\n  /** @internal Optional no-data row template. */\n  readonly noDataRow: Signal<ComNoDataRow | undefined> =\n    contentChild<ComNoDataRow>(ComNoDataRow);\n\n  // ─── Derived State ───\n\n  /** @internal Map of column name → column definition for O(1) lookup. */\n  protected readonly columnDefMap: Signal<Map<string, ComColumnDef>> = computed(() => {\n    const map = new Map<string, ComColumnDef>();\n    for (const col of this.columnDefs()) {\n      map.set(col.name(), col);\n    }\n    return map;\n  });\n\n  /** @internal Resolved render data — handles both array and DataSource inputs. */\n  readonly renderData: Signal<readonly T[]> = computed(() => {\n    const ds = this.dataSource();\n    if (isDataSource<T>(ds)) {\n      return ds.connect()();\n    }\n    return ds;\n  });\n\n  /** @internal Header column names. */\n  protected readonly headerColumns: Signal<string[]> = computed(\n    () => this.headerRowDef()?.columns() ?? []\n  );\n\n  /** @internal Body column names — public for ComRowClick event delegation. */\n  readonly bodyColumns: Signal<string[]> = computed(\n    () => this.rowDef()?.columns() ?? this.headerColumns()\n  );\n\n  /** @internal Footer column names. */\n  protected readonly footerColumns: Signal<string[]> = computed(\n    () => this.footerRowDef()?.columns() ?? []\n  );\n\n  /** @internal Whether the header should be sticky. */\n  private readonly isSticky: Signal<boolean> = computed(\n    () => this.stickyHeader() || (this.headerRowDef()?.sticky() ?? false)\n  );\n\n  /** @internal Whether body rows are clickable (ComRowClick directive is active). */\n  protected readonly isRowClickable: Signal<boolean> = computed(\n    () => this.rowClickRef?.isActive() ?? false\n  );\n\n  // ─── CVA Classes ───\n\n  protected readonly hostClass: Signal<string> = computed(() =>\n    mergeClasses('block', this.userClass())\n  );\n\n  protected readonly containerClasses: Signal<string> = computed(() =>\n    mergeClasses(tableContainerVariants(), this.containerClass())\n  );\n\n  protected readonly tableClasses: Signal<string> = computed(() =>\n    mergeClasses(tableVariants(), this.tableClass())\n  );\n\n  protected readonly theadClasses: Signal<string> = computed(() =>\n    mergeClasses(\n      tableHeaderVariants({ sticky: this.isSticky(), headerVariant: this.headerVariant() }),\n      this.theadClass()\n    )\n  );\n\n  protected readonly headerTrClasses: Signal<string> = computed(() =>\n    mergeClasses(tableHeaderRowVariants({ density: this.density() }), this.headerRowDef()?.headerRowClass() ?? '')\n  );\n\n  protected readonly trClasses: Signal<string> = computed(() => {\n    const base = tableRowVariants({ variant: this.variant(), density: this.density() });\n    const clickable = this.isRowClickable()\n      ? 'cursor-pointer outline-none focus-visible:outline-[1px] focus-visible:outline-offset-[-1px] focus-visible:outline-[--color-ring]'\n      : '';\n    return mergeClasses(base, clickable, this.rowDef()?.rowClass() ?? '');\n  });\n\n  protected readonly footerTrClasses: Signal<string> = computed(() =>\n    mergeClasses(tableFooterRowVariants({ density: this.density() }), this.footerRowDef()?.footerRowClass() ?? '')\n  );\n\n  constructor() {\n    // Push data context to the row-click directive (avoids circular DI)\n    this.rowClickRef?._setContext({\n      renderData: this.renderData,\n      bodyColumns: this.bodyColumns,\n    });\n\n    // Disconnect DataSource on destroy\n    this.destroyRef.onDestroy(() => {\n      const ds = this.dataSource();\n      if (isDataSource<T>(ds)) {\n        ds.disconnect();\n      }\n    });\n  }\n}\n","import {\n  afterNextRender,\n  booleanAttribute,\n  computed,\n  DestroyRef,\n  Directive,\n  ElementRef,\n  forwardRef,\n  inject,\n  input,\n  output,\n  Renderer2,\n} from '@angular/core';\nimport type {\n  InputSignal,\n  InputSignalWithTransform,\n  OutputEmitterRef,\n  Signal,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { COM_ROW_CLICK } from './table-row-click.types';\nimport type { ComRowClickContext, ComRowClickRef } from './table-row-click.types';\n\n/**\n * Attribute directive that enables click-to-act on `<com-table>` body rows.\n *\n * Uses event delegation — a single click/keydown listener on the `<table>` element —\n * rather than per-row bindings. When a user clicks or presses Enter/Space on a body row,\n * the directive resolves the row data and emits it, unless the click originated from an\n * excluded column's cell.\n *\n * @tokens `--color-ring`\n *\n * @example Basic\n * ```html\n * <com-table [dataSource]=\"users()\" comRowClick (comRowClick)=\"openDetail($event)\">\n *   ...\n * </com-table>\n * ```\n *\n * @example With column exclusion\n * ```html\n * <com-table [dataSource]=\"users()\" comRowClick\n *            [comRowClickExclude]=\"['select', 'actions']\"\n *            (comRowClick)=\"openDetail($event)\">\n *   ...\n * </com-table>\n * ```\n */\n@Directive({\n  selector: 'com-table[comRowClick]',\n  exportAs: 'comRowClick',\n  providers: [{ provide: COM_ROW_CLICK, useExisting: forwardRef(() => ComRowClick) }],\n})\nexport class ComRowClick<T = unknown> implements ComRowClickRef<T> {\n  private readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\n  private readonly renderer: Renderer2 = inject(Renderer2);\n  private readonly destroyRef: DestroyRef = inject(DestroyRef);\n  private readonly document: Document = inject(DOCUMENT);\n\n  /** @internal Context pushed by ComTable — avoids circular DI. */\n  private context: ComRowClickContext<T> | null = null;\n\n  // ─── Inputs ───\n\n  /** Column names whose cells do NOT trigger the row click output. */\n  readonly comRowClickExclude: InputSignal<string[]> = input<string[]>([], {\n    alias: 'comRowClickExclude',\n  });\n\n  /** Disables all row click behavior — removes cursor, tabindex, and event handling. */\n  readonly comRowClickDisabled: InputSignalWithTransform<boolean, unknown> = input(false, {\n    alias: 'comRowClickDisabled',\n    transform: booleanAttribute,\n  });\n\n  // ─── Outputs ───\n\n  /** Emits the row data object when a non-excluded cell is clicked or activated via keyboard. */\n  readonly comRowClick: OutputEmitterRef<T> = output<T>();\n\n  // ─── Public (consumed by ComTable via COM_ROW_CLICK token) ───\n\n  /** Whether row-click behavior is currently active. */\n  readonly isActive: Signal<boolean> = computed(() => !this.comRowClickDisabled());\n\n  /** @internal Called by ComTable to provide data context. */\n  _setContext(ctx: ComRowClickContext<T>): void {\n    this.context = ctx;\n  }\n\n  constructor() {\n    // SSR-safe: event delegation setup only runs in the browser after render\n    afterNextRender(() => {\n      const hostEl = this.elementRef.nativeElement;\n      const tableEl = hostEl.querySelector('table');\n      if (!tableEl) return;\n\n      const unlistenClick = this.renderer.listen(tableEl, 'click', (event: MouseEvent) => {\n        this.handleEvent(event);\n      });\n\n      const unlistenKeydown = this.renderer.listen(\n        tableEl,\n        'keydown',\n        (event: KeyboardEvent) => {\n          if (event.key === 'Enter' || event.key === ' ') {\n            this.handleEvent(event);\n            if (event.key === ' ') {\n              event.preventDefault(); // Prevent page scroll\n            }\n          }\n        }\n      );\n\n      this.destroyRef.onDestroy(() => {\n        unlistenClick();\n        unlistenKeydown();\n      });\n    });\n  }\n\n  // ─── Private ───\n\n  private handleEvent(event: Event): void {\n    if (this.comRowClickDisabled() || !this.context) return;\n\n    const target = event.target;\n    if (!(target instanceof this.document.defaultView!.HTMLElement)) return;\n\n    const tr = target.closest('tbody tr') as HTMLTableRowElement | null;\n    if (!tr) return;\n\n    // Keyboard events fire on the focused <tr> directly — no cell exclusion needed\n    if (event instanceof KeyboardEvent) {\n      if (target !== tr) return;\n      return this.emitRow(tr);\n    }\n\n    // Click events — resolve the cell (direct child of <tr>) that contains the target\n    const cell = target.closest('td, th') as HTMLTableCellElement | null;\n    if (!cell || cell.parentElement !== tr) return;\n\n    // Map cell index to column name for exclusion check\n    const columnName = this.context.bodyColumns()[cell.cellIndex];\n    if (!columnName || this.comRowClickExclude().includes(columnName)) return;\n\n    this.emitRow(tr);\n  }\n\n  private emitRow(tr: HTMLTableRowElement): void {\n    if (!this.context) return;\n    const rowIndex = tr.sectionRowIndex;\n    const data = this.context.renderData();\n    if (rowIndex < 0 || rowIndex >= data.length) return;\n    this.comRowClick.emit(data[rowIndex] as T);\n  }\n}\n","// Public API for the table component system\n\n// Main component\nexport { ComTable } from './table.component';\n\n// Data source\nexport { ComDataSource, ComArrayDataSource, isDataSource } from './table-data-source';\nexport type { ComTableDataSourceInput } from './table-data-source';\n\n// Column directives\nexport { ComColumnDef } from './table-column-def.directive';\nexport { ComHeaderCellDef } from './table-header-cell-def.directive';\nexport { ComCellDef } from './table-cell-def.directive';\nexport { ComFooterCellDef } from './table-footer-cell-def.directive';\n\n// Row directives\nexport { ComHeaderRowDef } from './table-header-row-def.directive';\nexport { ComRowDef } from './table-row-def.directive';\nexport { ComFooterRowDef } from './table-footer-row-def.directive';\nexport { ComNoDataRow } from './table-no-data-row.directive';\n\n// Row click\nexport { ComRowClick } from './table-row-click.directive';\nexport { COM_ROW_CLICK } from './table-row-click.types';\nexport type { ComRowClickRef } from './table-row-click.types';\n\n// Types\nexport type { CellDefContext } from './table.types';\n\n// Variants\nexport {\n  tableContainerVariants,\n  tableVariants,\n  tableHeaderVariants,\n  tableHeaderRowVariants,\n  tableRowVariants,\n  tableFooterRowVariants,\n  // Deprecated aliases\n  tableHeaderCellVariants,\n  tableBodyCellVariants,\n  tableFooterCellVariants,\n} from './table.variants';\n\nexport type {\n  TableVariant,\n  TableDensity,\n  HeaderVariant,\n  TableContainerVariants,\n  TableVariants,\n  TableHeaderVariants,\n  TableHeaderRowVariants,\n  TableRowVariants,\n  TableFooterRowVariants,\n  // Deprecated aliases\n  TableHeaderCellVariants,\n  TableBodyCellVariants,\n  TableFooterCellVariants,\n} from './table.variants';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}