@eui/ecl 22.0.0-alpha.45 → 22.0.0-alpha.46

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 (159) hide show
  1. package/docs/changelog.html +38 -0
  2. package/docs/components/EclMenuItemComponent.html +203 -161
  3. package/docs/components/EclMenuMegaItemComponent.html +3 -3
  4. package/docs/interfaces/EclMenuItem.html +4 -4
  5. package/docs/js/search/search_index.js +2 -2
  6. package/docs/json/documentation.json +152 -124
  7. package/docs/llms.txt +13 -7
  8. package/docs/properties.html +1 -1
  9. package/fesm2022/eui-ecl-components-ecl-accordion.mjs.map +1 -1
  10. package/fesm2022/eui-ecl-components-ecl-add-to-calendar.mjs.map +1 -1
  11. package/fesm2022/eui-ecl-components-ecl-animated-numbers.mjs.map +1 -1
  12. package/fesm2022/eui-ecl-components-ecl-app.mjs.map +1 -1
  13. package/fesm2022/eui-ecl-components-ecl-banner.mjs.map +1 -1
  14. package/fesm2022/eui-ecl-components-ecl-blockquote.mjs.map +1 -1
  15. package/fesm2022/eui-ecl-components-ecl-breadcrumb.mjs.map +1 -1
  16. package/fesm2022/eui-ecl-components-ecl-button.mjs.map +1 -1
  17. package/fesm2022/eui-ecl-components-ecl-card.mjs.map +1 -1
  18. package/fesm2022/eui-ecl-components-ecl-carousel.mjs.map +1 -1
  19. package/fesm2022/eui-ecl-components-ecl-category-filter.mjs.map +1 -1
  20. package/fesm2022/eui-ecl-components-ecl-checkbox.mjs.map +1 -1
  21. package/fesm2022/eui-ecl-components-ecl-content-block.mjs.map +1 -1
  22. package/fesm2022/eui-ecl-components-ecl-content-item.mjs.map +1 -1
  23. package/fesm2022/eui-ecl-components-ecl-date-block.mjs.map +1 -1
  24. package/fesm2022/eui-ecl-components-ecl-date-picker.mjs.map +1 -1
  25. package/fesm2022/eui-ecl-components-ecl-divider.mjs.map +1 -1
  26. package/fesm2022/eui-ecl-components-ecl-expandable.mjs.map +1 -1
  27. package/fesm2022/eui-ecl-components-ecl-fact-figures.mjs.map +1 -1
  28. package/fesm2022/eui-ecl-components-ecl-featured.mjs.map +1 -1
  29. package/fesm2022/eui-ecl-components-ecl-feedback-message.mjs.map +1 -1
  30. package/fesm2022/eui-ecl-components-ecl-file-upload.mjs.map +1 -1
  31. package/fesm2022/eui-ecl-components-ecl-file.mjs.map +1 -1
  32. package/fesm2022/eui-ecl-components-ecl-form-group.mjs.map +1 -1
  33. package/fesm2022/eui-ecl-components-ecl-form-label.mjs.map +1 -1
  34. package/fesm2022/eui-ecl-components-ecl-gallery.mjs.map +1 -1
  35. package/fesm2022/eui-ecl-components-ecl-help-block.mjs.map +1 -1
  36. package/fesm2022/eui-ecl-components-ecl-highlight-box.mjs.map +1 -1
  37. package/fesm2022/eui-ecl-components-ecl-highlighted-search.mjs.map +1 -1
  38. package/fesm2022/eui-ecl-components-ecl-icon.mjs.map +1 -1
  39. package/fesm2022/eui-ecl-components-ecl-inpage-navigation.mjs.map +1 -1
  40. package/fesm2022/eui-ecl-components-ecl-label.mjs.map +1 -1
  41. package/fesm2022/eui-ecl-components-ecl-layout-wrapper.mjs.map +1 -1
  42. package/fesm2022/eui-ecl-components-ecl-link.mjs.map +1 -1
  43. package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs.map +1 -1
  44. package/fesm2022/eui-ecl-components-ecl-list.mjs.map +1 -1
  45. package/fesm2022/eui-ecl-components-ecl-loading-indicator.mjs.map +1 -1
  46. package/fesm2022/eui-ecl-components-ecl-media-container.mjs.map +1 -1
  47. package/fesm2022/eui-ecl-components-ecl-mega-menu.mjs.map +1 -1
  48. package/fesm2022/eui-ecl-components-ecl-menu.mjs +67 -49
  49. package/fesm2022/eui-ecl-components-ecl-menu.mjs.map +1 -1
  50. package/fesm2022/eui-ecl-components-ecl-modal.mjs.map +1 -1
  51. package/fesm2022/eui-ecl-components-ecl-multiselect.mjs.map +1 -1
  52. package/fesm2022/eui-ecl-components-ecl-navigation-list.mjs.map +1 -1
  53. package/fesm2022/eui-ecl-components-ecl-news-ticker.mjs.map +1 -1
  54. package/fesm2022/eui-ecl-components-ecl-notification.mjs.map +1 -1
  55. package/fesm2022/eui-ecl-components-ecl-page-header.mjs.map +1 -1
  56. package/fesm2022/eui-ecl-components-ecl-page-information.mjs.map +1 -1
  57. package/fesm2022/eui-ecl-components-ecl-page-summary.mjs.map +1 -1
  58. package/fesm2022/eui-ecl-components-ecl-pagination.mjs.map +1 -1
  59. package/fesm2022/eui-ecl-components-ecl-popover.mjs.map +1 -1
  60. package/fesm2022/eui-ecl-components-ecl-quiz.mjs.map +1 -1
  61. package/fesm2022/eui-ecl-components-ecl-radio.mjs.map +1 -1
  62. package/fesm2022/eui-ecl-components-ecl-range.mjs.map +1 -1
  63. package/fesm2022/eui-ecl-components-ecl-rating-field.mjs.map +1 -1
  64. package/fesm2022/eui-ecl-components-ecl-search-form.mjs.map +1 -1
  65. package/fesm2022/eui-ecl-components-ecl-select.mjs.map +1 -1
  66. package/fesm2022/eui-ecl-components-ecl-site-footer.mjs.map +1 -1
  67. package/fesm2022/eui-ecl-components-ecl-site-header.mjs.map +1 -1
  68. package/fesm2022/eui-ecl-components-ecl-slogan-ticker.mjs.map +1 -1
  69. package/fesm2022/eui-ecl-components-ecl-social-media-follow.mjs.map +1 -1
  70. package/fesm2022/eui-ecl-components-ecl-splash-page.mjs.map +1 -1
  71. package/fesm2022/eui-ecl-components-ecl-spotlight.mjs.map +1 -1
  72. package/fesm2022/eui-ecl-components-ecl-sticky-container.mjs.map +1 -1
  73. package/fesm2022/eui-ecl-components-ecl-story-card.mjs.map +1 -1
  74. package/fesm2022/eui-ecl-components-ecl-table.mjs.map +1 -1
  75. package/fesm2022/eui-ecl-components-ecl-tabs.mjs.map +1 -1
  76. package/fesm2022/eui-ecl-components-ecl-tag.mjs.map +1 -1
  77. package/fesm2022/eui-ecl-components-ecl-text-area.mjs.map +1 -1
  78. package/fesm2022/eui-ecl-components-ecl-text-input.mjs.map +1 -1
  79. package/fesm2022/eui-ecl-components-ecl-text-media.mjs.map +1 -1
  80. package/fesm2022/eui-ecl-components-ecl-timeline.mjs.map +1 -1
  81. package/fesm2022/eui-ecl-components-ecl-tooltip.mjs.map +1 -1
  82. package/fesm2022/eui-ecl-core.mjs.map +1 -1
  83. package/fesm2022/eui-ecl-shared.mjs.map +1 -1
  84. package/package.json +1 -1
  85. package/types/eui-ecl-components-ecl-accordion.d.ts.map +1 -1
  86. package/types/eui-ecl-components-ecl-add-to-calendar.d.ts.map +1 -1
  87. package/types/eui-ecl-components-ecl-animated-numbers.d.ts.map +1 -1
  88. package/types/eui-ecl-components-ecl-app.d.ts.map +1 -1
  89. package/types/eui-ecl-components-ecl-banner.d.ts.map +1 -1
  90. package/types/eui-ecl-components-ecl-blockquote.d.ts.map +1 -1
  91. package/types/eui-ecl-components-ecl-breadcrumb.d.ts.map +1 -1
  92. package/types/eui-ecl-components-ecl-button.d.ts.map +1 -1
  93. package/types/eui-ecl-components-ecl-card.d.ts.map +1 -1
  94. package/types/eui-ecl-components-ecl-carousel.d.ts.map +1 -1
  95. package/types/eui-ecl-components-ecl-category-filter.d.ts.map +1 -1
  96. package/types/eui-ecl-components-ecl-checkbox.d.ts.map +1 -1
  97. package/types/eui-ecl-components-ecl-content-block.d.ts.map +1 -1
  98. package/types/eui-ecl-components-ecl-content-item.d.ts.map +1 -1
  99. package/types/eui-ecl-components-ecl-date-block.d.ts.map +1 -1
  100. package/types/eui-ecl-components-ecl-date-picker.d.ts.map +1 -1
  101. package/types/eui-ecl-components-ecl-divider.d.ts.map +1 -1
  102. package/types/eui-ecl-components-ecl-expandable.d.ts.map +1 -1
  103. package/types/eui-ecl-components-ecl-fact-figures.d.ts.map +1 -1
  104. package/types/eui-ecl-components-ecl-featured.d.ts.map +1 -1
  105. package/types/eui-ecl-components-ecl-feedback-message.d.ts.map +1 -1
  106. package/types/eui-ecl-components-ecl-file-upload.d.ts.map +1 -1
  107. package/types/eui-ecl-components-ecl-file.d.ts.map +1 -1
  108. package/types/eui-ecl-components-ecl-form-group.d.ts.map +1 -1
  109. package/types/eui-ecl-components-ecl-form-label.d.ts.map +1 -1
  110. package/types/eui-ecl-components-ecl-gallery.d.ts.map +1 -1
  111. package/types/eui-ecl-components-ecl-help-block.d.ts.map +1 -1
  112. package/types/eui-ecl-components-ecl-highlight-box.d.ts.map +1 -1
  113. package/types/eui-ecl-components-ecl-highlighted-search.d.ts.map +1 -1
  114. package/types/eui-ecl-components-ecl-icon.d.ts.map +1 -1
  115. package/types/eui-ecl-components-ecl-inpage-navigation.d.ts.map +1 -1
  116. package/types/eui-ecl-components-ecl-label.d.ts.map +1 -1
  117. package/types/eui-ecl-components-ecl-layout-wrapper.d.ts.map +1 -1
  118. package/types/eui-ecl-components-ecl-link.d.ts.map +1 -1
  119. package/types/eui-ecl-components-ecl-list-illustration.d.ts.map +1 -1
  120. package/types/eui-ecl-components-ecl-list.d.ts.map +1 -1
  121. package/types/eui-ecl-components-ecl-loading-indicator.d.ts.map +1 -1
  122. package/types/eui-ecl-components-ecl-media-container.d.ts.map +1 -1
  123. package/types/eui-ecl-components-ecl-mega-menu.d.ts.map +1 -1
  124. package/types/eui-ecl-components-ecl-menu.d.ts +16 -11
  125. package/types/eui-ecl-components-ecl-menu.d.ts.map +1 -1
  126. package/types/eui-ecl-components-ecl-modal.d.ts.map +1 -1
  127. package/types/eui-ecl-components-ecl-multiselect.d.ts.map +1 -1
  128. package/types/eui-ecl-components-ecl-navigation-list.d.ts.map +1 -1
  129. package/types/eui-ecl-components-ecl-news-ticker.d.ts.map +1 -1
  130. package/types/eui-ecl-components-ecl-notification.d.ts.map +1 -1
  131. package/types/eui-ecl-components-ecl-page-header.d.ts.map +1 -1
  132. package/types/eui-ecl-components-ecl-page-information.d.ts.map +1 -1
  133. package/types/eui-ecl-components-ecl-page-summary.d.ts.map +1 -1
  134. package/types/eui-ecl-components-ecl-pagination.d.ts.map +1 -1
  135. package/types/eui-ecl-components-ecl-popover.d.ts.map +1 -1
  136. package/types/eui-ecl-components-ecl-quiz.d.ts.map +1 -1
  137. package/types/eui-ecl-components-ecl-radio.d.ts.map +1 -1
  138. package/types/eui-ecl-components-ecl-range.d.ts.map +1 -1
  139. package/types/eui-ecl-components-ecl-rating-field.d.ts.map +1 -1
  140. package/types/eui-ecl-components-ecl-search-form.d.ts.map +1 -1
  141. package/types/eui-ecl-components-ecl-select.d.ts.map +1 -1
  142. package/types/eui-ecl-components-ecl-site-footer.d.ts.map +1 -1
  143. package/types/eui-ecl-components-ecl-site-header.d.ts.map +1 -1
  144. package/types/eui-ecl-components-ecl-slogan-ticker.d.ts.map +1 -1
  145. package/types/eui-ecl-components-ecl-social-media-follow.d.ts.map +1 -1
  146. package/types/eui-ecl-components-ecl-splash-page.d.ts.map +1 -1
  147. package/types/eui-ecl-components-ecl-spotlight.d.ts.map +1 -1
  148. package/types/eui-ecl-components-ecl-sticky-container.d.ts.map +1 -1
  149. package/types/eui-ecl-components-ecl-story-card.d.ts.map +1 -1
  150. package/types/eui-ecl-components-ecl-table.d.ts.map +1 -1
  151. package/types/eui-ecl-components-ecl-tabs.d.ts.map +1 -1
  152. package/types/eui-ecl-components-ecl-tag.d.ts.map +1 -1
  153. package/types/eui-ecl-components-ecl-text-area.d.ts.map +1 -1
  154. package/types/eui-ecl-components-ecl-text-input.d.ts.map +1 -1
  155. package/types/eui-ecl-components-ecl-text-media.d.ts.map +1 -1
  156. package/types/eui-ecl-components-ecl-timeline.d.ts.map +1 -1
  157. package/types/eui-ecl-components-ecl-tooltip.d.ts.map +1 -1
  158. package/types/eui-ecl-core.d.ts.map +1 -1
  159. package/types/eui-ecl-shared.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"eui-ecl-components-ecl-story-card.mjs","sources":["../../components/ecl-story-card/ecl-story-card-directives.ts","../../components/ecl-story-card/ecl-story-card-item/ecl-story-card-item.component.ts","../../components/ecl-story-card/ecl-story-card-item/ecl-story-card-item.component.html","../../components/ecl-story-card/ecl-story-card-grid-details/ecl-story-card-grid-details.component.ts","../../components/ecl-story-card/ecl-story-card-grid-details/ecl-story-card-grid-details.component.html","../../components/ecl-story-card/ecl-story-card.component.ts","../../components/ecl-story-card/ecl-story-card.component.html","../../components/ecl-story-card/index.ts","../../components/ecl-story-card/eui-ecl-components-ecl-story-card.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive applied to the <ul> element that holds the story card items.\n * Adds the grid container class and tablist role.\n *\n * @example\n * <ul eclStoryCardList>...</ul>\n */\n@Directive({\n selector: 'ul[eclStoryCardList]',\n host: {\n role: 'tablist',\n '[class]': 'getCssClasses(\"ecl-story-card__grid-container\")',\n },\n})\nexport class EclStoryCardListDirective extends ECLBaseDirective {}\n\n/**\n * Directive applied to <picture> elements inside a story card item.\n * Adds the ECL picture classes.\n *\n * @example\n * <picture eclStoryCardPicture>\n * <source srcset=\"...\" media=\"(max-width: 50rem)\">\n * <img src=\"...\" alt=\"...\">\n * </picture>\n */\n@Directive({\n selector: 'picture[eclStoryCardPicture]',\n host: {\n '[class]': 'getCssClasses(\"ecl-picture ecl-story-card__picture\")',\n },\n})\nexport class EclStoryCardPictureDirective extends ECLBaseDirective {}\n\n/**\n * Directive applied to <a> elements inside story card grid details.\n * Adds the ECL link classes for the \"Read more\" link.\n *\n * @example\n * <a eclStoryCardLink href=\"/example\">Read more</a>\n */\n@Directive({\n selector: '[eclStoryCardLink]',\n host: {\n '[class]': 'getCssClasses(\"ecl-link ecl-link--standalone ecl-link--icon ecl-story-card__link\")',\n },\n})\nexport class EclStoryCardLinkDirective extends ECLBaseDirective {}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n ElementRef,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclStoryCardPictureDirective } from '../ecl-story-card-directives';\n\n/**\n * Component for a single story card grid item (tab).\n * Applied to <li> elements within the story card list.\n *\n * The user provides:\n * - `gridTitle`: the short label shown in the accordion tab button\n * - A <picture eclStoryCardPicture> as projected content\n *\n * The component internally renders the button with role=\"tab\",\n * the loading bar, and the title wrapper.\n *\n * @example\n * <li eclStoryCardItem gridTitle=\"why twelve\">\n * <picture eclStoryCardPicture>\n * <img src=\"example.jpg\" alt=\"Example\">\n * </picture>\n * </li>\n */\n@Component({\n selector: 'li[eclStoryCardItem]',\n templateUrl: './ecl-story-card-item.component.html',\n host: {\n role: 'presentation',\n '[class]': 'cssClasses()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EclStoryCardItemComponent extends ECLBaseDirective {\n\n /** Short title displayed in the accordion tab button. */\n gridTitle = input<string>('');\n\n /** Whether this item is currently expanded/selected. Set by parent. */\n isExpanded = signal(false);\n\n /** Whether autoplay is active (controls loading bar animation). Set by parent. */\n isAutoPlaying = signal(false);\n\n /** The index of this item within the list. Set by parent. */\n index = signal(0);\n\n /** The generated ID for the tab button. Set by parent. */\n tabId = signal('');\n\n /** The ID of the controlled tabpanel. Set by parent. */\n panelId = signal('');\n\n /** Emitted when the item's button is clicked. */\n itemClick = output<number>();\n\n /** Emitted when the loading bar animation ends. */\n loadingBarAnimationEnd = output<void>();\n\n /** Reference to the projected picture element for cloning into carousel. */\n pictureRef = contentChild(EclStoryCardPictureDirective, { read: ElementRef });\n\n readonly cssClasses = computed(() => [\n super.getCssClasses('ecl-story-card__grid-item'),\n this.isExpanded() ? 'ecl-story-card__grid-item--expanded' : '',\n ].join(' ').trim());\n\n protected onButtonClick(): void {\n this.itemClick.emit(this.index());\n }\n\n protected onAnimationEnd(): void {\n this.loadingBarAnimationEnd.emit();\n }\n}\n","<button class=\"ecl-story-card__grid-card\"\n type=\"button\"\n [attr.id]=\"tabId()\"\n role=\"tab\"\n [attr.aria-selected]=\"isExpanded()\"\n [attr.aria-controls]=\"panelId()\"\n (click)=\"onButtonClick()\">\n <div class=\"ecl-story-card__grid-image\">\n <ng-content select=\"picture[eclStoryCardPicture]\"></ng-content>\n <div class=\"ecl-story-card__grid-loading-bar\">\n <div class=\"ecl-story-card__grid-loading-bar-completion\"\n [class.is-paused]=\"!isExpanded() || !isAutoPlaying()\"\n (animationend)=\"onAnimationEnd()\">\n </div>\n </div>\n </div>\n <div class=\"ecl-story-card__grid-title-wrapper\">\n @if (gridTitle()) {\n <div class=\"ecl-story-card__grid-title\">{{ gridTitle() }}</div>\n }\n </div>\n</button>\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n ElementRef,\n input,\n signal,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclStoryCardLinkDirective } from '../ecl-story-card-directives';\n\n/**\n * Component for a story card grid details panel (tabpanel).\n * Contains the expanded content: title, description, and optional link.\n *\n * For the 'testimonial' variant, additional inputs are available:\n * - `author`: name of the author\n * - `role`: role/position of the author\n * - `source`: publication source\n *\n * @example\n * <div eclStoryCardGridDetails\n * eclTitle=\"The European flag...\"\n * description=\"It appears on official documents...\"\n * author=\"John Doe\"\n * role=\"Commissioner\"\n * source=\"Published on The Guardian\">\n * <a eclStoryCardLink eclLink variant=\"standalone\" href=\"/example\">\n * <span eclLinkLabel>Read more</span>\n * <ecl-icon icon=\"arrow-right\" size=\"xs\"></ecl-icon>\n * </a>\n * </div>\n */\n@Component({\n selector: '[eclStoryCardGridDetails]',\n templateUrl: './ecl-story-card-grid-details.component.html',\n host: {\n '[class]': 'getCssClasses(\"ecl-story-card__grid-details\")',\n '[attr.id]': 'panelId()',\n '[attr.role]': '\"tabpanel\"',\n '[attr.aria-labelledby]': 'tabId()',\n '[hidden]': '!isActive()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EclStoryCardGridDetailsComponent extends ECLBaseDirective {\n\n /** Title shown in the details panel. */\n eclTitle = input<string>('');\n\n /** Description shown in the details panel. */\n description = input<string>('');\n\n /** Author name (testimonial variant). */\n author = input<string>('');\n\n /** Author role/position (testimonial variant). */\n role = input<string>('');\n\n /** Publication source (testimonial variant). */\n source = input<string>('');\n\n /** Whether this panel is currently visible. Set by parent. */\n isActive = signal(false);\n\n /** Whether the parent is in testimonial variant. Set by parent. */\n isTestimonial = signal(false);\n\n /** Index of this panel. Set by parent. */\n index = signal(0);\n\n /** Generated panel ID. Set by parent. */\n panelId = signal('');\n\n /** ID of the controlling tab. Set by parent. */\n tabId = signal('');\n\n /** Reference to the projected link element for cloning into carousel. */\n linkRef = contentChild(EclStoryCardLinkDirective, { read: ElementRef });\n}\n","<article class=\"ecl-story-card__grid-details-content\">\n <div class=\"ecl-story-card__content\">\n @if (isTestimonial()) {\n <div class=\"ecl-story-card__content-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"45\" viewBox=\"0 0 22 45\" fill=\"none\">\n <path d=\"M0 0H22V23.3143L0 44.5714V0Z\" fill=\"currentColor\"/>\n </svg>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"45\" viewBox=\"0 0 22 45\" fill=\"none\">\n <path d=\"M0 0H22V23.3143L0 44.5714V0Z\" fill=\"currentColor\"/>\n </svg>\n </div>\n }\n @if (eclTitle()) {\n <div class=\"ecl-story-card__card-title\">{{ eclTitle() }}</div>\n }\n @if (author() || role() || source()) {\n <div class=\"ecl-story-card__testimonial\">\n @if (author()) {\n <span class=\"ecl-story-card__author\">{{ author() }}</span>\n }\n @if (role()) {\n <span class=\"ecl-story-card__role\">{{ role() }}</span>\n }\n @if (source()) {\n <cite class=\"ecl-story-card__source\">{{ source() }}</cite>\n }\n </div>\n }\n @if (description()) {\n <div class=\"ecl-story-card__card-description\">{{ description() }}</div>\n }\n <ng-content select=\"[eclStoryCardLink]\"></ng-content>\n </div>\n</article>\n","import {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n output,\n signal,\n untracked,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { EclIconComponent } from '@eui/ecl/components/ecl-icon';\nimport { ECLBaseDirective, EclRtlService } from '@eui/ecl/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { EmblaCarouselDirective } from 'embla-carousel-angular';\nimport { Subject, takeUntil } from 'rxjs';\nimport { outputToObservable, toSignal } from '@angular/core/rxjs-interop';\n\nimport { EclStoryCardItemComponent } from './ecl-story-card-item/ecl-story-card-item.component';\nimport { EclStoryCardGridDetailsComponent } from './ecl-story-card-grid-details/ecl-story-card-grid-details.component';\nimport { EmblaCarouselType, EmblaEventType } from 'embla-carousel';\n\nexport interface EclStoryCardSelectionEvent {\n index: number;\n}\n\n/**\n * ECL Story Card component.\n *\n * Renders a desktop grid accordion (user-authored) and automatically\n * generates a mobile carousel from the same data.\n *\n * Desktop: tablist/tab/tabpanel pattern with autoplay loading bar.\n * Mobile: Embla carousel with prev/next and dot navigation.\n *\n * @example\n * <section eclStoryCard isAutoplay [autoplayDelay]=\"10000\"\n * [eclTitle]=\"'Stories'\" [eclDescription]=\"'...'\">\n * <ul eclStoryCardList>\n * <li eclStoryCardItem gridTitle=\"why twelve\">\n * <picture eclStoryCardPicture>...</picture>\n * </li>\n * </ul>\n * <div eclStoryCardGridDetails eclTitle=\"...\" description=\"...\">\n * <a eclStoryCardLink href=\"...\">Read more</a>\n * </div>\n * </section>\n */\n@Component({\n selector: 'section[eclStoryCard]',\n templateUrl: './ecl-story-card.component.html',\n host: {\n '[id]': 'componentId()',\n '[class]': 'cssClasses()',\n '[attr.aria-labelledby]': 'titleId()',\n '[style.--ecl-story-card-slide-duration]': 'slideDuration()',\n },\n imports: [\n TranslatePipe,\n EclIconComponent,\n EmblaCarouselDirective,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EclStoryCardComponent extends ECLBaseDirective implements OnDestroy {\n\n /** Title displayed in the story card header. */\n eclTitle = input<string>('');\n\n /** Description displayed below the title. */\n eclDescription = input<string>('');\n\n /** Variant of the story card: 'story' (default) or 'testimonial'. */\n variant = input<'story' | 'testimonial'>('story');\n\n /** Whether autoplay is enabled for the grid accordion. */\n isAutoplay = input(false, { transform: booleanAttribute });\n\n /** Autoplay delay in milliseconds. Default: 10000. */\n autoplayDelay = input<number>(10000);\n\n /** ID for the component. All internal IDs derive from it. If not provided, auto-generated. */\n eclId = input<string>('', { alias: 'id' });\n\n /** Emitted when the active grid item changes. */\n selectionChange = output<EclStoryCardSelectionEvent>();\n\n private eclRtlService = inject(EclRtlService);\n\n private generatedId = `story-card-${crypto.randomUUID().slice(0, 8)}`;\n protected componentId = computed(() => this.eclId() || this.generatedId);\n protected titleId = computed(() => `${this.componentId()}-title`);\n\n /** Current RTL state, derived reactively from the RTL service. */\n private isRtl = toSignal(this.eclRtlService.currentRtlState$, { initialValue: false });\n\n /** Embla carousel options. Direction tracks the RTL state reactively. */\n protected emblaOptions = computed<{ loop: boolean; direction: 'ltr' | 'rtl' }>(() => ({\n loop: true,\n direction: this.isRtl() ? 'rtl' : 'ltr',\n }));\n\n /** Subscribed Embla events. */\n protected subscribeToEvents: EmblaEventType[] = ['select', 'init', 'reInit'];\n\n /** Current carousel snap index. */\n protected activeSlideIndex = signal(0);\n\n /** Total number of items. */\n protected totalSlides = computed(() => this.items().length);\n\n /** Previous button disabled state (carousel). */\n protected prevDisabled = signal(false);\n\n /** Next button disabled state (carousel). */\n protected nextDisabled = signal(false);\n\n /** Currently expanded grid item index. */\n protected expandedIndex = signal(0);\n\n /** Whether grid autoplay is currently playing. */\n protected isAutoPlaying = signal(false);\n\n protected items = contentChildren(EclStoryCardItemComponent, { descendants: true });\n\n protected detailsPanels = contentChildren(EclStoryCardGridDetailsComponent, { descendants: true });\n\n private emblaRef = viewChild(EmblaCarouselDirective);\n private carouselImageWrappers = viewChildren<ElementRef>('carouselImageWrapper');\n private carouselContentWrappers = viewChildren<ElementRef>('carouselContentWrapper');\n\n private setupTeardown$ = new Subject<void>();\n private emblaApi: EmblaCarouselType | undefined;\n\n constructor() {\n super();\n afterNextRender(() => {\n setTimeout(() => this.clonePicturesToCarousel());\n });\n\n effect(() => {\n const itemsArray = this.items();\n const detailsArray = this.detailsPanels();\n\n untracked(() => {\n this.setupGrid(itemsArray, detailsArray);\n });\n }, { allowSignalWrites: true });\n }\n\n readonly cssClasses = computed(() => [\n super.getCssClasses('ecl-story-card'),\n this.eclDescription() ? 'ecl-story-card--has-description' : '',\n this.variant() === 'testimonial' ? 'ecl-story-card--testimonial' : '',\n ].join(' ').trim());\n\n readonly slideDuration = computed(() => `${this.autoplayDelay()}ms`);\n\n ngOnDestroy(): void {\n this.setupTeardown$.next();\n this.setupTeardown$.complete();\n }\n\n /**\n * Configures the grid accordion: assigns IDs, indices, and initial state\n * to each item and details panel, subscribes to item interaction events,\n * and starts autoplay if enabled.\n */\n private setupGrid(\n itemsArray: readonly EclStoryCardItemComponent[],\n detailsArray: readonly EclStoryCardGridDetailsComponent[],\n ): void {\n this.setupTeardown$.next();\n const id = this.componentId();\n\n itemsArray.forEach((item, i) => {\n item.index.set(i);\n item.tabId.set(`${id}-tab-${i}`);\n item.panelId.set(`${id}-details-${i}`);\n item.isExpanded.set(i === this.expandedIndex());\n item.isAutoPlaying.set(this.isAutoPlaying());\n\n outputToObservable(item.itemClick).pipe(\n takeUntil(this.setupTeardown$),\n ).subscribe((index: number) => this.onGridItemClick(index));\n\n outputToObservable(item.loadingBarAnimationEnd).pipe(\n takeUntil(this.setupTeardown$),\n ).subscribe(() => this.onLoadingBarAnimationEnd());\n });\n\n detailsArray.forEach((panel, i) => {\n panel.index.set(i);\n panel.panelId.set(`${id}-details-${i}`);\n panel.tabId.set(`${id}-tab-${i}`);\n panel.isActive.set(i === this.expandedIndex());\n panel.isTestimonial.set(this.variant() === 'testimonial');\n });\n\n if (this.isAutoplay()) {\n this.playAutoplay();\n }\n }\n\n /** Set the expanded grid item by index. */\n private setGridItem(index: number): void {\n const itemsArray = this.items();\n const detailsArray = this.detailsPanels();\n if (itemsArray.length === 0) return;\n\n const nextIndex = ((index % itemsArray.length) + itemsArray.length) % itemsArray.length;\n\n itemsArray.forEach((item, i) => {\n item.isExpanded.set(i === nextIndex);\n item.isAutoPlaying.set(this.isAutoPlaying());\n });\n\n detailsArray.forEach((panel, i) => {\n panel.isActive.set(i === nextIndex);\n });\n\n this.expandedIndex.set(nextIndex);\n this.selectionChange.emit({ index: nextIndex });\n }\n\n /** Handle click on a grid item button. */\n private onGridItemClick(index: number): void {\n const itemsArray = this.items();\n const isCurrentlyExpanded = itemsArray[index]?.isExpanded();\n\n if (isCurrentlyExpanded && !this.isAutoPlaying()) {\n this.playAutoplay();\n } else {\n this.pauseAutoplay();\n }\n\n this.setGridItem(index);\n }\n\n /** Go to the previous grid item. */\n protected onGridPrevClick(): void {\n this.setGridItem(this.expandedIndex() - 1);\n }\n\n /** Go to the next grid item. */\n protected onGridNextClick(): void {\n this.setGridItem(this.expandedIndex() + 1);\n }\n\n /** Handle animation end on the loading bar (advance to next). */\n private onLoadingBarAnimationEnd(): void {\n if (this.isAutoPlaying()) {\n this.setGridItem(this.expandedIndex() + 1);\n }\n }\n\n /** Start autoplay. */\n protected playAutoplay(): void {\n if (this.items().length < 2) return;\n this.isAutoPlaying.set(true);\n this.items().forEach(item => item.isAutoPlaying.set(true));\n }\n\n protected pauseAutoplay(): void {\n this.isAutoPlaying.set(false);\n this.items().forEach(item => item.isAutoPlaying.set(false));\n }\n\n /** Play button click. */\n protected onPlayClick(): void {\n this.playAutoplay();\n }\n\n /** Pause button click. */\n protected onPauseClick(): void {\n this.pauseAutoplay();\n }\n\n /** Clone each item's projected picture and link into the corresponding carousel slide. */\n private clonePicturesToCarousel(): void {\n const imageWrappers = this.carouselImageWrappers();\n const contentWrappers = this.carouselContentWrappers();\n const itemsArray = this.items();\n const detailsArray = this.detailsPanels();\n\n itemsArray.forEach((item, i) => {\n const pictureEl = item.pictureRef();\n if (pictureEl && imageWrappers[i]) {\n const clone = pictureEl.nativeElement.cloneNode(true) as HTMLElement;\n imageWrappers[i].nativeElement.appendChild(clone);\n }\n });\n\n detailsArray.forEach((panel, i) => {\n const linkEl = panel.linkRef();\n if (linkEl && contentWrappers[i]) {\n const clone = linkEl.nativeElement.cloneNode(true) as HTMLElement;\n contentWrappers[i].nativeElement.appendChild(clone);\n }\n });\n }\n\n protected onEmblaChange(eventName: string): void {\n if (!this.emblaApi) {\n this.emblaApi = this.emblaRef()?.emblaApi;\n }\n if (!this.emblaApi) return;\n\n if (eventName === 'select' || eventName === 'init' || eventName === 'reInit') {\n this.syncCarouselState();\n }\n }\n\n /** Sync carousel state from Embla API. */\n private syncCarouselState(): void {\n if (!this.emblaApi) return;\n\n this.activeSlideIndex.set(this.emblaApi.selectedScrollSnap());\n this.prevDisabled.set(!this.emblaApi.canScrollPrev());\n this.nextDisabled.set(!this.emblaApi.canScrollNext());\n }\n\n /** Navigate carousel to previous slide. */\n protected onCarouselPrevClick(): void {\n this.emblaRef()?.scrollPrev();\n }\n\n /** Navigate carousel to next slide. */\n protected onCarouselNextClick(): void {\n this.emblaRef()?.scrollNext();\n }\n\n /** Navigate carousel to a specific slide. */\n protected goToSlide(index: number): void {\n this.emblaRef()?.scrollTo(index);\n }\n\n /** Returns dot indices for rendering. */\n protected getDotIndices(): number[] {\n return Array.from({ length: this.totalSlides() }, (_, i) => i);\n }\n}\n","@if (eclTitle() || eclDescription()) {\n<div class=\"ecl-story-card__header\">\n @if (eclTitle()) {\n <div class=\"ecl-story-card__title\" [attr.id]=\"titleId()\">{{ eclTitle() }}</div>\n }\n @if (eclDescription()) {\n <div class=\"ecl-story-card__description\">{{ eclDescription() }}</div>\n }\n</div>\n}\n\n<!-- Mobile: Embla Carousel (auto-generated from items + details) -->\n<div class=\"ecl-story-card__carousel\">\n <div class=\"ecl-story-card__carousel-viewport\"\n role=\"region\"\n [attr.aria-label]=\"'ecl.story-card.SLIDER-LABEL' | translate\"\n emblaCarousel\n [options]=\"emblaOptions()\"\n [subscribeToEvents]=\"subscribeToEvents\"\n (emblaChange)=\"onEmblaChange($event)\">\n <ul class=\"ecl-story-card__carousel-container\">\n @for (item of items(); track i; let i = $index) {\n <li class=\"ecl-story-card__carousel-slide\"\n [attr.aria-hidden]=\"i !== activeSlideIndex() ? true : null\">\n <article class=\"ecl-story-card__card\">\n <div class=\"ecl-story-card__image-wrapper\" #carouselImageWrapper>\n </div>\n <div class=\"ecl-story-card__content\" #carouselContentWrapper>\n @if (detailsPanels()[i]; as panel) {\n @if (panel.eclTitle()) {\n <div class=\"ecl-story-card__card-title\">{{ panel.eclTitle() }}</div>\n }\n @if (panel.description()) {\n <div class=\"ecl-story-card__card-description\">{{ panel.description() }}</div>\n }\n }\n </div>\n </article>\n </li>\n }\n </ul>\n </div>\n\n <!-- Carousel Controls -->\n @if (totalSlides() > 1) {\n <div class=\"ecl-story-card__pager\">\n <button class=\"ecl-story-card__prev\"\n [disabled]=\"prevDisabled()\"\n (click)=\"onCarouselPrevClick()\"\n [attr.aria-label]=\"'ecl.story-card.SHOW-PREV-SLIDE' | translate\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span class=\"ecl-story-card__prev-label\">\n {{ 'ecl.story-card.PREVIOUS' | translate }}\n </span>\n </button>\n\n <div class=\"ecl-story-card__dots\">\n @for (dotIndex of getDotIndices(); track dotIndex) {\n <button\n #dotButton\n class=\"ecl-story-card__dot\"\n [class.ecl-story-card__dot--active]=\"dotIndex === activeSlideIndex()\"\n [class.is-prev]=\"dotIndex === activeSlideIndex() - 1\"\n [attr.aria-label]=\"'ecl.story-card.GO-TO-SLIDE' | translate: { current: dotIndex + 1, total: totalSlides() }\"\n (click)=\"goToSlide(dotIndex)\">\n </button>\n }\n </div>\n\n <button class=\"ecl-story-card__next\"\n [disabled]=\"nextDisabled()\"\n (click)=\"onCarouselNextClick()\"\n [attr.aria-label]=\"'ecl.story-card.SHOW-NEXT-SLIDE' | translate\">\n <span class=\"ecl-story-card__next-label\">\n {{ 'ecl.story-card.NEXT' | translate }}\n </span>\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-90\"></ecl-icon>\n </button>\n </div>\n }\n</div>\n\n<!-- Desktop: Grid with Accordion (user-authored content projected here) -->\n<div class=\"ecl-story-card__grid\">\n <ng-content select=\"ul[eclStoryCardList]\"></ng-content>\n <ng-content select=\"[eclStoryCardGridDetails]\"></ng-content>\n\n <!-- Grid Controls -->\n @if (totalSlides() > 1) {\n <div class=\"ecl-story-card__grid-controls\">\n <button class=\"ecl-button ecl-button--tertiary ecl-button--neutral ecl-story-card__grid-prev ecl-button--icon-only\"\n type=\"button\"\n (click)=\"onGridPrevClick()\"\n [attr.aria-label]=\"'ecl.story-card.PREVIOUS' | translate\">\n <span class=\"ecl-button__container\">\n <span class=\"ecl-button__label\">\n {{ 'ecl.story-card.PREVIOUS' | translate }}\n </span>\n <ecl-icon iconSet=\"phosphor\" icon=\"caret-left\" size=\"l\"></ecl-icon>\n </span>\n </button>\n\n <button class=\"ecl-button ecl-button--secondary ecl-button--neutral ecl-story-card__grid-play ecl-button--icon-only\"\n type=\"button\"\n [style.display]=\"isAutoPlaying() ? 'none' : 'flex'\"\n (click)=\"onPlayClick()\"\n [attr.aria-label]=\"'ecl.story-card.PLAY' | translate\">\n <span class=\"ecl-button__container\">\n <span class=\"ecl-button__label\">\n {{ 'ecl.story-card.PLAY' | translate }}\n </span>\n <ecl-icon iconSet=\"phosphor-fill\" icon=\"play\" size=\"l\"></ecl-icon>\n </span>\n </button>\n\n <button class=\"ecl-button ecl-button--secondary ecl-button--neutral ecl-story-card__grid-pause ecl-button--icon-only\"\n type=\"button\"\n [style.display]=\"isAutoPlaying() ? 'flex' : 'none'\"\n (click)=\"onPauseClick()\"\n [attr.aria-label]=\"'ecl.story-card.PAUSE' | translate\">\n <span class=\"ecl-button__container\">\n <span class=\"ecl-button__label\">\n {{ 'ecl.story-card.PAUSE' | translate }}\n </span>\n <ecl-icon iconSet=\"phosphor-fill\" icon=\"pause\" size=\"l\"></ecl-icon>\n </span>\n </button>\n\n <button class=\"ecl-button ecl-button--tertiary ecl-button--neutral ecl-story-card__grid-next ecl-button--icon-only\"\n type=\"button\"\n (click)=\"onGridNextClick()\"\n [attr.aria-label]=\"'ecl.story-card.NEXT' | translate\">\n <span class=\"ecl-button__container\">\n <span class=\"ecl-button__label\">\n {{ 'ecl.story-card.NEXT' | translate }}\n </span>\n <ecl-icon iconSet=\"phosphor\" icon=\"caret-right\" size=\"l\"></ecl-icon>\n </span>\n </button>\n </div>\n }\n</div>\n","import { EclStoryCardComponent } from './ecl-story-card.component';\nimport { EclStoryCardItemComponent } from './ecl-story-card-item/ecl-story-card-item.component';\nimport { EclStoryCardGridDetailsComponent } from './ecl-story-card-grid-details/ecl-story-card-grid-details.component';\nimport {\n EclStoryCardListDirective,\n EclStoryCardPictureDirective,\n EclStoryCardLinkDirective,\n} from './ecl-story-card-directives';\n\nexport * from './ecl-story-card.component';\nexport * from './ecl-story-card-item/ecl-story-card-item.component';\nexport * from './ecl-story-card-grid-details/ecl-story-card-grid-details.component';\nexport * from './ecl-story-card-directives';\n\nexport const EUI_ECL_STORY_CARD = [\n EclStoryCardComponent,\n EclStoryCardItemComponent,\n EclStoryCardGridDetailsComponent,\n EclStoryCardListDirective,\n EclStoryCardPictureDirective,\n EclStoryCardLinkDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eui-ecl-components-ecl-story-card.mjs","sources":["../../components/ecl-story-card/ecl-story-card-directives.ts","../../components/ecl-story-card/ecl-story-card-item/ecl-story-card-item.component.ts","../../components/ecl-story-card/ecl-story-card-item/ecl-story-card-item.component.html","../../components/ecl-story-card/ecl-story-card-grid-details/ecl-story-card-grid-details.component.ts","../../components/ecl-story-card/ecl-story-card-grid-details/ecl-story-card-grid-details.component.html","../../components/ecl-story-card/ecl-story-card.component.ts","../../components/ecl-story-card/ecl-story-card.component.html","../../components/ecl-story-card/index.ts","../../components/ecl-story-card/eui-ecl-components-ecl-story-card.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive applied to the <ul> element that holds the story card items.\n * Adds the grid container class and tablist role.\n *\n * @example\n * <ul eclStoryCardList>...</ul>\n */\n@Directive({\n selector: 'ul[eclStoryCardList]',\n host: {\n role: 'tablist',\n '[class]': 'getCssClasses(\"ecl-story-card__grid-container\")',\n },\n})\nexport class EclStoryCardListDirective extends ECLBaseDirective {}\n\n/**\n * Directive applied to <picture> elements inside a story card item.\n * Adds the ECL picture classes.\n *\n * @example\n * <picture eclStoryCardPicture>\n * <source srcset=\"...\" media=\"(max-width: 50rem)\">\n * <img src=\"...\" alt=\"...\">\n * </picture>\n */\n@Directive({\n selector: 'picture[eclStoryCardPicture]',\n host: {\n '[class]': 'getCssClasses(\"ecl-picture ecl-story-card__picture\")',\n },\n})\nexport class EclStoryCardPictureDirective extends ECLBaseDirective {}\n\n/**\n * Directive applied to <a> elements inside story card grid details.\n * Adds the ECL link classes for the \"Read more\" link.\n *\n * @example\n * <a eclStoryCardLink href=\"/example\">Read more</a>\n */\n@Directive({\n selector: '[eclStoryCardLink]',\n host: {\n '[class]': 'getCssClasses(\"ecl-link ecl-link--standalone ecl-link--icon ecl-story-card__link\")',\n },\n})\nexport class EclStoryCardLinkDirective extends ECLBaseDirective {}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n ElementRef,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclStoryCardPictureDirective } from '../ecl-story-card-directives';\n\n/**\n * Component for a single story card grid item (tab).\n * Applied to <li> elements within the story card list.\n *\n * The user provides:\n * - `gridTitle`: the short label shown in the accordion tab button\n * - A <picture eclStoryCardPicture> as projected content\n *\n * The component internally renders the button with role=\"tab\",\n * the loading bar, and the title wrapper.\n *\n * @example\n * <li eclStoryCardItem gridTitle=\"why twelve\">\n * <picture eclStoryCardPicture>\n * <img src=\"example.jpg\" alt=\"Example\">\n * </picture>\n * </li>\n */\n@Component({\n selector: 'li[eclStoryCardItem]',\n templateUrl: './ecl-story-card-item.component.html',\n host: {\n role: 'presentation',\n '[class]': 'cssClasses()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EclStoryCardItemComponent extends ECLBaseDirective {\n\n /** Short title displayed in the accordion tab button. */\n gridTitle = input<string>('');\n\n /** Whether this item is currently expanded/selected. Set by parent. */\n isExpanded = signal(false);\n\n /** Whether autoplay is active (controls loading bar animation). Set by parent. */\n isAutoPlaying = signal(false);\n\n /** The index of this item within the list. Set by parent. */\n index = signal(0);\n\n /** The generated ID for the tab button. Set by parent. */\n tabId = signal('');\n\n /** The ID of the controlled tabpanel. Set by parent. */\n panelId = signal('');\n\n /** Emitted when the item's button is clicked. */\n itemClick = output<number>();\n\n /** Emitted when the loading bar animation ends. */\n loadingBarAnimationEnd = output<void>();\n\n /** Reference to the projected picture element for cloning into carousel. */\n pictureRef = contentChild(EclStoryCardPictureDirective, { read: ElementRef });\n\n readonly cssClasses = computed(() => [\n super.getCssClasses('ecl-story-card__grid-item'),\n this.isExpanded() ? 'ecl-story-card__grid-item--expanded' : '',\n ].join(' ').trim());\n\n protected onButtonClick(): void {\n this.itemClick.emit(this.index());\n }\n\n protected onAnimationEnd(): void {\n this.loadingBarAnimationEnd.emit();\n }\n}\n","<button class=\"ecl-story-card__grid-card\"\n type=\"button\"\n [attr.id]=\"tabId()\"\n role=\"tab\"\n [attr.aria-selected]=\"isExpanded()\"\n [attr.aria-controls]=\"panelId()\"\n (click)=\"onButtonClick()\">\n <div class=\"ecl-story-card__grid-image\">\n <ng-content select=\"picture[eclStoryCardPicture]\"></ng-content>\n <div class=\"ecl-story-card__grid-loading-bar\">\n <div class=\"ecl-story-card__grid-loading-bar-completion\"\n [class.is-paused]=\"!isExpanded() || !isAutoPlaying()\"\n (animationend)=\"onAnimationEnd()\">\n </div>\n </div>\n </div>\n <div class=\"ecl-story-card__grid-title-wrapper\">\n @if (gridTitle()) {\n <div class=\"ecl-story-card__grid-title\">{{ gridTitle() }}</div>\n }\n </div>\n</button>\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n ElementRef,\n input,\n signal,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclStoryCardLinkDirective } from '../ecl-story-card-directives';\n\n/**\n * Component for a story card grid details panel (tabpanel).\n * Contains the expanded content: title, description, and optional link.\n *\n * For the 'testimonial' variant, additional inputs are available:\n * - `author`: name of the author\n * - `role`: role/position of the author\n * - `source`: publication source\n *\n * @example\n * <div eclStoryCardGridDetails\n * eclTitle=\"The European flag...\"\n * description=\"It appears on official documents...\"\n * author=\"John Doe\"\n * role=\"Commissioner\"\n * source=\"Published on The Guardian\">\n * <a eclStoryCardLink eclLink variant=\"standalone\" href=\"/example\">\n * <span eclLinkLabel>Read more</span>\n * <ecl-icon icon=\"arrow-right\" size=\"xs\"></ecl-icon>\n * </a>\n * </div>\n */\n@Component({\n selector: '[eclStoryCardGridDetails]',\n templateUrl: './ecl-story-card-grid-details.component.html',\n host: {\n '[class]': 'getCssClasses(\"ecl-story-card__grid-details\")',\n '[attr.id]': 'panelId()',\n '[attr.role]': '\"tabpanel\"',\n '[attr.aria-labelledby]': 'tabId()',\n '[hidden]': '!isActive()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EclStoryCardGridDetailsComponent extends ECLBaseDirective {\n\n /** Title shown in the details panel. */\n eclTitle = input<string>('');\n\n /** Description shown in the details panel. */\n description = input<string>('');\n\n /** Author name (testimonial variant). */\n author = input<string>('');\n\n /** Author role/position (testimonial variant). */\n role = input<string>('');\n\n /** Publication source (testimonial variant). */\n source = input<string>('');\n\n /** Whether this panel is currently visible. Set by parent. */\n isActive = signal(false);\n\n /** Whether the parent is in testimonial variant. Set by parent. */\n isTestimonial = signal(false);\n\n /** Index of this panel. Set by parent. */\n index = signal(0);\n\n /** Generated panel ID. Set by parent. */\n panelId = signal('');\n\n /** ID of the controlling tab. Set by parent. */\n tabId = signal('');\n\n /** Reference to the projected link element for cloning into carousel. */\n linkRef = contentChild(EclStoryCardLinkDirective, { read: ElementRef });\n}\n","<article class=\"ecl-story-card__grid-details-content\">\n <div class=\"ecl-story-card__content\">\n @if (isTestimonial()) {\n <div class=\"ecl-story-card__content-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"45\" viewBox=\"0 0 22 45\" fill=\"none\">\n <path d=\"M0 0H22V23.3143L0 44.5714V0Z\" fill=\"currentColor\"/>\n </svg>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"45\" viewBox=\"0 0 22 45\" fill=\"none\">\n <path d=\"M0 0H22V23.3143L0 44.5714V0Z\" fill=\"currentColor\"/>\n </svg>\n </div>\n }\n @if (eclTitle()) {\n <div class=\"ecl-story-card__card-title\">{{ eclTitle() }}</div>\n }\n @if (author() || role() || source()) {\n <div class=\"ecl-story-card__testimonial\">\n @if (author()) {\n <span class=\"ecl-story-card__author\">{{ author() }}</span>\n }\n @if (role()) {\n <span class=\"ecl-story-card__role\">{{ role() }}</span>\n }\n @if (source()) {\n <cite class=\"ecl-story-card__source\">{{ source() }}</cite>\n }\n </div>\n }\n @if (description()) {\n <div class=\"ecl-story-card__card-description\">{{ description() }}</div>\n }\n <ng-content select=\"[eclStoryCardLink]\"></ng-content>\n </div>\n</article>\n","import {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n output,\n signal,\n untracked,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { EclIconComponent } from '@eui/ecl/components/ecl-icon';\nimport { ECLBaseDirective, EclRtlService } from '@eui/ecl/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { EmblaCarouselDirective } from 'embla-carousel-angular';\nimport { Subject, takeUntil } from 'rxjs';\nimport { outputToObservable, toSignal } from '@angular/core/rxjs-interop';\n\nimport { EclStoryCardItemComponent } from './ecl-story-card-item/ecl-story-card-item.component';\nimport { EclStoryCardGridDetailsComponent } from './ecl-story-card-grid-details/ecl-story-card-grid-details.component';\nimport { EmblaCarouselType, EmblaEventType } from 'embla-carousel';\n\nexport interface EclStoryCardSelectionEvent {\n index: number;\n}\n\n/**\n * ECL Story Card component.\n *\n * Renders a desktop grid accordion (user-authored) and automatically\n * generates a mobile carousel from the same data.\n *\n * Desktop: tablist/tab/tabpanel pattern with autoplay loading bar.\n * Mobile: Embla carousel with prev/next and dot navigation.\n *\n * @example\n * <section eclStoryCard isAutoplay [autoplayDelay]=\"10000\"\n * [eclTitle]=\"'Stories'\" [eclDescription]=\"'...'\">\n * <ul eclStoryCardList>\n * <li eclStoryCardItem gridTitle=\"why twelve\">\n * <picture eclStoryCardPicture>...</picture>\n * </li>\n * </ul>\n * <div eclStoryCardGridDetails eclTitle=\"...\" description=\"...\">\n * <a eclStoryCardLink href=\"...\">Read more</a>\n * </div>\n * </section>\n */\n@Component({\n selector: 'section[eclStoryCard]',\n templateUrl: './ecl-story-card.component.html',\n host: {\n '[id]': 'componentId()',\n '[class]': 'cssClasses()',\n '[attr.aria-labelledby]': 'titleId()',\n '[style.--ecl-story-card-slide-duration]': 'slideDuration()',\n },\n imports: [\n TranslatePipe,\n EclIconComponent,\n EmblaCarouselDirective,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EclStoryCardComponent extends ECLBaseDirective implements OnDestroy {\n\n /** Title displayed in the story card header. */\n eclTitle = input<string>('');\n\n /** Description displayed below the title. */\n eclDescription = input<string>('');\n\n /** Variant of the story card: 'story' (default) or 'testimonial'. */\n variant = input<'story' | 'testimonial'>('story');\n\n /** Whether autoplay is enabled for the grid accordion. */\n isAutoplay = input(false, { transform: booleanAttribute });\n\n /** Autoplay delay in milliseconds. Default: 10000. */\n autoplayDelay = input<number>(10000);\n\n /** ID for the component. All internal IDs derive from it. If not provided, auto-generated. */\n eclId = input<string>('', { alias: 'id' });\n\n /** Emitted when the active grid item changes. */\n selectionChange = output<EclStoryCardSelectionEvent>();\n\n private eclRtlService = inject(EclRtlService);\n\n private generatedId = `story-card-${crypto.randomUUID().slice(0, 8)}`;\n protected componentId = computed(() => this.eclId() || this.generatedId);\n protected titleId = computed(() => `${this.componentId()}-title`);\n\n /** Current RTL state, derived reactively from the RTL service. */\n private isRtl = toSignal(this.eclRtlService.currentRtlState$, { initialValue: false });\n\n /** Embla carousel options. Direction tracks the RTL state reactively. */\n protected emblaOptions = computed<{ loop: boolean; direction: 'ltr' | 'rtl' }>(() => ({\n loop: true,\n direction: this.isRtl() ? 'rtl' : 'ltr',\n }));\n\n /** Subscribed Embla events. */\n protected subscribeToEvents: EmblaEventType[] = ['select', 'init', 'reInit'];\n\n /** Current carousel snap index. */\n protected activeSlideIndex = signal(0);\n\n /** Total number of items. */\n protected totalSlides = computed(() => this.items().length);\n\n /** Previous button disabled state (carousel). */\n protected prevDisabled = signal(false);\n\n /** Next button disabled state (carousel). */\n protected nextDisabled = signal(false);\n\n /** Currently expanded grid item index. */\n protected expandedIndex = signal(0);\n\n /** Whether grid autoplay is currently playing. */\n protected isAutoPlaying = signal(false);\n\n protected items = contentChildren(EclStoryCardItemComponent, { descendants: true });\n\n protected detailsPanels = contentChildren(EclStoryCardGridDetailsComponent, { descendants: true });\n\n private emblaRef = viewChild(EmblaCarouselDirective);\n private carouselImageWrappers = viewChildren<ElementRef>('carouselImageWrapper');\n private carouselContentWrappers = viewChildren<ElementRef>('carouselContentWrapper');\n\n private setupTeardown$ = new Subject<void>();\n private emblaApi: EmblaCarouselType | undefined;\n\n constructor() {\n super();\n afterNextRender(() => {\n setTimeout(() => this.clonePicturesToCarousel());\n });\n\n effect(() => {\n const itemsArray = this.items();\n const detailsArray = this.detailsPanels();\n\n untracked(() => {\n this.setupGrid(itemsArray, detailsArray);\n });\n }, { allowSignalWrites: true });\n }\n\n readonly cssClasses = computed(() => [\n super.getCssClasses('ecl-story-card'),\n this.eclDescription() ? 'ecl-story-card--has-description' : '',\n this.variant() === 'testimonial' ? 'ecl-story-card--testimonial' : '',\n ].join(' ').trim());\n\n readonly slideDuration = computed(() => `${this.autoplayDelay()}ms`);\n\n ngOnDestroy(): void {\n this.setupTeardown$.next();\n this.setupTeardown$.complete();\n }\n\n /**\n * Configures the grid accordion: assigns IDs, indices, and initial state\n * to each item and details panel, subscribes to item interaction events,\n * and starts autoplay if enabled.\n */\n private setupGrid(\n itemsArray: readonly EclStoryCardItemComponent[],\n detailsArray: readonly EclStoryCardGridDetailsComponent[],\n ): void {\n this.setupTeardown$.next();\n const id = this.componentId();\n\n itemsArray.forEach((item, i) => {\n item.index.set(i);\n item.tabId.set(`${id}-tab-${i}`);\n item.panelId.set(`${id}-details-${i}`);\n item.isExpanded.set(i === this.expandedIndex());\n item.isAutoPlaying.set(this.isAutoPlaying());\n\n outputToObservable(item.itemClick).pipe(\n takeUntil(this.setupTeardown$),\n ).subscribe((index: number) => this.onGridItemClick(index));\n\n outputToObservable(item.loadingBarAnimationEnd).pipe(\n takeUntil(this.setupTeardown$),\n ).subscribe(() => this.onLoadingBarAnimationEnd());\n });\n\n detailsArray.forEach((panel, i) => {\n panel.index.set(i);\n panel.panelId.set(`${id}-details-${i}`);\n panel.tabId.set(`${id}-tab-${i}`);\n panel.isActive.set(i === this.expandedIndex());\n panel.isTestimonial.set(this.variant() === 'testimonial');\n });\n\n if (this.isAutoplay()) {\n this.playAutoplay();\n }\n }\n\n /** Set the expanded grid item by index. */\n private setGridItem(index: number): void {\n const itemsArray = this.items();\n const detailsArray = this.detailsPanels();\n if (itemsArray.length === 0) return;\n\n const nextIndex = ((index % itemsArray.length) + itemsArray.length) % itemsArray.length;\n\n itemsArray.forEach((item, i) => {\n item.isExpanded.set(i === nextIndex);\n item.isAutoPlaying.set(this.isAutoPlaying());\n });\n\n detailsArray.forEach((panel, i) => {\n panel.isActive.set(i === nextIndex);\n });\n\n this.expandedIndex.set(nextIndex);\n this.selectionChange.emit({ index: nextIndex });\n }\n\n /** Handle click on a grid item button. */\n private onGridItemClick(index: number): void {\n const itemsArray = this.items();\n const isCurrentlyExpanded = itemsArray[index]?.isExpanded();\n\n if (isCurrentlyExpanded && !this.isAutoPlaying()) {\n this.playAutoplay();\n } else {\n this.pauseAutoplay();\n }\n\n this.setGridItem(index);\n }\n\n /** Go to the previous grid item. */\n protected onGridPrevClick(): void {\n this.setGridItem(this.expandedIndex() - 1);\n }\n\n /** Go to the next grid item. */\n protected onGridNextClick(): void {\n this.setGridItem(this.expandedIndex() + 1);\n }\n\n /** Handle animation end on the loading bar (advance to next). */\n private onLoadingBarAnimationEnd(): void {\n if (this.isAutoPlaying()) {\n this.setGridItem(this.expandedIndex() + 1);\n }\n }\n\n /** Start autoplay. */\n protected playAutoplay(): void {\n if (this.items().length < 2) return;\n this.isAutoPlaying.set(true);\n this.items().forEach(item => item.isAutoPlaying.set(true));\n }\n\n protected pauseAutoplay(): void {\n this.isAutoPlaying.set(false);\n this.items().forEach(item => item.isAutoPlaying.set(false));\n }\n\n /** Play button click. */\n protected onPlayClick(): void {\n this.playAutoplay();\n }\n\n /** Pause button click. */\n protected onPauseClick(): void {\n this.pauseAutoplay();\n }\n\n /** Clone each item's projected picture and link into the corresponding carousel slide. */\n private clonePicturesToCarousel(): void {\n const imageWrappers = this.carouselImageWrappers();\n const contentWrappers = this.carouselContentWrappers();\n const itemsArray = this.items();\n const detailsArray = this.detailsPanels();\n\n itemsArray.forEach((item, i) => {\n const pictureEl = item.pictureRef();\n if (pictureEl && imageWrappers[i]) {\n const clone = pictureEl.nativeElement.cloneNode(true) as HTMLElement;\n imageWrappers[i].nativeElement.appendChild(clone);\n }\n });\n\n detailsArray.forEach((panel, i) => {\n const linkEl = panel.linkRef();\n if (linkEl && contentWrappers[i]) {\n const clone = linkEl.nativeElement.cloneNode(true) as HTMLElement;\n contentWrappers[i].nativeElement.appendChild(clone);\n }\n });\n }\n\n protected onEmblaChange(eventName: string): void {\n if (!this.emblaApi) {\n this.emblaApi = this.emblaRef()?.emblaApi;\n }\n if (!this.emblaApi) return;\n\n if (eventName === 'select' || eventName === 'init' || eventName === 'reInit') {\n this.syncCarouselState();\n }\n }\n\n /** Sync carousel state from Embla API. */\n private syncCarouselState(): void {\n if (!this.emblaApi) return;\n\n this.activeSlideIndex.set(this.emblaApi.selectedScrollSnap());\n this.prevDisabled.set(!this.emblaApi.canScrollPrev());\n this.nextDisabled.set(!this.emblaApi.canScrollNext());\n }\n\n /** Navigate carousel to previous slide. */\n protected onCarouselPrevClick(): void {\n this.emblaRef()?.scrollPrev();\n }\n\n /** Navigate carousel to next slide. */\n protected onCarouselNextClick(): void {\n this.emblaRef()?.scrollNext();\n }\n\n /** Navigate carousel to a specific slide. */\n protected goToSlide(index: number): void {\n this.emblaRef()?.scrollTo(index);\n }\n\n /** Returns dot indices for rendering. */\n protected getDotIndices(): number[] {\n return Array.from({ length: this.totalSlides() }, (_, i) => i);\n }\n}\n","@if (eclTitle() || eclDescription()) {\n<div class=\"ecl-story-card__header\">\n @if (eclTitle()) {\n <div class=\"ecl-story-card__title\" [attr.id]=\"titleId()\">{{ eclTitle() }}</div>\n }\n @if (eclDescription()) {\n <div class=\"ecl-story-card__description\">{{ eclDescription() }}</div>\n }\n</div>\n}\n\n<!-- Mobile: Embla Carousel (auto-generated from items + details) -->\n<div class=\"ecl-story-card__carousel\">\n <div class=\"ecl-story-card__carousel-viewport\"\n role=\"region\"\n [attr.aria-label]=\"'ecl.story-card.SLIDER-LABEL' | translate\"\n emblaCarousel\n [options]=\"emblaOptions()\"\n [subscribeToEvents]=\"subscribeToEvents\"\n (emblaChange)=\"onEmblaChange($event)\">\n <ul class=\"ecl-story-card__carousel-container\">\n @for (item of items(); track i; let i = $index) {\n <li class=\"ecl-story-card__carousel-slide\"\n [attr.aria-hidden]=\"i !== activeSlideIndex() ? true : null\">\n <article class=\"ecl-story-card__card\">\n <div class=\"ecl-story-card__image-wrapper\" #carouselImageWrapper>\n </div>\n <div class=\"ecl-story-card__content\" #carouselContentWrapper>\n @if (detailsPanels()[i]; as panel) {\n @if (panel.eclTitle()) {\n <div class=\"ecl-story-card__card-title\">{{ panel.eclTitle() }}</div>\n }\n @if (panel.description()) {\n <div class=\"ecl-story-card__card-description\">{{ panel.description() }}</div>\n }\n }\n </div>\n </article>\n </li>\n }\n </ul>\n </div>\n\n <!-- Carousel Controls -->\n @if (totalSlides() > 1) {\n <div class=\"ecl-story-card__pager\">\n <button class=\"ecl-story-card__prev\"\n [disabled]=\"prevDisabled()\"\n (click)=\"onCarouselPrevClick()\"\n [attr.aria-label]=\"'ecl.story-card.SHOW-PREV-SLIDE' | translate\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span class=\"ecl-story-card__prev-label\">\n {{ 'ecl.story-card.PREVIOUS' | translate }}\n </span>\n </button>\n\n <div class=\"ecl-story-card__dots\">\n @for (dotIndex of getDotIndices(); track dotIndex) {\n <button\n #dotButton\n class=\"ecl-story-card__dot\"\n [class.ecl-story-card__dot--active]=\"dotIndex === activeSlideIndex()\"\n [class.is-prev]=\"dotIndex === activeSlideIndex() - 1\"\n [attr.aria-label]=\"'ecl.story-card.GO-TO-SLIDE' | translate: { current: dotIndex + 1, total: totalSlides() }\"\n (click)=\"goToSlide(dotIndex)\">\n </button>\n }\n </div>\n\n <button class=\"ecl-story-card__next\"\n [disabled]=\"nextDisabled()\"\n (click)=\"onCarouselNextClick()\"\n [attr.aria-label]=\"'ecl.story-card.SHOW-NEXT-SLIDE' | translate\">\n <span class=\"ecl-story-card__next-label\">\n {{ 'ecl.story-card.NEXT' | translate }}\n </span>\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-90\"></ecl-icon>\n </button>\n </div>\n }\n</div>\n\n<!-- Desktop: Grid with Accordion (user-authored content projected here) -->\n<div class=\"ecl-story-card__grid\">\n <ng-content select=\"ul[eclStoryCardList]\"></ng-content>\n <ng-content select=\"[eclStoryCardGridDetails]\"></ng-content>\n\n <!-- Grid Controls -->\n @if (totalSlides() > 1) {\n <div class=\"ecl-story-card__grid-controls\">\n <button class=\"ecl-button ecl-button--tertiary ecl-button--neutral ecl-story-card__grid-prev ecl-button--icon-only\"\n type=\"button\"\n (click)=\"onGridPrevClick()\"\n [attr.aria-label]=\"'ecl.story-card.PREVIOUS' | translate\">\n <span class=\"ecl-button__container\">\n <span class=\"ecl-button__label\">\n {{ 'ecl.story-card.PREVIOUS' | translate }}\n </span>\n <ecl-icon iconSet=\"phosphor\" icon=\"caret-left\" size=\"l\"></ecl-icon>\n </span>\n </button>\n\n <button class=\"ecl-button ecl-button--secondary ecl-button--neutral ecl-story-card__grid-play ecl-button--icon-only\"\n type=\"button\"\n [style.display]=\"isAutoPlaying() ? 'none' : 'flex'\"\n (click)=\"onPlayClick()\"\n [attr.aria-label]=\"'ecl.story-card.PLAY' | translate\">\n <span class=\"ecl-button__container\">\n <span class=\"ecl-button__label\">\n {{ 'ecl.story-card.PLAY' | translate }}\n </span>\n <ecl-icon iconSet=\"phosphor-fill\" icon=\"play\" size=\"l\"></ecl-icon>\n </span>\n </button>\n\n <button class=\"ecl-button ecl-button--secondary ecl-button--neutral ecl-story-card__grid-pause ecl-button--icon-only\"\n type=\"button\"\n [style.display]=\"isAutoPlaying() ? 'flex' : 'none'\"\n (click)=\"onPauseClick()\"\n [attr.aria-label]=\"'ecl.story-card.PAUSE' | translate\">\n <span class=\"ecl-button__container\">\n <span class=\"ecl-button__label\">\n {{ 'ecl.story-card.PAUSE' | translate }}\n </span>\n <ecl-icon iconSet=\"phosphor-fill\" icon=\"pause\" size=\"l\"></ecl-icon>\n </span>\n </button>\n\n <button class=\"ecl-button ecl-button--tertiary ecl-button--neutral ecl-story-card__grid-next ecl-button--icon-only\"\n type=\"button\"\n (click)=\"onGridNextClick()\"\n [attr.aria-label]=\"'ecl.story-card.NEXT' | translate\">\n <span class=\"ecl-button__container\">\n <span class=\"ecl-button__label\">\n {{ 'ecl.story-card.NEXT' | translate }}\n </span>\n <ecl-icon iconSet=\"phosphor\" icon=\"caret-right\" size=\"l\"></ecl-icon>\n </span>\n </button>\n </div>\n }\n</div>\n","import { EclStoryCardComponent } from './ecl-story-card.component';\nimport { EclStoryCardItemComponent } from './ecl-story-card-item/ecl-story-card-item.component';\nimport { EclStoryCardGridDetailsComponent } from './ecl-story-card-grid-details/ecl-story-card-grid-details.component';\nimport {\n EclStoryCardListDirective,\n EclStoryCardPictureDirective,\n EclStoryCardLinkDirective,\n} from './ecl-story-card-directives';\n\nexport * from './ecl-story-card.component';\nexport * from './ecl-story-card-item/ecl-story-card-item.component';\nexport * from './ecl-story-card-grid-details/ecl-story-card-grid-details.component';\nexport * from './ecl-story-card-directives';\n\nexport const EUI_ECL_STORY_CARD = [\n EclStoryCardComponent,\n EclStoryCardItemComponent,\n EclStoryCardGridDetailsComponent,\n EclStoryCardListDirective,\n EclStoryCardPictureDirective,\n EclStoryCardLinkDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"eui-ecl-components-ecl-table.mjs","sources":["../../components/ecl-table/ecl-table-sort-button.component.ts","../../components/ecl-table/ecl-table-sort-button.component.html","../../components/ecl-table/events/ecl-sort-table.event.ts","../../components/ecl-table/ecl-table.directive.ts","../../components/ecl-table/index.ts","../../components/ecl-table/eui-ecl-components-ecl-table.ts"],"sourcesContent":["import { Component, computed, inject } from '@angular/core';\nimport { AsyncPipe } from '@angular/common';\nimport { EclThemeService } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n/**\n * Sort button component used inside sortable table headers.\n *\n * Applies ECL styling for table sort arrows and provides\n * accessibility label for screen readers.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[eclTableSortButton]',\n templateUrl: './ecl-table-sort-button.component.html',\n imports: [...EUI_ECL_ICON, AsyncPipe],\n host: {\n '[attr.aria-label]': 'ariaLabel',\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTableSortButtonComponent extends ECLBaseDirective {\n eclThemeService = inject(EclThemeService);\n\n /**\n * Accessibility label describing the button's function.\n * This value is bound to the `aria-label` attribute.\n */\n ariaLabel = 'Sort table';\n\n /**\n * CSS classes applied to the host element.\n * Includes ECL base table sort arrow styling.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-table__arrow'));\n}\n","<ecl-icon icon=\"solid-arrow\" class=\"ecl-table__icon ecl-table__icon-up\" [size]=\"(eclThemeService.isEC$ | async) ? 'xs' : 'm'\"> </ecl-icon>\n<ecl-icon icon=\"solid-arrow\" class=\"ecl-table__icon ecl-table__icon-down\" [size]=\"(eclThemeService.isEC$ | async) ? 'xs' : 'm'\"> </ecl-icon>\n","import { EclBaseEvent } from '@eui/ecl/core';\nimport { SortOrder } from '../ecl-table.directive';\n\n/**\n * Event emitted when the table sort order changes.\n *\n * Extends the base ECL event to provide sorting-specific information.\n */\nexport class EclSortTableEvent extends EclBaseEvent {\n constructor(\n /**\n * The order in which the table is currently sorted.\n * Can be 'ascending', 'descending', or null (unsorted).\n */\n public sortOrder: SortOrder,\n\n /**\n * The identifier of the column that triggered the sort event.\n */\n public columnId: string,\n ) {\n super();\n }\n}\n","import {\n AfterContentInit,\n Directive,\n ElementRef,\n forwardRef,\n ViewContainerRef,\n booleanAttribute,\n Renderer2,\n AfterViewInit,\n ChangeDetectorRef,\n computed,\n OnInit,\n inject,\n ComponentRef,\n afterNextRender,\n effect,\n input,\n output,\n linkedSignal,\n contentChildren,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclTableSortButtonComponent } from './ecl-table-sort-button.component';\nimport { EclSortTableEvent } from './events/ecl-sort-table.event';\nimport { TranslateService } from '@ngx-translate/core';\n\n/**\n * Enum representing the sort order of a column.\n */\nexport enum SortOrder {\n DESCENDING = 'descending',\n ASCENDING = 'ascending',\n}\n\n/**\n * Directive for styling and managing behavior of ECL tables.\n *\n * Applies ECL-specific table classes and emits sort events when columns are sorted.\n */\n@Directive({\n selector: '[eclTable]',\n host: {\n '[attr.id]': 'tableId()',\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTableDirective extends ECLBaseDirective implements OnInit, AfterContentInit {\n /**\n * Applies zebra striping to the table rows by adding the `ecl-table--zebra` class if true.\n */\n readonly isZebra = input(false, { transform: booleanAttribute });\n\n /**\n * Opts out of the enhanced mobile layout and applies the \"simple\" table variant\n * by adding the `ecl-table--simple` class.\n *\n * This only affects narrow (mobile) viewports; on desktop both variants render as\n * a standard table, so this input is effectively a no-op there.\n * - Default (enhanced): on mobile each row collapses into a stacked, card-like layout\n * that uses the `eclTableCellHeader` value as the label for each cell.\n * - Simple: on mobile the table keeps its native structure and scrolls horizontally\n * inside the responsive wrapper instead of collapsing.\n *\n * Automatically enabled if no header is detected, since the enhanced mobile layout\n * has no header labels to project onto the cells.\n */\n readonly isSimple = input(false, { transform: booleanAttribute });\n\n /**\n * Writable internal \"simple\" state, seeded from the `isSimple` input.\n * May be forced to `true` internally when no header is detected.\n */\n private isSimpleTable = linkedSignal(() => this.isSimple());\n\n /**\n * The HTML ID attribute of the table. If not provided, a UUID is generated.\n */\n readonly id = input<string>();\n\n /**\n * Writable internal id, seeded from the `id` input and falling back to a\n * generated UUID when none is provided.\n */\n protected tableId = linkedSignal(() => this.id());\n\n /**\n * Computed list of CSS classes for the host element.\n */\n protected readonly cssClasses = computed<string>(() =>\n [super.getCssClasses('ecl-table'), this.isZebra() ? 'ecl-table--zebra' : '', this.isSimpleTable() ? 'ecl-table--simple' : ''].join(' ').trim());\n\n /**\n * Emits an event when a column sort is triggered.\n */\n readonly sort = output<EclSortTableEvent>();\n\n /**\n * List of header directives detected in the content.\n */\n readonly eclTableHeaders = contentChildren(forwardRef(() => EclTableHeaderDirective), { descendants: true });\n\n constructor() {\n super();\n\n // Re-emit each header's sort event through the table's own `sort` output.\n // Re-subscribes whenever the set of headers changes, disposing the previous\n // subscriptions so removed headers don't leak.\n effect((onCleanup) => {\n const subscription = new Subscription();\n this.eclTableHeaders().forEach((header) => {\n subscription.add(header.sort.subscribe((evt) => this.sort.emit(evt)));\n });\n onCleanup(() => subscription.unsubscribe());\n });\n }\n\n /**\n * Lifecycle hook that runs on component initialization.\n * Generates a unique ID if none is provided.\n */\n ngOnInit(): void {\n if (!this.tableId()) {\n this.tableId.set(crypto.randomUUID());\n }\n }\n\n /**\n * Lifecycle hook that runs after content is fully initialized.\n * Determines if the table should be rendered in \"simple\" mode.\n */\n ngAfterContentInit(): void {\n this.convertToSimpleVariant();\n }\n\n /**\n * Forces the \"simple\" variant when no header directives are found.\n *\n * The enhanced mobile layout relies on header cells to supply the per-cell labels\n * (via `eclTableCellHeader`); without headers there is nothing to project, so the\n * table falls back to the simple (horizontal-scroll) variant on mobile.\n */\n private convertToSimpleVariant(): void {\n if (this.eclTableHeaders().length === 0) {\n this.isSimpleTable.set(true);\n }\n }\n}\n\n/**\n * Directive applied to `<thead>` elements inside a table.\n * Detects header changes and manages ARIA attributes.\n */\n@Directive({\n selector: '[eclTableHead]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTableHeadDirective extends ECLBaseDirective {\n /**\n * Applies the ECL head class to the element.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-table__head'));\n\n /**\n * List of header directives under this head element.\n */\n readonly eclTableHeaders = contentChildren(forwardRef(() => EclTableHeaderDirective), { descendants: true });\n\n constructor() {\n super();\n\n // When any header is sorted, reset the `aria-sort` state on every header so\n // only the active column reports a sort direction. Re-subscribes whenever the\n // set of headers changes, disposing the previous subscriptions.\n effect((onCleanup) => {\n const headers = this.eclTableHeaders();\n const subscription = new Subscription();\n headers.forEach((header) => {\n subscription.add(\n header.sort.subscribe(() => {\n headers.forEach((th) => th.removeAriaSort());\n }),\n );\n });\n onCleanup(() => subscription.unsubscribe());\n });\n }\n}\n\n/**\n * Directive representing a single table header cell in an ECL table.\n * Supports sorting functionality and accessibility attributes.\n */\n@Directive({\n selector: '[eclTableHeader]',\n host: {\n '[attr.aria-sort]': 'ariaSort',\n '[attr.data-ecl-table-sort-toggle]': 'eclSortable()',\n '[attr.scope]': 'scope()',\n '[attr.id]': 'headerId()',\n '[class]': 'cssClasses()',\n '(click)': 'onClick($event)',\n },\n})\nexport class EclTableHeaderDirective extends ECLBaseDirective implements OnInit {\n /**\n * Current sort order of the column (`ascending`, `descending`, or `null`).\n * This sets the `aria-sort` attribute used for accessibility.\n */\n sortOrder: SortOrder | null = null;\n\n get ariaSort(): SortOrder | 'none' {\n return this.sortOrder ?? 'none';\n }\n\n /**\n * Enables sorting on the header. Also sets the `data-ecl-table-sort-toggle` attribute.\n * Acts as the unique identifier for the column when sorting.\n */\n readonly eclSortable = input<string>(null);\n\n /**\n * Scope of the table header. Default is `col`. Sets the `scope` attribute.\n */\n readonly scope = input('col');\n\n /**\n * HTML `id` attribute of the table header cell. If not provided, a UUID will be generated.\n */\n readonly id = input<string>();\n\n /**\n * Writable internal id, seeded from the `id` input and falling back to a\n * generated UUID when none is provided.\n */\n protected headerId = linkedSignal(() => this.id());\n\n /**\n * Aria-label for the sort button that will be injected into the header cell.\n *\n * When provided, the value is used verbatim: it is NOT translated and is NOT\n * updated as the sort direction changes. The consumer is responsible for passing\n * an already-localized string (e.g. `[sortButtonAriaLabel]=\"'my.key' | translate\"`).\n *\n * When omitted, the directive manages the label internally and translates it via\n * the `ecl.table.SORT-LABEL.*` keys, updating it on each sort toggle.\n */\n readonly sortButtonAriaLabel = input<string>(undefined);\n\n /**\n * Computes the CSS classes applied to the header element.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-table__header'));\n\n /**\n * Emits an `EclSortTableEvent` when the header is clicked and sorting is triggered.\n */\n readonly sort = output<EclSortTableEvent>();\n\n private containerComponentRef: ComponentRef<EclTableSortButtonComponent>;\n private el = inject(ElementRef);\n private viewContainerRef = inject(ViewContainerRef);\n private renderer = inject(Renderer2);\n private translateService = inject(TranslateService);\n\n constructor() {\n super();\n\n // Inject the sort button after the next render. `afterNextRender` only runs in\n // the browser, so the button is created client-side (never during SSR).\n afterNextRender(() => this.initSortButtons());\n }\n\n /**\n * Lifecycle hook that runs on component initialization.\n * Generates a unique `id` if not already defined.\n */\n ngOnInit(): void {\n if (!this.headerId()) {\n this.headerId.set(crypto.randomUUID());\n }\n }\n\n /**\n * Clears the `aria-sort` attribute, used to visually and semantically reset previous sort state.\n *\n * Remove the dark arrow for current sorting from prev sorted column\n */\n removeAriaSort(): void {\n this.renderer.setAttribute(this.el.nativeElement, 'aria-sort', 'none');\n }\n\n /**\n * Handles click events on the header.\n * Cycles through sort orders: `null` -> `ascending` -> `descending` -> `null`.\n * Emits a `EclSortTableEvent` with the updated sort state and column identifier.\n *\n * Click triggers 1 -> asc sorting, 2 -> desc sorting then 3 -> initial sorting\n */\n onClick(evt: Event): void {\n if (this.eclSortable()) {\n switch (this.sortOrder) {\n case null: {\n this.sortOrder = SortOrder.ASCENDING;\n this.changeButtonAriaLabel(this.translateService.instant('ecl.table.SORT-LABEL.ascending'));\n break;\n }\n case SortOrder.ASCENDING: {\n this.sortOrder = SortOrder.DESCENDING;\n this.changeButtonAriaLabel(this.translateService.instant('ecl.table.SORT-LABEL.descending'));\n break;\n }\n case SortOrder.DESCENDING: {\n this.sortOrder = null;\n this.changeButtonAriaLabel(this.translateService.instant('ecl.table.SORT-LABEL.default'));\n break;\n }\n }\n\n this.sort.emit(new EclSortTableEvent(this.sortOrder, this.eclSortable()));\n }\n }\n\n private changeButtonAriaLabel(newAriaLabel: string): void {\n if (!this.sortButtonAriaLabel() && this.containerComponentRef) {\n this.containerComponentRef.instance.ariaLabel = newAriaLabel;\n }\n }\n\n /**\n * Dynamically creates and appends the sort button to the header cell.\n * Optionally sets the button's `aria-label` if provided.\n */\n private initSortButtons(): void {\n if (this.eclSortable()) {\n this.containerComponentRef = this.viewContainerRef.createComponent(EclTableSortButtonComponent);\n this.renderer.appendChild(this.el.nativeElement, this.containerComponentRef.location.nativeElement);\n const sortButtonAriaLabel = this.sortButtonAriaLabel();\n if (sortButtonAriaLabel) {\n this.containerComponentRef.instance.ariaLabel = sortButtonAriaLabel;\n } else {\n this.containerComponentRef.instance.ariaLabel = this.translateService.instant('ecl.table.SORT-LABEL.default');\n }\n }\n }\n}\n\n/**\n * Directive for applying ECL row styling to a table row element.\n */\n@Directive({\n selector: '[eclTableRow]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTableRowDirective extends ECLBaseDirective {\n /**\n * Applies `ecl-table__row` class to the table row.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-table__row'));\n}\n\n/**\n * Directive for applying ECL body styling to a table body element.\n */\n@Directive({\n selector: '[eclTableBody]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTableBodyDirective extends ECLBaseDirective {\n /**\n * Applies `ecl-table__body` class to the table body.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-table__body'));\n}\n\n/**\n * Directive for styling individual table cells in the ECL table.\n */\n@Directive({\n selector: '[eclTableCell]',\n host: {\n '[attr.data-ecl-table-header]': 'eclTableCellHeader()',\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTableCellDirective extends ECLBaseDirective {\n /**\n * Provides a reference to the related table header.\n * Sets the `data-ecl-table-header` attribute for accessibility or responsive behavior.\n */\n readonly eclTableCellHeader = input<string>();\n\n /**\n * If `true`, applies additional group styling to the cell.\n */\n readonly isGroup = input(false, { transform: booleanAttribute });\n\n /**\n * Computes and applies appropriate CSS classes for the table cell.\n */\n protected readonly cssClasses = computed<string>(() =>\n [super.getCssClasses('ecl-table__cell'), this.isGroup() ? 'ecl-table__cell--group' : ''].join(' ').trim());\n}\n\n/**\n * Directive used to group multiple table cells under a shared header group.\n */\n@Directive({\n selector: '[eclTableCellGroup]',\n host: {\n '[attr.data-ecl-table-header-group]': 'cellGroup()',\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTableCellGroupDirective extends ECLBaseDirective implements AfterViewInit {\n /**\n * Sets the `data-ecl-table-header-group` attribute to link to a header group.\n */\n readonly eclTableCellGroup = input<string>();\n\n /**\n * Writable internal group value, seeded from the `eclTableCellGroup` input.\n * An empty string is normalized to `null` so the attribute is omitted.\n */\n protected cellGroup = linkedSignal(() => this.eclTableCellGroup());\n\n /**\n * Applies the group-specific cell class.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-table__cell--group'));\n\n private cd = inject(ChangeDetectorRef);\n /**\n * Ensures `data-ecl-table-header-group` is not empty and triggers change detection.\n */\n ngAfterViewInit(): void {\n this.cellGroup.set(this.cellGroup() !== '' ? this.cellGroup() : null);\n this.cd.detectChanges();\n }\n}\n\n/**\n * Directive for applying ECL responsive wrapper to a table container.\n */\n@Directive({\n selector: '[eclTableResponsive]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTableResponsiveDirective extends ECLBaseDirective {\n /**\n * Applies the `ecl-table-responsive` class.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-table-responsive'));\n}\n\n/**\n * Directive for applying styling to a table caption element.\n */\n@Directive({\n selector: 'caption[eclTableCaption]',\n host: {\n '[class.ecl-table__caption]': 'true',\n },\n})\nexport class EclTableCaptionDirective extends ECLBaseDirective {}\n","import {\n EclTableDirective,\n EclTableHeadDirective,\n EclTableHeaderDirective,\n EclTableRowDirective,\n EclTableBodyDirective,\n EclTableCellDirective,\n EclTableCellGroupDirective,\n EclTableResponsiveDirective,\n EclTableCaptionDirective,\n} from './ecl-table.directive';\nimport { EclTableSortButtonComponent } from './ecl-table-sort-button.component';\n\nexport * from './ecl-table.directive';\nexport * from './ecl-table-sort-button.component';\nexport * from './events/ecl-sort-table.event';\n\nexport const EUI_ECL_TABLE = [\n EclTableCaptionDirective,\n EclTableDirective,\n EclTableHeadDirective,\n EclTableHeaderDirective,\n EclTableRowDirective,\n EclTableBodyDirective,\n EclTableCellDirective,\n EclTableCellGroupDirective,\n EclTableSortButtonComponent,\n EclTableResponsiveDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eui-ecl-components-ecl-table.mjs","sources":["../../components/ecl-table/ecl-table-sort-button.component.ts","../../components/ecl-table/ecl-table-sort-button.component.html","../../components/ecl-table/events/ecl-sort-table.event.ts","../../components/ecl-table/ecl-table.directive.ts","../../components/ecl-table/index.ts","../../components/ecl-table/eui-ecl-components-ecl-table.ts"],"sourcesContent":["import { Component, computed, inject } from '@angular/core';\nimport { AsyncPipe } from '@angular/common';\nimport { EclThemeService } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n/**\n * Sort button component used inside sortable table headers.\n *\n * Applies ECL styling for table sort arrows and provides\n * accessibility label for screen readers.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[eclTableSortButton]',\n templateUrl: './ecl-table-sort-button.component.html',\n imports: [...EUI_ECL_ICON, AsyncPipe],\n host: {\n '[attr.aria-label]': 'ariaLabel',\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTableSortButtonComponent extends ECLBaseDirective {\n eclThemeService = inject(EclThemeService);\n\n /**\n * Accessibility label describing the button's function.\n * This value is bound to the `aria-label` attribute.\n */\n ariaLabel = 'Sort table';\n\n /**\n * CSS classes applied to the host element.\n * Includes ECL base table sort arrow styling.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-table__arrow'));\n}\n","<ecl-icon icon=\"solid-arrow\" class=\"ecl-table__icon ecl-table__icon-up\" [size]=\"(eclThemeService.isEC$ | async) ? 'xs' : 'm'\"> </ecl-icon>\n<ecl-icon icon=\"solid-arrow\" class=\"ecl-table__icon ecl-table__icon-down\" [size]=\"(eclThemeService.isEC$ | async) ? 'xs' : 'm'\"> </ecl-icon>\n","import { EclBaseEvent } from '@eui/ecl/core';\nimport { SortOrder } from '../ecl-table.directive';\n\n/**\n * Event emitted when the table sort order changes.\n *\n * Extends the base ECL event to provide sorting-specific information.\n */\nexport class EclSortTableEvent extends EclBaseEvent {\n constructor(\n /**\n * The order in which the table is currently sorted.\n * Can be 'ascending', 'descending', or null (unsorted).\n */\n public sortOrder: SortOrder,\n\n /**\n * The identifier of the column that triggered the sort event.\n */\n public columnId: string,\n ) {\n super();\n }\n}\n","import {\n AfterContentInit,\n Directive,\n ElementRef,\n forwardRef,\n ViewContainerRef,\n booleanAttribute,\n Renderer2,\n AfterViewInit,\n ChangeDetectorRef,\n computed,\n OnInit,\n inject,\n ComponentRef,\n afterNextRender,\n effect,\n input,\n output,\n linkedSignal,\n contentChildren,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclTableSortButtonComponent } from './ecl-table-sort-button.component';\nimport { EclSortTableEvent } from './events/ecl-sort-table.event';\nimport { TranslateService } from '@ngx-translate/core';\n\n/**\n * Enum representing the sort order of a column.\n */\nexport enum SortOrder {\n DESCENDING = 'descending',\n ASCENDING = 'ascending',\n}\n\n/**\n * Directive for styling and managing behavior of ECL tables.\n *\n * Applies ECL-specific table classes and emits sort events when columns are sorted.\n */\n@Directive({\n selector: '[eclTable]',\n host: {\n '[attr.id]': 'tableId()',\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTableDirective extends ECLBaseDirective implements OnInit, AfterContentInit {\n /**\n * Applies zebra striping to the table rows by adding the `ecl-table--zebra` class if true.\n */\n readonly isZebra = input(false, { transform: booleanAttribute });\n\n /**\n * Opts out of the enhanced mobile layout and applies the \"simple\" table variant\n * by adding the `ecl-table--simple` class.\n *\n * This only affects narrow (mobile) viewports; on desktop both variants render as\n * a standard table, so this input is effectively a no-op there.\n * - Default (enhanced): on mobile each row collapses into a stacked, card-like layout\n * that uses the `eclTableCellHeader` value as the label for each cell.\n * - Simple: on mobile the table keeps its native structure and scrolls horizontally\n * inside the responsive wrapper instead of collapsing.\n *\n * Automatically enabled if no header is detected, since the enhanced mobile layout\n * has no header labels to project onto the cells.\n */\n readonly isSimple = input(false, { transform: booleanAttribute });\n\n /**\n * Writable internal \"simple\" state, seeded from the `isSimple` input.\n * May be forced to `true` internally when no header is detected.\n */\n private isSimpleTable = linkedSignal(() => this.isSimple());\n\n /**\n * The HTML ID attribute of the table. If not provided, a UUID is generated.\n */\n readonly id = input<string>();\n\n /**\n * Writable internal id, seeded from the `id` input and falling back to a\n * generated UUID when none is provided.\n */\n protected tableId = linkedSignal(() => this.id());\n\n /**\n * Computed list of CSS classes for the host element.\n */\n protected readonly cssClasses = computed<string>(() =>\n [super.getCssClasses('ecl-table'), this.isZebra() ? 'ecl-table--zebra' : '', this.isSimpleTable() ? 'ecl-table--simple' : ''].join(' ').trim());\n\n /**\n * Emits an event when a column sort is triggered.\n */\n readonly sort = output<EclSortTableEvent>();\n\n /**\n * List of header directives detected in the content.\n */\n readonly eclTableHeaders = contentChildren(forwardRef(() => EclTableHeaderDirective), { descendants: true });\n\n constructor() {\n super();\n\n // Re-emit each header's sort event through the table's own `sort` output.\n // Re-subscribes whenever the set of headers changes, disposing the previous\n // subscriptions so removed headers don't leak.\n effect((onCleanup) => {\n const subscription = new Subscription();\n this.eclTableHeaders().forEach((header) => {\n subscription.add(header.sort.subscribe((evt) => this.sort.emit(evt)));\n });\n onCleanup(() => subscription.unsubscribe());\n });\n }\n\n /**\n * Lifecycle hook that runs on component initialization.\n * Generates a unique ID if none is provided.\n */\n ngOnInit(): void {\n if (!this.tableId()) {\n this.tableId.set(crypto.randomUUID());\n }\n }\n\n /**\n * Lifecycle hook that runs after content is fully initialized.\n * Determines if the table should be rendered in \"simple\" mode.\n */\n ngAfterContentInit(): void {\n this.convertToSimpleVariant();\n }\n\n /**\n * Forces the \"simple\" variant when no header directives are found.\n *\n * The enhanced mobile layout relies on header cells to supply the per-cell labels\n * (via `eclTableCellHeader`); without headers there is nothing to project, so the\n * table falls back to the simple (horizontal-scroll) variant on mobile.\n */\n private convertToSimpleVariant(): void {\n if (this.eclTableHeaders().length === 0) {\n this.isSimpleTable.set(true);\n }\n }\n}\n\n/**\n * Directive applied to `<thead>` elements inside a table.\n * Detects header changes and manages ARIA attributes.\n */\n@Directive({\n selector: '[eclTableHead]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTableHeadDirective extends ECLBaseDirective {\n /**\n * Applies the ECL head class to the element.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-table__head'));\n\n /**\n * List of header directives under this head element.\n */\n readonly eclTableHeaders = contentChildren(forwardRef(() => EclTableHeaderDirective), { descendants: true });\n\n constructor() {\n super();\n\n // When any header is sorted, reset the `aria-sort` state on every header so\n // only the active column reports a sort direction. Re-subscribes whenever the\n // set of headers changes, disposing the previous subscriptions.\n effect((onCleanup) => {\n const headers = this.eclTableHeaders();\n const subscription = new Subscription();\n headers.forEach((header) => {\n subscription.add(\n header.sort.subscribe(() => {\n headers.forEach((th) => th.removeAriaSort());\n }),\n );\n });\n onCleanup(() => subscription.unsubscribe());\n });\n }\n}\n\n/**\n * Directive representing a single table header cell in an ECL table.\n * Supports sorting functionality and accessibility attributes.\n */\n@Directive({\n selector: '[eclTableHeader]',\n host: {\n '[attr.aria-sort]': 'ariaSort',\n '[attr.data-ecl-table-sort-toggle]': 'eclSortable()',\n '[attr.scope]': 'scope()',\n '[attr.id]': 'headerId()',\n '[class]': 'cssClasses()',\n '(click)': 'onClick($event)',\n },\n})\nexport class EclTableHeaderDirective extends ECLBaseDirective implements OnInit {\n /**\n * Current sort order of the column (`ascending`, `descending`, or `null`).\n * This sets the `aria-sort` attribute used for accessibility.\n */\n sortOrder: SortOrder | null = null;\n\n get ariaSort(): SortOrder | 'none' {\n return this.sortOrder ?? 'none';\n }\n\n /**\n * Enables sorting on the header. Also sets the `data-ecl-table-sort-toggle` attribute.\n * Acts as the unique identifier for the column when sorting.\n */\n readonly eclSortable = input<string>(null);\n\n /**\n * Scope of the table header. Default is `col`. Sets the `scope` attribute.\n */\n readonly scope = input('col');\n\n /**\n * HTML `id` attribute of the table header cell. If not provided, a UUID will be generated.\n */\n readonly id = input<string>();\n\n /**\n * Writable internal id, seeded from the `id` input and falling back to a\n * generated UUID when none is provided.\n */\n protected headerId = linkedSignal(() => this.id());\n\n /**\n * Aria-label for the sort button that will be injected into the header cell.\n *\n * When provided, the value is used verbatim: it is NOT translated and is NOT\n * updated as the sort direction changes. The consumer is responsible for passing\n * an already-localized string (e.g. `[sortButtonAriaLabel]=\"'my.key' | translate\"`).\n *\n * When omitted, the directive manages the label internally and translates it via\n * the `ecl.table.SORT-LABEL.*` keys, updating it on each sort toggle.\n */\n readonly sortButtonAriaLabel = input<string>(undefined);\n\n /**\n * Computes the CSS classes applied to the header element.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-table__header'));\n\n /**\n * Emits an `EclSortTableEvent` when the header is clicked and sorting is triggered.\n */\n readonly sort = output<EclSortTableEvent>();\n\n private containerComponentRef: ComponentRef<EclTableSortButtonComponent>;\n private el = inject(ElementRef);\n private viewContainerRef = inject(ViewContainerRef);\n private renderer = inject(Renderer2);\n private translateService = inject(TranslateService);\n\n constructor() {\n super();\n\n // Inject the sort button after the next render. `afterNextRender` only runs in\n // the browser, so the button is created client-side (never during SSR).\n afterNextRender(() => this.initSortButtons());\n }\n\n /**\n * Lifecycle hook that runs on component initialization.\n * Generates a unique `id` if not already defined.\n */\n ngOnInit(): void {\n if (!this.headerId()) {\n this.headerId.set(crypto.randomUUID());\n }\n }\n\n /**\n * Clears the `aria-sort` attribute, used to visually and semantically reset previous sort state.\n *\n * Remove the dark arrow for current sorting from prev sorted column\n */\n removeAriaSort(): void {\n this.renderer.setAttribute(this.el.nativeElement, 'aria-sort', 'none');\n }\n\n /**\n * Handles click events on the header.\n * Cycles through sort orders: `null` -> `ascending` -> `descending` -> `null`.\n * Emits a `EclSortTableEvent` with the updated sort state and column identifier.\n *\n * Click triggers 1 -> asc sorting, 2 -> desc sorting then 3 -> initial sorting\n */\n onClick(evt: Event): void {\n if (this.eclSortable()) {\n switch (this.sortOrder) {\n case null: {\n this.sortOrder = SortOrder.ASCENDING;\n this.changeButtonAriaLabel(this.translateService.instant('ecl.table.SORT-LABEL.ascending'));\n break;\n }\n case SortOrder.ASCENDING: {\n this.sortOrder = SortOrder.DESCENDING;\n this.changeButtonAriaLabel(this.translateService.instant('ecl.table.SORT-LABEL.descending'));\n break;\n }\n case SortOrder.DESCENDING: {\n this.sortOrder = null;\n this.changeButtonAriaLabel(this.translateService.instant('ecl.table.SORT-LABEL.default'));\n break;\n }\n }\n\n this.sort.emit(new EclSortTableEvent(this.sortOrder, this.eclSortable()));\n }\n }\n\n private changeButtonAriaLabel(newAriaLabel: string): void {\n if (!this.sortButtonAriaLabel() && this.containerComponentRef) {\n this.containerComponentRef.instance.ariaLabel = newAriaLabel;\n }\n }\n\n /**\n * Dynamically creates and appends the sort button to the header cell.\n * Optionally sets the button's `aria-label` if provided.\n */\n private initSortButtons(): void {\n if (this.eclSortable()) {\n this.containerComponentRef = this.viewContainerRef.createComponent(EclTableSortButtonComponent);\n this.renderer.appendChild(this.el.nativeElement, this.containerComponentRef.location.nativeElement);\n const sortButtonAriaLabel = this.sortButtonAriaLabel();\n if (sortButtonAriaLabel) {\n this.containerComponentRef.instance.ariaLabel = sortButtonAriaLabel;\n } else {\n this.containerComponentRef.instance.ariaLabel = this.translateService.instant('ecl.table.SORT-LABEL.default');\n }\n }\n }\n}\n\n/**\n * Directive for applying ECL row styling to a table row element.\n */\n@Directive({\n selector: '[eclTableRow]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTableRowDirective extends ECLBaseDirective {\n /**\n * Applies `ecl-table__row` class to the table row.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-table__row'));\n}\n\n/**\n * Directive for applying ECL body styling to a table body element.\n */\n@Directive({\n selector: '[eclTableBody]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTableBodyDirective extends ECLBaseDirective {\n /**\n * Applies `ecl-table__body` class to the table body.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-table__body'));\n}\n\n/**\n * Directive for styling individual table cells in the ECL table.\n */\n@Directive({\n selector: '[eclTableCell]',\n host: {\n '[attr.data-ecl-table-header]': 'eclTableCellHeader()',\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTableCellDirective extends ECLBaseDirective {\n /**\n * Provides a reference to the related table header.\n * Sets the `data-ecl-table-header` attribute for accessibility or responsive behavior.\n */\n readonly eclTableCellHeader = input<string>();\n\n /**\n * If `true`, applies additional group styling to the cell.\n */\n readonly isGroup = input(false, { transform: booleanAttribute });\n\n /**\n * Computes and applies appropriate CSS classes for the table cell.\n */\n protected readonly cssClasses = computed<string>(() =>\n [super.getCssClasses('ecl-table__cell'), this.isGroup() ? 'ecl-table__cell--group' : ''].join(' ').trim());\n}\n\n/**\n * Directive used to group multiple table cells under a shared header group.\n */\n@Directive({\n selector: '[eclTableCellGroup]',\n host: {\n '[attr.data-ecl-table-header-group]': 'cellGroup()',\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTableCellGroupDirective extends ECLBaseDirective implements AfterViewInit {\n /**\n * Sets the `data-ecl-table-header-group` attribute to link to a header group.\n */\n readonly eclTableCellGroup = input<string>();\n\n /**\n * Writable internal group value, seeded from the `eclTableCellGroup` input.\n * An empty string is normalized to `null` so the attribute is omitted.\n */\n protected cellGroup = linkedSignal(() => this.eclTableCellGroup());\n\n /**\n * Applies the group-specific cell class.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-table__cell--group'));\n\n private cd = inject(ChangeDetectorRef);\n /**\n * Ensures `data-ecl-table-header-group` is not empty and triggers change detection.\n */\n ngAfterViewInit(): void {\n this.cellGroup.set(this.cellGroup() !== '' ? this.cellGroup() : null);\n this.cd.detectChanges();\n }\n}\n\n/**\n * Directive for applying ECL responsive wrapper to a table container.\n */\n@Directive({\n selector: '[eclTableResponsive]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTableResponsiveDirective extends ECLBaseDirective {\n /**\n * Applies the `ecl-table-responsive` class.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-table-responsive'));\n}\n\n/**\n * Directive for applying styling to a table caption element.\n */\n@Directive({\n selector: 'caption[eclTableCaption]',\n host: {\n '[class.ecl-table__caption]': 'true',\n },\n})\nexport class EclTableCaptionDirective extends ECLBaseDirective {}\n","import {\n EclTableDirective,\n EclTableHeadDirective,\n EclTableHeaderDirective,\n EclTableRowDirective,\n EclTableBodyDirective,\n EclTableCellDirective,\n EclTableCellGroupDirective,\n EclTableResponsiveDirective,\n EclTableCaptionDirective,\n} from './ecl-table.directive';\nimport { EclTableSortButtonComponent } from './ecl-table-sort-button.component';\n\nexport * from './ecl-table.directive';\nexport * from './ecl-table-sort-button.component';\nexport * from './events/ecl-sort-table.event';\n\nexport const EUI_ECL_TABLE = [\n EclTableCaptionDirective,\n EclTableDirective,\n EclTableHeadDirective,\n EclTableHeaderDirective,\n EclTableRowDirective,\n EclTableBodyDirective,\n EclTableCellDirective,\n EclTableCellGroupDirective,\n EclTableSortButtonComponent,\n EclTableResponsiveDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAMA;;;;;AAKG;AAWG,MAAO,2BAA4B,SAAQ,gBAAgB,CAAA;AAVjE,IAAA,WAAA,GAAA;;AAWI,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AAEzC;;;AAGG;QACH,IAAA,CAAA,SAAS,GAAG,YAAY;AAExB;;;AAGG;QACgB,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAS,MAC7C,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC;uFAAC;AAC/C,IAAA;8GAfY,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,OAAA,EAAA,cAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBxC,wSAEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDc+B,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAM3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAVvC,SAAS;AAEI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,WAE7B,CAAC,GAAG,YAAY,EAAE,SAAS,CAAC,EAAA,IAAA,EAC/B;AACF,wBAAA,mBAAmB,EAAE,WAAW;AAChC,wBAAA,SAAS,EAAE,cAAc;AAC5B,qBAAA,EAAA,QAAA,EAAA,wSAAA,EAAA;;;AEjBL;;;;AAIG;AACG,MAAO,iBAAkB,SAAQ,YAAY,CAAA;AAC/C,IAAA,WAAA;AACI;;;AAGG;IACI,SAAoB;AAE3B;;AAEG;IACI,QAAgB,EAAA;AAEvB,QAAA,KAAK,EAAE;QAPA,IAAA,CAAA,SAAS,GAAT,SAAS;QAKT,IAAA,CAAA,QAAQ,GAAR,QAAQ;IAGnB;AACH;;ACID;;AAEG;IACS;AAAZ,CAAA,UAAY,SAAS,EAAA;AACjB,IAAA,SAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AAC3B,CAAC,EAHW,SAAS,KAAT,SAAS,GAAA,EAAA,CAAA,CAAA;AAKrB;;;;AAIG;AAQG,MAAO,iBAAkB,SAAQ,gBAAgB,CAAA;AAuDnD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AAvDX;;AAEG;QACM,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEhE;;;;;;;;;;;;;AAaG;QACM,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEjE;;;AAGG;QACK,IAAA,CAAA,aAAa,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE;0FAAC;AAE3D;;AAEG;AACM,QAAA,IAAA,CAAA,EAAE,GAAG,KAAK;0FAAU;AAE7B;;;AAGG;QACO,IAAA,CAAA,OAAO,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE,EAAE;oFAAC;AAEjD;;AAEG;QACgB,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAS,MAC7C,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,kBAAkB,GAAG,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,GAAG,mBAAmB,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;uFAAC;AAEnJ;;AAEG;QACM,IAAA,CAAA,IAAI,GAAG,MAAM,EAAqB;AAE3C;;AAEG;AACM,QAAA,IAAA,CAAA,eAAe,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,uBAAuB,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,WAAW,EAAE,IAAI,GAAG;;;;AAQxG,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACjB,YAAA,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE;YACvC,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;gBACtC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACzE,YAAA,CAAC,CAAC;YACF,SAAS,CAAC,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;AAC/C,QAAA,CAAC,CAAC;IACN;AAEA;;;AAGG;IACH,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACjB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACzC;IACJ;AAEA;;;AAGG;IACH,kBAAkB,GAAA;QACd,IAAI,CAAC,sBAAsB,EAAE;IACjC;AAEA;;;;;;AAMG;IACK,sBAAsB,GAAA;QAC1B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;QAChC;IACJ;8GAnGS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,0lBAqDkC,uBAAuB,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FArD1E,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,IAAI,EAAE;AACF,wBAAA,WAAW,EAAE,WAAW;AACxB,wBAAA,SAAS,EAAE,cAAc;AAC5B,qBAAA;AACJ,iBAAA;4aAsD8C,UAAU,CAAC,MAAM,uBAAuB,CAAC,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;AAiD/G;;;AAGG;AAOG,MAAO,qBAAsB,SAAQ,gBAAgB,CAAA;AAYvD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AAZX;;AAEG;QACgB,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAS,MAC7C,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC;uFAAC;AAE3C;;AAEG;AACM,QAAA,IAAA,CAAA,eAAe,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,uBAAuB,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,WAAW,EAAE,IAAI,GAAG;;;;AAQxG,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACjB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;AACtC,YAAA,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE;AACvC,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;gBACvB,YAAY,CAAC,GAAG,CACZ,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAK;AACvB,oBAAA,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,cAAc,EAAE,CAAC;gBAChD,CAAC,CAAC,CACL;AACL,YAAA,CAAC,CAAC;YACF,SAAS,CAAC,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;AAC/C,QAAA,CAAC,CAAC;IACN;8GA9BS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,iLAU8B,uBAAuB,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAV1E,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,cAAc;AAC5B,qBAAA;AACJ,iBAAA;6GAW8C,UAAU,CAAC,MAAM,uBAAuB,CAAC,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;AAuB/G;;;AAGG;AAYG,MAAO,uBAAwB,SAAQ,gBAAgB,CAAA;AAOzD,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,MAAM;IACnC;AAqDA,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AA9DX;;;AAGG;QACH,IAAA,CAAA,SAAS,GAAqB,IAAI;AAMlC;;;AAGG;QACM,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,IAAI;wFAAC;AAE1C;;AAEG;QACM,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,KAAK;kFAAC;AAE7B;;AAEG;AACM,QAAA,IAAA,CAAA,EAAE,GAAG,KAAK;0FAAU;AAE7B;;;AAGG;QACO,IAAA,CAAA,QAAQ,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE,EAAE;qFAAC;AAElD;;;;;;;;;AASG;QACM,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAS,SAAS;gGAAC;AAEvD;;AAEG;QACgB,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAS,MAC7C,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC;uFAAC;AAE7C;;AAEG;QACM,IAAA,CAAA,IAAI,GAAG,MAAM,EAAqB;AAGnC,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACvB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;;;QAO/C,eAAe,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;IACjD;AAEA;;;AAGG;IACH,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1C;IACJ;AAEA;;;;AAIG;IACH,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC;IAC1E;AAEA;;;;;;AAMG;AACH,IAAA,OAAO,CAAC,GAAU,EAAA;AACd,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACpB,YAAA,QAAQ,IAAI,CAAC,SAAS;gBAClB,KAAK,IAAI,EAAE;AACP,oBAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS;AACpC,oBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;oBAC3F;gBACJ;AACA,gBAAA,KAAK,SAAS,CAAC,SAAS,EAAE;AACtB,oBAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,UAAU;AACrC,oBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;oBAC5F;gBACJ;AACA,gBAAA,KAAK,SAAS,CAAC,UAAU,EAAE;AACvB,oBAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,oBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;oBACzF;gBACJ;;AAGJ,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7E;IACJ;AAEQ,IAAA,qBAAqB,CAAC,YAAoB,EAAA;QAC9C,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC3D,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,SAAS,GAAG,YAAY;QAChE;IACJ;AAEA;;;AAGG;IACK,eAAe,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACpB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,2BAA2B,CAAC;AAC/F,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,aAAa,CAAC;AACnG,YAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,EAAE;YACtD,IAAI,mBAAmB,EAAE;gBACrB,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,SAAS,GAAG,mBAAmB;YACvE;iBAAO;AACH,gBAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,8BAA8B,CAAC;YACjH;QACJ;IACJ;8GA7IS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,YAAA,EAAA,OAAA,EAAA,cAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAXnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,IAAI,EAAE;AACF,wBAAA,kBAAkB,EAAE,UAAU;AAC9B,wBAAA,mCAAmC,EAAE,eAAe;AACpD,wBAAA,cAAc,EAAE,SAAS;AACzB,wBAAA,WAAW,EAAE,YAAY;AACzB,wBAAA,SAAS,EAAE,cAAc;AACzB,wBAAA,SAAS,EAAE,iBAAiB;AAC/B,qBAAA;AACJ,iBAAA;;AAiJD;;AAEG;AAOG,MAAO,oBAAqB,SAAQ,gBAAgB,CAAA;AAN1D,IAAA,WAAA,GAAA;;AAOI;;AAEG;QACgB,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAS,MAC7C,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC;uFAAC;AAC7C,IAAA;8GANY,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,cAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,cAAc;AAC5B,qBAAA;AACJ,iBAAA;;AASD;;AAEG;AAOG,MAAO,qBAAsB,SAAQ,gBAAgB,CAAA;AAN3D,IAAA,WAAA,GAAA;;AAOI;;AAEG;QACgB,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAS,MAC7C,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC;uFAAC;AAC9C,IAAA;8GANY,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,cAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,cAAc;AAC5B,qBAAA;AACJ,iBAAA;;AASD;;AAEG;AAQG,MAAO,qBAAsB,SAAQ,gBAAgB,CAAA;AAP3D,IAAA,WAAA,GAAA;;AAQI;;;AAGG;AACM,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK;0GAAU;AAE7C;;AAEG;QACM,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEhE;;AAEG;AACgB,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAS,MAC7C,CAAC,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,wBAAwB,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;uFAAC;AACjH,IAAA;8GAjBY,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,4BAAA,EAAA,sBAAA,EAAA,OAAA,EAAA,cAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACF,wBAAA,8BAA8B,EAAE,sBAAsB;AACtD,wBAAA,SAAS,EAAE,cAAc;AAC5B,qBAAA;AACJ,iBAAA;;AAoBD;;AAEG;AAQG,MAAO,0BAA2B,SAAQ,gBAAgB,CAAA;AAPhE,IAAA,WAAA,GAAA;;AAQI;;AAEG;AACM,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK;yGAAU;AAE5C;;;AAGG;QACO,IAAA,CAAA,SAAS,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE;sFAAC;AAElE;;AAEG;QACgB,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAS,MAC7C,KAAK,CAAC,aAAa,CAAC,wBAAwB,CAAC;uFAAC;AAE1C,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAQzC,IAAA;AAPG;;AAEG;IACH,eAAe,GAAA;QACX,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC;AACrE,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IAC3B;8GAzBS,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kCAAA,EAAA,aAAA,EAAA,OAAA,EAAA,cAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,IAAI,EAAE;AACF,wBAAA,oCAAoC,EAAE,aAAa;AACnD,wBAAA,SAAS,EAAE,cAAc;AAC5B,qBAAA;AACJ,iBAAA;;AA6BD;;AAEG;AAOG,MAAO,2BAA4B,SAAQ,gBAAgB,CAAA;AANjE,IAAA,WAAA,GAAA;;AAOI;;AAEG;QACgB,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAS,MAC7C,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC;uFAAC;AACnD,IAAA;8GANY,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,cAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,cAAc;AAC5B,qBAAA;AACJ,iBAAA;;AASD;;AAEG;AAOG,MAAO,wBAAyB,SAAQ,gBAAgB,CAAA;8GAAjD,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,IAAI,EAAE;AACF,wBAAA,4BAA4B,EAAE,MAAM;AACvC,qBAAA;AACJ,iBAAA;;;AC5cM,MAAM,aAAa,GAAG;IACzB,wBAAwB;IACxB,iBAAiB;IACjB,qBAAqB;IACrB,uBAAuB;IACvB,oBAAoB;IACpB,qBAAqB;IACrB,qBAAqB;IACrB,0BAA0B;IAC1B,2BAA2B;IAC3B,2BAA2B;;;AC3B/B;;AAEG;;"}