@cute-widgets/base 20.0.3 → 20.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/CHANGELOG.md +31 -4
  2. package/abstract/index.d.ts +13 -4
  3. package/button/index.d.ts +47 -24
  4. package/button-toggle/index.d.ts +8 -4
  5. package/card/index.d.ts +9 -6
  6. package/collapse/index.d.ts +49 -48
  7. package/core/directives/index.d.ts +1 -31
  8. package/core/index.d.ts +41 -28
  9. package/core/interfaces/index.d.ts +1 -1
  10. package/core/layout/index.d.ts +40 -27
  11. package/core/nav/index.d.ts +1 -2
  12. package/dialog/index.d.ts +81 -57
  13. package/expansion/index.d.ts +5 -18
  14. package/fesm2022/cute-widgets-base-abstract.mjs +13 -8
  15. package/fesm2022/cute-widgets-base-abstract.mjs.map +1 -1
  16. package/fesm2022/cute-widgets-base-button-toggle.mjs +36 -29
  17. package/fesm2022/cute-widgets-base-button-toggle.mjs.map +1 -1
  18. package/fesm2022/cute-widgets-base-button.mjs +169 -104
  19. package/fesm2022/cute-widgets-base-button.mjs.map +1 -1
  20. package/fesm2022/cute-widgets-base-card.mjs +46 -29
  21. package/fesm2022/cute-widgets-base-card.mjs.map +1 -1
  22. package/fesm2022/cute-widgets-base-chips.mjs +6 -18
  23. package/fesm2022/cute-widgets-base-chips.mjs.map +1 -1
  24. package/fesm2022/cute-widgets-base-collapse.mjs +114 -126
  25. package/fesm2022/cute-widgets-base-collapse.mjs.map +1 -1
  26. package/fesm2022/cute-widgets-base-core-directives.mjs +4 -72
  27. package/fesm2022/cute-widgets-base-core-directives.mjs.map +1 -1
  28. package/fesm2022/cute-widgets-base-core-interfaces.mjs.map +1 -1
  29. package/fesm2022/cute-widgets-base-core-layout.mjs +76 -40
  30. package/fesm2022/cute-widgets-base-core-layout.mjs.map +1 -1
  31. package/fesm2022/cute-widgets-base-core-nav.mjs +1 -2
  32. package/fesm2022/cute-widgets-base-core-nav.mjs.map +1 -1
  33. package/fesm2022/cute-widgets-base-core-theming.mjs +1 -1
  34. package/fesm2022/cute-widgets-base-core-theming.mjs.map +1 -1
  35. package/fesm2022/cute-widgets-base-core.mjs +77 -41
  36. package/fesm2022/cute-widgets-base-core.mjs.map +1 -1
  37. package/fesm2022/cute-widgets-base-dialog.mjs +152 -117
  38. package/fesm2022/cute-widgets-base-dialog.mjs.map +1 -1
  39. package/fesm2022/cute-widgets-base-expansion.mjs +19 -13
  40. package/fesm2022/cute-widgets-base-expansion.mjs.map +1 -1
  41. package/fesm2022/cute-widgets-base-list.mjs +2 -2
  42. package/fesm2022/cute-widgets-base-list.mjs.map +1 -1
  43. package/fesm2022/cute-widgets-base-menu.mjs +5 -27
  44. package/fesm2022/cute-widgets-base-menu.mjs.map +1 -1
  45. package/fesm2022/cute-widgets-base-navbar.mjs +88 -42
  46. package/fesm2022/cute-widgets-base-navbar.mjs.map +1 -1
  47. package/fesm2022/cute-widgets-base-paginator.mjs +13 -11
  48. package/fesm2022/cute-widgets-base-paginator.mjs.map +1 -1
  49. package/fesm2022/cute-widgets-base-radio.mjs +1 -2
  50. package/fesm2022/cute-widgets-base-radio.mjs.map +1 -1
  51. package/fesm2022/cute-widgets-base-select.mjs +2 -2
  52. package/fesm2022/cute-widgets-base-select.mjs.map +1 -1
  53. package/fesm2022/cute-widgets-base-sidenav.mjs +31 -30
  54. package/fesm2022/cute-widgets-base-sidenav.mjs.map +1 -1
  55. package/fesm2022/cute-widgets-base-snack-bar.mjs +2 -2
  56. package/fesm2022/cute-widgets-base-snack-bar.mjs.map +1 -1
  57. package/fesm2022/cute-widgets-base-sort.mjs +60 -257
  58. package/fesm2022/cute-widgets-base-sort.mjs.map +1 -1
  59. package/fesm2022/cute-widgets-base-table.mjs +6 -3
  60. package/fesm2022/cute-widgets-base-table.mjs.map +1 -1
  61. package/fesm2022/cute-widgets-base-tabs.mjs +86 -61
  62. package/fesm2022/cute-widgets-base-tabs.mjs.map +1 -1
  63. package/fesm2022/cute-widgets-base.mjs +3 -1
  64. package/fesm2022/cute-widgets-base.mjs.map +1 -1
  65. package/navbar/index.d.ts +30 -9
  66. package/package.json +6 -5
  67. package/paginator/index.d.ts +6 -17
  68. package/radio/index.d.ts +0 -1
  69. package/sidenav/index.d.ts +1 -2
  70. package/sort/index.d.ts +22 -135
  71. package/table/index.d.ts +8 -8
  72. package/tabs/index.d.ts +35 -14
