{"version":3,"file":"ngx-com-components-sort.mjs","sources":["../../../projects/com/components/sort/sort.variants.ts","../../../projects/com/components/sort/sort.directive.ts","../../../projects/com/components/sort/sort-icon.component.ts","../../../projects/com/components/sort/sort-header.component.ts","../../../projects/com/components/sort/index.ts","../../../projects/com/components/sort/ngx-com-components-sort.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\n\n// ─── Type Exports ───\n\n/** Sort direction — three states */\nexport type SortDirection = 'asc' | 'desc' | undefined;\n\n/** Configures the three-state sort cycle */\nexport type SortCycle = SortDirection[];\n\n/** Emitted when sort state changes */\nexport interface SortEvent {\n  /** The active column id, or undefined if unsorted */\n  active: string | undefined;\n  /** The sort direction */\n  direction: SortDirection;\n}\n\n// ─── Sort Header Variants ───\n\n/**\n * @tokens `--color-foreground`, `--color-muted-foreground`\n */\nexport const sortHeaderVariants: (props?: {\n  sortable?: boolean;\n  active?: boolean;\n  disabled?: boolean;\n}) => string = cva(\n  ['select-none', 'transition-colors duration-normal'],\n  {\n    variants: {\n      sortable: {\n        true: 'cursor-pointer hover:text-foreground',\n        false: 'cursor-default',\n      },\n      active: {\n        true: 'text-foreground',\n        false: 'text-muted-foreground',\n      },\n      disabled: {\n        true: 'text-disabled-foreground cursor-not-allowed pointer-events-none',\n        false: '',\n      },\n    },\n    defaultVariants: {\n      sortable: true,\n      active: false,\n      disabled: false,\n    },\n  }\n);\n\n// ─── Sort Icon Variants ───\n\n/**\n * @tokens `--color-foreground`, `--color-muted-foreground`\n */\nexport const sortIconVariants: (props?: {\n  size?: 'sm' | 'md' | 'lg';\n  state?: 'asc' | 'desc' | 'unsorted' | 'hidden';\n}) => string = cva(\n  ['inline-flex items-center justify-center', 'shrink-0', 'transition-all duration-slow ease-out'],\n  {\n    variants: {\n      size: {\n        sm: 'size-3',\n        md: 'size-3.5',\n        lg: 'size-4',\n      },\n      state: {\n        asc: 'text-foreground rotate-0',\n        desc: 'text-foreground rotate-180',\n        unsorted: 'text-muted-foreground rotate-0',\n        hidden: 'invisible scale-75',\n      },\n    },\n    defaultVariants: {\n      size: 'md',\n      state: 'hidden',\n    },\n  }\n);\n","import { booleanAttribute, Directive, input, model, output } from '@angular/core';\nimport type {\n  InputSignal,\n  InputSignalWithTransform,\n  ModelSignal,\n  OutputEmitterRef,\n} from '@angular/core';\nimport type { SortDirection, SortCycle, SortEvent } from './sort.variants';\nimport type { ComSortHeader } from './sort-header.component';\n\nconst DEFAULT_SORT_CYCLE: SortCycle = ['asc', 'desc', undefined];\n\n/**\n * Parent directive that manages sort state for a group of sortable headers.\n *\n * Apply to a container element (e.g., `<tr>`, `<div>`) that contains `[comSortHeader]` children.\n * Children inject this directive via DI and read its signals directly.\n *\n * @tokens `--color-foreground`, `--color-muted-foreground`\n *\n * @example Basic usage\n * ```html\n * <tr comSort (sortChange)=\"onSort($event)\">\n *   <th comSortHeader=\"name\">Name</th>\n *   <th comSortHeader=\"age\">Age</th>\n * </tr>\n * ```\n *\n * @example Two-way binding\n * ```html\n * <tr comSort [(sortActive)]=\"column\" [(sortDirection)]=\"direction\">\n *   <th comSortHeader=\"name\">Name</th>\n * </tr>\n * ```\n */\n@Directive({\n  selector: '[comSort]',\n  exportAs: 'comSort',\n  host: {},\n})\nexport class ComSort {\n  // ─── Inputs ───\n\n  /** Currently active sort column id — two-way via model() */\n  readonly sortActive: ModelSignal<string | undefined> = model<string | undefined>(undefined);\n\n  /** Current sort direction — two-way via model() */\n  readonly sortDirection: ModelSignal<SortDirection> = model<SortDirection>(undefined);\n\n  /** Disables all sorting in this container */\n  readonly sortDisabled: InputSignalWithTransform<boolean, unknown> = input(false, {\n    transform: booleanAttribute,\n  });\n\n  /** Customize the click cycle (e.g., ['asc', 'desc'] to skip unsorted) */\n  readonly sortCycle: InputSignal<SortCycle> = input<SortCycle>(DEFAULT_SORT_CYCLE);\n\n  /** Show a muted arrow on unsorted headers */\n  readonly sortShowIndicator: InputSignalWithTransform<boolean, unknown> = input(false, {\n    transform: booleanAttribute,\n  });\n\n  // ─── Outputs ───\n\n  /** Emitted when active column or direction changes */\n  readonly sortChange: OutputEmitterRef<SortEvent> = output<SortEvent>();\n\n  // ─── Registration ───\n\n  private readonly headers: Map<string, ComSortHeader> = new Map<string, ComSortHeader>();\n\n  /** Register a sort header with this parent */\n  register(header: ComSortHeader): void {\n    this.headers.set(header.id(), header);\n  }\n\n  /** Deregister a sort header */\n  deregister(id: string): void {\n    this.headers.delete(id);\n  }\n\n  // ─── Public API ───\n\n  /** Programmatically sort by a column */\n  sort(id: string): void {\n    if (this.sortDisabled()) return;\n\n    const cycle = this.sortCycle();\n\n    if (this.sortActive() !== id) {\n      // New column — start at first direction in cycle\n      this.sortActive.set(id);\n      this.sortDirection.set(cycle[0]);\n    } else {\n      // Same column — advance cycle\n      const currentIndex = cycle.indexOf(this.sortDirection());\n      const nextIndex = (currentIndex + 1) % cycle.length;\n      const nextDir = cycle[nextIndex];\n      this.sortDirection.set(nextDir);\n\n      // If direction is undefined, clear active\n      if (nextDir === undefined) {\n        this.sortActive.set(undefined);\n      }\n    }\n\n    this.sortChange.emit({\n      active: this.sortActive(),\n      direction: this.sortDirection(),\n    });\n  }\n\n  /** Returns the next direction in the cycle for a given column */\n  getNextDirection(id: string): SortDirection {\n    const cycle = this.sortCycle();\n\n    if (this.sortActive() !== id) {\n      return cycle[0];\n    }\n\n    const currentIndex = cycle.indexOf(this.sortDirection());\n    const nextIndex = (currentIndex + 1) % cycle.length;\n    return cycle[nextIndex];\n  }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport type { InputSignal, Signal } from '@angular/core';\nimport { sortIconVariants } from './sort.variants';\nimport type { SortDirection } from './sort.variants';\n\n/**\n * Internal animated SVG arrow indicator for sort headers.\n * Not exported — used only inside ComSortHeader.\n *\n * @tokens `--color-foreground`, `--color-muted-foreground`\n */\n@Component({\n  selector: 'com-sort-icon',\n  template: `\n    <span [class]=\"iconClasses()\">\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        viewBox=\"0 0 24 24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        stroke-width=\"2.5\"\n        stroke-linecap=\"round\"\n        stroke-linejoin=\"round\"\n        class=\"size-full\"\n        aria-hidden=\"true\"\n      >\n        <path d=\"M12 19V5\" />\n        <path d=\"M5 12l7-7 7 7\" />\n      </svg>\n    </span>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ComSortIcon {\n  /** Current sort direction */\n  readonly direction: InputSignal<SortDirection> = input<SortDirection>(undefined);\n\n  /** Whether the column is actively sorted */\n  readonly isSorted: InputSignal<boolean> = input(false);\n\n  /** Show a muted indicator when not sorted */\n  readonly showWhenUnsorted: InputSignal<boolean> = input(false);\n\n  /** Compute the icon state for CVA */\n  private readonly iconState: Signal<'asc' | 'desc' | 'unsorted' | 'hidden'> = computed(() => {\n    if (this.isSorted()) {\n      return this.direction() === 'asc' ? 'asc' : 'desc';\n    }\n    if (this.showWhenUnsorted()) {\n      return 'unsorted';\n    }\n    return 'hidden';\n  });\n\n  /** CVA-generated classes for the icon container */\n  readonly iconClasses: Signal<string> = computed(() =>\n    sortIconVariants({\n      size: 'md',\n      state: this.iconState(),\n    })\n  );\n}\n","import {\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  DestroyRef,\n  ElementRef,\n  inject,\n  input,\n} from '@angular/core';\nimport type {\n  InputSignal,\n  InputSignalWithTransform,\n  OnInit,\n  Signal,\n} from '@angular/core';\nimport { ComSort } from './sort.directive';\nimport { ComSortIcon } from './sort-icon.component';\nimport { sortHeaderVariants } from './sort.variants';\nimport type { SortDirection } from './sort.variants';\n\n/**\n * Sortable header component — child of [comSort] directive.\n *\n * Apply to table headers, div columns, or any clickable element that should trigger sorting.\n *\n * @tokens `--color-foreground`, `--color-muted-foreground`, `--color-disabled-foreground`\n *\n * @example Basic usage\n * ```html\n * <tr comSort (sortChange)=\"onSort($event)\">\n *   <th comSortHeader=\"name\">Name</th>\n *   <th comSortHeader=\"age\">Age</th>\n * </tr>\n * ```\n *\n * @example Arrow placement\n * ```html\n * <th comSortHeader=\"name\" comSortHeaderArrowPosition=\"before\">Name</th>\n * ```\n */\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector -- attribute selector used on <th> host elements\n  selector: '[comSortHeader]',\n  template: `\n    <span class=\"inline-flex items-center gap-1.5\">\n      @if (sortHeaderArrowPosition() === 'before') {\n        <com-sort-icon\n          [direction]=\"direction()\"\n          [isSorted]=\"isSorted()\"\n          [showWhenUnsorted]=\"showUnsortedIndicator()\"\n        />\n      }\n\n      <ng-content />\n\n      @if (sortHeaderArrowPosition() === 'after') {\n        <com-sort-icon\n          [direction]=\"direction()\"\n          [isSorted]=\"isSorted()\"\n          [showWhenUnsorted]=\"showUnsortedIndicator()\"\n        />\n      }\n    </span>\n  `,\n  imports: [ComSortIcon],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class]': 'hostClasses()',\n    '[attr.aria-sort]': 'ariaSort()',\n    '[attr.role]': 'hostRole()',\n    '[attr.tabindex]': 'isDisabled() ? -1 : 0',\n    '[attr.aria-disabled]': 'isDisabled() || null',\n    '(click)': 'onClick()',\n    '(keydown.enter)': 'onClick()',\n    '(keydown.space)': '$event.preventDefault(); onClick()',\n  },\n})\nexport class ComSortHeader implements OnInit {\n  private readonly sort: ComSort | null = inject(ComSort, { optional: true });\n  private readonly destroyRef: DestroyRef = inject(DestroyRef);\n  private readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n\n  // ─── Inputs ───\n\n  /** The column id — aliased from the selector */\n  readonly id: InputSignal<string> = input.required<string>({ alias: 'comSortHeader' });\n\n  /** Disable sorting for this specific header */\n  readonly sortHeaderDisabled: InputSignalWithTransform<boolean, unknown> = input(false, {\n    transform: booleanAttribute,\n  });\n\n  /** Override parent's sortShowIndicator for this header */\n  readonly sortHeaderShowIndicator: InputSignal<boolean | undefined> = input<boolean | undefined>(\n    undefined\n  );\n\n  /** Arrow placement relative to content */\n  readonly sortHeaderArrowPosition: InputSignal<'before' | 'after'> = input<'before' | 'after'>(\n    'after',\n    { alias: 'comSortHeaderArrowPosition' }\n  );\n\n  // ─── Computed State (from parent signals) ───\n\n  /** Whether this header is the currently active sort column */\n  readonly isActive: Signal<boolean> = computed(() => this.sort?.sortActive() === this.id());\n\n  /** Current direction if active, undefined otherwise */\n  readonly direction: Signal<SortDirection> = computed(() =>\n    this.isActive() ? this.sort?.sortDirection() : undefined\n  );\n\n  /** Whether this header is sorted (active + has direction) */\n  readonly isSorted: Signal<boolean> = computed(\n    () => this.isActive() && this.sort?.sortDirection() !== undefined\n  );\n\n  /** Whether to show the muted indicator when unsorted */\n  readonly showUnsortedIndicator: Signal<boolean> = computed(\n    () => this.sortHeaderShowIndicator() ?? this.sort?.sortShowIndicator() ?? false\n  );\n\n  /** Whether sorting is disabled for this header */\n  readonly isDisabled: Signal<boolean> = computed(\n    () => this.sortHeaderDisabled() || this.sort?.sortDisabled() || false\n  );\n\n  /** Role — only set on non-<th> elements (th has implicit columnheader role) */\n  readonly hostRole: Signal<'columnheader' | null> = computed(() =>\n    this.elementRef.nativeElement.tagName === 'TH' ? null : 'columnheader'\n  );\n\n  /** aria-sort attribute value */\n  readonly ariaSort: Signal<'ascending' | 'descending' | 'none'> = computed(() => {\n    if (!this.isSorted()) return 'none';\n    return this.direction() === 'asc' ? 'ascending' : 'descending';\n  });\n\n  /** CVA-generated host classes */\n  readonly hostClasses: Signal<string> = computed(() =>\n    sortHeaderVariants({\n      sortable: !this.isDisabled(),\n      active: this.isSorted(),\n      disabled: this.isDisabled(),\n    })\n  );\n\n  constructor() {\n    if (!this.sort) {\n      throw new Error('comSortHeader must be placed inside a [comSort] container.');\n    }\n\n    this.destroyRef.onDestroy(() => {\n      this.sort?.deregister(this.id());\n    });\n  }\n\n  ngOnInit(): void {\n    this.sort!.register(this);\n  }\n\n  // ─── Event Handlers ───\n\n  protected onClick(): void {\n    if (this.isDisabled()) return;\n    this.sort!.sort(this.id());\n  }\n}\n","// Public API for the sort component\n\n// Types & Variants\nexport {\n  sortHeaderVariants,\n  sortIconVariants,\n  type SortDirection,\n  type SortCycle,\n  type SortEvent,\n} from './sort.variants';\n\n// Directives & Components\nexport { ComSort } from './sort.directive';\nexport { ComSortHeader } from './sort-header.component';\n\n// NOT exported: ComSortIcon (internal)\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}