@@ -1 +1 @@
1
- {"version":3,"file":"cute-widgets-base-sort.mjs","sources":["../../../../projects/cute-widgets/base/sort/src/sort-errors.ts","../../../../projects/cute-widgets/base/sort/src/sort.ts","../../../../projects/cute-widgets/base/sort/src/sort-animations.ts","../../../../projects/cute-widgets/base/sort/src/sort-header-intl.ts","../../../../projects/cute-widgets/base/sort/src/sort-header.ts","../../../../projects/cute-widgets/base/sort/src/sort-header.html","../../../../projects/cute-widgets/base/sort/src/sort.module.ts","../../../../projects/cute-widgets/base/sort/cute-widgets-base-sort.ts"],"sourcesContent":["\r\n/** @docs-private */\r\nexport function getSortDuplicateSortableIdError(id: string): Error {\r\n return Error(`Cannot have two CuteSortables with the same id (${id}).`);\r\n}\r\n\r\n/** @docs-private */\r\nexport function getSortHeaderNotContainedWithinSortError(): Error {\r\n return Error(`CuteSortHeader must be placed within a parent element with the CuteSort directive.`);\r\n}\r\n\r\n/** @docs-private */\r\nexport function getSortHeaderMissingIdError(): Error {\r\n return Error(`CuteSortHeader must be provided with a unique id.`);\r\n}\r\n\r\n/** @docs-private */\r\nexport function getSortInvalidDirectionError(direction: string): Error {\r\n return Error(`${direction} is not a valid sort direction ('asc' or 'desc').`);\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n Directive,\r\n EventEmitter,\r\n Inject,\r\n InjectionToken,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output,\r\n booleanAttribute, isDevMode, SimpleChanges,\r\n} from '@angular/core';\r\nimport {Observable, ReplaySubject, Subject} from 'rxjs';\r\nimport {SortDirection} from './sort-direction';\r\nimport {\r\n getSortDuplicateSortableIdError,\r\n getSortHeaderMissingIdError,\r\n getSortInvalidDirectionError,\r\n} from './sort-errors';\r\nimport {CuteBaseControl} from \"@cute-widgets/base/abstract\";\r\n\r\n/** Position of the arrow that displays when sorted. */\r\nexport type SortHeaderArrowPosition = 'before' | 'after';\r\n\r\n/** Interface for a directive that holds sorting state consumed by `CuteSortHeader`. */\r\nexport interface CuteSortable {\r\n /** The id of the column being sorted. */\r\n id: string;\r\n\r\n /** Starting a sort direction. */\r\n start: SortDirection;\r\n\r\n /** Whether to disable clearing the sorting state. */\r\n disableClear: boolean;\r\n}\r\n\r\n/** The current sort state. */\r\nexport interface Sort {\r\n /** The id of the column being sorted. */\r\n active: string;\r\n\r\n /** The sort direction. */\r\n direction: SortDirection;\r\n}\r\n\r\n/** Default options for `cute-sort`. */\r\nexport interface CuteSortDefaultOptions {\r\n /** Whether to disable clearing the sorting state. */\r\n disableClear?: boolean;\r\n /** Position of the arrow that displays when sorted. */\r\n arrowPosition?: SortHeaderArrowPosition;\r\n}\r\n\r\n/** Injection token to be used to override the default options for `mat-sort`. */\r\nexport const CUTE_SORT_DEFAULT_OPTIONS = new InjectionToken<CuteSortDefaultOptions>(\r\n 'CUTE_SORT_DEFAULT_OPTIONS',\r\n);\r\n\r\n\r\n/** Container for CuteSortables to manage the sort state and provide default sort parameters. */\r\n@Directive({\r\n selector: '[cuteSort]',\r\n exportAs: 'cuteSort',\r\n host: {\r\n 'class': 'cute-sort',\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteSort implements OnChanges, OnDestroy, OnInit {\r\n private _initializedStream = new ReplaySubject<void>(1);\r\n\r\n /** Collection of all registered sortables that this directive manages. */\r\n sortables = new Map<string, CuteSortable>();\r\n\r\n /** Used to notify any child components listening to state changes. */\r\n readonly _stateChanges = new Subject<void>();\r\n\r\n /** The id of the most recently sorted CuteSortable. */\r\n @Input('cuteSortActive') active: string | undefined;\r\n\r\n /**\r\n * The direction to set when a CuteSortable is initially sorted.\r\n * May be overridden by the CuteSortable's sort start.\r\n */\r\n @Input('cuteSortStart') start: SortDirection = 'asc';\r\n\r\n /** The sort direction of the currently active CuteSortable. */\r\n @Input('cuteSortDirection')\r\n get direction(): SortDirection { return this._direction; }\r\n set direction(direction: SortDirection) {\r\n if (\r\n direction &&\r\n direction !== 'asc' &&\r\n direction !== 'desc' &&\r\n isDevMode()\r\n ) {\r\n throw getSortInvalidDirectionError(direction);\r\n }\r\n this._direction = direction;\r\n }\r\n private _direction: SortDirection = '';\r\n\r\n /**\r\n * Whether to disable the user from clearing the sort by finishing the sort direction cycle.\r\n * May be overridden by the CuteSortable's disable clear input.\r\n */\r\n @Input({alias: 'cuteSortDisableClear', transform: booleanAttribute})\r\n protected disableClear: boolean = false;\r\n\r\n /** Whether the sortable is disabled. */\r\n @Input({alias: 'cuteSortDisabled', transform: booleanAttribute})\r\n disabled: boolean = false;\r\n\r\n /** Event emitted when the user changes either the active sort or sort direction. */\r\n @Output('cuteSortChange') readonly sortChange: EventEmitter<Sort> = new EventEmitter<Sort>();\r\n\r\n /** Emits when the paginator is initialized. */\r\n initialized$: Observable<void> = this._initializedStream;\r\n\r\n constructor(\r\n @Optional()\r\n @Inject(CUTE_SORT_DEFAULT_OPTIONS)\r\n private _defaultOptions?: CuteSortDefaultOptions,\r\n ) {}\r\n\r\n /**\r\n * Register function to be used by the contained CuteSortables. Adds the CuteSortable to the\r\n * collection of CuteSortables.\r\n */\r\n register(sortable: CuteSortable): void {\r\n if (isDevMode()) {\r\n if (!sortable.id) {\r\n throw getSortHeaderMissingIdError();\r\n }\r\n\r\n if (this.sortables.has(sortable.id)) {\r\n throw getSortDuplicateSortableIdError(sortable.id);\r\n }\r\n }\r\n\r\n this.sortables.set(sortable.id, sortable);\r\n }\r\n\r\n /**\r\n * Unregister function to be used by the contained CuteSortables. Removes the CuteSortable from the\r\n * collection of contained CuteSortables.\r\n */\r\n deregister(sortable: CuteSortable): void {\r\n this.sortables.delete(sortable.id);\r\n }\r\n\r\n /** Sets the active sort id and determines the new sort direction. */\r\n sort(sortable: CuteSortable): void {\r\n if (this.active != sortable.id) {\r\n this.active = sortable.id;\r\n this.direction = sortable.start ? sortable.start : this.start;\r\n } else {\r\n this.direction = this.getNextSortDirection(sortable);\r\n }\r\n\r\n this.sortChange.emit({active: this.active, direction: this.direction});\r\n }\r\n\r\n /** Returns the next sort direction of the active sortable, checking for potential overrides. */\r\n getNextSortDirection(sortable: CuteSortable): SortDirection {\r\n if (!sortable) {\r\n return '';\r\n }\r\n\r\n // Get the sort direction cycle with the potential sortable overrides.\r\n const disableClear =\r\n sortable?.disableClear ?? this.disableClear ?? !!this._defaultOptions?.disableClear;\r\n let sortDirectionCycle = getSortDirectionCycle(sortable.start || this.start, disableClear);\r\n\r\n // Get and return the next direction in the cycle\r\n let nextDirectionIndex = sortDirectionCycle.indexOf(this.direction) + 1;\r\n if (nextDirectionIndex >= sortDirectionCycle.length) {\r\n nextDirectionIndex = 0;\r\n }\r\n return sortDirectionCycle[nextDirectionIndex];\r\n }\r\n\r\n ngOnInit() {\r\n this._initializedStream.next();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this._stateChanges.next();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._stateChanges.complete();\r\n this._initializedStream.complete();\r\n }\r\n}\r\n\r\n/** Returns the sort direction cycle to use given the provided parameters of order and clear. */\r\nfunction getSortDirectionCycle(start: SortDirection, disableClear: boolean): SortDirection[] {\r\n let sortOrder: SortDirection[] = ['asc', 'desc'];\r\n if (start == 'desc') {\r\n sortOrder.reverse();\r\n }\r\n if (!disableClear) {\r\n sortOrder.push('');\r\n }\r\n\r\n return sortOrder;\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n animate,\r\n state,\r\n style,\r\n transition,\r\n trigger,\r\n keyframes,\r\n AnimationTriggerMetadata,\r\n query,\r\n animateChild,\r\n} from '@angular/animations';\r\nimport {AnimationCurves, AnimationDurations} from '@cute-widgets/base/core';\r\n\r\nconst SORT_ANIMATION_TRANSITION =\r\n AnimationDurations.ENTERING + ' ' + AnimationCurves.STANDARD_CURVE;\r\n\r\n/**\r\n * Animations used by CuteSort.\r\n * @docs-private\r\n */\r\nexport const cuteSortAnimations: {\r\n readonly indicator: AnimationTriggerMetadata;\r\n readonly leftPointer: AnimationTriggerMetadata;\r\n readonly rightPointer: AnimationTriggerMetadata;\r\n readonly arrowOpacity: AnimationTriggerMetadata;\r\n readonly arrowPosition: AnimationTriggerMetadata;\r\n readonly allowChildren: AnimationTriggerMetadata;\r\n} = {\r\n /** Animation that moves the sort indicator. */\r\n indicator: trigger('indicator', [\r\n state('active-asc, asc', style({transform: 'translateY(0px)'})),\r\n // 10px is the height of the sort indicator, minus the width of the pointers\r\n state('active-desc, desc', style({transform: 'translateY(10px)'})),\r\n transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION)),\r\n ]),\r\n\r\n /** Animation that rotates the left pointer of the indicator based on the sorting direction. */\r\n leftPointer: trigger('leftPointer', [\r\n state('active-asc, asc', style({transform: 'rotate(-45deg)'})),\r\n state('active-desc, desc', style({transform: 'rotate(45deg)'})),\r\n transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION)),\r\n ]),\r\n\r\n /** Animation that rotates the right pointer of the indicator based on the sorting direction. */\r\n rightPointer: trigger('rightPointer', [\r\n state('active-asc, asc', style({transform: 'rotate(45deg)'})),\r\n state('active-desc, desc', style({transform: 'rotate(-45deg)'})),\r\n transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION)),\r\n ]),\r\n\r\n /** Animation that controls the arrow opacity. */\r\n arrowOpacity: trigger('arrowOpacity', [\r\n state('desc-to-active, asc-to-active, active', style({opacity: 1})),\r\n state('desc-to-hint, asc-to-hint, hint', style({opacity: 0.54})),\r\n state(\r\n 'hint-to-desc, active-to-desc, desc, hint-to-asc, active-to-asc, asc, void',\r\n style({opacity: 0}),\r\n ),\r\n // Transition between all states except for immediate transitions\r\n transition('* => asc, * => desc, * => active, * => hint, * => void', animate('0ms')),\r\n transition('* <=> *', animate(SORT_ANIMATION_TRANSITION)),\r\n ]),\r\n\r\n /**\r\n * Animation for the translation of the arrow as a whole. States are separated into two\r\n * groups: ones with animations and others that are immediate. Immediate states are asc, desc,\r\n * peek, and active. The other states define a specific animation (source-to-destination)\r\n * and are determined as a function of their prev user-perceived state and what the next state\r\n * should be.\r\n */\r\n arrowPosition: trigger('arrowPosition', [\r\n // Hidden Above => Hint Center\r\n transition(\r\n '* => desc-to-hint, * => desc-to-active',\r\n animate(\r\n SORT_ANIMATION_TRANSITION,\r\n keyframes([style({transform: 'translateY(-25%)'}), style({transform: 'translateY(0)'})]),\r\n ),\r\n ),\r\n // Hint Center => Hidden Below\r\n transition(\r\n '* => hint-to-desc, * => active-to-desc',\r\n animate(\r\n SORT_ANIMATION_TRANSITION,\r\n keyframes([style({transform: 'translateY(0)'}), style({transform: 'translateY(25%)'})]),\r\n ),\r\n ),\r\n // Hidden Below => Hint Center\r\n transition(\r\n '* => asc-to-hint, * => asc-to-active',\r\n animate(\r\n SORT_ANIMATION_TRANSITION,\r\n keyframes([style({transform: 'translateY(25%)'}), style({transform: 'translateY(0)'})]),\r\n ),\r\n ),\r\n // Hint Center => Hidden Above\r\n transition(\r\n '* => hint-to-asc, * => active-to-asc',\r\n animate(\r\n SORT_ANIMATION_TRANSITION,\r\n keyframes([style({transform: 'translateY(0)'}), style({transform: 'translateY(-25%)'})]),\r\n ),\r\n ),\r\n state(\r\n 'desc-to-hint, asc-to-hint, hint, desc-to-active, asc-to-active, active',\r\n style({transform: 'translateY(0)'}),\r\n ),\r\n state('hint-to-desc, active-to-desc, desc', style({transform: 'translateY(-25%)'})),\r\n state('hint-to-asc, active-to-asc, asc', style({transform: 'translateY(25%)'})),\r\n ]),\r\n\r\n /** Necessary trigger that calls animate on children animations. */\r\n allowChildren: trigger('allowChildren', [\r\n transition('* <=> *', [query('@*', animateChild(), {optional: true})]),\r\n ]),\r\n};\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Injectable, SkipSelf, Optional} from '@angular/core';\r\nimport {Subject} from 'rxjs';\r\n\r\n/**\r\n * To modify the labels and text displayed, create a new instance of CuteSortHeaderIntl and\r\n * include it in a custom provider.\r\n */\r\n@Injectable({providedIn: 'root'})\r\nexport class CuteSortHeaderIntl {\r\n /**\r\n * Stream that emits whenever the labels here are changed. Use this to notify\r\n * components if the labels have changed after initialization.\r\n */\r\n readonly changes: Subject<void> = new Subject<void>();\r\n}\r\n\r\n/** @docs-private */\r\nexport function CUTE_SORT_HEADER_INTL_PROVIDER_FACTORY(parentIntl: CuteSortHeaderIntl) {\r\n return parentIntl || new CuteSortHeaderIntl();\r\n}\r\n\r\n/** @docs-private */\r\nexport const CUTE_SORT_HEADER_INTL_PROVIDER = {\r\n // If there is already an MatSortHeaderIntl available, use that. Otherwise, provide a new one.\r\n provide: CuteSortHeaderIntl,\r\n deps: [[new Optional(), new SkipSelf(), CuteSortHeaderIntl]],\r\n useFactory: CUTE_SORT_HEADER_INTL_PROVIDER_FACTORY,\r\n};\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {AriaDescriber, FocusMonitor} from '@angular/cdk/a11y';\r\nimport {ENTER, SPACE} from '@angular/cdk/keycodes';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n ViewEncapsulation,\r\n booleanAttribute, isDevMode,\r\n} from '@angular/core';\r\nimport {merge, Subscription} from 'rxjs';\r\nimport {\r\n CUTE_SORT_DEFAULT_OPTIONS,\r\n CuteSort,\r\n CuteSortable,\r\n CuteSortDefaultOptions,\r\n SortHeaderArrowPosition,\r\n} from './sort';\r\nimport {cuteSortAnimations} from './sort-animations';\r\nimport {SortDirection} from './sort-direction';\r\nimport {getSortHeaderNotContainedWithinSortError} from './sort-errors';\r\nimport {CuteSortHeaderIntl} from './sort-header-intl';\r\n\r\n/**\r\n * Valid positions for the arrow to be in for its opacity and translation. If the state is a\r\n * sort direction, the position of the arrow will be above/below and opacity 0. If the state is\r\n * _hint_, the arrow will be in the center with a slight opacity. _Active_ state means the arrow will\r\n * be fully opaque in the center.\r\n *\r\n * @docs-private\r\n * @deprecated No longer being used, to be removed.\r\n * @breaking-change 21.0.0\r\n */\r\nexport type ArrowViewState = SortDirection | 'hint' | 'active';\r\n\r\n/**\r\n * States describing the arrow's animated position (animating _fromState_ to _toState_).\r\n * If the _fromState_ is not defined, there will be no animated transition to the _toState_.\r\n * @docs-private\r\n * @deprecated No longer being used, to be removed.\r\n * @breaking-change 21.0.0\r\n */\r\nexport interface ArrowViewStateTransition {\r\n fromState?: ArrowViewState;\r\n toState?: ArrowViewState;\r\n}\r\n\r\n/** Column definition associated with a `CuteSortHeader`. */\r\ninterface CuteSortHeaderColumnDef {\r\n name: string;\r\n}\r\n\r\n/**\r\n * Applies sorting behavior (click to change sort) and styles to an element, including an\r\n * arrow to display the current sort direction.\r\n *\r\n * Must be provided with an id and contained within a parent `CuteSort` directive.\r\n *\r\n * If used on header cells in a CdkTable, it will automatically default its id from its containing\r\n * column definition.\r\n */\r\n@Component({\r\n selector: '[cute-sort-header]',\r\n exportAs: 'cuteSortHeader',\r\n templateUrl: './sort-header.html',\r\n styleUrls: ['./sort-header.scss'],\r\n host: {\r\n 'class': 'cute-sort-header',\r\n '(click)': '_handleClick()',\r\n '(keydown)': '_handleKeydown($event)',\r\n '(mouseenter)': '_setIndicatorHintVisible(true)',\r\n '(mouseleave)': '_setIndicatorHintVisible(false)',\r\n '[attr.aria-sort]': '_getAriaSortAttribute()',\r\n '[class.cute-sort-header-disabled]': '_isDisabled()',\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [\r\n cuteSortAnimations.indicator,\r\n cuteSortAnimations.leftPointer,\r\n cuteSortAnimations.rightPointer,\r\n cuteSortAnimations.arrowOpacity,\r\n cuteSortAnimations.arrowPosition,\r\n cuteSortAnimations.allowChildren,\r\n ],\r\n standalone: true,\r\n})\r\nexport class CuteSortHeader implements CuteSortable, OnDestroy, OnInit, AfterViewInit {\r\n private _rerenderSubscription: Subscription | undefined;\r\n\r\n /**\r\n * The element with role=\"button\" inside this component's view. We need this to apply\r\n * a description with AriaDescriber.\r\n */\r\n private _sortButton: HTMLElement | null = null;\r\n\r\n /**\r\n * Flag set to true when the indicator should be displayed while the sort is not active. Used to\r\n * provide an affordance that the header is sortable by showing on focus and hover.\r\n */\r\n _showIndicatorHint: boolean = false;\r\n\r\n /**\r\n * The view transition state of the arrow (translation/ opacity) - indicates its `from` and `to`\r\n * position through the animation. If animations are currently disabled, the `fromState` is removed\r\n * so that there is no animation displayed.\r\n */\r\n _viewState: ArrowViewStateTransition = {};\r\n\r\n /** The direction the arrow should be facing, according to the current state. */\r\n _arrowDirection: SortDirection = '';\r\n\r\n /**\r\n * Whether the view state animation should show the transition between the `from` and `to` states.\r\n */\r\n _disableViewStateAnimation = false;\r\n\r\n /**\r\n * ID of this sort header. If used within the context of a CdkColumnDef, this will default to\r\n * the column's name.\r\n */\r\n @Input('cute-sort-header') id: string = \"\";\r\n\r\n /** Sets the position of the arrow that displays when sorted. */\r\n @Input() arrowPosition: SortHeaderArrowPosition = 'after';\r\n\r\n /** Overrides the sort start value of the containing CuteSort for this CuteSortable. */\r\n @Input() start: SortDirection = \"\";\r\n\r\n /** whether the sort header is disabled. */\r\n @Input({transform: booleanAttribute})\r\n disabled: boolean = false;\r\n\r\n /**\r\n * Description applied to CuteSortHeader's button element with aria-describedby. This text should\r\n * describe the action that will occur when the user clicks the sort header.\r\n */\r\n @Input()\r\n get sortActionDescription(): string {\r\n return this._sortActionDescription;\r\n }\r\n set sortActionDescription(value: string) {\r\n this._updateSortActionDescription(value);\r\n }\r\n // Default the action description to \"Sort\" because it's better than nothing.\r\n // Without a description, the button's label comes from the sort header text content,\r\n // which doesn't give any indication that it performs a sorting operation.\r\n private _sortActionDescription: string = 'Sort';\r\n\r\n /** Overrides the disable clear value of the containing CuteSort for this CuteSortable. */\r\n @Input({transform: booleanAttribute})\r\n disableClear: boolean = false;\r\n\r\n constructor(\r\n /**\r\n * @deprecated `_intl` parameter isn't being used anymore, and it'll be removed.\r\n * @breaking-change 13.0.0\r\n */\r\n public _intl: CuteSortHeaderIntl,\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n // `CuteSort` is not optionally injected, but just asserted manually w/ better error.\r\n // tslint:disable-next-line: lightweight-tokens\r\n @Optional() public _sort: CuteSort,\r\n @Inject('CUTE_SORT_HEADER_COLUMN_DEF')\r\n @Optional()\r\n public _columnDef: CuteSortHeaderColumnDef,\r\n private _focusMonitor: FocusMonitor,\r\n private _elementRef: ElementRef<HTMLElement>,\r\n /** @breaking-change 14.0.0 _ariaDescriber will be required. */\r\n @Optional() private _ariaDescriber?: AriaDescriber | null,\r\n @Optional()\r\n @Inject(CUTE_SORT_DEFAULT_OPTIONS)\r\n defaultOptions?: CuteSortDefaultOptions,\r\n ) {\r\n // Note that we use a string token for the `_columnDef`, because the value is provided both by\r\n // `material/table` and `cdk/table` and we can't have the CDK depending on Material,\r\n // and we want to avoid having the sort header depending on the CDK table because\r\n // of this single reference.\r\n if (!_sort && isDevMode()) {\r\n throw getSortHeaderNotContainedWithinSortError();\r\n }\r\n\r\n if (defaultOptions?.arrowPosition) {\r\n this.arrowPosition = defaultOptions?.arrowPosition;\r\n }\r\n\r\n this._handleStateChanges();\r\n }\r\n\r\n ngOnInit() {\r\n if (!this.id && this._columnDef) {\r\n this.id = this._columnDef.name;\r\n }\r\n\r\n // Initialize the direction of the arrow and set the view state to be immediately that state.\r\n this._updateArrowDirection();\r\n this._setAnimationTransitionState({\r\n toState: this._isSorted() ? 'active' : this._arrowDirection,\r\n });\r\n\r\n this._sort.register(this);\r\n\r\n this._sortButton = this._elementRef.nativeElement.querySelector('.cute-sort-header-container')!;\r\n this._updateSortActionDescription(this._sortActionDescription);\r\n }\r\n\r\n ngAfterViewInit() {\r\n // We use the focus monitor because we also want to style\r\n // things differently based on the focus origin.\r\n this._focusMonitor.monitor(this._elementRef, true).subscribe(origin => {\r\n const newState = !!origin;\r\n if (newState !== this._showIndicatorHint) {\r\n this._setIndicatorHintVisible(newState);\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this._focusMonitor.stopMonitoring(this._elementRef);\r\n this._sort.deregister(this);\r\n this._rerenderSubscription?.unsubscribe();\r\n }\r\n\r\n /**\r\n * Sets the \"hint\" state such that the arrow will be semi-transparently displayed as a hint to the\r\n * user showing what the active sort will become. If set to false, the arrow will fade away.\r\n */\r\n _setIndicatorHintVisible(visible: boolean) {\r\n // No-op if the sort header is disabled - should not make the hint visible.\r\n if (this._isDisabled() && visible) {\r\n return;\r\n }\r\n\r\n this._showIndicatorHint = visible;\r\n\r\n if (!this._isSorted()) {\r\n this._updateArrowDirection();\r\n if (this._showIndicatorHint) {\r\n this._setAnimationTransitionState({fromState: this._arrowDirection, toState: 'hint'});\r\n } else {\r\n this._setAnimationTransitionState({fromState: 'hint', toState: this._arrowDirection});\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets the animation transition view state for the arrow's position and opacity. If the\r\n * `disableViewStateAnimation` flag is set to true, the `fromState` will be ignored so that\r\n * no animation appears.\r\n */\r\n _setAnimationTransitionState(viewState: ArrowViewStateTransition) {\r\n this._viewState = viewState || {};\r\n\r\n // If the animation for arrow position state (opacity/translation) should be disabled,\r\n // remove the fromState so that it jumps right to the toState.\r\n if (this._disableViewStateAnimation) {\r\n this._viewState = {toState: viewState.toState};\r\n }\r\n }\r\n\r\n /** Triggers the sort on this sort header and removes the indicator hint. */\r\n _toggleOnInteraction() {\r\n this._sort.sort(this);\r\n\r\n // Do not show the animation if the header was already shown in the right position.\r\n if (this._viewState.toState === 'hint' || this._viewState.toState === 'active') {\r\n this._disableViewStateAnimation = true;\r\n }\r\n }\r\n\r\n _handleClick() {\r\n if (!this._isDisabled()) {\r\n this._sort.sort(this);\r\n }\r\n }\r\n\r\n _handleKeydown(event: KeyboardEvent) {\r\n if (!this._isDisabled() && (event.keyCode === SPACE || event.keyCode === ENTER)) {\r\n event.preventDefault();\r\n this._toggleOnInteraction();\r\n }\r\n }\r\n\r\n /** Whether this CuteSortHeader is currently sorted in either ascending or descending order. */\r\n _isSorted() {\r\n return (\r\n this._sort.active == this.id &&\r\n (this._sort.direction === 'asc' || this._sort.direction === 'desc')\r\n );\r\n }\r\n\r\n /** Returns the animation state for the arrow direction (indicator and pointers). */\r\n _getArrowDirectionState() {\r\n return `${this._isSorted() ? 'active-' : ''}${this._arrowDirection}`;\r\n }\r\n\r\n /** Returns the arrow position state (opacity, translation). */\r\n _getArrowViewState() {\r\n const fromState = this._viewState.fromState;\r\n return (fromState ? `${fromState}-to-` : '') + this._viewState.toState;\r\n }\r\n\r\n /**\r\n * Updates the direction the arrow should be pointing. If it is not sorted, the arrow should be\r\n * facing the start direction. Otherwise, if it is sorted, the arrow should point in the currently\r\n * active sorted direction. The reason this is updated through a function is because the direction\r\n * should only be changed at specific times - when deactivated but the hint is displayed and when\r\n * the sort is active and the direction changes. Otherwise, the arrow's direction should linger\r\n * in cases such as the sort becoming deactivated but we want to animate the arrow away while\r\n * preserving its direction, even though the next sort direction is actually different and should\r\n * only be changed once the arrow displays again (hint or activation).\r\n */\r\n _updateArrowDirection() {\r\n this._arrowDirection = this._isSorted() ? this._sort.direction : this.start || this._sort.start;\r\n }\r\n\r\n _isDisabled() {\r\n return this._sort.disabled || this.disabled;\r\n }\r\n\r\n /**\r\n * Gets the aria-sort attribute that should be applied to this sort header. If this header\r\n * is not sorted, returns null so that the attribute is removed from the host element. Aria spec\r\n * says that the aria-sort property should only be present on one header at a time, so removing\r\n * ensures this is true.\r\n */\r\n _getAriaSortAttribute() {\r\n if (!this._isSorted()) {\r\n return 'none';\r\n }\r\n\r\n return this._sort.direction == 'asc' ? 'ascending' : 'descending';\r\n }\r\n\r\n /** Whether the arrow inside the sort header should be rendered. */\r\n _renderArrow() {\r\n return !this._isDisabled() || this._isSorted();\r\n }\r\n\r\n private _updateSortActionDescription(newDescription: string) {\r\n // We use AriaDescriber for the sort button instead of setting an `aria-label` because some\r\n // screen readers (notably VoiceOver) will read both the column header *and* the button's label\r\n // for every *cell* in the table, creating a lot of unnecessary noise.\r\n\r\n // If _sortButton is undefined, the component hasn't been initialized yet so there's\r\n // nothing to update in the DOM.\r\n if (this._sortButton) {\r\n // removeDescription will no-op if there is no existing message.\r\n // TODO(jelbourn): remove optional chaining when AriaDescriber is required.\r\n this._ariaDescriber?.removeDescription(this._sortButton, this._sortActionDescription);\r\n this._ariaDescriber?.describe(this._sortButton, newDescription);\r\n }\r\n\r\n this._sortActionDescription = newDescription;\r\n }\r\n\r\n /** Handles changes in the sorting state. */\r\n private _handleStateChanges() {\r\n this._rerenderSubscription = merge(\r\n this._sort.sortChange,\r\n this._sort._stateChanges,\r\n this._intl.changes,\r\n ).subscribe(() => {\r\n if (this._isSorted()) {\r\n this._updateArrowDirection();\r\n\r\n // Do not show the animation if the header was already shown in the right position.\r\n if (this._viewState.toState === 'hint' || this._viewState.toState === 'active') {\r\n this._disableViewStateAnimation = true;\r\n }\r\n\r\n this._setAnimationTransitionState({fromState: this._arrowDirection, toState: 'active'});\r\n this._showIndicatorHint = false;\r\n }\r\n\r\n // If this header was recently active and now no longer sorted, animate away the arrow.\r\n if (!this._isSorted() && this._viewState && this._viewState.toState === 'active') {\r\n this._disableViewStateAnimation = false;\r\n this._setAnimationTransitionState({fromState: 'active', toState: this._arrowDirection});\r\n }\r\n\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n}\r\n","<!--\r\n We set the `tabindex` on an element inside the table header, rather than the header itself,\r\n because of a bug in NVDA where having a `tabindex` on a `th` breaks keyboard navigation in the\r\n table (see https://github.com/nvaccess/nvda/issues/7718). This allows for the header to both\r\n be focusable, and have screen readers read out its `aria-sort` state. We prefer this approach\r\n over having a button with an `aria-label` inside the header, because the button's `aria-label`\r\n will be read out as the user is navigating the table's cell (see #13012).\r\n\r\n The approach is based off of: https://dequeuniversity.com/library/aria/tables/sf-sortable-grid\r\n-->\r\n<div class=\"cute-sort-header-container cute-focus-indicator\"\r\n [class.cute-sort-header-sorted]=\"_isSorted()\"\r\n [class.cute-sort-header-position-before]=\"arrowPosition === 'before'\"\r\n [attr.tabindex]=\"_isDisabled() ? null : 0\"\r\n [attr.role]=\"_isDisabled() ? null : 'button'\">\r\n\r\n <!--\r\n TODO(crisbeto): this div isn't strictly necessary, but we have to keep it due to a large\r\n number of screenshot diff failures. It should be removed eventually. Note that the difference\r\n isn't visible with a shorter header, but once it breaks up into multiple lines, this element\r\n causes it to be center-aligned, whereas removing it will keep the text to the left.\r\n -->\r\n <div class=\"cute-sort-header-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <!-- Disable animations while a current animation is running -->\r\n @if (_renderArrow()) {\r\n <div class=\"cute-sort-header-arrow\"\r\n [@arrowOpacity]=\"_getArrowViewState()\"\r\n [@arrowPosition]=\"_getArrowViewState()\"\r\n [@allowChildren]=\"_getArrowDirectionState()\"\r\n (@arrowPosition.start)=\"_disableViewStateAnimation = true\"\r\n (@arrowPosition.done)=\"_disableViewStateAnimation = false\">\r\n <div class=\"cute-sort-header-stem\"></div>\r\n <div class=\"cute-sort-header-indicator\" [@indicator]=\"_getArrowDirectionState()\">\r\n <div class=\"cute-sort-header-pointer-left\" [@leftPointer]=\"_getArrowDirectionState()\"></div>\r\n <div class=\"cute-sort-header-pointer-right\" [@rightPointer]=\"_getArrowDirectionState()\"></div>\r\n <div class=\"cute-sort-header-pointer-middle\"></div>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {NgModule, Type} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {CuteSort} from \"./sort\";\r\nimport {CuteSortHeader} from \"./sort-header\";\r\nimport {CUTE_SORT_HEADER_INTL_PROVIDER} from \"./sort-header-intl\";\r\n\r\nconst TYPES: (any | Type<any>)[] = [CuteSort, CuteSortHeader];\r\n\r\n@NgModule({\r\n imports: [CommonModule, ...TYPES],\r\n exports: TYPES,\r\n providers: [CUTE_SORT_HEADER_INTL_PROVIDER],\r\n declarations: [],\r\n})\r\nexport class CuteSortModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.CuteSortHeaderIntl","i2.CuteSort"],"mappings":";;;;;;;;;AACA;AACM,SAAU,+BAA+B,CAAC,EAAU,EAAA;AACxD,IAAA,OAAO,KAAK,CAAC,CAAA,gDAAA,EAAmD,EAAE,CAAA,EAAA,CAAI,CAAC;AACzE;AAEA;SACgB,wCAAwC,GAAA;AACtD,IAAA,OAAO,KAAK,CAAC,CAAA,kFAAA,CAAoF,CAAC;AACpG;AAEA;SACgB,2BAA2B,GAAA;AACzC,IAAA,OAAO,KAAK,CAAC,CAAA,iDAAA,CAAmD,CAAC;AACnE;AAEA;AACM,SAAU,4BAA4B,CAAC,SAAiB,EAAA;AAC5D,IAAA,OAAO,KAAK,CAAC,CAAA,EAAG,SAAS,CAAA,iDAAA,CAAmD,CAAC;AAC/E;;ACnBA;;;;;;;;;;AAUG;AAuDH;MACa,yBAAyB,GAAG,IAAI,cAAc,CACzD,2BAA2B;AAI7B;MASa,QAAQ,CAAA;;IAmBnB,IACI,SAAS,KAAoB,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC;IACzD,IAAI,SAAS,CAAC,SAAwB,EAAA;AACpC,QAAA,IACE,SAAS;AACT,YAAA,SAAS,KAAK,KAAK;AACnB,YAAA,SAAS,KAAK,MAAM;YACpB,SAAS,EAAE,EACX;AACA,YAAA,MAAM,4BAA4B,CAAC,SAAS,CAAC;QAC/C;AACA,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;IAC7B;AAoBA,IAAA,WAAA,CAGU,eAAwC,EAAA;QAAxC,IAAA,CAAA,eAAe,GAAf,eAAe;AArDjB,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,aAAa,CAAO,CAAC,CAAC;;AAGvD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,GAAG,EAAwB;;AAGlC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ;AAK5C;;;AAGG;QACqB,IAAA,CAAA,KAAK,GAAkB,KAAK;QAgB5C,IAAA,CAAA,UAAU,GAAkB,EAAE;AAEtC;;;AAGG;QAEO,IAAA,CAAA,YAAY,GAAY,KAAK;;QAIvC,IAAA,CAAA,QAAQ,GAAY,KAAK;;AAGU,QAAA,IAAA,CAAA,UAAU,GAAuB,IAAI,YAAY,EAAQ;;AAG5F,QAAA,IAAA,CAAA,YAAY,GAAqB,IAAI,CAAC,kBAAkB;IAMrD;AAEH;;;AAGG;AACH,IAAA,QAAQ,CAAC,QAAsB,EAAA;QAC7B,IAAI,SAAS,EAAE,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;gBAChB,MAAM,2BAA2B,EAAE;YACrC;YAEA,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACnC,gBAAA,MAAM,+BAA+B,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpD;QACF;QAEA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IAC3C;AAEA;;;AAGG;AACH,IAAA,UAAU,CAAC,QAAsB,EAAA;QAC/B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpC;;AAGA,IAAA,IAAI,CAAC,QAAsB,EAAA;QACzB,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,EAAE,EAAE;AAC9B,YAAA,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;QAC/D;aAAO;YACL,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QACtD;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAC,CAAC;IACxE;;AAGA,IAAA,oBAAoB,CAAC,QAAsB,EAAA;QACzC,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,EAAE;QACX;;AAGA,QAAA,MAAM,YAAY,GAChB,QAAQ,EAAE,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,YAAY;AACrF,QAAA,IAAI,kBAAkB,GAAG,qBAAqB,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC;;AAG1F,QAAA,IAAI,kBAAkB,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AACvE,QAAA,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,EAAE;YACnD,kBAAkB,GAAG,CAAC;QACxB;AACA,QAAA,OAAO,kBAAkB,CAAC,kBAAkB,CAAC;IAC/C;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE;IAChC;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;IAC3B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;AAC7B,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE;IACpC;AA7HW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAQ,kBAqDT,yBAAyB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGArDxB,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,KAAA,EAAA,CAAA,eAAA,EAAA,OAAA,CAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,YAAA,EAAA,CAAA,sBAAA,EAAA,cAAA,EAsC+B,gBAAgB,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,EAAA,UAAA,EAIpB,gBAAgB,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FA1CnD,QAAQ,EAAA,UAAA,EAAA,CAAA;kBARpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,WAAW;AACrB,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;0BAqDI;;0BACA,MAAM;2BAAC,yBAAyB;;sBA3ClC,KAAK;uBAAC,gBAAgB;;sBAMtB,KAAK;uBAAC,eAAe;;sBAGrB,KAAK;uBAAC,mBAAmB;;sBAmBzB,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAC,KAAK,EAAE,sBAAsB,EAAE,SAAS,EAAE,gBAAgB,EAAC;;sBAIlE,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAC,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,gBAAgB,EAAC;;sBAI9D,MAAM;uBAAC,gBAAgB;;AAkF1B;AACA,SAAS,qBAAqB,CAAC,KAAoB,EAAE,YAAqB,EAAA;AACxE,IAAA,IAAI,SAAS,GAAoB,CAAC,KAAK,EAAE,MAAM,CAAC;AAChD,IAAA,IAAI,KAAK,IAAI,MAAM,EAAE;QACnB,SAAS,CAAC,OAAO,EAAE;IACrB;IACA,IAAI,CAAC,YAAY,EAAE;AACjB,QAAA,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;IACpB;AAEA,IAAA,OAAO,SAAS;AAClB;;AC3NA;;;;;;;;;;AAUG;AAcH,MAAM,yBAAyB,GAC7B,kBAAkB,CAAC,QAAQ,GAAG,GAAG,GAAG,eAAe,CAAC,cAAc;AAEpE;;;AAGG;AACI,MAAM,kBAAkB,GAO3B;;AAEF,IAAA,SAAS,EAAE,OAAO,CAAC,WAAW,EAAE;QAC9B,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,iBAAiB,EAAC,CAAC,CAAC;;QAE/D,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,kBAAkB,EAAC,CAAC,CAAC;AAClE,QAAA,UAAU,CAAC,4BAA4B,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC;KAC7E,CAAC;;AAGF,IAAA,WAAW,EAAE,OAAO,CAAC,aAAa,EAAE;QAClC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,gBAAgB,EAAC,CAAC,CAAC;QAC9D,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,eAAe,EAAC,CAAC,CAAC;AAC/D,QAAA,UAAU,CAAC,4BAA4B,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC;KAC7E,CAAC;;AAGF,IAAA,YAAY,EAAE,OAAO,CAAC,cAAc,EAAE;QACpC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,eAAe,EAAC,CAAC,CAAC;QAC7D,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,gBAAgB,EAAC,CAAC,CAAC;AAChE,QAAA,UAAU,CAAC,4BAA4B,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC;KAC7E,CAAC;;AAGF,IAAA,YAAY,EAAE,OAAO,CAAC,cAAc,EAAE;QACpC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC;QACnE,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;QAChE,KAAK,CACH,2EAA2E,EAC3E,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAC,CAAC,CACpB;;AAED,QAAA,UAAU,CAAC,wDAAwD,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACpF,QAAA,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC;KAC1D,CAAC;AAEF;;;;;;AAMG;AACH,IAAA,aAAa,EAAE,OAAO,CAAC,eAAe,EAAE;;AAEtC,QAAA,UAAU,CACR,wCAAwC,EACxC,OAAO,CACL,yBAAyB,EACzB,SAAS,CAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAE,kBAAkB,EAAC,CAAC,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,eAAe,EAAC,CAAC,CAAC,CAAC,CACzF,CACF;;AAED,QAAA,UAAU,CACR,wCAAwC,EACxC,OAAO,CACL,yBAAyB,EACzB,SAAS,CAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAE,eAAe,EAAC,CAAC,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,iBAAiB,EAAC,CAAC,CAAC,CAAC,CACxF,CACF;;AAED,QAAA,UAAU,CACR,sCAAsC,EACtC,OAAO,CACL,yBAAyB,EACzB,SAAS,CAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAE,iBAAiB,EAAC,CAAC,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,eAAe,EAAC,CAAC,CAAC,CAAC,CACxF,CACF;;AAED,QAAA,UAAU,CACR,sCAAsC,EACtC,OAAO,CACL,yBAAyB,EACzB,SAAS,CAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAE,eAAe,EAAC,CAAC,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,kBAAkB,EAAC,CAAC,CAAC,CAAC,CACzF,CACF;QACD,KAAK,CACH,wEAAwE,EACxE,KAAK,CAAC,EAAC,SAAS,EAAE,eAAe,EAAC,CAAC,CACpC;QACD,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,kBAAkB,EAAC,CAAC,CAAC;QACnF,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,iBAAiB,EAAC,CAAC,CAAC;KAChF,CAAC;;AAGF,IAAA,aAAa,EAAE,OAAO,CAAC,eAAe,EAAE;AACtC,QAAA,UAAU,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;KACvE,CAAC;;;AC7HJ;;;;;;;;;;AAUG;AAIH;;;AAGG;MAEU,kBAAkB,CAAA;AAD/B,IAAA,WAAA,GAAA;AAEE;;;AAGG;AACM,QAAA,IAAA,CAAA,OAAO,GAAkB,IAAI,OAAO,EAAQ;AACtD,IAAA;+GANY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cADN,MAAM,EAAA,CAAA,CAAA;;4FAClB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;AAShC;AACM,SAAU,sCAAsC,CAAC,UAA8B,EAAA;AACnF,IAAA,OAAO,UAAU,IAAI,IAAI,kBAAkB,EAAE;AAC/C;AAEA;AACO,MAAM,8BAA8B,GAAG;;AAE5C,IAAA,OAAO,EAAE,kBAAkB;AAC3B,IAAA,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,kBAAkB,CAAC,CAAC;AAC5D,IAAA,UAAU,EAAE,sCAAsC;;;ACgCpD;;;;;;;;AAQG;MA2BU,cAAc,CAAA;AA8CzB;;;AAGG;AACH,IAAA,IACI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,sBAAsB;IACpC;IACA,IAAI,qBAAqB,CAAC,KAAa,EAAA;AACrC,QAAA,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC;IAC1C;AAUA,IAAA,WAAA;AACE;;;AAGG;AACI,IAAA,KAAyB,EACxB,kBAAqC;;;AAG1B,IAAA,KAAe,EAG3B,UAAmC,EAClC,aAA2B,EAC3B,WAAoC;;AAExB,IAAA,cAAqC,EAGvD,cAAuC,EAAA;QAdlC,IAAA,CAAA,KAAK,GAAL,KAAK;QACJ,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAGP,IAAA,CAAA,KAAK,GAAL,KAAK;QAGjB,IAAA,CAAA,UAAU,GAAV,UAAU;QACT,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,WAAW,GAAX,WAAW;QAEC,IAAA,CAAA,cAAc,GAAd,cAAc;AA/EpC;;;AAGG;QACK,IAAA,CAAA,WAAW,GAAuB,IAAI;AAE9C;;;AAGG;QACH,IAAA,CAAA,kBAAkB,GAAY,KAAK;AAEnC;;;;AAIG;QACH,IAAA,CAAA,UAAU,GAA6B,EAAE;;QAGzC,IAAA,CAAA,eAAe,GAAkB,EAAE;AAEnC;;AAEG;QACH,IAAA,CAAA,0BAA0B,GAAG,KAAK;AAElC;;;AAGG;QACwB,IAAA,CAAA,EAAE,GAAW,EAAE;;QAGjC,IAAA,CAAA,aAAa,GAA4B,OAAO;;QAGhD,IAAA,CAAA,KAAK,GAAkB,EAAE;;QAIlC,IAAA,CAAA,QAAQ,GAAY,KAAK;;;;QAgBjB,IAAA,CAAA,sBAAsB,GAAW,MAAM;;QAI/C,IAAA,CAAA,YAAY,GAAY,KAAK;;;;;AA2B3B,QAAA,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,EAAE;YACzB,MAAM,wCAAwC,EAAE;QAClD;AAEA,QAAA,IAAI,cAAc,EAAE,aAAa,EAAE;AACjC,YAAA,IAAI,CAAC,aAAa,GAAG,cAAc,EAAE,aAAa;QACpD;QAEA,IAAI,CAAC,mBAAmB,EAAE;IAC5B;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;YAC/B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI;QAChC;;QAGA,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,4BAA4B,CAAC;AAChC,YAAA,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC,eAAe;AAC5D,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AAEzB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,6BAA6B,CAAE;AAC/F,QAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,sBAAsB,CAAC;IAChE;IAEA,eAAe,GAAA;;;AAGb,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,IAAG;AACpE,YAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM;AACzB,YAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,kBAAkB,EAAE;AACxC,gBAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC;AACvC,gBAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;YACxC;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;AACnD,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,qBAAqB,EAAE,WAAW,EAAE;IAC3C;AAEA;;;AAGG;AACH,IAAA,wBAAwB,CAAC,OAAgB,EAAA;;AAEvC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,OAAO,EAAE;YACjC;QACF;AAEA,QAAA,IAAI,CAAC,kBAAkB,GAAG,OAAO;AAEjC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,gBAAA,IAAI,CAAC,4BAA4B,CAAC,EAAC,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,MAAM,EAAC,CAAC;YACvF;iBAAO;AACL,gBAAA,IAAI,CAAC,4BAA4B,CAAC,EAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,EAAC,CAAC;YACvF;QACF;IACF;AAEA;;;;AAIG;AACH,IAAA,4BAA4B,CAAC,SAAmC,EAAA;AAC9D,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,IAAI,EAAE;;;AAIjC,QAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE;YACnC,IAAI,CAAC,UAAU,GAAG,EAAC,OAAO,EAAE,SAAS,CAAC,OAAO,EAAC;QAChD;IACF;;IAGA,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGrB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,QAAQ,EAAE;AAC9E,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI;QACxC;IACF;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACvB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB;IACF;AAEA,IAAA,cAAc,CAAC,KAAoB,EAAA;QACjC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,EAAE;YAC/E,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,oBAAoB,EAAE;QAC7B;IACF;;IAGA,SAAS,GAAA;QACP,QACE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE;AAC5B,aAAC,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC;IAEvE;;IAGA,uBAAuB,GAAA;AACrB,QAAA,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,SAAS,GAAG,EAAE,CAAA,EAAG,IAAI,CAAC,eAAe,EAAE;IACtE;;IAGA,kBAAkB,GAAA;AAChB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS;AAC3C,QAAA,OAAO,CAAC,SAAS,GAAG,CAAA,EAAG,SAAS,CAAA,IAAA,CAAM,GAAG,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO;IACxE;AAEA;;;;;;;;;AASG;IACH,qBAAqB,GAAA;QACnB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK;IACjG;IAEA,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;IAC7C;AAEA;;;;;AAKG;IACH,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACrB,YAAA,OAAO,MAAM;QACf;AAEA,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,GAAG,WAAW,GAAG,YAAY;IACnE;;IAGA,YAAY,GAAA;QACV,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;IAChD;AAEQ,IAAA,4BAA4B,CAAC,cAAsB,EAAA;;;;;;AAOzD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;;;AAGpB,YAAA,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,sBAAsB,CAAC;YACrF,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC;QACjE;AAEA,QAAA,IAAI,CAAC,sBAAsB,GAAG,cAAc;IAC9C;;IAGQ,mBAAmB,GAAA;QACzB,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAChC,IAAI,CAAC,KAAK,CAAC,UAAU,EACrB,IAAI,CAAC,KAAK,CAAC,aAAa,EACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CACnB,CAAC,SAAS,CAAC,MAAK;AACf,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;gBACpB,IAAI,CAAC,qBAAqB,EAAE;;AAG5B,gBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,QAAQ,EAAE;AAC9E,oBAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI;gBACxC;AAEA,gBAAA,IAAI,CAAC,4BAA4B,CAAC,EAAC,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAC,CAAC;AACvF,gBAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;YACjC;;AAGA,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,QAAQ,EAAE;AAChF,gBAAA,IAAI,CAAC,0BAA0B,GAAG,KAAK;AACvC,gBAAA,IAAI,CAAC,4BAA4B,CAAC,EAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,EAAC,CAAC;YACzF;AAEA,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AACxC,QAAA,CAAC,CAAC;IACJ;+GAzSW,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EA4Ef,6BAA6B,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAQ7B,yBAAyB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AApFxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,mLA2CN,gBAAgB,CAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAoBhB,gBAAgB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,YAAA,EAAA,gCAAA,EAAA,YAAA,EAAA,iCAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvKrC,84EA2CA,EAAA,MAAA,EAAA,CAAA,01DAAA,CAAA,EAAA,UAAA,EDmDc;AACV,YAAA,kBAAkB,CAAC,SAAS;AAC5B,YAAA,kBAAkB,CAAC,WAAW;AAC9B,YAAA,kBAAkB,CAAC,YAAY;AAC/B,YAAA,kBAAkB,CAAC,YAAY;AAC/B,YAAA,kBAAkB,CAAC,aAAa;AAChC,YAAA,kBAAkB,CAAC,aAAa;AACjC,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGU,cAAc,EAAA,UAAA,EAAA,CAAA;kBA1B1B,SAAS;+BACE,oBAAoB,EAAA,QAAA,EACpB,gBAAgB,EAAA,IAAA,EAGpB;AACJ,wBAAA,OAAO,EAAE,kBAAkB;AAC3B,wBAAA,SAAS,EAAE,gBAAgB;AAC3B,wBAAA,WAAW,EAAE,wBAAwB;AACrC,wBAAA,cAAc,EAAE,gCAAgC;AAChD,wBAAA,cAAc,EAAE,iCAAiC;AACjD,wBAAA,kBAAkB,EAAE,yBAAyB;AAC7C,wBAAA,mCAAmC,EAAE,eAAe;AACrD,qBAAA,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC;AACV,wBAAA,kBAAkB,CAAC,SAAS;AAC5B,wBAAA,kBAAkB,CAAC,WAAW;AAC9B,wBAAA,kBAAkB,CAAC,YAAY;AAC/B,wBAAA,kBAAkB,CAAC,YAAY;AAC/B,wBAAA,kBAAkB,CAAC,aAAa;AAChC,wBAAA,kBAAkB,CAAC,aAAa;AACjC,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,84EAAA,EAAA,MAAA,EAAA,CAAA,01DAAA,CAAA,EAAA;;0BA6Eb;;0BACA,MAAM;2BAAC,6BAA6B;;0BACpC;;0BAKA;;0BACA;;0BACA,MAAM;2BAAC,yBAAyB;;sBAlDlC,KAAK;uBAAC,kBAAkB;;sBAGxB;;sBAGA;;sBAGA,KAAK;uBAAC,EAAC,SAAS,EAAE,gBAAgB,EAAC;;sBAOnC;;sBAaA,KAAK;uBAAC,EAAC,SAAS,EAAE,gBAAgB,EAAC;;;AEvKtC;;;;;;;;;;AAUG;AAOH,MAAM,KAAK,GAAwB,CAAC,QAAQ,EAAE,cAAc,CAAC;MAQhD,cAAc,CAAA;+GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAd,cAAc,EAAA,OAAA,EAAA,CALf,YAAY,EAHY,QAAQ,EAAE,cAAc,CAAA,EAAA,OAAA,EAAA,CAAxB,QAAQ,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA;AAQ/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAAA,SAAA,EAHd,CAAC,8BAA8B,CAAC,YAFjC,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAKX,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC;AACjC,oBAAA,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,CAAC,8BAA8B,CAAC;AAC3C,oBAAA,YAAY,EAAE,EAAE;AACjB,iBAAA;;;ACxBD;;AAEG;;;;"}
1
+ {"version":3,"file":"cute-widgets-base-sort.mjs","sources":["../../../../projects/cute-widgets/base/sort/src/sort-errors.ts","../../../../projects/cute-widgets/base/sort/src/sort.ts","../../../../projects/cute-widgets/base/sort/src/sort-header-intl.ts","../../../../projects/cute-widgets/base/sort/src/sort-header.ts","../../../../projects/cute-widgets/base/sort/src/sort-header.html","../../../../projects/cute-widgets/base/sort/src/sort.module.ts","../../../../projects/cute-widgets/base/sort/cute-widgets-base-sort.ts"],"sourcesContent":["\r\n/** @docs-private */\r\nexport function getSortDuplicateSortableIdError(id: string): Error {\r\n return Error(`Cannot have two CuteSortables with the same id (${id}).`);\r\n}\r\n\r\n/** @docs-private */\r\nexport function getSortHeaderNotContainedWithinSortError(): Error {\r\n return Error(`CuteSortHeader must be placed within a parent element with the CuteSort directive.`);\r\n}\r\n\r\n/** @docs-private */\r\nexport function getSortHeaderMissingIdError(): Error {\r\n return Error(`CuteSortHeader must be provided with a unique id.`);\r\n}\r\n\r\n/** @docs-private */\r\nexport function getSortInvalidDirectionError(direction: string): Error {\r\n return Error(`${direction} is not a valid sort direction ('asc' or 'desc').`);\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n Directive,\r\n EventEmitter,\r\n Inject,\r\n InjectionToken,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output,\r\n booleanAttribute, isDevMode, SimpleChanges,\r\n} from '@angular/core';\r\nimport {Observable, ReplaySubject, Subject} from 'rxjs';\r\nimport {SortDirection} from './sort-direction';\r\nimport {\r\n getSortDuplicateSortableIdError,\r\n getSortHeaderMissingIdError,\r\n getSortInvalidDirectionError,\r\n} from './sort-errors';\r\n\r\n/** Position of the arrow that displays when sorted. */\r\nexport type SortHeaderArrowPosition = 'before' | 'after';\r\n\r\n/** Interface for a directive that holds sorting state consumed by `CuteSortHeader`. */\r\nexport interface CuteSortable {\r\n /** The id of the column being sorted. */\r\n id: string;\r\n\r\n /** Starting a sort direction. */\r\n start: SortDirection;\r\n\r\n /** Whether to disable clearing the sorting state. */\r\n disableClear: boolean;\r\n}\r\n\r\n/** The current sort state. */\r\nexport interface Sort {\r\n /** The id of the column being sorted. */\r\n active: string;\r\n\r\n /** The sort direction. */\r\n direction: SortDirection;\r\n}\r\n\r\n/** Default options for `cute-sort`. */\r\nexport interface CuteSortDefaultOptions {\r\n /** Whether to disable clearing the sorting state. */\r\n disableClear?: boolean;\r\n /** Position of the arrow that displays when sorted. */\r\n arrowPosition?: SortHeaderArrowPosition;\r\n}\r\n\r\n/** Injection token to be used to override the default options for `cute-sort`. */\r\nexport const CUTE_SORT_DEFAULT_OPTIONS = new InjectionToken<CuteSortDefaultOptions>(\r\n 'CUTE_SORT_DEFAULT_OPTIONS',\r\n);\r\n\r\n// CWT: Changes to Sort interface implementation\r\n/** Container for `CuteSortable`s to manage the sort state and provide default sort parameters. */\r\n@Directive({\r\n selector: '[cuteSort]',\r\n exportAs: 'cuteSort',\r\n host: {\r\n 'class': 'cute-sort',\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteSort implements OnChanges, OnDestroy, OnInit, Sort {\r\n private _initializedStream = new ReplaySubject<void>(1);\r\n\r\n /** Collection of all registered sortables that this directive manages. */\r\n sortables = new Map<string, CuteSortable>();\r\n\r\n /** Used to notify any child components listening to state changes. */\r\n readonly _stateChanges = new Subject<void>();\r\n\r\n /** The id of the most recently sorted CuteSortable. */\r\n @Input('cuteSortActive') active: string = \"\";\r\n\r\n /**\r\n * The direction to set when a CuteSortable is initially sorted.\r\n * May be overridden by the CuteSortable's sort start.\r\n */\r\n @Input('cuteSortStart') start: SortDirection = 'asc';\r\n\r\n /** The sort direction of the currently active CuteSortable. */\r\n @Input('cuteSortDirection')\r\n get direction(): SortDirection { return this._direction; }\r\n set direction(direction: SortDirection) {\r\n if (\r\n direction &&\r\n direction !== 'asc' &&\r\n direction !== 'desc' &&\r\n isDevMode()\r\n ) {\r\n throw getSortInvalidDirectionError(direction);\r\n }\r\n this._direction = direction;\r\n }\r\n private _direction: SortDirection = '';\r\n\r\n /**\r\n * Whether to disable the user from clearing the sort by finishing the sort direction cycle.\r\n * May be overridden by the CuteSortable's disable clear input.\r\n */\r\n @Input({alias: 'cuteSortDisableClear', transform: booleanAttribute})\r\n protected disableClear: boolean = false;\r\n\r\n /** Whether the sortable is disabled. */\r\n @Input({alias: 'cuteSortDisabled', transform: booleanAttribute})\r\n disabled: boolean = false;\r\n\r\n /** Event emitted when the user changes either the active sort or sort direction. */\r\n @Output('cuteSortChange') readonly sortChange: EventEmitter<Sort> = new EventEmitter<Sort>();\r\n\r\n /** Emits when the paginator is initialized. */\r\n initialized$: Observable<void> = this._initializedStream;\r\n\r\n constructor(\r\n @Optional()\r\n @Inject(CUTE_SORT_DEFAULT_OPTIONS)\r\n private _defaultOptions?: CuteSortDefaultOptions,\r\n ) {}\r\n\r\n /**\r\n * Register function to be used by the contained CuteSortables. Adds the CuteSortable to the\r\n * collection of CuteSortables.\r\n */\r\n register(sortable: CuteSortable): void {\r\n if (isDevMode()) {\r\n if (!sortable.id) {\r\n throw getSortHeaderMissingIdError();\r\n }\r\n\r\n if (this.sortables.has(sortable.id)) {\r\n throw getSortDuplicateSortableIdError(sortable.id);\r\n }\r\n }\r\n\r\n this.sortables.set(sortable.id, sortable);\r\n }\r\n\r\n /**\r\n * Unregister function to be used by the contained CuteSortables. Removes the CuteSortable from the\r\n * collection of contained CuteSortables.\r\n */\r\n deregister(sortable: CuteSortable): void {\r\n this.sortables.delete(sortable.id);\r\n }\r\n\r\n /** Sets the active sort id and determines the new sort direction. */\r\n sort(sortable: CuteSortable): void {\r\n if (this.active != sortable.id) {\r\n this.active = sortable.id;\r\n this.direction = sortable.start ? sortable.start : this.start;\r\n } else {\r\n this.direction = this.getNextSortDirection(sortable);\r\n }\r\n\r\n this.sortChange.emit({active: this.active, direction: this.direction});\r\n }\r\n\r\n /** Returns the next sort direction of the active sortable, checking for potential overrides. */\r\n getNextSortDirection(sortable: CuteSortable): SortDirection {\r\n if (!sortable) {\r\n return '';\r\n }\r\n\r\n // Get the sort direction cycle with the potential sortable overrides.\r\n const disableClear =\r\n sortable?.disableClear ?? this.disableClear ?? !!this._defaultOptions?.disableClear;\r\n let sortDirectionCycle = getSortDirectionCycle(sortable.start || this.start, disableClear);\r\n\r\n // Get and return the next direction in the cycle\r\n let nextDirectionIndex = sortDirectionCycle.indexOf(this.direction) + 1;\r\n if (nextDirectionIndex >= sortDirectionCycle.length) {\r\n nextDirectionIndex = 0;\r\n }\r\n return sortDirectionCycle[nextDirectionIndex];\r\n }\r\n\r\n ngOnInit() {\r\n this._initializedStream.next();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this._stateChanges.next();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._stateChanges.complete();\r\n this._initializedStream.complete();\r\n }\r\n}\r\n\r\n/** Returns the sort direction cycle to use given the provided parameters of order and clear. */\r\nfunction getSortDirectionCycle(start: SortDirection, disableClear: boolean): SortDirection[] {\r\n let sortOrder: SortDirection[] = ['asc', 'desc'];\r\n if (start == 'desc') {\r\n sortOrder.reverse();\r\n }\r\n if (!disableClear) {\r\n sortOrder.push('');\r\n }\r\n\r\n return sortOrder;\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Injectable, SkipSelf, Optional} from '@angular/core';\r\nimport {Subject} from 'rxjs';\r\n\r\n/**\r\n * To modify the labels and text displayed, create a new instance of CuteSortHeaderIntl and\r\n * include it in a custom provider.\r\n */\r\n@Injectable({providedIn: 'root'})\r\nexport class CuteSortHeaderIntl {\r\n /**\r\n * Stream that emits whenever the labels here are changed. Use this to notify\r\n * components if the labels have changed after initialization.\r\n */\r\n readonly changes: Subject<void> = new Subject<void>();\r\n}\r\n\r\n/** @docs-private */\r\nexport function CUTE_SORT_HEADER_INTL_PROVIDER_FACTORY(parentIntl: CuteSortHeaderIntl) {\r\n return parentIntl || new CuteSortHeaderIntl();\r\n}\r\n\r\n/** @docs-private */\r\nexport const CUTE_SORT_HEADER_INTL_PROVIDER = {\r\n // If there is already an CuteSortHeaderIntl available, use that. Otherwise, provide a new one.\r\n provide: CuteSortHeaderIntl,\r\n deps: [[new Optional(), new SkipSelf(), CuteSortHeaderIntl]],\r\n useFactory: CUTE_SORT_HEADER_INTL_PROVIDER_FACTORY,\r\n};\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {AriaDescriber, FocusMonitor} from '@angular/cdk/a11y';\r\nimport {ENTER, SPACE} from '@angular/cdk/keycodes';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n ViewEncapsulation,\r\n booleanAttribute,\r\n inject,\r\n signal,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport {merge, Subscription} from 'rxjs';\r\nimport {\r\n CUTE_SORT_DEFAULT_OPTIONS,\r\n CuteSort,\r\n CuteSortable,\r\n CuteSortDefaultOptions,\r\n SortHeaderArrowPosition,\r\n} from './sort';\r\nimport {SortDirection} from './sort-direction';\r\nimport {getSortHeaderNotContainedWithinSortError} from './sort-errors';\r\nimport {CuteSortHeaderIntl} from './sort-header-intl';\r\nimport {_animationsDisabled} from '@cute-widgets/base/core/animation';\r\n\r\n/** Column definition associated with a `CuteSortHeader`. */\r\ninterface CuteSortHeaderColumnDef {\r\n name: string;\r\n}\r\n\r\n/**\r\n * Applies sorting behavior (click to change sort) and styles to an element, including an\r\n * arrow to display the current sort direction.\r\n *\r\n * Must be provided with an id and contained within a parent CuteSort directive.\r\n *\r\n * If used on header cells in a CdkTable, it will automatically default its id from its containing\r\n * column definition.\r\n */\r\n@Component({\r\n selector: '[cute-sort-header]',\r\n exportAs: 'cuteSortHeader',\r\n templateUrl: './sort-header.html',\r\n styleUrl: './sort-header.scss',\r\n host: {\r\n 'class': 'cute-sort-header',\r\n '(click)': '_toggleOnInteraction()',\r\n '(keydown)': '_handleKeydown($event)',\r\n '(mouseleave)': '_recentlyCleared.set(null)',\r\n '[attr.aria-sort]': '_getAriaSortAttribute()',\r\n '[class.cute-sort-header-disabled]': '_isDisabled()',\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CuteSortHeader implements CuteSortable, OnDestroy, OnInit, AfterViewInit {\r\n _intl = inject(CuteSortHeaderIntl);\r\n _sort = inject(CuteSort, {optional: true})!;\r\n _columnDef = inject<CuteSortHeaderColumnDef>('CUTE_SORT_HEADER_COLUMN_DEF' as any, {\r\n optional: true,\r\n });\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _focusMonitor = inject(FocusMonitor);\r\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private _ariaDescriber = inject(AriaDescriber, {optional: true});\r\n private _renderChanges: Subscription | undefined;\r\n protected _animationsDisabled = _animationsDisabled();\r\n\r\n /**\r\n * Indicates which state was just cleared from the sort header.\r\n * Will be reset on the next interaction. Used for coordinating animations.\r\n */\r\n protected _recentlyCleared = signal<SortDirection | null>(null);\r\n\r\n /**\r\n * The element with role=\"button\" inside this component's view. We need this\r\n * in order to apply a description with AriaDescriber.\r\n */\r\n private _sortButton!: HTMLElement;\r\n\r\n /**\r\n * ID of this sort header. If used within the context of a CdkColumnDef, this will default to\r\n * the column's name.\r\n */\r\n @Input('cute-sort-header') id!: string;\r\n\r\n /** Sets the position of the arrow that displays when sorted. */\r\n @Input() arrowPosition: SortHeaderArrowPosition = 'after';\r\n\r\n /** Overrides the sort start value of the containing CuteSort for this CuteSortable. */\r\n @Input() start!: SortDirection;\r\n\r\n /** whether the sort header is disabled. */\r\n @Input({transform: booleanAttribute})\r\n disabled: boolean = false;\r\n\r\n /**\r\n * Description applied to CuteSortHeader's button element with aria-describedby. This text should\r\n * describe the action that will occur when the user clicks the sort header.\r\n */\r\n @Input()\r\n get sortActionDescription(): string {\r\n return this._sortActionDescription;\r\n }\r\n set sortActionDescription(value: string) {\r\n this._updateSortActionDescription(value);\r\n }\r\n // Default the action description to \"Sort\" because it's better than nothing.\r\n // Without a description, the button's label comes from the sort header text content,\r\n // which doesn't give any indication that it performs a sorting operation.\r\n private _sortActionDescription: string = 'Sort';\r\n\r\n /** Overrides the disable clear value of the containing CuteSort for this CuteSortable. */\r\n @Input({transform: booleanAttribute})\r\n disableClear: boolean = false;\r\n\r\n constructor(...args: unknown[]);\r\n\r\n constructor() {\r\n //inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\r\n const defaultOptions = inject<CuteSortDefaultOptions>(CUTE_SORT_DEFAULT_OPTIONS, {\r\n optional: true,\r\n });\r\n\r\n // Note that we use a string token for the `_columnDef`, because the value is provided both by\r\n // `cute/table` and `cdk/table` and we can't have the CDK depending on Material, CuteWidgets etc.,\r\n // and we want to avoid having the sort header depending on the CDK table because\r\n // of this single reference.\r\n if (!this._sort && (typeof ngDevMode === 'undefined' || ngDevMode)) {\r\n throw getSortHeaderNotContainedWithinSortError();\r\n }\r\n\r\n if (defaultOptions?.arrowPosition) {\r\n this.arrowPosition = defaultOptions?.arrowPosition;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (!this.id && this._columnDef) {\r\n this.id = this._columnDef.name;\r\n }\r\n\r\n this._sort.register(this);\r\n this._renderChanges = merge(this._sort._stateChanges, this._sort.sortChange).subscribe(() =>\r\n this._changeDetectorRef.markForCheck(),\r\n );\r\n this._sortButton = this._elementRef.nativeElement.querySelector('.cute-sort-header-container')!;\r\n this._updateSortActionDescription(this._sortActionDescription);\r\n }\r\n\r\n ngAfterViewInit() {\r\n // We use the focus monitor because we also want to style\r\n // things differently based on the focus origin.\r\n this._focusMonitor.monitor(this._elementRef, true).subscribe(() => {\r\n // We need the delay here, because we can trigger a signal write error if the header\r\n // has a signal bound to `disabled` which causes it to be blurred (see #31723.)\r\n Promise.resolve().then(() => this._recentlyCleared.set(null));\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this._focusMonitor.stopMonitoring(this._elementRef);\r\n this._sort.deregister(this);\r\n this._renderChanges?.unsubscribe();\r\n\r\n if (this._sortButton) {\r\n this._ariaDescriber?.removeDescription(this._sortButton, this._sortActionDescription);\r\n }\r\n }\r\n\r\n /** Triggers the sort on this sort header and removes the indicator hint. */\r\n _toggleOnInteraction() {\r\n if (!this._isDisabled()) {\r\n const wasSorted = this._isSorted();\r\n const prevDirection = this._sort.direction;\r\n this._sort.sort(this);\r\n this._recentlyCleared.set(wasSorted && !this._isSorted() ? prevDirection : null);\r\n }\r\n }\r\n\r\n _handleKeydown(event: KeyboardEvent) {\r\n if (event.keyCode === SPACE || event.keyCode === ENTER) {\r\n event.preventDefault();\r\n this._toggleOnInteraction();\r\n }\r\n }\r\n\r\n /** Whether this CuteSortHeader is currently sorted in either ascending or descending order. */\r\n _isSorted() {\r\n return (\r\n this._sort.active == this.id &&\r\n (this._sort.direction === 'asc' || this._sort.direction === 'desc')\r\n );\r\n }\r\n\r\n _isDisabled() {\r\n return this._sort.disabled || this.disabled;\r\n }\r\n\r\n /**\r\n * Gets the aria-sort attribute that should be applied to this sort header. If this header\r\n * is not sorted, returns null so that the attribute is removed from the host element. Aria spec\r\n * says that the aria-sort property should only be present on one header at a time, so removing\r\n * ensures this is true.\r\n */\r\n _getAriaSortAttribute() {\r\n if (!this._isSorted()) {\r\n return 'none';\r\n }\r\n\r\n return this._sort.direction == 'asc' ? 'ascending' : 'descending';\r\n }\r\n\r\n /** Whether the arrow inside the sort header should be rendered. */\r\n _renderArrow() {\r\n return !this._isDisabled() || this._isSorted();\r\n }\r\n\r\n private _updateSortActionDescription(newDescription: string) {\r\n // We use AriaDescriber for the sort button instead of setting an `aria-label` because some\r\n // screen readers (notably VoiceOver) will read both the column header *and* the button's label\r\n // for every *cell* in the table, creating a lot of unnecessary noise.\r\n\r\n // If _sortButton is undefined, the component hasn't been initialized yet so there's\r\n // nothing to update in the DOM.\r\n if (this._sortButton) {\r\n // removeDescription will no-op if there is no existing message.\r\n // TODO(jelbourn): remove optional chaining when AriaDescriber is required.\r\n this._ariaDescriber?.removeDescription(this._sortButton, this._sortActionDescription);\r\n this._ariaDescriber?.describe(this._sortButton, newDescription);\r\n }\r\n\r\n this._sortActionDescription = newDescription;\r\n }\r\n}\r\n","<!--\r\n We set the `tabindex` on an element inside the table header, rather than the header itself,\r\n because of a bug in NVDA where having a `tabindex` on a `th` breaks keyboard navigation in the\r\n table (see https://github.com/nvaccess/nvda/issues/7718). This allows for the header to both\r\n be focusable, and have screen readers read out its `aria-sort` state. We prefer this approach\r\n over having a button with an `aria-label` inside the header, because the button's `aria-label`\r\n will be read out as the user is navigating the table's cell (see #13012).\r\n\r\n The approach is based off of: https://dequeuniversity.com/library/aria/tables/sf-sortable-grid\r\n-->\r\n<div class=\"cute-sort-header-container cute-focus-indicator\"\r\n [class.cute-sort-header-sorted]=\"_isSorted()\"\r\n [class.cute-sort-header-position-before]=\"arrowPosition === 'before'\"\r\n [class.cute-sort-header-descending]=\"_sort.direction === 'desc'\"\r\n [class.cute-sort-header-ascending]=\"_sort.direction === 'asc'\"\r\n [class.cute-sort-header-recently-cleared-ascending]=\"_recentlyCleared() === 'asc'\"\r\n [class.cute-sort-header-recently-cleared-descending]=\"_recentlyCleared() === 'desc'\"\r\n [class.cute-sort-header-animations-disabled]=\"_animationsDisabled\"\r\n [attr.tabindex]=\"_isDisabled() ? null : 0\"\r\n [attr.role]=\"_isDisabled() ? null : 'button'\">\r\n\r\n <!--\r\n TODO(crisbeto): this div isn't strictly necessary, but we have to keep it due to a large\r\n number of screenshot diff failures. It should be removed eventually. Note that the difference\r\n isn't visible with a shorter header, but once it breaks up into multiple lines, this element\r\n causes it to be center-aligned, whereas removing it will keep the text to the left.\r\n -->\r\n <div class=\"cute-sort-header-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <!-- Disable animations while a current animation is running -->\r\n @if (_renderArrow()) {\r\n <div class=\"cute-sort-header-arrow\">\r\n <ng-content select=\"[cuteSortHeaderIcon]\">\r\n <svg viewBox=\"0 -960 960 960\" focusable=\"false\" aria-hidden=\"true\">\r\n <path d=\"M440-240v-368L296-464l-56-56 240-240 240 240-56 56-144-144v368h-80Z\"/>\r\n </svg>\r\n </ng-content>\r\n </div>\r\n }\r\n</div>\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {NgModule, Type} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {CuteSort} from \"./sort\";\r\nimport {CuteSortHeader} from \"./sort-header\";\r\nimport {CUTE_SORT_HEADER_INTL_PROVIDER} from \"./sort-header-intl\";\r\n\r\nconst TYPES: (any | Type<any>)[] = [CuteSort, CuteSortHeader];\r\n\r\n@NgModule({\r\n imports: [CommonModule, ...TYPES],\r\n exports: TYPES,\r\n providers: [CUTE_SORT_HEADER_INTL_PROVIDER],\r\n declarations: [],\r\n})\r\nexport class CuteSortModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -54,11 +54,13 @@ class CuteTable extends CdkTable {
54
54
  this.needsPositionStickyOnElement = false;
55
55
  /** Adds zebra-striping to any table row within the `<tbody>`. */
56
56
  this.stripedRows = false;
57
- /** Adds zebra-striping to any table column */
57
+ /** Adds zebra-striping to any table column. */
58
58
  this.stripedColumns = false;
59
- /** Enables a hover state on table rows within a `<tbody>` */
59
+ /** Enables a hover state on table rows within a `<tbody>`. */
60
60
  this.hoveredRows = false;
61
61
  this._compact = false;
62
+ /** What table borders to display. */
63
+ this.displayBorders = "rows";
62
64
  /**
63
65
  * Adds a thicker border, darker between table groups — `<thead>`, `<tbody>`, and `<tfoot>`.
64
66
  * @experimental
@@ -76,7 +78,7 @@ class CuteTable extends CdkTable {
76
78
  }
77
79
  return classes.trim();
78
80
  }
79
- /** Makes a `<table>` more compact */
81
+ /** Makes a `<table>` more compact. */
80
82
  get compact() { return this._compact; }
81
83
  set compact(value) {
82
84
  if (value !== this._compact) {
@@ -675,6 +677,7 @@ class CuteTableDataSource extends DataSource {
675
677
  }
676
678
  return value;
677
679
  };
680
+ // CWT: Attention! We change the second parameter's type from CuteSort to Sort interface!!!
678
681
  /**
679
682
  * Gets a sorted copy of the data array based on the state of the `CuteSort`. Called
680
683
  * after changes are made to the filtered data or when sort changes are emitted from `CuteSort`.
@@ -1 +1 @@
1
- {"version":3,"file":"cute-widgets-base-table.mjs","sources":["../../../../projects/cute-widgets/base/table/src/table.ts","../../../../projects/cute-widgets/base/table/src/cell.ts","../../../../projects/cute-widgets/base/table/src/row.ts","../../../../projects/cute-widgets/base/table/src/table-data-source.ts","../../../../projects/cute-widgets/base/table/src/text-column.ts","../../../../projects/cute-widgets/base/table/src/table.module.ts","../../../../projects/cute-widgets/base/table/cute-widgets-base-table.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n Directive, HostBinding, InjectionToken, Input,\r\n OnInit,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n CdkTable,\r\n CDK_TABLE,\r\n STICKY_POSITIONING_LISTENER,\r\n HeaderRowOutlet, DataRowOutlet, NoDataRowOutlet, FooterRowOutlet,\r\n} from '@angular/cdk/table';\r\nimport {\r\n _DisposeViewRepeaterStrategy,\r\n _RecycleViewRepeaterStrategy,\r\n _VIEW_REPEATER_STRATEGY,\r\n} from '@angular/cdk/collections';\r\nimport {ThemeColor} from \"@cute-widgets/base/core\";\r\n\r\n//++ CWT\r\n/**\r\n * Used to provide a table to some of the subcomponents without causing a circular dependency.\r\n */\r\nexport const CUTE_TABLE = new InjectionToken<CuteTable<any>>(\"CUTE_TABLE\");\r\n\r\n/** Type of table borders. `all` - on all sides of the table and cells, `none` - without borders */\r\nexport type TableBorders = \"all\" | \"none\";\r\n\r\n/**\r\n * Enables the recycle view repeater strategy, which reduces rendering latency. Not compatible with\r\n * tables that animate rows.\r\n *\r\n * @deprecated This directive is a no-op and will be removed.\r\n * @breaking-change 23.0.0\r\n */\r\n@Directive({\r\n selector: 'cute-table[recycleRows], table[cute-table][recycleRows]',\r\n providers: [{provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy}],\r\n standalone: true,\r\n})\r\nexport class CuteRecycleRows {}\r\n\r\n/**\r\n * @inheritDoc\r\n */\r\n@Component({\r\n selector: 'cute-table, table[cute-table]',\r\n exportAs: 'cuteTable',\r\n // Note that according to MDN, the `caption` element has to be projected as the **first**\r\n // element in the table. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption\r\n // We can't reuse `CDK_TABLE_TEMPLATE` because it's incompatible with local compilation mode.\r\n template: `\r\n <ng-content select=\"caption\"/>\r\n <ng-content select=\"colgroup, col\"/>\r\n\r\n <!--\r\n Unprojected content throws a hydration error so we need this to capture it.\r\n It gets removed on the client so it doesn't affect the layout.\r\n -->\r\n @if (_isServer) {\r\n <ng-content/>\r\n }\r\n\r\n @if (_isNativeHtmlTable) {\r\n <thead role=\"rowgroup\">\r\n <ng-container headerRowOutlet/>\r\n </thead>\r\n <tbody class=\"cute-data-table__content\" [class.table-group-divider]=\"divideGroups\" role=\"rowgroup\">\r\n <ng-container rowOutlet/>\r\n <ng-container noDataRowOutlet/>\r\n </tbody>\r\n <tfoot role=\"rowgroup\" [class.table-group-divider]=\"divideGroups\">\r\n <ng-container footerRowOutlet/>\r\n </tfoot>\r\n } @else {\r\n <ng-container headerRowOutlet/>\r\n <ng-container rowOutlet/>\r\n <ng-container noDataRowOutlet/>\r\n <ng-container footerRowOutlet/>\r\n }\r\n `,\r\n styleUrls: ['./table.scss'],\r\n host: {\r\n 'class': 'cute-table table',\r\n '[class.cute-table-fixed-layout]': 'fixedLayout',\r\n '[class.table-hover]': 'hoveredRows',\r\n '[class.table-striped]': 'stripedRows',\r\n '[class.table-striped-columns]': 'stripedColumns',\r\n '[class.table-bordered]': 'displayBorders==\"all\"',\r\n '[class.table-borderless]': 'displayBorders==\"none\"',\r\n '[class.table-sm]': 'compact',\r\n '[class.cute-table-vertical-head]': 'verticalHeads',\r\n '[style.--bs-table-border-color]': 'borderColor ? \"var(--bs-\"+borderColor+\")\" : undefined',\r\n },\r\n providers: [\r\n { provide: CdkTable, useExisting: CuteTable },\r\n { provide: CDK_TABLE, useExisting: CuteTable },\r\n { provide: CUTE_TABLE, useExisting: CuteTable },\r\n // TODO(michaeljamesparsons) Abstract the view repeater strategy to a directive API so this code\r\n // is only included in the build if used.\r\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\r\n // Prevent nested tables from seeing this table's StickyPositioningListener.\r\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\r\n // tslint:disable-next-line:validate-decorators\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n imports: [HeaderRowOutlet, DataRowOutlet, NoDataRowOutlet, FooterRowOutlet]\r\n})\r\nexport class CuteTable<T> extends CdkTable<T> implements OnInit {\r\n /** Overrides the sticky CSS class set by the `CdkTable`. */\r\n protected override stickyCssClass = 'cute-table-sticky';\r\n\r\n /** Overrides the need to add position: sticky on every sticky cell element in `CdkTable`. */\r\n protected override needsPositionStickyOnElement = false;\r\n\r\n @HostBinding(\"class\")\r\n get classList(): string {\r\n let classes = \"\";\r\n if (this.color) {\r\n classes += \" table-\"+this.color;\r\n }\r\n if (this.borderColor) {\r\n classes += \" border-\"+this.borderColor;\r\n }\r\n return classes.trim();\r\n }\r\n\r\n /** Theme color for all table cells. */\r\n @Input() color: ThemeColor | undefined;\r\n\r\n /** Theme color for cell borders. */\r\n @Input() borderColor: ThemeColor | undefined;\r\n\r\n /** Adds zebra-striping to any table row within the `<tbody>`. */\r\n @Input({transform: booleanAttribute}) stripedRows: boolean = false;\r\n\r\n /** Adds zebra-striping to any table column */\r\n @Input({transform: booleanAttribute}) stripedColumns: boolean = false;\r\n\r\n /** Enables a hover state on table rows within a `<tbody>` */\r\n @Input({transform: booleanAttribute}) hoveredRows: boolean = false;\r\n\r\n /** Makes a `<table>` more compact */\r\n @Input({transform: booleanAttribute})\r\n get compact(): boolean { return this._compact; }\r\n set compact(value: boolean) {\r\n if (value !== this._compact) {\r\n this._compact = value;\r\n this.updateStickyStyles();\r\n }\r\n }\r\n private _compact: boolean = false;\r\n\r\n /** What table borders to display. */\r\n @Input() displayBorders: TableBorders | undefined;\r\n\r\n /**\r\n * Adds a thicker border, darker between table groups — `<thead>`, `<tbody>`, and `<tfoot>`.\r\n * @experimental\r\n */\r\n @Input({transform: booleanAttribute}) divideGroups: boolean = false;\r\n\r\n /**\r\n * Whether to display `th` cells vertically.\r\n * @experimental\r\n */\r\n @Input({transform: booleanAttribute})\r\n get verticalHeads():boolean { return this._verticalHeads; }\r\n set verticalHeads(value: boolean) {\r\n if (value !== this._verticalHeads) {\r\n this._verticalHeads = value;\r\n this.updateStickyStyles();\r\n }\r\n }\r\n private _verticalHeads: boolean = false;\r\n\r\n protected updateStickyStyles() {\r\n this.updateStickyHeaderRowStyles();\r\n this.updateStickyFooterRowStyles();\r\n this.updateStickyColumnStyles();\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {booleanAttribute, Directive, Input} from '@angular/core';\r\nimport {\r\n CdkCell,\r\n CdkCellDef,\r\n CdkColumnDef,\r\n CdkFooterCell,\r\n CdkFooterCellDef,\r\n CdkHeaderCell,\r\n CdkHeaderCellDef,\r\n} from '@angular/cdk/table';\r\nimport {ThemeColor} from \"@cute-widgets/base/core\";\r\n\r\n/**\r\n * Cell definition for the `cute-table`.\r\n * Captures the template of a column's data row cell as well as cell-specific properties.\r\n */\r\n@Directive({\r\n selector: '[cuteCellDef]',\r\n providers: [{provide: CdkCellDef, useExisting: CuteCellDef}],\r\n})\r\nexport class CuteCellDef extends CdkCellDef {}\r\n\r\n/**\r\n * Header cell definition for the `cute-table`.\r\n * Captures the template of a column's header cell and as well as cell-specific properties.\r\n */\r\n@Directive({\r\n selector: '[cuteHeaderCellDef]',\r\n providers: [{provide: CdkHeaderCellDef, useExisting: CuteHeaderCellDef}],\r\n})\r\nexport class CuteHeaderCellDef extends CdkHeaderCellDef {}\r\n\r\n/**\r\n * Footer cell definition for the `cute-table`.\r\n * Captures the template of a column's footer cell and as well as cell-specific properties.\r\n */\r\n@Directive({\r\n selector: '[cuteFooterCellDef]',\r\n providers: [{provide: CdkFooterCellDef, useExisting: CuteFooterCellDef}],\r\n})\r\nexport class CuteFooterCellDef extends CdkFooterCellDef {}\r\n\r\n/**\r\n * Column definition for the `cute-table`.\r\n * Defines a set of cells available for a table column.\r\n */\r\n@Directive({\r\n selector: '[cuteColumnDef]',\r\n inputs: [{name: 'sticky', transform: booleanAttribute}],\r\n providers: [\r\n {provide: CdkColumnDef, useExisting: CuteColumnDef},\r\n {provide: 'CUTE_SORT_HEADER_COLUMN_DEF', useExisting: CuteColumnDef},\r\n ],\r\n standalone: true,\r\n})\r\nexport class CuteColumnDef extends CdkColumnDef {\r\n /** Unique name for this column. */\r\n @Input('cuteColumnDef')\r\n override get name(): string { return this._name; }\r\n override set name(name: string) {this._setNameInput(name);}\r\n\r\n /**\r\n * Add \"cute-column-\" prefix in addition to \"cdk-column-\" prefix.\r\n * In the future, this will only add \"cute-column-\" and columnCssClassName\r\n * will change from type string[] to string.\r\n */\r\n protected override _updateColumnCssClassName() {\r\n super._updateColumnCssClassName();\r\n this._columnCssClassName!.push(`cute-column-${this.cssClassFriendlyName}`);\r\n }\r\n}\r\n\r\n/** Header cell template container that adds the right classes and role. */\r\n@Directive({\r\n selector: 'cute-header-cell, th[cute-header-cell]',\r\n host: {\r\n 'class': 'cute-header-cell',\r\n '[class]': 'color ? \"table-\"+color : \"\"',\r\n 'role': 'columnheader',\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteHeaderCell extends CdkHeaderCell {\r\n\r\n /* Header cell's theme color. */\r\n @Input() color: ThemeColor | undefined;\r\n\r\n}\r\n\r\n/** Footer cell template container that adds the right classes and role. */\r\n@Directive({\r\n selector: 'cute-footer-cell, td[cute-footer-cell]',\r\n host: {\r\n 'class': 'cute-footer-cell',\r\n '[class]': 'color ? \"table-\"+color : \"\"',\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteFooterCell extends CdkFooterCell {\r\n\r\n /* Footer cell's theme color */\r\n @Input() color: ThemeColor | undefined;\r\n\r\n}\r\n\r\n/** Cell template container that adds the right classes and role. */\r\n@Directive({\r\n selector: 'cute-cell, td[cute-cell]',\r\n host: {\r\n 'class': 'cute-cell',\r\n '[class.table-active]': 'active',\r\n '[class]': 'color ? \"table-\"+color : \"\"',\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteCell extends CdkCell {\r\n\r\n /* Body cell's theme color */\r\n @Input() color: ThemeColor | undefined;\r\n\r\n /* Body cell's activity state */\r\n @Input({transform: booleanAttribute})\r\n active: boolean = false;\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n CdkFooterRow,\r\n CdkFooterRowDef,\r\n CdkHeaderRow,\r\n CdkHeaderRowDef,\r\n CdkRow,\r\n CdkRowDef,\r\n CdkNoDataRow,\r\n CdkCellOutlet,\r\n} from '@angular/cdk/table';\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n Directive,\r\n Input,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport {ThemeColor} from \"@cute-widgets/base/core\";\r\n\r\n// We can't reuse `CDK_ROW_TEMPLATE` because it's incompatible with local compilation mode.\r\nconst ROW_TEMPLATE = `<ng-container cdkCellOutlet></ng-container>`;\r\n\r\n/**\r\n * Header row definition for the `cute-table`.\r\n * Captures the header row's template and other header properties such as the columns to display.\r\n */\r\n@Directive({\r\n selector: '[cuteHeaderRowDef]',\r\n providers: [{provide: CdkHeaderRowDef, useExisting: CuteHeaderRowDef}],\r\n inputs: [\r\n {name: 'columns', alias: 'cuteHeaderRowDef'},\r\n {name: 'sticky', alias: 'cuteHeaderRowDefSticky', transform: booleanAttribute},\r\n ],\r\n})\r\nexport class CuteHeaderRowDef extends CdkHeaderRowDef {}\r\n\r\n/**\r\n * Footer row definition for the `cute-table`.\r\n * Captures the footer row's template and other footer properties such as the columns to display.\r\n */\r\n@Directive({\r\n selector: '[cuteFooterRowDef]',\r\n providers: [{provide: CdkFooterRowDef, useExisting: CuteFooterRowDef}],\r\n inputs: [\r\n {name: 'columns', alias: 'cuteFooterRowDef'},\r\n {name: 'sticky', alias: 'cuteFooterRowDefSticky', transform: booleanAttribute},\r\n ],\r\n})\r\nexport class CuteFooterRowDef extends CdkFooterRowDef {}\r\n\r\n/**\r\n * Data row definition for the `cute-table`.\r\n * Captures the data row's template and other properties such as the columns to display and\r\n * a when predicate that describes when this row should be used.\r\n */\r\n@Directive({\r\n selector: '[cuteRowDef]',\r\n providers: [{provide: CdkRowDef, useExisting: CuteRowDef}],\r\n inputs: ['columns: cuteRowDefColumns', 'when: cuteRowDefWhen'],\r\n})\r\nexport class CuteRowDef<T> extends CdkRowDef<T> {}\r\n\r\n/** Header template container that contains the cell outlet. Adds the right class and role. */\r\n@Component({\r\n selector: 'cute-header-row, tr[cute-header-row]',\r\n template: ROW_TEMPLATE,\r\n host: {\r\n 'class': 'cute-header-row',\r\n '[class]': 'color ? \"table-\"+color : \"\"',\r\n 'role': 'row',\r\n },\r\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\r\n // tslint:disable-next-line:validate-decorators\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n encapsulation: ViewEncapsulation.None,\r\n exportAs: 'cuteHeaderRow',\r\n providers: [{ provide: CdkHeaderRow, useExisting: CuteHeaderRow }],\r\n imports: [CdkCellOutlet]\r\n})\r\nexport class CuteHeaderRow extends CdkHeaderRow {\r\n\r\n /* Cells' default color in the `<thead>` table section. */\r\n @Input() color: ThemeColor | undefined;\r\n\r\n}\r\n\r\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\r\n@Component({\r\n selector: 'cute-footer-row, tr[cute-footer-row]',\r\n template: ROW_TEMPLATE,\r\n host: {\r\n 'class': 'cute-footer-row',\r\n '[class]': 'color ? \"table-\"+color : \"\"',\r\n 'role': 'row',\r\n },\r\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\r\n // tslint:disable-next-line:validate-decorators\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n encapsulation: ViewEncapsulation.None,\r\n exportAs: 'cuteFooterRow',\r\n providers: [{ provide: CdkFooterRow, useExisting: CuteFooterRow }],\r\n imports: [CdkCellOutlet]\r\n})\r\nexport class CuteFooterRow extends CdkFooterRow {\r\n\r\n /* Cells' default color in the `<tfoot>` table section. */\r\n @Input() color: ThemeColor | undefined;\r\n\r\n}\r\n\r\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\r\n@Component({\r\n selector: 'cute-row, tr[cute-row]',\r\n template: ROW_TEMPLATE,\r\n host: {\r\n 'class': 'cute-row',\r\n '[class.table-active]': 'active',\r\n '[class]': 'color ? \"table-\"+color : \"\"',\r\n 'role': 'row',\r\n },\r\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\r\n // tslint:disable-next-line:validate-decorators\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n encapsulation: ViewEncapsulation.None,\r\n exportAs: 'cuteRow',\r\n providers: [{ provide: CdkRow, useExisting: CuteRow }],\r\n imports: [CdkCellOutlet]\r\n})\r\nexport class CuteRow extends CdkRow {\r\n\r\n /* Cells' default color in the `<tbody>` table section */\r\n @Input() color: ThemeColor | undefined;\r\n\r\n /* Whether the row has an active state */\r\n @Input({transform: booleanAttribute})\r\n active: boolean = false;\r\n\r\n}\r\n\r\n/** Row that can be used to display a message when no data is shown in the table. */\r\n@Directive({\r\n selector: 'ng-template[cuteNoDataRow]',\r\n providers: [{provide: CdkNoDataRow, useExisting: CuteNoDataRow}],\r\n standalone: true,\r\n})\r\nexport class CuteNoDataRow extends CdkNoDataRow {\r\n override _cellSelector = 'td, cute-cell, [cute-cell], .cute-cell';\r\n\r\n constructor() {\r\n super();\r\n this._contentClassNames.push('cute-no-data-row', 'cute-row');\r\n this._cellClassNames.push('cute-cell', 'cute-no-data-cell');\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n BehaviorSubject,\r\n combineLatest,\r\n merge,\r\n Observable,\r\n of as observableOf,\r\n Subject,\r\n Subscription,\r\n} from 'rxjs';\r\nimport {DataSource} from '@angular/cdk/collections';\r\nimport {_isNumberValue} from '@angular/cdk/coercion';\r\nimport {CuteSort, Sort} from '@cute-widgets/base/sort';\r\nimport {CutePaginator, PageEvent} from '@cute-widgets/base/paginator';\r\nimport {map} from 'rxjs/operators';\r\n\r\n/**\r\n * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to\r\n * flaky browser support and the value not being defined in Closure's typings.\r\n */\r\nconst MAX_SAFE_INTEGER = 9007199254740991;\r\n\r\n/**\r\n * Data source that accepts a client-side data array and includes native support of filtering,\r\n * sorting (using `CuteSort`), and pagination (using `CutePaginator`).\r\n *\r\n * Allows for sort customization by overriding `sortingDataAccessor`, which defines how data\r\n * properties are accessed. It also allows for filter customization by overriding `filterPredicate`,\r\n * which defines how row data is converted to a string for filter matching.\r\n *\r\n * **Note:** This class is meant to be a simple data source to help you get started. As such,\r\n * it isn't equipped to handle some more advanced cases like robust i18n support or server-side\r\n * interactions. If your app needs to support more advanced use cases, consider implementing your\r\n * own `DataSource`.\r\n */\r\nexport class CuteTableDataSource<T, P extends CutePaginator = CutePaginator> extends DataSource<T> {\r\n /** Stream that emits when a new data array is set on the data source. */\r\n private readonly _data: BehaviorSubject<T[]>;\r\n\r\n /** Stream emitting render data to the table (depends on ordered data changes). */\r\n private readonly _renderData = new BehaviorSubject<T[]>([]);\r\n\r\n /** Stream that emits when a new filter string is set on the data source. */\r\n private readonly _filter = new BehaviorSubject<string>('');\r\n\r\n /** Used to react to internal changes of the paginator that are made by the data source itself. */\r\n private readonly _internalPageChanges = new Subject<void>();\r\n\r\n /**\r\n * Subscription to the changes that should trigger an update to the table's rendered rows, such\r\n * as filtering, sorting, pagination, or base data changes.\r\n */\r\n private _renderChangesSubscription: Subscription | null = null;\r\n\r\n /**\r\n * The filtered set of data that has been matched by the filter string, or all the data if there\r\n * is no filter. Useful for knowing the set of data the table represents.\r\n * For example, a 'selectAll()' function would likely want to select the set of filtered data\r\n * shown to the user rather than all the data.\r\n */\r\n filteredData: T[] = [];\r\n\r\n /** Array of data that should be rendered by the table, where each object represents one row. */\r\n get data() { return this._data.value; }\r\n set data(data: T[]) {\r\n data = Array.isArray(data) ? data : [];\r\n this._data.next(data);\r\n // Normally the `filteredData` is updated by the re-render\r\n // subscription, but that won't happen if it's inactive.\r\n if (!this._renderChangesSubscription) {\r\n this._filterData(data);\r\n }\r\n }\r\n\r\n /**\r\n * Filter term that should be used to filter out objects from the data array. To override how\r\n * data objects match to this filter string, provide a custom function for filterPredicate.\r\n */\r\n get filter(): string { return this._filter.value; }\r\n set filter(filter: string) {\r\n this._filter.next(filter);\r\n // Normally the `filteredData` is updated by the re-render\r\n // subscription, but that won't happen if it's inactive.\r\n if (!this._renderChangesSubscription) {\r\n this._filterData(this.data);\r\n }\r\n }\r\n\r\n /**\r\n * Instance of the `CuteSort` directive used by the table to control its sorting. Sort changes\r\n * emitted by the `CuteSort` will trigger an update to the table's rendered data.\r\n */\r\n get sort(): CuteSort | null { return this._sort; }\r\n set sort(sort: CuteSort | null) {\r\n this._sort = sort;\r\n this._updateChangeSubscription();\r\n }\r\n private _sort: CuteSort | null = null;\r\n\r\n /**\r\n * Instance of the paginator component used by the table to control what page of the data is\r\n * displayed. Page changes emitted by the paginator will trigger an update to the\r\n * table's rendered data.\r\n *\r\n * Note that the data source uses the paginator's properties to calculate which page of data\r\n * should be displayed. If the paginator receives its properties as template inputs,\r\n * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\r\n * initialized before assigning it to this data source.\r\n */\r\n get paginator(): P | null { return this._paginator; }\r\n set paginator(paginator: P | null) {\r\n this._paginator = paginator;\r\n this._updateChangeSubscription();\r\n }\r\n private _paginator: P | null = null;\r\n\r\n /**\r\n * Data accessor function that is used for accessing data properties for sorting through\r\n * the default sortData function.\r\n * This default function assumes that the sort header IDs (which defaults to the column name)\r\n * matches the data's properties (e.g., column Xyz represents data['Xyz']).\r\n * May be set to a custom function for different behavior.\r\n * @param data Data object that is being accessed.\r\n * @param sortHeaderId The name of the column that represents the data.\r\n */\r\n sortingDataAccessor = (data: T, sortHeaderId: string): string | number => {\r\n const value = (data as unknown as Record<string, any>)[sortHeaderId];\r\n\r\n if (_isNumberValue(value)) {\r\n const numberValue = Number(value);\r\n\r\n // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we\r\n // leave them as strings. For more info: https://goo.gl/y5vbSg\r\n return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Gets a sorted copy of the data array based on the state of the `CuteSort`. Called\r\n * after changes are made to the filtered data or when sort changes are emitted from `CuteSort`.\r\n * By default, the function retrieves the active sort and its direction and compares data\r\n * by retrieving data using the {@link sortingDataAccessor}. May be overridden for a custom implementation\r\n * of data ordering.\r\n * @param data The array of data that should be sorted.\r\n * @param sort The connected `CuteSort` that holds the current sort state.\r\n */\r\n sortData = (data: T[], sort: CuteSort): T[] => {\r\n const active = sort.active;\r\n const direction = sort.direction;\r\n if (!active || direction == '') {\r\n return data;\r\n }\r\n\r\n return data.sort((a, b) => {\r\n let valueA = this.sortingDataAccessor(a, active);\r\n let valueB = this.sortingDataAccessor(b, active);\r\n\r\n // If there are data in the column that can be converted to a number,\r\n // it must be ensured that the rest of the data\r\n // is of the same type so as not to order incorrectly.\r\n const valueAType = typeof valueA;\r\n const valueBType = typeof valueB;\r\n\r\n if (valueAType !== valueBType) {\r\n if (valueAType === 'number') {\r\n valueA += '';\r\n }\r\n if (valueBType === 'number') {\r\n valueB += '';\r\n }\r\n }\r\n\r\n // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\r\n // one value exists while the other doesn't. In this case, existing value should come last.\r\n // This avoids inconsistent results when comparing values to undefined/null.\r\n // If neither value exists, return 0 (equal).\r\n let comparatorResult = 0;\r\n if (valueA != null && valueB != null) {\r\n // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\r\n if (valueA > valueB) {\r\n comparatorResult = 1;\r\n } else if (valueA < valueB) {\r\n comparatorResult = -1;\r\n }\r\n } else if (valueA != null) {\r\n comparatorResult = 1;\r\n } else if (valueB != null) {\r\n comparatorResult = -1;\r\n }\r\n\r\n return comparatorResult * (direction == 'asc' ? 1 : -1);\r\n });\r\n }\r\n\r\n /**\r\n * Checks if a data object matches the data source's filter string. By default, each data object\r\n * is converted to a string of its properties and returns true if the filter has\r\n * at least one occurrence in that string. By default, the filter string has its whitespace\r\n * trimmed and the match is case-insensitive. May be overridden for a custom implementation of\r\n * filter matching.\r\n * @param data Data object used to check against the filter.\r\n * @param filter Filter string that has been set on the data source.\r\n * @returns Whether the filter matches against the data\r\n */\r\n filterPredicate = (data: T, filter: string): boolean => {\r\n // Transform the data into a lowercase string of all property values.\r\n const dataStr = Object.keys(data as unknown as Record<string, any>)\r\n .reduce((currentTerm: string, key: string) => {\r\n // Use an obscure Unicode character to delimit the words in the concatenated string.\r\n // This avoids matches where the values of two columns combined will match the user's query\r\n // (e.g. `Flute` and `Stop` will match `Test`). The character is intended to be something\r\n // that has a very low chance of being typed in by somebody in a text field. This one in\r\n // particular is \"White up-pointing triangle with dot\" from\r\n // https://en.wikipedia.org/wiki/List_of_Unicode_characters\r\n return currentTerm + (data as unknown as Record<string, any>)[key] + '◬';\r\n }, '')\r\n .toLowerCase();\r\n\r\n // Transform the filter by converting it to lowercase and removing whitespace.\r\n const transformedFilter = filter.trim().toLowerCase();\r\n\r\n return dataStr.indexOf(transformedFilter) != -1;\r\n };\r\n\r\n constructor(initialData: T[] = []) {\r\n super();\r\n this._data = new BehaviorSubject<T[]>(initialData);\r\n this._updateChangeSubscription();\r\n }\r\n\r\n /**\r\n * Subscribe to changes that should trigger an update to the table's rendered rows. When the\r\n * changes occur, process the current state of the filter, sort, and pagination along with\r\n * the provided base data and send it to the table for rendering.\r\n */\r\n protected _updateChangeSubscription() {\r\n // Sorting and/or pagination should be watched if sort and/or paginator are provided.\r\n // The events should emit whenever the component emits a change or initializes, or if no\r\n // component is provided, a stream with just a null event should be provided.\r\n // The `sortChange` and `pageChange` acts as a signal to the `combineLatests` below so that the\r\n // pipeline can progress to the next step. Note that the value from these streams are not used,\r\n // they purely act as a signal to progress in the pipeline.\r\n const sortChange: Observable<Sort | null | void> = this._sort\r\n ? (merge(this._sort.sortChange, this._sort.initialized$) as Observable<Sort | void>)\r\n : observableOf(null);\r\n const pageChange: Observable<PageEvent | null | void> = this._paginator\r\n ? (merge(\r\n this._paginator.page,\r\n this._internalPageChanges,\r\n this._paginator.initialized$,\r\n ) as Observable<PageEvent | void>)\r\n : observableOf(null);\r\n const dataStream = this._data;\r\n // Watch for base data or filter changes to provide a filtered set of data.\r\n const filteredData = combineLatest([dataStream, this._filter]).pipe(\r\n map(([data]) => this._filterData(data)),\r\n );\r\n // Watch for filtered data or sort changes to provide an ordered set of data.\r\n const orderedData = combineLatest([filteredData, sortChange]).pipe(\r\n map(([data]) => this._orderData(data)),\r\n );\r\n // Watch for ordered data or page changes to provide a paged set of data.\r\n const paginatedData = combineLatest([orderedData, pageChange]).pipe(\r\n map(([data]) => this._pageData(data)),\r\n );\r\n // Watched for paged data changes and send the result to the table to render.\r\n this._renderChangesSubscription?.unsubscribe();\r\n this._renderChangesSubscription = paginatedData.subscribe(data => this._renderData.next(data));\r\n }\r\n\r\n /**\r\n * Returns a filtered data array where each filter object contains the filter string within\r\n * the result of the {@link filterPredicate} function. If no filter is set, return the data array\r\n * as provided.\r\n */\r\n protected _filterData(data: T[]) {\r\n // If there is a filter string, filter out data that does not contain it.\r\n // Each data object is converted to a string using the function defined by filterPredicate.\r\n // May be overridden for customization.\r\n this.filteredData =\r\n this.filter == null || this.filter === ''\r\n ? data\r\n : data.filter(obj => this.filterPredicate(obj, this.filter));\r\n\r\n if (this.paginator) {\r\n this._updatePaginator(this.filteredData.length);\r\n }\r\n\r\n return this.filteredData;\r\n }\r\n\r\n /**\r\n * Returns a sorted copy of the data if `CuteSort` has a sort applied, otherwise just returns the\r\n * data array as provided. Uses the default data accessor for data lookup, unless a\r\n * sortDataAccessor function is defined.\r\n */\r\n protected _orderData(data: T[]): T[] {\r\n // If there is no active sort or direction, return the data without trying to sort.\r\n if (!this.sort) {\r\n return data;\r\n }\r\n\r\n return this.sortData(data.slice(), this.sort);\r\n }\r\n\r\n /**\r\n * Returns a paged slice of the provided data array according to the provided paginator's page\r\n * index and length. If there is no paginator provided, return the data array as provided.\r\n */\r\n protected _pageData(data: T[]): T[] {\r\n if (!this.paginator) {\r\n return data;\r\n }\r\n\r\n const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\r\n return data.slice(startIndex, startIndex + this.paginator.pageSize);\r\n }\r\n\r\n /**\r\n * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\r\n * index does not exceed the paginator's last page. Values are changed in a resolved promise to\r\n * guard against making property changes within a round of change detection.\r\n */\r\n protected _updatePaginator(filteredDataLength: number) {\r\n Promise.resolve().then(() => {\r\n const paginator = this.paginator;\r\n\r\n if (!paginator) {\r\n return;\r\n }\r\n\r\n paginator.length = filteredDataLength;\r\n\r\n // If the page index is set beyond the page, reduce it to the last page.\r\n if (paginator.pageIndex > 0) {\r\n const lastPageIndex = Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;\r\n const newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);\r\n\r\n if (newPageIndex !== paginator.pageIndex) {\r\n paginator.pageIndex = newPageIndex;\r\n\r\n // Since the paginator only emits after user-generated changes,\r\n // we need our own stream, so we know to should re-render the data.\r\n this._internalPageChanges.next();\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Used by the {@link CuteTable}. Called when it connects to the data source.\r\n */\r\n connect() {\r\n if (!this._renderChangesSubscription) {\r\n this._updateChangeSubscription();\r\n }\r\n return this._renderData;\r\n }\r\n\r\n /**\r\n * Used by the {@link CuteTable}. Called when it disconnects from the data source.\r\n */\r\n disconnect() {\r\n this._renderChangesSubscription?.unsubscribe();\r\n this._renderChangesSubscription = null;\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {CdkTextColumn} from '@angular/cdk/table';\r\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\r\nimport {CuteColumnDef, CuteHeaderCellDef, CuteHeaderCell, CuteCellDef, CuteCell} from './cell';\r\n\r\n/**\r\n * Column that simply shows text content for the header and row cells. Assumes that the table\r\n * is using the native table implementation (`<table>`).\r\n *\r\n * By default, the name of this column will be the header text and data property accessor.\r\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\r\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\r\n * input.\r\n */\r\n@Component({\r\n selector: 'cute-text-column',\r\n template: `\r\n <ng-container cuteColumnDef>\r\n <th cute-header-cell *cuteHeaderCellDef [style.text-align]=\"justify\">\r\n {{headerText}}\r\n </th>\r\n <td cute-cell *cuteCellDef=\"let data\" [style.text-align]=\"justify\">\r\n {{dataAccessor(data, name)}}\r\n </td>\r\n </ng-container>\r\n `,\r\n encapsulation: ViewEncapsulation.None,\r\n // Change detection is intentionally not set to OnPush. This component's template will be provided\r\n // to the table to be inserted into its view. This is problematic when change detection runs since\r\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\r\n // means the template in the table's view will not have the updated value (and in fact will cause\r\n // an ExpressionChangedAfterItHasBeenCheckedError).\r\n // tslint:disable-next-line:validate-decorators\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n imports: [CuteColumnDef, CuteHeaderCellDef, CuteHeaderCell, CuteCellDef, CuteCell]\r\n})\r\nexport class CuteTextColumn<T> extends CdkTextColumn<T> {}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {NgModule, Type} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {\r\n CuteCell,\r\n CuteCellDef,\r\n CuteColumnDef,\r\n CuteFooterCell,\r\n CuteFooterCellDef,\r\n CuteHeaderCell,\r\n CuteHeaderCellDef\r\n} from \"./cell\";\r\nimport {\r\n CuteFooterRow,\r\n CuteFooterRowDef,\r\n CuteHeaderRow,\r\n CuteHeaderRowDef,\r\n CuteNoDataRow,\r\n CuteRow,\r\n CuteRowDef\r\n} from \"./row\";\r\nimport {CuteTextColumn} from \"./text-column\";\r\nimport {CuteRecycleRows, CuteTable} from \"./table\";\r\nimport {CdkTableModule} from \"@angular/cdk/table\";\r\n\r\nconst TYPES: (any | Type<any>)[] = [\r\n // Table\r\n CuteTable,\r\n CuteRecycleRows,\r\n\r\n // Template defs\r\n CuteHeaderCellDef,\r\n CuteHeaderRowDef,\r\n CuteColumnDef,\r\n CuteCellDef,\r\n CuteRowDef,\r\n CuteFooterCellDef,\r\n CuteFooterRowDef,\r\n\r\n // Cell directives\r\n CuteHeaderCell,\r\n CuteCell,\r\n CuteFooterCell,\r\n\r\n // Row directives\r\n CuteHeaderRow,\r\n CuteRow,\r\n CuteFooterRow,\r\n CuteNoDataRow,\r\n\r\n CuteTextColumn,\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, CdkTableModule, ...TYPES],\r\n exports: TYPES,\r\n declarations: [],\r\n})\r\nexport class CuteTableModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["observableOf"],"mappings":"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"}
1
+ {"version":3,"file":"cute-widgets-base-table.mjs","sources":["../../../../projects/cute-widgets/base/table/src/table.ts","../../../../projects/cute-widgets/base/table/src/cell.ts","../../../../projects/cute-widgets/base/table/src/row.ts","../../../../projects/cute-widgets/base/table/src/table-data-source.ts","../../../../projects/cute-widgets/base/table/src/text-column.ts","../../../../projects/cute-widgets/base/table/src/table.module.ts","../../../../projects/cute-widgets/base/table/cute-widgets-base-table.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n Directive, HostBinding, InjectionToken, Input,\r\n OnInit,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n CdkTable,\r\n CDK_TABLE,\r\n STICKY_POSITIONING_LISTENER,\r\n HeaderRowOutlet, DataRowOutlet, NoDataRowOutlet, FooterRowOutlet,\r\n} from '@angular/cdk/table';\r\nimport {\r\n _DisposeViewRepeaterStrategy,\r\n _RecycleViewRepeaterStrategy,\r\n _VIEW_REPEATER_STRATEGY,\r\n} from '@angular/cdk/collections';\r\nimport {ThemeColor} from \"@cute-widgets/base/core\";\r\n\r\n//++ CWT\r\n/**\r\n * Used to provide a table to some of the subcomponents without causing a circular dependency.\r\n */\r\nexport const CUTE_TABLE = new InjectionToken<CuteTable<any>>(\"CUTE_TABLE\");\r\n\r\n/** Type of table borders: `all` - on all sides of the table and cells, `rows` - line-divider of table rows, `none` - without borders. */\r\nexport type TableBorders = \"all\" | \"none\" | \"rows\";\r\n\r\n/**\r\n * Enables the recycle view repeater strategy, which reduces rendering latency. Not compatible with\r\n * tables that animate rows.\r\n *\r\n * @deprecated This directive is a no-op and will be removed.\r\n * @breaking-change 23.0.0\r\n */\r\n@Directive({\r\n selector: 'cute-table[recycleRows], table[cute-table][recycleRows]',\r\n providers: [{provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy}],\r\n standalone: true,\r\n})\r\nexport class CuteRecycleRows {}\r\n\r\n/**\r\n * @inheritDoc\r\n */\r\n@Component({\r\n selector: 'cute-table, table[cute-table]',\r\n exportAs: 'cuteTable',\r\n // Note that according to MDN, the `caption` element has to be projected as the **first**\r\n // element in the table. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption\r\n // We can't reuse `CDK_TABLE_TEMPLATE` because it's incompatible with local compilation mode.\r\n template: `\r\n <ng-content select=\"caption\"/>\r\n <ng-content select=\"colgroup, col\"/>\r\n\r\n <!--\r\n Unprojected content throws a hydration error so we need this to capture it.\r\n It gets removed on the client so it doesn't affect the layout.\r\n -->\r\n @if (_isServer) {\r\n <ng-content/>\r\n }\r\n\r\n @if (_isNativeHtmlTable) {\r\n <thead role=\"rowgroup\">\r\n <ng-container headerRowOutlet/>\r\n </thead>\r\n <tbody class=\"cute-data-table__content\" [class.table-group-divider]=\"divideGroups\" role=\"rowgroup\">\r\n <ng-container rowOutlet/>\r\n <ng-container noDataRowOutlet/>\r\n </tbody>\r\n <tfoot role=\"rowgroup\" [class.table-group-divider]=\"divideGroups\">\r\n <ng-container footerRowOutlet/>\r\n </tfoot>\r\n } @else {\r\n <ng-container headerRowOutlet/>\r\n <ng-container rowOutlet/>\r\n <ng-container noDataRowOutlet/>\r\n <ng-container footerRowOutlet/>\r\n }\r\n `,\r\n styleUrls: ['./table.scss'],\r\n host: {\r\n 'class': 'cute-table table',\r\n '[class.cute-table-fixed-layout]': 'fixedLayout',\r\n '[class.table-hover]': 'hoveredRows',\r\n '[class.table-striped]': 'stripedRows',\r\n '[class.table-striped-columns]': 'stripedColumns',\r\n '[class.table-bordered]': 'displayBorders==\"all\"',\r\n '[class.table-borderless]': 'displayBorders==\"none\"',\r\n '[class.table-sm]': 'compact',\r\n '[class.cute-table-vertical-head]': 'verticalHeads',\r\n '[style.--bs-table-border-color]': 'borderColor ? \"var(--bs-\"+borderColor+\")\" : undefined',\r\n },\r\n providers: [\r\n { provide: CdkTable, useExisting: CuteTable },\r\n { provide: CDK_TABLE, useExisting: CuteTable },\r\n { provide: CUTE_TABLE, useExisting: CuteTable },\r\n // TODO(michaeljamesparsons) Abstract the view repeater strategy to a directive API so this code\r\n // is only included in the build if used.\r\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\r\n // Prevent nested tables from seeing this table's StickyPositioningListener.\r\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\r\n // tslint:disable-next-line:validate-decorators\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n imports: [HeaderRowOutlet, DataRowOutlet, NoDataRowOutlet, FooterRowOutlet]\r\n})\r\nexport class CuteTable<T> extends CdkTable<T> implements OnInit {\r\n /** Overrides the sticky CSS class set by the `CdkTable`. */\r\n protected override stickyCssClass = 'cute-table-sticky';\r\n\r\n /** Overrides the need to add position: sticky on every sticky cell element in `CdkTable`. */\r\n protected override needsPositionStickyOnElement = false;\r\n\r\n @HostBinding(\"class\")\r\n get classList(): string {\r\n let classes = \"\";\r\n if (this.color) {\r\n classes += \" table-\"+this.color;\r\n }\r\n if (this.borderColor) {\r\n classes += \" border-\"+this.borderColor;\r\n }\r\n return classes.trim();\r\n }\r\n\r\n /** Theme color for all table cells. */\r\n @Input() color: ThemeColor | undefined;\r\n\r\n /** Theme color for cell borders. */\r\n @Input() borderColor: ThemeColor | undefined;\r\n\r\n /** Adds zebra-striping to any table row within the `<tbody>`. */\r\n @Input({transform: booleanAttribute}) stripedRows: boolean = false;\r\n\r\n /** Adds zebra-striping to any table column. */\r\n @Input({transform: booleanAttribute}) stripedColumns: boolean = false;\r\n\r\n /** Enables a hover state on table rows within a `<tbody>`. */\r\n @Input({transform: booleanAttribute}) hoveredRows: boolean = false;\r\n\r\n /** Makes a `<table>` more compact. */\r\n @Input({transform: booleanAttribute})\r\n get compact(): boolean { return this._compact; }\r\n set compact(value: boolean) {\r\n if (value !== this._compact) {\r\n this._compact = value;\r\n this.updateStickyStyles();\r\n }\r\n }\r\n private _compact: boolean = false;\r\n\r\n /** What table borders to display. */\r\n @Input() displayBorders: TableBorders = \"rows\";\r\n\r\n /**\r\n * Adds a thicker border, darker between table groups — `<thead>`, `<tbody>`, and `<tfoot>`.\r\n * @experimental\r\n */\r\n @Input({transform: booleanAttribute}) divideGroups: boolean = false;\r\n\r\n /**\r\n * Whether to display `th` cells vertically.\r\n * @experimental\r\n */\r\n @Input({transform: booleanAttribute})\r\n get verticalHeads():boolean { return this._verticalHeads; }\r\n set verticalHeads(value: boolean) {\r\n if (value !== this._verticalHeads) {\r\n this._verticalHeads = value;\r\n this.updateStickyStyles();\r\n }\r\n }\r\n private _verticalHeads: boolean = false;\r\n\r\n protected updateStickyStyles() {\r\n this.updateStickyHeaderRowStyles();\r\n this.updateStickyFooterRowStyles();\r\n this.updateStickyColumnStyles();\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {booleanAttribute, Directive, Input} from '@angular/core';\r\nimport {\r\n CdkCell,\r\n CdkCellDef,\r\n CdkColumnDef,\r\n CdkFooterCell,\r\n CdkFooterCellDef,\r\n CdkHeaderCell,\r\n CdkHeaderCellDef,\r\n} from '@angular/cdk/table';\r\nimport {ThemeColor} from \"@cute-widgets/base/core\";\r\n\r\n/**\r\n * Cell definition for the `cute-table`.\r\n * Captures the template of a column's data row cell as well as cell-specific properties.\r\n */\r\n@Directive({\r\n selector: '[cuteCellDef]',\r\n providers: [{provide: CdkCellDef, useExisting: CuteCellDef}],\r\n})\r\nexport class CuteCellDef extends CdkCellDef {}\r\n\r\n/**\r\n * Header cell definition for the `cute-table`.\r\n * Captures the template of a column's header cell and as well as cell-specific properties.\r\n */\r\n@Directive({\r\n selector: '[cuteHeaderCellDef]',\r\n providers: [{provide: CdkHeaderCellDef, useExisting: CuteHeaderCellDef}],\r\n})\r\nexport class CuteHeaderCellDef extends CdkHeaderCellDef {}\r\n\r\n/**\r\n * Footer cell definition for the `cute-table`.\r\n * Captures the template of a column's footer cell and as well as cell-specific properties.\r\n */\r\n@Directive({\r\n selector: '[cuteFooterCellDef]',\r\n providers: [{provide: CdkFooterCellDef, useExisting: CuteFooterCellDef}],\r\n})\r\nexport class CuteFooterCellDef extends CdkFooterCellDef {}\r\n\r\n/**\r\n * Column definition for the `cute-table`.\r\n * Defines a set of cells available for a table column.\r\n */\r\n@Directive({\r\n selector: '[cuteColumnDef]',\r\n inputs: [{name: 'sticky', transform: booleanAttribute}],\r\n providers: [\r\n {provide: CdkColumnDef, useExisting: CuteColumnDef},\r\n {provide: 'CUTE_SORT_HEADER_COLUMN_DEF', useExisting: CuteColumnDef},\r\n ],\r\n standalone: true,\r\n})\r\nexport class CuteColumnDef extends CdkColumnDef {\r\n /** Unique name for this column. */\r\n @Input('cuteColumnDef')\r\n override get name(): string { return this._name; }\r\n override set name(name: string) {this._setNameInput(name);}\r\n\r\n /**\r\n * Add \"cute-column-\" prefix in addition to \"cdk-column-\" prefix.\r\n * In the future, this will only add \"cute-column-\" and columnCssClassName\r\n * will change from type string[] to string.\r\n */\r\n protected override _updateColumnCssClassName() {\r\n super._updateColumnCssClassName();\r\n this._columnCssClassName!.push(`cute-column-${this.cssClassFriendlyName}`);\r\n }\r\n}\r\n\r\n/** Header cell template container that adds the right classes and role. */\r\n@Directive({\r\n selector: 'cute-header-cell, th[cute-header-cell]',\r\n host: {\r\n 'class': 'cute-header-cell',\r\n '[class]': 'color ? \"table-\"+color : \"\"',\r\n 'role': 'columnheader',\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteHeaderCell extends CdkHeaderCell {\r\n\r\n /* Header cell's theme color. */\r\n @Input() color: ThemeColor | undefined;\r\n\r\n}\r\n\r\n/** Footer cell template container that adds the right classes and role. */\r\n@Directive({\r\n selector: 'cute-footer-cell, td[cute-footer-cell]',\r\n host: {\r\n 'class': 'cute-footer-cell',\r\n '[class]': 'color ? \"table-\"+color : \"\"',\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteFooterCell extends CdkFooterCell {\r\n\r\n /* Footer cell's theme color */\r\n @Input() color: ThemeColor | undefined;\r\n\r\n}\r\n\r\n/** Cell template container that adds the right classes and role. */\r\n@Directive({\r\n selector: 'cute-cell, td[cute-cell]',\r\n host: {\r\n 'class': 'cute-cell',\r\n '[class.table-active]': 'active',\r\n '[class]': 'color ? \"table-\"+color : \"\"',\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteCell extends CdkCell {\r\n\r\n /* Body cell's theme color */\r\n @Input() color: ThemeColor | undefined;\r\n\r\n /* Body cell's activity state */\r\n @Input({transform: booleanAttribute})\r\n active: boolean = false;\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n CdkFooterRow,\r\n CdkFooterRowDef,\r\n CdkHeaderRow,\r\n CdkHeaderRowDef,\r\n CdkRow,\r\n CdkRowDef,\r\n CdkNoDataRow,\r\n CdkCellOutlet,\r\n} from '@angular/cdk/table';\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n Directive,\r\n Input,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport {ThemeColor} from \"@cute-widgets/base/core\";\r\n\r\n// We can't reuse `CDK_ROW_TEMPLATE` because it's incompatible with local compilation mode.\r\nconst ROW_TEMPLATE = `<ng-container cdkCellOutlet></ng-container>`;\r\n\r\n/**\r\n * Header row definition for the `cute-table`.\r\n * Captures the header row's template and other header properties such as the columns to display.\r\n */\r\n@Directive({\r\n selector: '[cuteHeaderRowDef]',\r\n providers: [{provide: CdkHeaderRowDef, useExisting: CuteHeaderRowDef}],\r\n inputs: [\r\n {name: 'columns', alias: 'cuteHeaderRowDef'},\r\n {name: 'sticky', alias: 'cuteHeaderRowDefSticky', transform: booleanAttribute},\r\n ],\r\n})\r\nexport class CuteHeaderRowDef extends CdkHeaderRowDef {}\r\n\r\n/**\r\n * Footer row definition for the `cute-table`.\r\n * Captures the footer row's template and other footer properties such as the columns to display.\r\n */\r\n@Directive({\r\n selector: '[cuteFooterRowDef]',\r\n providers: [{provide: CdkFooterRowDef, useExisting: CuteFooterRowDef}],\r\n inputs: [\r\n {name: 'columns', alias: 'cuteFooterRowDef'},\r\n {name: 'sticky', alias: 'cuteFooterRowDefSticky', transform: booleanAttribute},\r\n ],\r\n})\r\nexport class CuteFooterRowDef extends CdkFooterRowDef {}\r\n\r\n/**\r\n * Data row definition for the `cute-table`.\r\n * Captures the data row's template and other properties such as the columns to display and\r\n * a when predicate that describes when this row should be used.\r\n */\r\n@Directive({\r\n selector: '[cuteRowDef]',\r\n providers: [{provide: CdkRowDef, useExisting: CuteRowDef}],\r\n inputs: ['columns: cuteRowDefColumns', 'when: cuteRowDefWhen'],\r\n})\r\nexport class CuteRowDef<T> extends CdkRowDef<T> {}\r\n\r\n/** Header template container that contains the cell outlet. Adds the right class and role. */\r\n@Component({\r\n selector: 'cute-header-row, tr[cute-header-row]',\r\n template: ROW_TEMPLATE,\r\n host: {\r\n 'class': 'cute-header-row',\r\n '[class]': 'color ? \"table-\"+color : \"\"',\r\n 'role': 'row',\r\n },\r\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\r\n // tslint:disable-next-line:validate-decorators\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n encapsulation: ViewEncapsulation.None,\r\n exportAs: 'cuteHeaderRow',\r\n providers: [{ provide: CdkHeaderRow, useExisting: CuteHeaderRow }],\r\n imports: [CdkCellOutlet]\r\n})\r\nexport class CuteHeaderRow extends CdkHeaderRow {\r\n\r\n /* Cells' default color in the `<thead>` table section. */\r\n @Input() color: ThemeColor | undefined;\r\n\r\n}\r\n\r\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\r\n@Component({\r\n selector: 'cute-footer-row, tr[cute-footer-row]',\r\n template: ROW_TEMPLATE,\r\n host: {\r\n 'class': 'cute-footer-row',\r\n '[class]': 'color ? \"table-\"+color : \"\"',\r\n 'role': 'row',\r\n },\r\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\r\n // tslint:disable-next-line:validate-decorators\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n encapsulation: ViewEncapsulation.None,\r\n exportAs: 'cuteFooterRow',\r\n providers: [{ provide: CdkFooterRow, useExisting: CuteFooterRow }],\r\n imports: [CdkCellOutlet]\r\n})\r\nexport class CuteFooterRow extends CdkFooterRow {\r\n\r\n /* Cells' default color in the `<tfoot>` table section. */\r\n @Input() color: ThemeColor | undefined;\r\n\r\n}\r\n\r\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\r\n@Component({\r\n selector: 'cute-row, tr[cute-row]',\r\n template: ROW_TEMPLATE,\r\n host: {\r\n 'class': 'cute-row',\r\n '[class.table-active]': 'active',\r\n '[class]': 'color ? \"table-\"+color : \"\"',\r\n 'role': 'row',\r\n },\r\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\r\n // tslint:disable-next-line:validate-decorators\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n encapsulation: ViewEncapsulation.None,\r\n exportAs: 'cuteRow',\r\n providers: [{ provide: CdkRow, useExisting: CuteRow }],\r\n imports: [CdkCellOutlet]\r\n})\r\nexport class CuteRow extends CdkRow {\r\n\r\n /* Cells' default color in the `<tbody>` table section */\r\n @Input() color: ThemeColor | undefined;\r\n\r\n /* Whether the row has an active state */\r\n @Input({transform: booleanAttribute})\r\n active: boolean = false;\r\n\r\n}\r\n\r\n/** Row that can be used to display a message when no data is shown in the table. */\r\n@Directive({\r\n selector: 'ng-template[cuteNoDataRow]',\r\n providers: [{provide: CdkNoDataRow, useExisting: CuteNoDataRow}],\r\n standalone: true,\r\n})\r\nexport class CuteNoDataRow extends CdkNoDataRow {\r\n override _cellSelector = 'td, cute-cell, [cute-cell], .cute-cell';\r\n\r\n constructor() {\r\n super();\r\n this._contentClassNames.push('cute-no-data-row', 'cute-row');\r\n this._cellClassNames.push('cute-cell', 'cute-no-data-cell');\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n BehaviorSubject,\r\n combineLatest,\r\n merge,\r\n Observable,\r\n of as observableOf,\r\n Subject,\r\n Subscription,\r\n} from 'rxjs';\r\nimport {DataSource} from '@angular/cdk/collections';\r\nimport {_isNumberValue} from '@angular/cdk/coercion';\r\nimport {CuteSort, Sort} from '@cute-widgets/base/sort';\r\nimport {CutePaginator, PageEvent} from '@cute-widgets/base/paginator';\r\nimport {map} from 'rxjs/operators';\r\n\r\n/**\r\n * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to\r\n * flaky browser support and the value not being defined in Closure's typings.\r\n */\r\nconst MAX_SAFE_INTEGER = 9007199254740991;\r\n\r\n/**\r\n * Data source that accepts a client-side data array and includes native support of filtering,\r\n * sorting (using `CuteSort`), and pagination (using `CutePaginator`).\r\n *\r\n * Allows for sort customization by overriding `sortingDataAccessor`, which defines how data\r\n * properties are accessed. It also allows for filter customization by overriding `filterPredicate`,\r\n * which defines how row data is converted to a string for filter matching.\r\n *\r\n * **Note:** This class is meant to be a simple data source to help you get started. As such,\r\n * it isn't equipped to handle some more advanced cases like robust i18n support or server-side\r\n * interactions. If your app needs to support more advanced use cases, consider implementing your\r\n * own `DataSource`.\r\n */\r\nexport class CuteTableDataSource<T, P extends CutePaginator = CutePaginator> extends DataSource<T> {\r\n /** Stream that emits when a new data array is set on the data source. */\r\n private readonly _data: BehaviorSubject<T[]>;\r\n\r\n /** Stream emitting render data to the table (depends on ordered data changes). */\r\n private readonly _renderData = new BehaviorSubject<T[]>([]);\r\n\r\n /** Stream that emits when a new filter string is set on the data source. */\r\n private readonly _filter = new BehaviorSubject<string>('');\r\n\r\n /** Used to react to internal changes of the paginator that are made by the data source itself. */\r\n private readonly _internalPageChanges = new Subject<void>();\r\n\r\n /**\r\n * Subscription to the changes that should trigger an update to the table's rendered rows, such\r\n * as filtering, sorting, pagination, or base data changes.\r\n */\r\n private _renderChangesSubscription: Subscription | null = null;\r\n\r\n /**\r\n * The filtered set of data that has been matched by the filter string, or all the data if there\r\n * is no filter. Useful for knowing the set of data the table represents.\r\n * For example, a 'selectAll()' function would likely want to select the set of filtered data\r\n * shown to the user rather than all the data.\r\n */\r\n filteredData: T[] = [];\r\n\r\n /** Array of data that should be rendered by the table, where each object represents one row. */\r\n get data() { return this._data.value; }\r\n set data(data: T[]) {\r\n data = Array.isArray(data) ? data : [];\r\n this._data.next(data);\r\n // Normally the `filteredData` is updated by the re-render\r\n // subscription, but that won't happen if it's inactive.\r\n if (!this._renderChangesSubscription) {\r\n this._filterData(data);\r\n }\r\n }\r\n\r\n /**\r\n * Filter term that should be used to filter out objects from the data array. To override how\r\n * data objects match to this filter string, provide a custom function for filterPredicate.\r\n */\r\n get filter(): string { return this._filter.value; }\r\n set filter(filter: string) {\r\n this._filter.next(filter);\r\n // Normally the `filteredData` is updated by the re-render\r\n // subscription, but that won't happen if it's inactive.\r\n if (!this._renderChangesSubscription) {\r\n this._filterData(this.data);\r\n }\r\n }\r\n\r\n /**\r\n * Instance of the `CuteSort` directive used by the table to control its sorting. Sort changes\r\n * emitted by the `CuteSort` will trigger an update to the table's rendered data.\r\n */\r\n get sort(): CuteSort | null { return this._sort; }\r\n set sort(sort: CuteSort | null) {\r\n this._sort = sort;\r\n this._updateChangeSubscription();\r\n }\r\n private _sort: CuteSort | null = null;\r\n\r\n /**\r\n * Instance of the paginator component used by the table to control what page of the data is\r\n * displayed. Page changes emitted by the paginator will trigger an update to the\r\n * table's rendered data.\r\n *\r\n * Note that the data source uses the paginator's properties to calculate which page of data\r\n * should be displayed. If the paginator receives its properties as template inputs,\r\n * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\r\n * initialized before assigning it to this data source.\r\n */\r\n get paginator(): P | null { return this._paginator; }\r\n set paginator(paginator: P | null) {\r\n this._paginator = paginator;\r\n this._updateChangeSubscription();\r\n }\r\n private _paginator: P | null = null;\r\n\r\n /**\r\n * Data accessor function that is used for accessing data properties for sorting through\r\n * the default sortData function.\r\n * This default function assumes that the sort header IDs (which defaults to the column name)\r\n * matches the data's properties (e.g., column Xyz represents data['Xyz']).\r\n * May be set to a custom function for different behavior.\r\n * @param data Data object that is being accessed.\r\n * @param sortHeaderId The name of the column that represents the data.\r\n */\r\n sortingDataAccessor = (data: T, sortHeaderId: string): string | number => {\r\n const value = (data as unknown as Record<string, any>)[sortHeaderId];\r\n\r\n if (_isNumberValue(value)) {\r\n const numberValue = Number(value);\r\n\r\n // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we\r\n // leave them as strings. For more info: https://goo.gl/y5vbSg\r\n return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n // CWT: Attention! We change the second parameter's type from CuteSort to Sort interface!!!\r\n /**\r\n * Gets a sorted copy of the data array based on the state of the `CuteSort`. Called\r\n * after changes are made to the filtered data or when sort changes are emitted from `CuteSort`.\r\n * By default, the function retrieves the active sort and its direction and compares data\r\n * by retrieving data using the {@link sortingDataAccessor}. May be overridden for a custom implementation\r\n * of data ordering.\r\n * @param data The array of data that should be sorted.\r\n * @param sort The connected `CuteSort` that holds the current sort state.\r\n */\r\n sortData = (data: T[], sort: Sort): T[] => {\r\n const active = sort.active;\r\n const direction = sort.direction;\r\n if (!active || direction == '') {\r\n return data;\r\n }\r\n\r\n return data.sort((a, b) => {\r\n let valueA = this.sortingDataAccessor(a, active);\r\n let valueB = this.sortingDataAccessor(b, active);\r\n\r\n // If there are data in the column that can be converted to a number,\r\n // it must be ensured that the rest of the data\r\n // is of the same type so as not to order incorrectly.\r\n const valueAType = typeof valueA;\r\n const valueBType = typeof valueB;\r\n\r\n if (valueAType !== valueBType) {\r\n if (valueAType === 'number') {\r\n valueA += '';\r\n }\r\n if (valueBType === 'number') {\r\n valueB += '';\r\n }\r\n }\r\n\r\n // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\r\n // one value exists while the other doesn't. In this case, existing value should come last.\r\n // This avoids inconsistent results when comparing values to undefined/null.\r\n // If neither value exists, return 0 (equal).\r\n let comparatorResult = 0;\r\n if (valueA != null && valueB != null) {\r\n // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\r\n if (valueA > valueB) {\r\n comparatorResult = 1;\r\n } else if (valueA < valueB) {\r\n comparatorResult = -1;\r\n }\r\n } else if (valueA != null) {\r\n comparatorResult = 1;\r\n } else if (valueB != null) {\r\n comparatorResult = -1;\r\n }\r\n\r\n return comparatorResult * (direction == 'asc' ? 1 : -1);\r\n });\r\n }\r\n\r\n /**\r\n * Checks if a data object matches the data source's filter string. By default, each data object\r\n * is converted to a string of its properties and returns true if the filter has\r\n * at least one occurrence in that string. By default, the filter string has its whitespace\r\n * trimmed and the match is case-insensitive. May be overridden for a custom implementation of\r\n * filter matching.\r\n * @param data Data object used to check against the filter.\r\n * @param filter Filter string that has been set on the data source.\r\n * @returns Whether the filter matches against the data\r\n */\r\n filterPredicate = (data: T, filter: string): boolean => {\r\n // Transform the data into a lowercase string of all property values.\r\n const dataStr = Object.keys(data as unknown as Record<string, any>)\r\n .reduce((currentTerm: string, key: string) => {\r\n // Use an obscure Unicode character to delimit the words in the concatenated string.\r\n // This avoids matches where the values of two columns combined will match the user's query\r\n // (e.g. `Flute` and `Stop` will match `Test`). The character is intended to be something\r\n // that has a very low chance of being typed in by somebody in a text field. This one in\r\n // particular is \"White up-pointing triangle with dot\" from\r\n // https://en.wikipedia.org/wiki/List_of_Unicode_characters\r\n return currentTerm + (data as unknown as Record<string, any>)[key] + '◬';\r\n }, '')\r\n .toLowerCase();\r\n\r\n // Transform the filter by converting it to lowercase and removing whitespace.\r\n const transformedFilter = filter.trim().toLowerCase();\r\n\r\n return dataStr.indexOf(transformedFilter) != -1;\r\n };\r\n\r\n constructor(initialData: T[] = []) {\r\n super();\r\n this._data = new BehaviorSubject<T[]>(initialData);\r\n this._updateChangeSubscription();\r\n }\r\n\r\n /**\r\n * Subscribe to changes that should trigger an update to the table's rendered rows. When the\r\n * changes occur, process the current state of the filter, sort, and pagination along with\r\n * the provided base data and send it to the table for rendering.\r\n */\r\n protected _updateChangeSubscription() {\r\n // Sorting and/or pagination should be watched if sort and/or paginator are provided.\r\n // The events should emit whenever the component emits a change or initializes, or if no\r\n // component is provided, a stream with just a null event should be provided.\r\n // The `sortChange` and `pageChange` acts as a signal to the `combineLatests` below so that the\r\n // pipeline can progress to the next step. Note that the value from these streams are not used,\r\n // they purely act as a signal to progress in the pipeline.\r\n const sortChange: Observable<Sort | null | void> = this._sort\r\n ? (merge(this._sort.sortChange, this._sort.initialized$) as Observable<Sort | void>)\r\n : observableOf(null);\r\n const pageChange: Observable<PageEvent | null | void> = this._paginator\r\n ? (merge(\r\n this._paginator.page,\r\n this._internalPageChanges,\r\n this._paginator.initialized$,\r\n ) as Observable<PageEvent | void>)\r\n : observableOf(null);\r\n const dataStream = this._data;\r\n // Watch for base data or filter changes to provide a filtered set of data.\r\n const filteredData = combineLatest([dataStream, this._filter]).pipe(\r\n map(([data]) => this._filterData(data)),\r\n );\r\n // Watch for filtered data or sort changes to provide an ordered set of data.\r\n const orderedData = combineLatest([filteredData, sortChange]).pipe(\r\n map(([data]) => this._orderData(data)),\r\n );\r\n // Watch for ordered data or page changes to provide a paged set of data.\r\n const paginatedData = combineLatest([orderedData, pageChange]).pipe(\r\n map(([data]) => this._pageData(data)),\r\n );\r\n // Watched for paged data changes and send the result to the table to render.\r\n this._renderChangesSubscription?.unsubscribe();\r\n this._renderChangesSubscription = paginatedData.subscribe(data => this._renderData.next(data));\r\n }\r\n\r\n /**\r\n * Returns a filtered data array where each filter object contains the filter string within\r\n * the result of the {@link filterPredicate} function. If no filter is set, return the data array\r\n * as provided.\r\n */\r\n protected _filterData(data: T[]) {\r\n // If there is a filter string, filter out data that does not contain it.\r\n // Each data object is converted to a string using the function defined by filterPredicate.\r\n // May be overridden for customization.\r\n this.filteredData =\r\n this.filter == null || this.filter === ''\r\n ? data\r\n : data.filter(obj => this.filterPredicate(obj, this.filter));\r\n\r\n if (this.paginator) {\r\n this._updatePaginator(this.filteredData.length);\r\n }\r\n\r\n return this.filteredData;\r\n }\r\n\r\n /**\r\n * Returns a sorted copy of the data if `CuteSort` has a sort applied, otherwise just returns the\r\n * data array as provided. Uses the default data accessor for data lookup, unless a\r\n * sortDataAccessor function is defined.\r\n */\r\n protected _orderData(data: T[]): T[] {\r\n // If there is no active sort or direction, return the data without trying to sort.\r\n if (!this.sort) {\r\n return data;\r\n }\r\n\r\n return this.sortData(data.slice(), this.sort);\r\n }\r\n\r\n /**\r\n * Returns a paged slice of the provided data array according to the provided paginator's page\r\n * index and length. If there is no paginator provided, return the data array as provided.\r\n */\r\n protected _pageData(data: T[]): T[] {\r\n if (!this.paginator) {\r\n return data;\r\n }\r\n\r\n const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\r\n return data.slice(startIndex, startIndex + this.paginator.pageSize);\r\n }\r\n\r\n /**\r\n * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\r\n * index does not exceed the paginator's last page. Values are changed in a resolved promise to\r\n * guard against making property changes within a round of change detection.\r\n */\r\n protected _updatePaginator(filteredDataLength: number) {\r\n Promise.resolve().then(() => {\r\n const paginator = this.paginator;\r\n\r\n if (!paginator) {\r\n return;\r\n }\r\n\r\n paginator.length = filteredDataLength;\r\n\r\n // If the page index is set beyond the page, reduce it to the last page.\r\n if (paginator.pageIndex > 0) {\r\n const lastPageIndex = Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;\r\n const newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);\r\n\r\n if (newPageIndex !== paginator.pageIndex) {\r\n paginator.pageIndex = newPageIndex;\r\n\r\n // Since the paginator only emits after user-generated changes,\r\n // we need our own stream, so we know to should re-render the data.\r\n this._internalPageChanges.next();\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Used by the {@link CuteTable}. Called when it connects to the data source.\r\n */\r\n connect() {\r\n if (!this._renderChangesSubscription) {\r\n this._updateChangeSubscription();\r\n }\r\n return this._renderData;\r\n }\r\n\r\n /**\r\n * Used by the {@link CuteTable}. Called when it disconnects from the data source.\r\n */\r\n disconnect() {\r\n this._renderChangesSubscription?.unsubscribe();\r\n this._renderChangesSubscription = null;\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {CdkTextColumn} from '@angular/cdk/table';\r\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\r\nimport {CuteColumnDef, CuteHeaderCellDef, CuteHeaderCell, CuteCellDef, CuteCell} from './cell';\r\n\r\n/**\r\n * Column that simply shows text content for the header and row cells. Assumes that the table\r\n * is using the native table implementation (`<table>`).\r\n *\r\n * By default, the name of this column will be the header text and data property accessor.\r\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\r\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\r\n * input.\r\n */\r\n@Component({\r\n selector: 'cute-text-column',\r\n template: `\r\n <ng-container cuteColumnDef>\r\n <th cute-header-cell *cuteHeaderCellDef [style.text-align]=\"justify\">\r\n {{headerText}}\r\n </th>\r\n <td cute-cell *cuteCellDef=\"let data\" [style.text-align]=\"justify\">\r\n {{dataAccessor(data, name)}}\r\n </td>\r\n </ng-container>\r\n `,\r\n encapsulation: ViewEncapsulation.None,\r\n // Change detection is intentionally not set to OnPush. This component's template will be provided\r\n // to the table to be inserted into its view. This is problematic when change detection runs since\r\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\r\n // means the template in the table's view will not have the updated value (and in fact will cause\r\n // an ExpressionChangedAfterItHasBeenCheckedError).\r\n // tslint:disable-next-line:validate-decorators\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n imports: [CuteColumnDef, CuteHeaderCellDef, CuteHeaderCell, CuteCellDef, CuteCell]\r\n})\r\nexport class CuteTextColumn<T> extends CdkTextColumn<T> {}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {NgModule, Type} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {\r\n CuteCell,\r\n CuteCellDef,\r\n CuteColumnDef,\r\n CuteFooterCell,\r\n CuteFooterCellDef,\r\n CuteHeaderCell,\r\n CuteHeaderCellDef\r\n} from \"./cell\";\r\nimport {\r\n CuteFooterRow,\r\n CuteFooterRowDef,\r\n CuteHeaderRow,\r\n CuteHeaderRowDef,\r\n CuteNoDataRow,\r\n CuteRow,\r\n CuteRowDef\r\n} from \"./row\";\r\nimport {CuteTextColumn} from \"./text-column\";\r\nimport {CuteRecycleRows, CuteTable} from \"./table\";\r\nimport {CdkTableModule} from \"@angular/cdk/table\";\r\n\r\nconst TYPES: (any | Type<any>)[] = [\r\n // Table\r\n CuteTable,\r\n CuteRecycleRows,\r\n\r\n // Template defs\r\n CuteHeaderCellDef,\r\n CuteHeaderRowDef,\r\n CuteColumnDef,\r\n CuteCellDef,\r\n CuteRowDef,\r\n CuteFooterCellDef,\r\n CuteFooterRowDef,\r\n\r\n // Cell directives\r\n CuteHeaderCell,\r\n CuteCell,\r\n CuteFooterCell,\r\n\r\n // Row directives\r\n CuteHeaderRow,\r\n CuteRow,\r\n CuteFooterRow,\r\n CuteNoDataRow,\r\n\r\n CuteTextColumn,\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, CdkTableModule, ...TYPES],\r\n exports: TYPES,\r\n declarations: [],\r\n})\r\nexport class CuteTableModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["observableOf"],"mappings":"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"}