@eui/ecl 21.3.2 → 21.3.3-snapshot-1782381806158
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.
- package/assets/i18n-ecl/bg.json +1 -2
- package/assets/i18n-ecl/cs.json +1 -2
- package/assets/i18n-ecl/da.json +1 -2
- package/assets/i18n-ecl/de.json +1 -2
- package/assets/i18n-ecl/el.json +1 -2
- package/assets/i18n-ecl/en.json +1 -2
- package/assets/i18n-ecl/es.json +1 -2
- package/assets/i18n-ecl/et.json +66 -67
- package/assets/i18n-ecl/fi.json +47 -48
- package/assets/i18n-ecl/fr.json +1 -2
- package/assets/i18n-ecl/ga.json +3 -4
- package/assets/i18n-ecl/hr.json +59 -60
- package/assets/i18n-ecl/hu.json +1 -2
- package/assets/i18n-ecl/it.json +1 -2
- package/assets/i18n-ecl/lt.json +95 -96
- package/assets/i18n-ecl/lv.json +1 -2
- package/assets/i18n-ecl/mt.json +1 -2
- package/assets/i18n-ecl/nl.json +1 -2
- package/assets/i18n-ecl/pl.json +105 -106
- package/assets/i18n-ecl/pt.json +1 -2
- package/assets/i18n-ecl/ro.json +1 -2
- package/assets/i18n-ecl/sk.json +1 -2
- package/assets/i18n-ecl/sl.json +48 -49
- package/assets/i18n-ecl/sv.json +93 -94
- package/components/ecl-animated-numbers/package.json +4 -0
- package/components/ecl-page-summary/package.json +4 -0
- package/components/ecl-text-media/package.json +4 -0
- package/docs/changelog.html +32 -0
- package/docs/components/EclAccordionSummaryComponent.html +2 -2
- package/docs/components/EclAddToCalendarComponent.html +2 -2
- package/docs/components/EclAnimatedNumbersComponent.html +625 -0
- package/docs/components/EclAnimatedNumbersItemComponent.html +625 -0
- package/docs/components/EclAppComponent.html +2 -2
- package/docs/components/EclBannerComponent.html +2 -2
- package/docs/components/EclBlockquoteComponent.html +2 -2
- package/docs/components/EclBreadcrumbComponent.html +2 -2
- package/docs/components/EclBreadcrumbSegmentComponent.html +2 -2
- package/docs/components/EclButtonComponent.html +2 -2
- package/docs/components/EclCardBodyComponent.html +2 -2
- package/docs/components/EclCardComponent.html +2 -2
- package/docs/components/EclCarouselComponent.html +2 -2
- package/docs/components/EclCarouselItemComponent.html +2 -2
- package/docs/components/EclCategoryFilterComponent.html +2 -2
- package/docs/components/EclCategoryFilterItemComponent.html +2 -2
- package/docs/components/EclCategoryFilterListComponent.html +2 -2
- package/docs/components/EclCheckboxHelpComponent.html +2 -2
- package/docs/components/EclCheckboxLabelComponent.html +2 -2
- package/docs/components/EclContentBlockComponent.html +2 -2
- package/docs/components/EclContentItemComponent.html +2 -2
- package/docs/components/EclDateBlockComponent.html +2 -2
- package/docs/components/EclDescriptionListDefinitionComponent.html +2 -2
- package/docs/components/EclExpandableComponent.html +2 -2
- package/docs/components/EclFactFiguresComponent.html +2 -2
- package/docs/components/EclFactFiguresItemComponent.html +2 -2
- package/docs/components/EclFactFiguresViewAllComponent.html +2 -2
- package/docs/components/EclFeaturedComponent.html +2 -2
- package/docs/components/EclFeaturedItemComponent.html +2 -2
- package/docs/components/EclFeaturedItemDescriptionComponent.html +2 -2
- package/docs/components/EclFileComponent.html +2 -2
- package/docs/components/EclFileItemComponent.html +2 -2
- package/docs/components/EclFileItemsComponent.html +2 -2
- package/docs/components/EclFileTaxonomyComponent.html +2 -2
- package/docs/components/EclFormGroupComponent.html +2 -2
- package/docs/components/EclFormLabelComponent.html +2 -2
- package/docs/components/EclGalleryComponent.html +2 -2
- package/docs/components/EclGalleryFooterComponent.html +2 -2
- package/docs/components/EclGalleryItemComponent.html +2 -2
- package/docs/components/EclIconComponent.html +2 -2
- package/docs/components/EclIndicatorComponent-1.html +2 -2
- package/docs/components/EclIndicatorComponent.html +2 -2
- package/docs/components/EclInpageNavigationComponent.html +2 -2
- package/docs/components/EclInpageNavigationItemComponent.html +2 -2
- package/docs/components/EclListIllustrationComponent.html +2 -2
- package/docs/components/EclListIllustrationItemComponent.html +2 -2
- package/docs/components/EclLoadingIndicatorComponent.html +2 -2
- package/docs/components/EclMediaContainerComponent.html +189 -103
- package/docs/components/EclMegaMenuComponent.html +2 -2
- package/docs/components/EclMegaMenuFeaturedComponent.html +2 -2
- package/docs/components/EclMegaMenuInfoComponent.html +2 -2
- package/docs/components/EclMegaMenuItemComponent.html +2 -2
- package/docs/components/EclMegaMenuSubitemComponent.html +2 -2
- package/docs/components/EclMenuComponent.html +2 -2
- package/docs/components/EclMenuItemComponent.html +2 -2
- package/docs/components/EclMenuMegaComponent.html +2 -2
- package/docs/components/EclMenuMegaItemComponent.html +2 -2
- package/docs/components/EclModalBodyComponent.html +2 -2
- package/docs/components/EclModalComponent.html +2 -2
- package/docs/components/EclModalFooterComponent.html +2 -2
- package/docs/components/EclModalHeaderComponent.html +2 -2
- package/docs/components/EclMultiselectComponent.html +2 -2
- package/docs/components/EclMultiselectDropdownComponent.html +2 -2
- package/docs/components/EclMultiselectInputComponent.html +2 -2
- package/docs/components/EclMultiselectOptgroupComponent.html +2 -2
- package/docs/components/EclMultiselectOptionComponent.html +2 -2
- package/docs/components/EclNavigationListComponent.html +2 -2
- package/docs/components/EclNavigationListItemComponent.html +2 -2
- package/docs/components/EclNewsTickerComponent.html +2 -2
- package/docs/components/EclNewsTickerItemComponent.html +2 -2
- package/docs/components/EclNotificationComponent.html +2 -2
- package/docs/components/EclPageHeaderComponent.html +2 -2
- package/docs/components/EclPageHeaderDescriptionContainerComponent.html +2 -2
- package/docs/components/EclPageHeaderExpandableComponent.html +2 -2
- package/docs/components/EclPageHeaderNextComponent.html +2 -2
- package/docs/components/EclPageHeaderSectionComponent.html +2 -2
- package/docs/components/EclPageHeaderSectionInfoComponent.html +2 -2
- package/docs/components/EclPageSummaryComponent.html +364 -0
- package/docs/components/EclPaginationComponent.html +2 -2
- package/docs/components/EclPaginationItemComponent.html +2 -2
- package/docs/components/EclPopoverComponent.html +2 -2
- package/docs/components/EclQuizCardComponent.html +71 -402
- package/docs/components/EclQuizComponent.html +10 -137
- package/docs/components/EclRadioHelpComponent.html +2 -2
- package/docs/components/EclRadioLabelComponent.html +2 -2
- package/docs/components/EclRangeBubbleComponent.html +2 -2
- package/docs/components/EclRangeValueComponent.html +2 -2
- package/docs/components/EclRatingFieldComponent.html +2 -2
- package/docs/components/EclSearchFormComponent.html +2 -2
- package/docs/components/EclSelectContainerComponent.html +2 -2
- package/docs/components/EclSiteFooterComponent.html +2 -10
- package/docs/components/EclSiteFooterCoownerComponent.html +2 -2
- package/docs/components/EclSiteFooterCoreComponent.html +2 -2
- package/docs/components/EclSiteFooterFixedContentEUComponent.html +2 -2
- package/docs/components/EclSiteFooterRowCommonComponent.html +2 -2
- package/docs/components/EclSiteHeaderActionComponent.html +2 -2
- package/docs/components/EclSiteHeaderBannerTopComponent.html +2 -2
- package/docs/components/EclSiteHeaderComponent.html +2 -2
- package/docs/components/EclSiteHeaderCustomActionComponent.html +2 -2
- package/docs/components/EclSiteHeaderEnvironmentComponent.html +2 -2
- package/docs/components/EclSiteHeaderLanguageComponent.html +2 -2
- package/docs/components/EclSiteHeaderLanguagePopoverComponent.html +2 -2
- package/docs/components/EclSiteHeaderLoginComponent.html +2 -2
- package/docs/components/EclSiteHeaderNotificationComponent.html +2 -2
- package/docs/components/EclSiteHeaderSearchComponent.html +2 -2
- package/docs/components/EclSocialMediaFollowComponent.html +2 -2
- package/docs/components/EclSocialMediaFollowItemComponent.html +2 -2
- package/docs/components/EclSplashPageComponent.html +2 -2
- package/docs/components/EclSplashPageLanguageCategoryComponent.html +2 -2
- package/docs/components/EclSplashPageLanguageContainerComponent.html +2 -2
- package/docs/components/EclSplashPageLanguageLinkComponent.html +2 -2
- package/docs/components/EclSpotlightComponent.html +2 -2
- package/docs/components/EclSpotlightLinkComponent.html +2 -2
- package/docs/components/EclStickyContainerComponent.html +2 -2
- package/docs/components/EclTabComponent.html +2 -2
- package/docs/components/EclTabLabelComponent.html +2 -2
- package/docs/components/EclTableSortButtonComponent.html +2 -2
- package/docs/components/EclTabsComponent.html +2 -2
- package/docs/components/EclTagComponent.html +2 -2
- package/docs/components/EclTextMediaComponent.html +569 -0
- package/docs/components/EclTimelineComponent.html +2 -2
- package/docs/components/EclTimelineItemComponent.html +2 -2
- package/docs/components/EclTimelineItemTogglerComponent.html +2 -2
- package/docs/directives/EclAnimatedNumbersIconDirective.html +261 -0
- package/docs/directives/EclAnimatedNumbersItemsDirective.html +263 -0
- package/docs/directives/EclAnimatedNumbersSourceDirective.html +261 -0
- package/docs/directives/EclAnimatedNumbersSourcesItemDirective.html +263 -0
- package/docs/directives/EclAnimatedNumbersSourcesListDirective.html +263 -0
- package/docs/directives/EclPageInformationDirective.html +6 -130
- package/docs/directives/EclQuizListDirective.html +365 -0
- package/docs/directives/EclTextMediaContainerDirective.html +260 -0
- package/docs/directives/EclTextMediaDescriptionDirective.html +260 -0
- package/docs/directives/EclTextMediaLinkDirective.html +260 -0
- package/docs/directives/EclTextMediaMediaAnchorDirective.html +313 -0
- package/docs/directives/EclTextMediaMicroTitleDirective.html +260 -0
- package/docs/directives/EclTextMediaTitleDirective.html +260 -0
- package/docs/js/menu-wc.js +48 -0
- package/docs/js/menu-wc_es5.js +1 -1
- package/docs/js/search/search_index.js +2 -2
- package/docs/json/EclAccordionDirective.md +1 -0
- package/docs/json/EclAnimatedNumbersComponent.md +34 -0
- package/docs/json/EclAnimatedNumbersIconDirective.md +14 -0
- package/docs/json/EclAnimatedNumbersItemComponent.md +33 -0
- package/docs/json/EclAnimatedNumbersItemsDirective.md +16 -0
- package/docs/json/EclAnimatedNumbersSourceDirective.md +14 -0
- package/docs/json/EclAnimatedNumbersSourcesItemDirective.md +16 -0
- package/docs/json/EclAnimatedNumbersSourcesListDirective.md +16 -0
- package/docs/json/EclMediaContainerComponent.md +1 -0
- package/docs/json/EclPageSummaryComponent.md +12 -0
- package/docs/json/EclQuizCardComponent.md +2 -3
- package/docs/json/EclQuizComponent.md +1 -1
- package/docs/json/EclQuizListDirective.md +8 -0
- package/docs/json/EclTextMediaComponent.md +18 -0
- package/docs/json/EclTextMediaContainerDirective.md +10 -0
- package/docs/json/EclTextMediaDescriptionDirective.md +10 -0
- package/docs/json/EclTextMediaLinkDirective.md +10 -0
- package/docs/json/EclTextMediaMediaAnchorDirective.md +17 -0
- package/docs/json/EclTextMediaMicroTitleDirective.md +10 -0
- package/docs/json/EclTextMediaTitleDirective.md +10 -0
- package/docs/json/documentation.json +1252 -493
- package/docs/miscellaneous/variables.html +115 -0
- package/docs/overview.html +2 -2
- package/docs/properties.html +1 -1
- package/fesm2022/eui-ecl-components-ecl-accordion.mjs +1 -0
- package/fesm2022/eui-ecl-components-ecl-accordion.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-animated-numbers.mjs +359 -0
- package/fesm2022/eui-ecl-components-ecl-animated-numbers.mjs.map +1 -0
- package/fesm2022/eui-ecl-components-ecl-link.mjs +6 -1
- package/fesm2022/eui-ecl-components-ecl-link.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-media-container.mjs +57 -27
- package/fesm2022/eui-ecl-components-ecl-media-container.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-page-information.mjs +6 -14
- package/fesm2022/eui-ecl-components-ecl-page-information.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-page-summary.mjs +30 -0
- package/fesm2022/eui-ecl-components-ecl-page-summary.mjs.map +1 -0
- package/fesm2022/eui-ecl-components-ecl-quiz.mjs +63 -87
- package/fesm2022/eui-ecl-components-ecl-quiz.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-site-footer.mjs +4 -4
- package/fesm2022/eui-ecl-components-ecl-site-footer.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-text-media.mjs +161 -0
- package/fesm2022/eui-ecl-components-ecl-text-media.mjs.map +1 -0
- package/package.json +14 -2
- package/types/eui-ecl-components-ecl-accordion.d.ts +1 -0
- package/types/eui-ecl-components-ecl-accordion.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-animated-numbers.d.ts +165 -0
- package/types/eui-ecl-components-ecl-animated-numbers.d.ts.map +1 -0
- package/types/eui-ecl-components-ecl-link.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-media-container.d.ts +19 -4
- package/types/eui-ecl-components-ecl-media-container.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-page-information.d.ts +0 -6
- package/types/eui-ecl-components-ecl-page-information.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-page-summary.d.ts +13 -0
- package/types/eui-ecl-components-ecl-page-summary.d.ts.map +1 -0
- package/types/eui-ecl-components-ecl-quiz.d.ts +27 -23
- package/types/eui-ecl-components-ecl-quiz.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-site-footer.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-text-media.d.ts +69 -0
- package/types/eui-ecl-components-ecl-text-media.d.ts.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eui-ecl-components-ecl-animated-numbers.mjs","sources":["../../components/ecl-animated-numbers/ecl-animated-numbers.component.ts","../../components/ecl-animated-numbers/ecl-animated-numbers.component.html","../../components/ecl-animated-numbers/ecl-animated-numbers-list.directive.ts","../../components/ecl-animated-numbers/ecl-animated-numers-item/ecl-animated-numbers-item.component.ts","../../components/ecl-animated-numbers/ecl-animated-numers-item/ecl-animated-numbers-item.component.html","../../components/ecl-animated-numbers/ecl-animated-numers-item/ecl-animated-numbers-icon.directive.ts","../../components/ecl-animated-numbers/index.ts","../../components/ecl-animated-numbers/eui-ecl-components-ecl-animated-numbers.ts"],"sourcesContent":["import { booleanAttribute, ChangeDetectionStrategy, Component, input } from \"@angular/core\";\nimport { ECLBaseDirective } from \"@eui/ecl/core\";\n\n/**\n * Container component for the ECL Animated Numbers pattern.\n * Wraps animated number items and an optional sources footer.\n *\n * @example\n * ```html\n * <div eclAnimatedNumbers [sourcesLabel]=\"'Sources:'\">\n * <div eclAnimatedNumbersItems>\n * <div eclAnimatedNumbersItem [eclValue]=\"'213'\" [category]=\"'Revenue'\">\n * <ecl-icon eclAnimatedNumbersIcon icon=\"users\" iconSet=\"phosphor\"></ecl-icon>\n * </div>\n * </div>\n * <ul eclAnimatedNumbersSourcesList>\n * <li eclAnimatedNumbersSourcesItem>\n * <a eclLink eclAnimatedNumbersSource href=\"/example\">Eurostat</a>\n * </li>\n * </ul>\n * </div>\n * ```\n */\n@Component({\n selector: 'div[eclAnimatedNumbers]',\n templateUrl: './ecl-animated-numbers.component.html',\n host: {\n '[class]': 'cssClasses',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EclAnimatedNumbersComponent extends ECLBaseDirective {\n\n /** Applies a dark background to the component. */\n hasDarkBackground = input(false, { transform: booleanAttribute });\n\n /** Adds a left border to the animated number items. */\n hasLeftBorder = input(false, { transform: booleanAttribute });\n\n /** Applies a colour to the counter values. */\n hasContentColor = input(false, { transform: booleanAttribute });\n\n /** Label displayed before the sources list. */\n sourcesLabel = input<string>('Sources:');\n\n get cssClasses(): string {\n return [super.getCssClasses('ecl-animated-numbers'),\n this.hasDarkBackground() ? 'ecl-animated-numbers--with-background' : '',\n this.hasLeftBorder() ? 'ecl-animated-numbers--border' : '',\n this.hasContentColor() && !this.hasDarkBackground() ? 'ecl-animated-numbers--counter-color' : '',\n ].filter(Boolean).join(' ');\n }\n}","<div class=\"ecl-container\">\n <ng-content select=\"[eclAnimatedNumbersItems]\"></ng-content>\n <div class=\"ecl-animated-numbers__sources\">\n <span class=\"ecl-animated-numbers__sources-label\">{{ sourcesLabel() }}</span>\n <ng-content select=\"[eclAnimatedNumbersSourcesList]\"></ng-content>\n </div>\n</div>","import { Directive } from \"@angular/core\";\n\n/**\n * Wraps the grid of animated number items.\n * Applies the `ecl-animated-numbers__items` layout class.\n *\n * @example\n * ```html\n * <div eclAnimatedNumbersItems>\n * <div eclAnimatedNumbersItem ...></div>\n * </div>\n * ```\n */\n@Directive({\n selector: '[eclAnimatedNumbersItems]',\n host: {\n class: 'ecl-animated-numbers__items',\n },\n})\nexport class EclAnimatedNumbersItemsDirective {}\n\n/**\n * Wraps the list of source links.\n * Applies the `ecl-animated-numbers__sources-list` class.\n *\n * @example\n * ```html\n * <ul eclAnimatedNumbersSourcesList>\n * <li eclAnimatedNumbersSourcesItem>...</li>\n * </ul>\n * ```\n */\n@Directive({\n selector: '[eclAnimatedNumbersSourcesList]',\n host: {\n class: 'ecl-animated-numbers__sources-list',\n },\n})\nexport class EclAnimatedNumbersSourcesListDirective {}\n\n/**\n * Marks a list item as a source entry.\n * Applies the `ecl-animated-numbers__sources-item` class.\n *\n * @example\n * ```html\n * <li eclAnimatedNumbersSourcesItem>\n * <a eclLink eclAnimatedNumbersSource href=\"/example\">Eurostat</a>\n * </li>\n * ```\n */\n@Directive({\n selector: '[eclAnimatedNumbersSourcesItem]',\n host: {\n class: 'ecl-animated-numbers__sources-item',\n },\n})\nexport class EclAnimatedNumbersSourcesItemDirective {}\n\n/**\n * Marks a link as a source reference within the animated numbers component.\n * Applies the `ecl-animated-numbers__source` styling class.\n *\n * @example\n * ```html\n * <a eclLink eclAnimatedNumbersSource href=\"/example\">Eurostat</a>\n * ```\n */\n@Directive({\n selector: '[eclAnimatedNumbersSource]',\n host: {\n class: 'ecl-animated-numbers__source',\n },\n})\nexport class EclAnimatedNumbersSourceDirective {}\n","import {\n Component,\n computed,\n ElementRef,\n NgZone,\n OnDestroy,\n afterNextRender,\n effect,\n inject,\n input,\n viewChild,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Represents an individual animated number item.\n * Displays a numeric value that animates from 0 to the target when scrolled into view.\n * Uses an IntersectionObserver to trigger animation on viewport visibility and\n * requestAnimationFrame for smooth count-up with cubic ease-out.\n *\n * @example\n * ```html\n * <div eclAnimatedNumbersItem\n * [eclValue]=\"'1250'\"\n * [category]=\"'Revenue'\"\n * [prefix]=\"'€'\"\n * [suffix]=\"'billions'\"\n * [description]=\"'Annual revenue growth'\">\n * <ecl-icon eclAnimatedNumbersIcon icon=\"trend-up\" iconSet=\"phosphor\"></ecl-icon>\n * </div>\n * ```\n */\n@Component({\n selector: '[eclAnimatedNumbersItem]',\n templateUrl: './ecl-animated-numbers-item.component.html',\n host: {\n 'class': 'ecl-animated-number',\n },\n})\nexport class EclAnimatedNumbersItemComponent extends ECLBaseDirective implements OnDestroy {\n\n /** Category label displayed in the item header. */\n category = input<string>();\n\n /** Descriptive text displayed below the number. */\n description = input<string>();\n\n /** The target numeric value to animate to. Accepts strings with non-numeric characters (they are stripped). */\n eclValue = input<string>();\n\n /** Text displayed after the animated number (e.g. '€', 'billions'). */\n suffix = input<string>();\n\n /** Text displayed before the animated number (e.g. '€', 'billion'). */\n prefix = input<string>();\n\n protected animationDuration = 1000;\n protected animationStyle: 'linear' | 'random' = 'linear';\n protected animateOnVisible = true;\n\n /** Parsed numeric target from the eclValue input. */\n private targetValue = computed(() => {\n const raw = this.eclValue();\n if (!raw) return 0;\n const cleaned = raw.replace(/[^\\d.-]/g, '');\n return cleaned ? parseFloat(cleaned) : 0;\n });\n\n private valueEl = viewChild<ElementRef<HTMLElement>>('valueEl');\n private elementRef = inject(ElementRef);\n private ngZone = inject(NgZone);\n\n private animationId: number | null = null;\n private observer: IntersectionObserver | null = null;\n private hasBeenVisible = false;\n private isRendered = false;\n\n constructor() {\n super();\n\n afterNextRender(() => {\n this.isRendered = true;\n // Set initial display to 0\n const el = this.valueEl()?.nativeElement;\n if (el) {\n el.textContent = '0';\n }\n\n if (this.animateOnVisible) {\n this.setupIntersectionObserver();\n } else {\n this.startAnimation(this.targetValue());\n }\n });\n\n // React to eclValue changes — only re-animate if already visible and rendered\n effect(() => {\n const target = this.targetValue();\n if (this.hasBeenVisible && this.isRendered) {\n queueMicrotask(() => this.startAnimation(target));\n }\n });\n }\n\n ngOnDestroy(): void {\n this.cleanup();\n }\n\n private setupIntersectionObserver(): void {\n this.observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0];\n if (entry.isIntersecting) {\n this.hasBeenVisible = true;\n this.startAnimation(this.targetValue());\n } else if (this.hasBeenVisible) {\n // Reset to 0 when scrolled out of view\n if (this.animationId !== null) {\n cancelAnimationFrame(this.animationId);\n this.animationId = null;\n }\n const el = this.valueEl()?.nativeElement;\n if (el) {\n el.textContent = '0';\n el.style.width = '';\n }\n }\n },\n { threshold: 0.1 },\n );\n this.observer.observe(this.elementRef.nativeElement);\n }\n\n private startAnimation(to: number): void {\n if (this.animationId !== null) {\n cancelAnimationFrame(this.animationId);\n this.animationId = null;\n }\n\n const valueElement = this.valueEl()?.nativeElement;\n if (!valueElement) return;\n\n // Lock width to prevent layout shift during animation\n valueElement.textContent = to.toString();\n const finalWidth = valueElement.offsetWidth;\n valueElement.textContent = '0';\n valueElement.style.width = `${finalWidth}px`;\n\n this.ngZone.runOutsideAngular(() => {\n const duration = this.animationDuration;\n let startTime: number | null = null;\n let lastUpdateTime = 0;\n let lastValue: number | null = null;\n\n const tick = (now: number) => {\n if (startTime === null) {\n startTime = now;\n }\n\n const elapsed = now - startTime;\n const progress = Math.min(elapsed / duration, 1);\n\n // Throttle updates (~50ms)\n if (now - lastUpdateTime < 50 && progress < 1) {\n this.animationId = requestAnimationFrame(tick);\n return;\n }\n lastUpdateTime = now;\n\n let value: number;\n if (this.animationStyle === 'random') {\n value = Math.floor(Math.random() * (to + 1));\n } else {\n // Cubic ease-out\n const eased = 1 - Math.pow(1 - progress, 3);\n value = eased * to;\n }\n\n const rounded = Math.floor(value);\n\n if (rounded !== lastValue) {\n valueElement.textContent = rounded.toString();\n lastValue = rounded;\n }\n\n if (progress < 1) {\n this.animationId = requestAnimationFrame(tick);\n } else {\n valueElement.textContent = to.toString();\n valueElement.style.width = '';\n this.animationId = null;\n }\n };\n\n this.animationId = requestAnimationFrame(tick);\n });\n }\n\n private cleanup(): void {\n if (this.animationId !== null) {\n cancelAnimationFrame(this.animationId);\n this.animationId = null;\n }\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n }\n }\n}\n","<div class=\"ecl-animated-number__header\">\n <div class=\"ecl-animated-number__category\">{{ category() }}</div>\n <ng-content select=\"[eclAnimatedNumbersIcon]\"></ng-content>\n</div>\n<div class=\"ecl-animated-number__content\">\n <div class=\"ecl-animated-number__number\">\n <span class=\"ecl-animated-number__prefix\">{{ prefix() }}</span>\n <div class=\"ecl-animated-number__value\" #valueEl></div>\n <div class=\"ecl-animated-number__suffix\">{{ suffix() }}</div>\n </div>\n</div>\n<div class=\"ecl-animated-number__description\">{{ description() }}</div>","import { Directive } from '@angular/core';\n\n/**\n * Marks an icon element as the animated number item's icon.\n * Applies the `ecl-animated-number__icon` positioning class.\n *\n * @example\n * ```html\n * <ecl-icon eclAnimatedNumbersIcon icon=\"users\" iconSet=\"phosphor\"></ecl-icon>\n * ```\n */\n@Directive({\n selector: '[eclAnimatedNumbersIcon]',\n host: {\n 'class': 'ecl-animated-number__icon',\n },\n})\nexport class EclAnimatedNumbersIconDirective {}\n","import { EclAnimatedNumbersComponent } from './ecl-animated-numbers.component';\nimport { EclAnimatedNumbersItemsDirective, EclAnimatedNumbersSourcesListDirective, EclAnimatedNumbersSourcesItemDirective, EclAnimatedNumbersSourceDirective } from './ecl-animated-numbers-list.directive';\nimport { EclAnimatedNumbersItemComponent } from './ecl-animated-numers-item/ecl-animated-numbers-item.component';\nimport { EclAnimatedNumbersIconDirective } from './ecl-animated-numers-item/ecl-animated-numbers-icon.directive';\n\nexport * from './ecl-animated-numbers.component';\nexport * from './ecl-animated-numbers-list.directive';\nexport * from './ecl-animated-numers-item/ecl-animated-numbers-item.component';\nexport * from './ecl-animated-numers-item/ecl-animated-numbers-icon.directive';\n\nexport const EUI_ECL_ANIMATED_NUMBERS = [\n EclAnimatedNumbersComponent,\n EclAnimatedNumbersItemsDirective,\n EclAnimatedNumbersSourcesListDirective,\n EclAnimatedNumbersSourcesItemDirective,\n EclAnimatedNumbersSourceDirective,\n EclAnimatedNumbersItemComponent,\n EclAnimatedNumbersIconDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -148,8 +148,13 @@ class EclLinkDirective extends ECLBaseDirective {
|
|
|
148
148
|
* Adds speific ECL classes to the <a> component.
|
|
149
149
|
*/
|
|
150
150
|
get cssClasses() {
|
|
151
|
+
const variantClass = this.variant()
|
|
152
|
+
? (this.variant() === 'secondary' && this.isInverted()
|
|
153
|
+
? 'ecl-link--secondary-inverted'
|
|
154
|
+
: `ecl-link--${this.variant()}`)
|
|
155
|
+
: '';
|
|
151
156
|
return [super.getCssClasses('ecl-link'),
|
|
152
|
-
|
|
157
|
+
variantClass,
|
|
153
158
|
(this.variant() === 'primary' && this.isHighlight()) ? 'ecl-link--primary-highlight' : '',
|
|
154
159
|
].join(' ').trim();
|
|
155
160
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-link.mjs","sources":["../../components/ecl-link/ecl-indicator/ecl-indicator.component.ts","../../components/ecl-link/ecl-indicator/ecl-indicator.component.html","../../components/ecl-link/ecl-indicator/ecl-indicator.directive.ts","../../components/ecl-link/ecl-link-label.directive.ts","../../components/ecl-link/ecl-link.directive.ts","../../components/ecl-link/index.ts","../../components/ecl-link/eui-ecl-components-ecl-link.ts"],"sourcesContent":["import { Component, HostBinding } from \"@angular/core\";\n\n/**\n * Component for indicating special content inside the ECL Link.\n * Automatically applies the `ecl-indicator` CSS class.\n */\n@Component({\n selector: '[eclIndicator]',\n templateUrl: './ecl-indicator.component.html',\n})\nexport class EclIndicatorComponent {\n /**\n * Applies the `ecl-indicator` CSS class.\n */\n @HostBinding('class.ecl-indicator') hasClass = true;\n}\n","<span class=\"ecl-indicator__value\"><ng-content></ng-content></span>\n<ng-content select=\"[eclIndicatorLabel]\"></ng-content>","import { Directive, HostBinding } from \"@angular/core\";\n\n/**\n * Directive for indicating special content inside the ECL Link.\n * Automatically applies the `ecl-indicator__label` CSS class.\n */\n@Directive({\n selector: '[eclIndicatorLabel]',\n})\nexport class EclIndicatorLabelDirective {\n /**\n * Applies the `ecl-indicator__label` CSS class.\n */\n @HostBinding('class.ecl-indicator__label') hasClass = true;\n}\n","import { Directive, HostBinding } from '@angular/core';\n\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n@Directive({\n selector: '[eclLinkLabel]',\n})\nexport class EclLinkLabelDirective extends ECLBaseDirective {\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-link__label')].join(' ').trim();\n }\n}\n\n@Directive({\n selector: '[eclLinkIconContainer]',\n})\nexport class EclLinkIconContainerDirective {\n @HostBinding('class.ecl-link__icon-container') hasClass = true;\n}\n","import { AfterContentInit, booleanAttribute, ChangeDetectorRef, contentChildren, Directive, ElementRef, HostBinding, inject, input, Renderer2, effect, computed, forwardRef } from '@angular/core';\nimport { EclIconComponent } from '@eui/ecl/components/ecl-icon';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * 'eclLink' directive is used to add some styling to the defalt HTML anchor component. In order to comply with ECL standards.\n */\n@Directive({\n selector: '[eclLink]',\n})\nexport class EclLinkDirective extends ECLBaseDirective implements AfterContentInit {\n el = inject(ElementRef);\n renderer = inject(Renderer2);\n cd = inject(ChangeDetectorRef);\n\n /**\n * Additional HTML attributes to be set on the link element.\n * Used e.g. by social-media-follow for passing extra_attributes.\n */\n extraAttributes = input<{ name: string; value?: string | null }[] | undefined>();\n\n /**\n * Property to style the component as 'inverted' (with dark background). Can be used alone or with 'standalone' variant.\n */\n isInverted = input(false, { transform: booleanAttribute });\n\n /**\n * Property to style the component if it consist only of an icon.\n */\n isIconOnly = input(false, { transform: booleanAttribute });\n\n /** Adds class for hightlighted link (works only with 'primary' variant) \n * @deprecated - to be removed in v23. Use variant='primary-highlight', as only primary variant can be highlighted.\n */\n isHighlight = input(false, { transform: booleanAttribute });\n \n /**\n * @deprecated - will be removed in v21. Deprecated on ECL side.\n */\n isNoVisited = input(false, { transform: booleanAttribute });\n\n isBranded = input(false, { transform: booleanAttribute });\n\n /**\n * With 'variant' property user can add some more specific styling to the <a> component.\n */\n variant = input<'standalone' | 'primary' | 'secondary' | 'primary-neutral' | 'primary-highlight'>();\n\n eclIconComponents = contentChildren(forwardRef(() => EclIconComponent), { descendants: true });\n\n constructor() {\n super();\n effect(() => {\n const attrs = this.extraAttributes();\n if (attrs && attrs.length) {\n attrs.forEach((attr) => {\n if (attr?.name) {\n this.el.nativeElement.setAttribute(attr.name, attr.value ?? '');\n }\n });\n }\n });\n }\n\n @HostBinding('class.ecl-link--inverted')\n get hostIsInverted(): boolean {\n return (!this.variant() || this.variant() === 'standalone') && this.isInverted();\n }\n\n @HostBinding('class.ecl-link--brand')\n get hostIsBranded(): boolean {\n return (!this.variant() || this.variant() === 'standalone') && this.isBranded();\n }\n\n @HostBinding('class.ecl-link--icon-only')\n get hostIsIconOnly(): boolean {\n return this.isIconOnly();\n }\n\n @HostBinding('class.ecl-link--icon')\n get hasIcon(): boolean {\n return this._hasIcon();\n }\n\n private _hasIcon = computed(() => {\n return this.eclIconComponents()?.length > 0;\n });\n\n /**\n * Adds speific ECL classes to the <a> component.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-link'), \n this.variant() ? `ecl-link--${this.variant()}` : '',\n (this.variant() === 'primary' && this.isHighlight()) ? 'ecl-link--primary-highlight' : '',\n ].join(' ').trim();\n }\n\n ngAfterContentInit(): void {\n // Add additional class to the child icon, if any.\n if (this.eclIconComponents()?.length > 0 ) {\n setTimeout(() => {\n this.eclIconComponents().forEach((icn) => {\n icn.addExtraClass('ecl-link__icon');\n });\n this.cd.markForCheck();\n });\n }\n }\n\n /**\n * Calls the native focus() method of the default HTML element.\n */\n onFocus(): void {\n this.el.nativeElement.focus();\n }\n\n /**\n * Calls the native click() method of the default HTML element.\n */\n onClick(): void {\n this.el.nativeElement.click();\n }\n\n /**\n * Calls the native blur() method of the default HTML element.\n */\n onBlur(): void {\n this.el.nativeElement.blur();\n }\n}\n","import { EclIndicatorComponent } from './ecl-indicator/ecl-indicator.component';\nimport { EclIndicatorLabelDirective } from './ecl-indicator/ecl-indicator.directive';\nimport { EclLinkIconContainerDirective, EclLinkLabelDirective } from './ecl-link-label.directive';\nimport { EclLinkDirective } from './ecl-link.directive';\n\nexport * from './ecl-link.directive';\nexport * from './ecl-link-label.directive';\nexport * from './ecl-indicator/ecl-indicator.component';\nexport * from './ecl-indicator/ecl-indicator.directive';\n\nexport const EUI_ECL_LINK = [\n EclLinkDirective, EclLinkLabelDirective, EclLinkIconContainerDirective, EclIndicatorComponent,\n EclIndicatorLabelDirective,\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-link.mjs","sources":["../../components/ecl-link/ecl-indicator/ecl-indicator.component.ts","../../components/ecl-link/ecl-indicator/ecl-indicator.component.html","../../components/ecl-link/ecl-indicator/ecl-indicator.directive.ts","../../components/ecl-link/ecl-link-label.directive.ts","../../components/ecl-link/ecl-link.directive.ts","../../components/ecl-link/index.ts","../../components/ecl-link/eui-ecl-components-ecl-link.ts"],"sourcesContent":["import { Component, HostBinding } from \"@angular/core\";\n\n/**\n * Component for indicating special content inside the ECL Link.\n * Automatically applies the `ecl-indicator` CSS class.\n */\n@Component({\n selector: '[eclIndicator]',\n templateUrl: './ecl-indicator.component.html',\n})\nexport class EclIndicatorComponent {\n /**\n * Applies the `ecl-indicator` CSS class.\n */\n @HostBinding('class.ecl-indicator') hasClass = true;\n}\n","<span class=\"ecl-indicator__value\"><ng-content></ng-content></span>\n<ng-content select=\"[eclIndicatorLabel]\"></ng-content>","import { Directive, HostBinding } from \"@angular/core\";\n\n/**\n * Directive for indicating special content inside the ECL Link.\n * Automatically applies the `ecl-indicator__label` CSS class.\n */\n@Directive({\n selector: '[eclIndicatorLabel]',\n})\nexport class EclIndicatorLabelDirective {\n /**\n * Applies the `ecl-indicator__label` CSS class.\n */\n @HostBinding('class.ecl-indicator__label') hasClass = true;\n}\n","import { Directive, HostBinding } from '@angular/core';\n\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n@Directive({\n selector: '[eclLinkLabel]',\n})\nexport class EclLinkLabelDirective extends ECLBaseDirective {\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-link__label')].join(' ').trim();\n }\n}\n\n@Directive({\n selector: '[eclLinkIconContainer]',\n})\nexport class EclLinkIconContainerDirective {\n @HostBinding('class.ecl-link__icon-container') hasClass = true;\n}\n","import { AfterContentInit, booleanAttribute, ChangeDetectorRef, contentChildren, Directive, ElementRef, HostBinding, inject, input, Renderer2, effect, computed, forwardRef } from '@angular/core';\nimport { EclIconComponent } from '@eui/ecl/components/ecl-icon';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * 'eclLink' directive is used to add some styling to the defalt HTML anchor component. In order to comply with ECL standards.\n */\n@Directive({\n selector: '[eclLink]',\n})\nexport class EclLinkDirective extends ECLBaseDirective implements AfterContentInit {\n el = inject(ElementRef);\n renderer = inject(Renderer2);\n cd = inject(ChangeDetectorRef);\n\n /**\n * Additional HTML attributes to be set on the link element.\n * Used e.g. by social-media-follow for passing extra_attributes.\n */\n extraAttributes = input<{ name: string; value?: string | null }[] | undefined>();\n\n /**\n * Property to style the component as 'inverted' (with dark background). Can be used alone or with 'standalone' variant.\n */\n isInverted = input(false, { transform: booleanAttribute });\n\n /**\n * Property to style the component if it consist only of an icon.\n */\n isIconOnly = input(false, { transform: booleanAttribute });\n\n /** Adds class for hightlighted link (works only with 'primary' variant) \n * @deprecated - to be removed in v23. Use variant='primary-highlight', as only primary variant can be highlighted.\n */\n isHighlight = input(false, { transform: booleanAttribute });\n \n /**\n * @deprecated - will be removed in v21. Deprecated on ECL side.\n */\n isNoVisited = input(false, { transform: booleanAttribute });\n\n isBranded = input(false, { transform: booleanAttribute });\n\n /**\n * With 'variant' property user can add some more specific styling to the <a> component.\n */\n variant = input<'standalone' | 'primary' | 'secondary' | 'primary-neutral' | 'primary-highlight'>();\n\n eclIconComponents = contentChildren(forwardRef(() => EclIconComponent), { descendants: true });\n\n constructor() {\n super();\n effect(() => {\n const attrs = this.extraAttributes();\n if (attrs && attrs.length) {\n attrs.forEach((attr) => {\n if (attr?.name) {\n this.el.nativeElement.setAttribute(attr.name, attr.value ?? '');\n }\n });\n }\n });\n }\n\n @HostBinding('class.ecl-link--inverted')\n get hostIsInverted(): boolean {\n return (!this.variant() || this.variant() === 'standalone') && this.isInverted();\n }\n\n @HostBinding('class.ecl-link--brand')\n get hostIsBranded(): boolean {\n return (!this.variant() || this.variant() === 'standalone') && this.isBranded();\n }\n\n @HostBinding('class.ecl-link--icon-only')\n get hostIsIconOnly(): boolean {\n return this.isIconOnly();\n }\n\n @HostBinding('class.ecl-link--icon')\n get hasIcon(): boolean {\n return this._hasIcon();\n }\n\n private _hasIcon = computed(() => {\n return this.eclIconComponents()?.length > 0;\n });\n\n /**\n * Adds speific ECL classes to the <a> component.\n */\n @HostBinding('class')\n get cssClasses(): string {\n const variantClass = this.variant()\n ? (this.variant() === 'secondary' && this.isInverted()\n ? 'ecl-link--secondary-inverted'\n : `ecl-link--${this.variant()}`)\n : '';\n\n return [super.getCssClasses('ecl-link'),\n variantClass,\n (this.variant() === 'primary' && this.isHighlight()) ? 'ecl-link--primary-highlight' : '',\n ].join(' ').trim();\n }\n\n ngAfterContentInit(): void {\n // Add additional class to the child icon, if any.\n if (this.eclIconComponents()?.length > 0 ) {\n setTimeout(() => {\n this.eclIconComponents().forEach((icn) => {\n icn.addExtraClass('ecl-link__icon');\n });\n this.cd.markForCheck();\n });\n }\n }\n\n /**\n * Calls the native focus() method of the default HTML element.\n */\n onFocus(): void {\n this.el.nativeElement.focus();\n }\n\n /**\n * Calls the native click() method of the default HTML element.\n */\n onClick(): void {\n this.el.nativeElement.click();\n }\n\n /**\n * Calls the native blur() method of the default HTML element.\n */\n onBlur(): void {\n this.el.nativeElement.blur();\n }\n}\n","import { EclIndicatorComponent } from './ecl-indicator/ecl-indicator.component';\nimport { EclIndicatorLabelDirective } from './ecl-indicator/ecl-indicator.directive';\nimport { EclLinkIconContainerDirective, EclLinkLabelDirective } from './ecl-link-label.directive';\nimport { EclLinkDirective } from './ecl-link.directive';\n\nexport * from './ecl-link.directive';\nexport * from './ecl-link-label.directive';\nexport * from './ecl-indicator/ecl-indicator.component';\nexport * from './ecl-indicator/ecl-indicator.directive';\n\nexport const EUI_ECL_LINK = [\n EclLinkDirective, EclLinkLabelDirective, EclLinkIconContainerDirective, EclIndicatorComponent,\n EclIndicatorLabelDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, ElementRef, Input, HostBinding, Directive, PLATFORM_ID, afterNextRender, ContentChild, Renderer2, booleanAttribute, ViewChild, ViewChildren, Component } from '@angular/core';
|
|
2
|
+
import { inject, ElementRef, Input, HostBinding, Directive, PLATFORM_ID, afterNextRender, ContentChild, input, signal, contentChild, DOCUMENT, computed, Renderer2, booleanAttribute, ViewChild, ViewChildren, Component } from '@angular/core';
|
|
3
3
|
import { ECLBaseDirective } from '@eui/ecl/core';
|
|
4
4
|
import { isPlatformBrowser } from '@angular/common';
|
|
5
|
-
import { timer, take } from 'rxjs';
|
|
6
|
-
import { EclExpandableComponent } from '@eui/ecl/components/ecl-expandable';
|
|
7
5
|
import * as i1 from '@eui/ecl/components/ecl-button';
|
|
8
6
|
import { EclButtonComponent, EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';
|
|
7
|
+
import { EclExpandableComponent } from '@eui/ecl/components/ecl-expandable';
|
|
9
8
|
import * as i2 from '@eui/ecl/components/ecl-icon';
|
|
10
9
|
import { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';
|
|
10
|
+
import { Subject, fromEvent, auditTime, takeUntil, timer, take } from 'rxjs';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Adds styling and attributes to the iframe element.
|
|
@@ -199,28 +199,53 @@ class EclMediaContainerComponent extends ECLBaseDirective {
|
|
|
199
199
|
* Used for a video only - if the video should play immediately.
|
|
200
200
|
*/
|
|
201
201
|
this.eclAutoplay = false;
|
|
202
|
+
this.captionPosition = input('bottom', ...(ngDevMode ? [{ debugName: "captionPosition" }] : /* istanbul ignore next */ []));
|
|
203
|
+
/**
|
|
204
|
+
* Allows a parent component to override the caption position programmatically.
|
|
205
|
+
*/
|
|
206
|
+
this.captionPositionOverride = signal(null, ...(ngDevMode ? [{ debugName: "captionPositionOverride" }] : /* istanbul ignore next */ []));
|
|
207
|
+
this.creditEl = contentChild(EclMediaContainerCreditDirective, { ...(ngDevMode ? { debugName: "creditEl" } : /* istanbul ignore next */ {}), read: ElementRef });
|
|
208
|
+
this.document = inject(DOCUMENT);
|
|
209
|
+
this.window = this.document.defaultView;
|
|
210
|
+
this.captionBottomOffset = signal(null, ...(ngDevMode ? [{ debugName: "captionBottomOffset" }] : /* istanbul ignore next */ []));
|
|
211
|
+
/**
|
|
212
|
+
* Resolved caption position considering the override.
|
|
213
|
+
*/
|
|
214
|
+
this.resolvedCaptionPosition = computed(() => this.captionPositionOverride() ?? this.captionPosition(), ...(ngDevMode ? [{ debugName: "resolvedCaptionPosition" }] : /* istanbul ignore next */ []));
|
|
215
|
+
/**
|
|
216
|
+
* Applies specific classes for the component.
|
|
217
|
+
*/
|
|
218
|
+
this.cssClasses = computed(() => {
|
|
219
|
+
const position = this.resolvedCaptionPosition();
|
|
220
|
+
return [super.getCssClasses('ecl-media-container'),
|
|
221
|
+
position !== 'bottom' ? `ecl-media-container--caption-${position}` : ''
|
|
222
|
+
].join(' ').trim();
|
|
223
|
+
}, ...(ngDevMode ? [{ debugName: "cssClasses" }] : /* istanbul ignore next */ []));
|
|
224
|
+
this.hasVideo = signal(false, ...(ngDevMode ? [{ debugName: "hasVideo" }] : /* istanbul ignore next */ []));
|
|
202
225
|
this.isPlaying = false;
|
|
203
226
|
this.DELAY = 0;
|
|
204
227
|
this.renderer = inject(Renderer2);
|
|
205
228
|
this.removeVideoListeners = [];
|
|
206
229
|
this.platformId = inject(PLATFORM_ID);
|
|
207
|
-
|
|
208
|
-
/**
|
|
209
|
-
* Applies specific classes for the component.
|
|
210
|
-
*/
|
|
211
|
-
get cssClasses() {
|
|
212
|
-
return [super.getCssClasses('ecl-media-container')].join(' ').trim();
|
|
230
|
+
this.destroy$ = new Subject();
|
|
213
231
|
}
|
|
214
232
|
ngAfterContentInit() {
|
|
215
|
-
if (isPlatformBrowser(this.platformId)
|
|
216
|
-
|
|
217
|
-
if (
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
233
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
234
|
+
this.hasVideo.set(this.eclMediaContainerItem?.isVideo ?? false);
|
|
235
|
+
if (this.hasVideo() && this.eclAutoplay) {
|
|
236
|
+
const videoEl = this.eclMediaContainerItem?.el?.nativeElement;
|
|
237
|
+
if (videoEl) {
|
|
238
|
+
this.removeVideoListeners.push(this.renderer.listen(videoEl, 'play', () => (this.isPlaying = true)), this.renderer.listen(videoEl, 'pause', () => (this.isPlaying = false)));
|
|
239
|
+
this.renderer.setAttribute(videoEl, 'loop', '');
|
|
240
|
+
this.renderer.setAttribute(videoEl, 'muted', '');
|
|
241
|
+
this.renderer.setProperty(videoEl, 'muted', true);
|
|
242
|
+
this.renderer.removeAttribute(videoEl, 'controls');
|
|
243
|
+
}
|
|
223
244
|
}
|
|
245
|
+
this.setCaptionBottom();
|
|
246
|
+
fromEvent(this.window, 'resize').pipe(auditTime(50), takeUntil(this.destroy$)).subscribe(() => {
|
|
247
|
+
this.setCaptionBottom();
|
|
248
|
+
});
|
|
224
249
|
}
|
|
225
250
|
if (this.expandable) {
|
|
226
251
|
this.expandable.class = [this.expandable.class, 'ecl-media-container__expandable'].join(' ');
|
|
@@ -230,9 +255,8 @@ class EclMediaContainerComponent extends ECLBaseDirective {
|
|
|
230
255
|
for (const unlisten of this.removeVideoListeners)
|
|
231
256
|
unlisten();
|
|
232
257
|
this.removeVideoListeners = [];
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
return this.eclMediaContainerItem?.isVideo;
|
|
258
|
+
this.destroy$.next(true);
|
|
259
|
+
this.destroy$.unsubscribe();
|
|
236
260
|
}
|
|
237
261
|
/**
|
|
238
262
|
* When user clicks on 'play' button -> start the video and move the focus to the 'pause' button.
|
|
@@ -262,19 +286,28 @@ class EclMediaContainerComponent extends ECLBaseDirective {
|
|
|
262
286
|
}
|
|
263
287
|
button.onFocus();
|
|
264
288
|
}
|
|
289
|
+
setCaptionBottom() {
|
|
290
|
+
if (!this.creditEl() || this.resolvedCaptionPosition() !== 'over') {
|
|
291
|
+
this.captionBottomOffset.set(null);
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
this.captionBottomOffset.set(`${this.creditEl().nativeElement.offsetHeight}px`);
|
|
295
|
+
}
|
|
265
296
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: EclMediaContainerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
266
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: EclMediaContainerComponent, isStandalone: true, selector: "ecl-media-container", inputs: { isFullWidth:
|
|
297
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: EclMediaContainerComponent, isStandalone: true, selector: "ecl-media-container", inputs: { isFullWidth: { classPropertyName: "isFullWidth", publicName: "isFullWidth", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, eclAutoplay: { classPropertyName: "eclAutoplay", publicName: "eclAutoplay", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, captionPosition: { classPropertyName: "captionPosition", publicName: "captionPosition", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "cssClasses()" } }, queries: [{ propertyName: "creditEl", first: true, predicate: EclMediaContainerCreditDirective, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "expandable", first: true, predicate: EclExpandableComponent, descendants: true }, { propertyName: "eclMediaContainerItem", first: true, predicate: EclMediaContainerItemDirective, descendants: true }], viewQueries: [{ propertyName: "pauseButton", first: true, predicate: ["pauseButton"], descendants: true }, { propertyName: "playButton", first: true, predicate: ["playButton"], descendants: true }, { propertyName: "eclButtons", predicate: EclButtonComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<figure class=\"ecl-media-container__figure\" [class.ecl-media-container--full-width]=\"isFullWidth\" [style.--ecl-caption-bottom]=\"captionBottomOffset()\">\n @if (hasVideo()) {\n <div class=\"ecl-media-container__video-wrapper\">\n <ng-content select=\"video[eclMediaContainerItem]\"></ng-content>\n @if (eclAutoplay) {\n <button #playButton eclButton variant=\"tertiary\" isIconOnly class=\"ecl-media-container__play\" (click)=\"onVideoPlay()\"\n [style.display]=\"isPlaying ? 'none' : 'flex'\" type=\"button\">\n <span eclButtonLabel>Play</span>\n <ecl-icon icon=\"play-outline\" size=\"m\"></ecl-icon>\n </button>\n <button #pauseButton eclButton variant=\"tertiary\" isIconOnly class=\"ecl-media-container__pause\" (click)=\"onVideoPause()\"\n [style.display]=\"isPlaying ? 'flex' : 'none'\" type=\"button\">\n <span eclButtonLabel>Pause</span>\n <ecl-icon icon=\"pause-outline\" size=\"m\"></ecl-icon>\n </button>\n }\n </div>\n }\n <ng-content select=\"div[eclMediaContainerItem]\"></ng-content>\n <ng-content select=\"picture[eclMediaContainerPicture]\"></ng-content>\n\n <ng-content select=\"figcaption[eclMediaContainerCaption]\"></ng-content>\n <ng-content select=\"footer[eclMediaContainerCredit]\"></ng-content>\n <ng-content select=\"ecl-expandable\"></ng-content>\n</figure>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: i1.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "eclStyle", "size", "containerStyleClass"] }, { kind: "directive", type: i1.EclButtonLabelDirective, selector: "[eclButtonLabel]" }, { kind: "component", type: i2.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }] }); }
|
|
267
298
|
}
|
|
268
299
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: EclMediaContainerComponent, decorators: [{
|
|
269
300
|
type: Component,
|
|
270
|
-
args: [{ selector: 'ecl-media-container', imports: [...EUI_ECL_BUTTON, ...EUI_ECL_ICON],
|
|
301
|
+
args: [{ selector: 'ecl-media-container', imports: [...EUI_ECL_BUTTON, ...EUI_ECL_ICON], host: {
|
|
302
|
+
'[class]': 'cssClasses()',
|
|
303
|
+
}, template: "<figure class=\"ecl-media-container__figure\" [class.ecl-media-container--full-width]=\"isFullWidth\" [style.--ecl-caption-bottom]=\"captionBottomOffset()\">\n @if (hasVideo()) {\n <div class=\"ecl-media-container__video-wrapper\">\n <ng-content select=\"video[eclMediaContainerItem]\"></ng-content>\n @if (eclAutoplay) {\n <button #playButton eclButton variant=\"tertiary\" isIconOnly class=\"ecl-media-container__play\" (click)=\"onVideoPlay()\"\n [style.display]=\"isPlaying ? 'none' : 'flex'\" type=\"button\">\n <span eclButtonLabel>Play</span>\n <ecl-icon icon=\"play-outline\" size=\"m\"></ecl-icon>\n </button>\n <button #pauseButton eclButton variant=\"tertiary\" isIconOnly class=\"ecl-media-container__pause\" (click)=\"onVideoPause()\"\n [style.display]=\"isPlaying ? 'flex' : 'none'\" type=\"button\">\n <span eclButtonLabel>Pause</span>\n <ecl-icon icon=\"pause-outline\" size=\"m\"></ecl-icon>\n </button>\n }\n </div>\n }\n <ng-content select=\"div[eclMediaContainerItem]\"></ng-content>\n <ng-content select=\"picture[eclMediaContainerPicture]\"></ng-content>\n\n <ng-content select=\"figcaption[eclMediaContainerCaption]\"></ng-content>\n <ng-content select=\"footer[eclMediaContainerCredit]\"></ng-content>\n <ng-content select=\"ecl-expandable\"></ng-content>\n</figure>\n", styles: [":host{display:block}\n"] }]
|
|
271
304
|
}], propDecorators: { isFullWidth: [{
|
|
272
305
|
type: Input,
|
|
273
306
|
args: [{ transform: booleanAttribute }]
|
|
274
307
|
}], eclAutoplay: [{
|
|
275
308
|
type: Input,
|
|
276
309
|
args: [{ transform: booleanAttribute }]
|
|
277
|
-
}], expandable: [{
|
|
310
|
+
}], captionPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "captionPosition", required: false }] }], expandable: [{
|
|
278
311
|
type: ContentChild,
|
|
279
312
|
args: [EclExpandableComponent]
|
|
280
313
|
}], eclMediaContainerItem: [{
|
|
@@ -289,10 +322,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
|
|
|
289
322
|
}], playButton: [{
|
|
290
323
|
type: ViewChild,
|
|
291
324
|
args: ['playButton']
|
|
292
|
-
}],
|
|
293
|
-
type: HostBinding,
|
|
294
|
-
args: ['class']
|
|
295
|
-
}] } });
|
|
325
|
+
}], creditEl: [{ type: i0.ContentChild, args: [i0.forwardRef(() => EclMediaContainerCreditDirective), { ...{ read: ElementRef }, isSignal: true }] }] } });
|
|
296
326
|
|
|
297
327
|
const EUI_ECL_MEDIA_CONTAINER = [
|
|
298
328
|
EclMediaContainerComponent,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-media-container.mjs","sources":["../../components/ecl-media-container/ecl-media-container-iframe.directive.ts","../../components/ecl-media-container/ecl-media-container-item-audio-description.directive.ts","../../components/ecl-media-container/ecl-media-container-item.directive.ts","../../components/ecl-media-container/ecl-media-container-picture.directive.ts","../../components/ecl-media-container/ecl-media-container-caption.directive.ts","../../components/ecl-media-container/ecl-media-container-credit.directive.ts","../../components/ecl-media-container/ecl-media-container.component.ts","../../components/ecl-media-container/ecl-media-container.component.html","../../components/ecl-media-container/index.ts","../../components/ecl-media-container/eui-ecl-components-ecl-media-container.ts"],"sourcesContent":["import { Directive, ElementRef, HostBinding, Input, inject } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Adds styling and attributes to the iframe element.\n */\n@Directive({\n selector: 'iframe[eclMediaContainerIframe]',\n})\nexport class EclMediaContainerIframeDirective extends ECLBaseDirective {\n @Input() width;\n @Input() height;\n @Input()\n @HostBinding('style.aspect-ratio')\n get ratio(): string {\n return this.hasCustomRatio ? this.calculateCustomRatio() : null;\n }\n\n hasCustomRatio = false;\n private elem = inject(ElementRef);\n\n calculateCustomRatio(): string {\n let iframeHeight = this.height;\n let iframeWidth = this.width;\n if (!iframeWidth || !iframeHeight) {\n iframeWidth = this.elem.nativeElement.offsetWidth;\n iframeHeight = this.elem.nativeElement.offsetHeight;\n }\n return `${iframeWidth}/${iframeHeight}`;\n }\n}\n","import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Adds styling to the media container description.\n */\n@Directive({\n\tselector: '[eclMediaContainerItemAudioDescription]',\n})\nexport class EclMediaContainerItemAudioDescriptionDirective extends ECLBaseDirective {\n\t@HostBinding('class')\n\tget cssClasses(): string {\n\t\treturn [super.getCssClasses('ecl-media-container__media-audio')].join(' ').trim();\n\t}\n}\n","import { AfterContentInit, ContentChild, Directive, ElementRef, HostBinding, Input, PLATFORM_ID, afterNextRender, inject } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclMediaContainerIframeDirective } from './ecl-media-container-iframe.directive';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * Adds styling and functionality to the media container item /image.\n */\n@Directive({\n selector: '[eclMediaContainerItem], img[eclMediaContainerImage]',\n})\nexport class EclMediaContainerItemDirective extends ECLBaseDirective implements AfterContentInit {\n el = inject(ElementRef);\n\n @Input() ratio: string;\n @ContentChild(EclMediaContainerIframeDirective, { static: false }) contentIframe: EclMediaContainerIframeDirective;\n\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-media-container__media'),\n this.ratio ? `ecl-media-container__media--ratio-${this.ratio}` : '',\n this.isVideo ? 'ecl-video' : '',\n ]\n .join(' ')\n .trim();\n }\n\n public isVideo = false;\n private platformId = inject(PLATFORM_ID);\n\n constructor() {\n super();\n afterNextRender(() => {\n this.setIframeUrl();\n });\n }\n\n ngAfterContentInit(): void {\n if (this.contentIframe) {\n this.contentIframe.hasCustomRatio = this.ratio ? false : true;\n }\n if (isPlatformBrowser(this.platformId)) {\n const selector = this.el.nativeElement.tagName;\n this.isVideo = selector === 'VIDEO';\n }\n }\n\n // TODO: is this really needed?\n setIframeUrl(): void {\n if (this.el.nativeElement.lastChild && this.el.nativeElement.lastChild.nodeName === 'IFRAME') {\n const iframe = this.el.nativeElement.lastChild;\n const iframeUrl = new URL(iframe.src);\n if (iframeUrl.host.includes('youtube')) {\n iframe.src = iframeUrl;\n }\n }\n }\n}\n","import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Applies styles for the picture element.\n */\n@Directive({\n selector: 'picture[eclMediaContainerPicture]',\n})\nexport class EclMediaContainerPictureDirective extends ECLBaseDirective {\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-picture ecl-media-container__picture')].join(' ').trim();\n }\n}\n","import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Adds styling and attributes to the media container caption element.\n */\n@Directive({\n selector: 'figcaption[eclMediaContainerCaption]',\n})\nexport class EclMediaContainerCaptionDirective extends ECLBaseDirective {\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-media-container__caption')].join(' ').trim();\n }\n}\n","import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Adds styling and attributes to the media container credit element.\n */\n@Directive({\n selector: 'footer[eclMediaContainerCredit]',\n})\nexport class EclMediaContainerCreditDirective extends ECLBaseDirective {\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-media-container__credit')].join(' ').trim();\n }\n}\n","import { AfterContentInit, Component, ContentChild, HostBinding, Input, Renderer2, ViewChild, booleanAttribute, ViewChildren, QueryList, inject, PLATFORM_ID, OnDestroy } from '@angular/core';\nimport { take, timer } from 'rxjs'\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclExpandableComponent } from '@eui/ecl/components/ecl-expandable';\nimport { EclMediaContainerItemDirective } from './ecl-media-container-item.directive';\nimport { EclButtonComponent, EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * A media container is used to display media items (video, audio, image or other data) with a caption.\n */\n@Component({\n selector: 'ecl-media-container',\n templateUrl: './ecl-media-container.component.html',\n imports: [...EUI_ECL_BUTTON, ...EUI_ECL_ICON],\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class EclMediaContainerComponent extends ECLBaseDirective implements AfterContentInit, OnDestroy {\n @Input({ transform: booleanAttribute }) isFullWidth = false;\n /**\n * Used for a video only - if the video should play immediately.\n */\n @Input({ transform: booleanAttribute }) eclAutoplay = false;\n\n @ContentChild(EclExpandableComponent) expandable: EclExpandableComponent;\n @ContentChild(EclMediaContainerItemDirective) eclMediaContainerItem: EclMediaContainerItemDirective;\n @ViewChildren(EclButtonComponent) eclButtons: QueryList<EclButtonComponent>;\n @ViewChild('pauseButton') pauseButton: EclButtonComponent;\n @ViewChild('playButton') playButton: EclButtonComponent;\n\n /**\n * Applies specific classes for the component.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-media-container')].join(' ').trim();\n }\n\n public isPlaying = false;\n private readonly DELAY = 0;\n private renderer = inject(Renderer2);\n private removeVideoListeners: Array<() => void> = [];\n private platformId = inject(PLATFORM_ID);\n\n ngAfterContentInit(): void {\n if (isPlatformBrowser(this.platformId) && this.hasVideo && this.eclAutoplay) {\n const videoEl = this.eclMediaContainerItem?.el?.nativeElement as HTMLVideoElement | undefined;\n if (videoEl) {\n this.removeVideoListeners.push(\n this.renderer.listen(videoEl, 'play', () => (this.isPlaying = true)),\n this.renderer.listen(videoEl, 'pause', () => (this.isPlaying = false)),\n );\n\n this.renderer.setAttribute(videoEl, 'loop', '');\n this.renderer.setAttribute(videoEl, 'muted', '');\n this.renderer.setProperty(videoEl, 'muted', true);\n this.renderer.removeAttribute(videoEl, 'controls');\n }\n }\n\n if (this.expandable) {\n this.expandable.class = [this.expandable.class, 'ecl-media-container__expandable'].join(' ');\n }\n }\n\n ngOnDestroy(): void {\n for (const unlisten of this.removeVideoListeners) unlisten();\n this.removeVideoListeners = [];\n }\n\n get hasVideo(): boolean {\n return this.eclMediaContainerItem?.isVideo;\n }\n\n /**\n * When user clicks on 'play' button -> start the video and move the focus to the 'pause' button.\n */\n onVideoPlay(): void {\n const videoEl = this.eclMediaContainerItem.el.nativeElement;\n videoEl.play();\n\n timer(this.DELAY).pipe(take(1)).subscribe(() => {\n const pauseButton = this.eclButtons.find(\n button => button === this.pauseButton );\n this.focusOnButton(pauseButton);\n });\n }\n\n /**\n * When user clicks on 'pause' button -> pause the video and move the focus to the 'play' button.\n */\n onVideoPause(): void {\n const videoEl = this.eclMediaContainerItem.el.nativeElement;\n videoEl.pause();\n\n timer(this.DELAY).pipe(take(1)).subscribe(() => {\n const playButton = this.eclButtons.find(\n button => button === this.playButton);\n this.focusOnButton(playButton);\n });\n }\n\n private focusOnButton(button: EclButtonComponent): void {\n if (!button) {\n return;\n }\n button.onFocus();\n }\n}\n","<figure class=\"ecl-media-container__figure\" [class.ecl-media-container--full-width]=\"isFullWidth\">\n @if (hasVideo) {\n <div class=\"ecl-media-container__video-wrapper\">\n <ng-content select=\"video[eclMediaContainerItem]\"></ng-content>\n @if (eclAutoplay) {\n <button #playButton eclButton variant=\"tertiary\" isIconOnly class=\"ecl-media-container__play\" (click)=\"onVideoPlay()\"\n [style.display]=\"isPlaying ? 'none' : 'flex'\" type=\"button\">\n <span eclButtonLabel>Play</span>\n <ecl-icon icon=\"play-outline\" size=\"m\"></ecl-icon>\n </button>\n <button #pauseButton eclButton variant=\"tertiary\" isIconOnly class=\"ecl-media-container__pause\" (click)=\"onVideoPause()\"\n [style.display]=\"isPlaying ? 'flex' : 'none'\" type=\"button\">\n <span eclButtonLabel>Pause</span>\n <ecl-icon icon=\"pause-outline\" size=\"m\"></ecl-icon>\n </button>\n }\n </div>\n }\n <ng-content select=\"div[eclMediaContainerItem]\"></ng-content>\n <ng-content select=\"picture[eclMediaContainerPicture]\"></ng-content>\n\n <ng-content select=\"figcaption[eclMediaContainerCaption]\"></ng-content>\n <ng-content select=\"footer[eclMediaContainerCredit]\"></ng-content>\n <ng-content select=\"ecl-expandable\"></ng-content>\n</figure>\n","import { EclMediaContainerIframeDirective } from './ecl-media-container-iframe.directive';\nimport { EclMediaContainerItemAudioDescriptionDirective } from './ecl-media-container-item-audio-description.directive';\nimport { EclMediaContainerItemDirective } from './ecl-media-container-item.directive';\nimport { EclMediaContainerPictureDirective } from './ecl-media-container-picture.directive';\nimport { EclMediaContainerCaptionDirective } from './ecl-media-container-caption.directive';\nimport { EclMediaContainerCreditDirective } from './ecl-media-container-credit.directive';\nimport { EclMediaContainerComponent } from './ecl-media-container.component';\n\nexport * from './ecl-media-container.component';\nexport * from './ecl-media-container-item.directive';\nexport * from './ecl-media-container-iframe.directive';\nexport * from './ecl-media-container-picture.directive';\nexport * from './ecl-media-container-item-audio-description.directive';\nexport * from './ecl-media-container-caption.directive';\nexport * from './ecl-media-container-credit.directive';\n\nexport const EUI_ECL_MEDIA_CONTAINER = [\n EclMediaContainerComponent,\n EclMediaContainerItemDirective,\n EclMediaContainerIframeDirective,\n EclMediaContainerPictureDirective,\n EclMediaContainerItemAudioDescriptionDirective,\n EclMediaContainerCaptionDirective,\n EclMediaContainerCreditDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;AAGA;;AAEG;AAIG,MAAO,gCAAiC,SAAQ,gBAAgB,CAAA;AAHtE,IAAA,WAAA,GAAA;;QAYI,IAAA,CAAA,cAAc,GAAG,KAAK;AACd,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AAWpC,IAAA;AAlBG,IAAA,IAEI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE,GAAG,IAAI;IACnE;IAKA,oBAAoB,GAAA;AAChB,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM;AAC9B,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK;AAC5B,QAAA,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY,EAAE;YAC/B,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW;YACjD,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY;QACvD;AACA,QAAA,OAAO,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,YAAY,EAAE;IAC3C;+GApBS,gCAAgC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhC,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAH5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iCAAiC;AAC9C,iBAAA;;sBAEI;;sBACA;;sBACA;;sBACA,WAAW;uBAAC,oBAAoB;;;ACVrC;;AAEG;AAIG,MAAO,8CAA+C,SAAQ,gBAAgB,CAAA;AACnF,IAAA,IACI,UAAU,GAAA;AACb,QAAA,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,kCAAkC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IAClF;+GAJY,8CAA8C,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA9C,8CAA8C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA9C,8CAA8C,EAAA,UAAA,EAAA,CAAA;kBAH1D,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,yCAAyC;AACnD,iBAAA;;sBAEC,WAAW;uBAAC,OAAO;;;ACLrB;;AAEG;AAIG,MAAO,8BAA+B,SAAQ,gBAAgB,CAAA;AAMhE,IAAA,IACI,UAAU,GAAA;QACV,OAAO;AACH,YAAA,KAAK,CAAC,aAAa,CAAC,4BAA4B,CAAC;AACjD,YAAA,IAAI,CAAC,KAAK,GAAG,CAAA,kCAAA,EAAqC,IAAI,CAAC,KAAK,CAAA,CAAE,GAAG,EAAE;YACnE,IAAI,CAAC,OAAO,GAAG,WAAW,GAAG,EAAE;AAClC;aACI,IAAI,CAAC,GAAG;AACR,aAAA,IAAI,EAAE;IACf;AAKA,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AApBX,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;QAgBhB,IAAA,CAAA,OAAO,GAAG,KAAK;AACd,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;QAIpC,eAAe,CAAC,MAAK;YACjB,IAAI,CAAC,YAAY,EAAE;AACvB,QAAA,CAAC,CAAC;IACN;IAEA,kBAAkB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI;QACjE;AACA,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO;AAC9C,YAAA,IAAI,CAAC,OAAO,GAAG,QAAQ,KAAK,OAAO;QACvC;IACJ;;IAGA,YAAY,GAAA;QACR,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,KAAK,QAAQ,EAAE;YAC1F,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS;YAC9C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;YACrC,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACpC,gBAAA,MAAM,CAAC,GAAG,GAAG,SAAS;YAC1B;QACJ;IACJ;+GA9CS,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,6OAIzB,gCAAgC,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAJrC,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAH1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sDAAsD;AACnE,iBAAA;;sBAII;;sBACA,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,gCAAgC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;sBAEhE,WAAW;uBAAC,OAAO;;;ACdxB;;AAEG;AAIG,MAAO,iCAAkC,SAAQ,gBAAgB,CAAA;AACnE,IAAA,IACI,UAAU,GAAA;AACV,QAAA,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,0CAA0C,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IAC7F;+GAJS,iCAAiC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAH7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mCAAmC;AAChD,iBAAA;;sBAEI,WAAW;uBAAC,OAAO;;;ACPxB;;AAEG;AAIG,MAAO,iCAAkC,SAAQ,gBAAgB,CAAA;AACnE,IAAA,IACI,UAAU,GAAA;AACV,QAAA,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,8BAA8B,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IACjF;+GAJS,iCAAiC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAH7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sCAAsC;AACnD,iBAAA;;sBAEI,WAAW;uBAAC,OAAO;;;ACPxB;;AAEG;AAIG,MAAO,gCAAiC,SAAQ,gBAAgB,CAAA;AAClE,IAAA,IACI,UAAU,GAAA;AACV,QAAA,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,6BAA6B,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IAChF;+GAJS,gCAAgC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhC,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAH5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iCAAiC;AAC9C,iBAAA;;sBAEI,WAAW;uBAAC,OAAO;;;ACDxB;;AAEG;AAaG,MAAO,0BAA2B,SAAQ,gBAAgB,CAAA;AAZhE,IAAA,WAAA,GAAA;;QAa4C,IAAA,CAAA,WAAW,GAAG,KAAK;AAC3D;;AAEG;QACqC,IAAA,CAAA,WAAW,GAAG,KAAK;QAgBpD,IAAA,CAAA,SAAS,GAAG,KAAK;QACP,IAAA,CAAA,KAAK,GAAG,CAAC;AAClB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;QAC5B,IAAA,CAAA,oBAAoB,GAAsB,EAAE;AAC5C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAkE3C,IAAA;AA9EG;;AAEG;AACH,IAAA,IACI,UAAU,GAAA;AACV,QAAA,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IACxE;IAQA,kBAAkB,GAAA;AACd,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;YACzE,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,EAAE,EAAE,EAAE,aAA6C;YAC7F,IAAI,OAAO,EAAE;gBACT,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC1B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,EACpE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CACzE;gBAED,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;gBAC/C,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;gBAChD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;gBACjD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC;YACtD;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAChG;IACJ;IAEA,WAAW,GAAA;AACP,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,oBAAoB;AAAE,YAAA,QAAQ,EAAE;AAC5D,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE;IAClC;AAEA,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,qBAAqB,EAAE,OAAO;IAC9C;AAEA;;AAEG;IACH,WAAW,GAAA;QACP,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,aAAa;QAC3D,OAAO,CAAC,IAAI,EAAE;AAEd,QAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC3C,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CACtC,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,WAAW,CAAE;AACzC,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;AACnC,QAAA,CAAC,CAAC;IACN;AAEA;;AAEG;IACH,YAAY,GAAA;QACR,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,aAAa;QAC3D,OAAO,CAAC,KAAK,EAAE;AAEf,QAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC3C,YAAA,MAAM,UAAU,GAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CACtC,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC;AACvC,YAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AAClC,QAAA,CAAC,CAAC;IACN;AAES,IAAA,aAAa,CAAC,MAA0B,EAAA;QAC7C,IAAI,CAAC,MAAM,EAAE;YACT;QACJ;QACA,MAAM,CAAC,OAAO,EAAE;IACpB;+GA1FS,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EACf,gBAAgB,CAAA,EAAA,WAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAIhB,gBAAgB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEtB,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACtB,8BAA8B,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAC9B,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjCpC,w9CAyBA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,MAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,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,CAAA,EAAA,CAAA,CAAA;;4FDDa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAZtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,WAEtB,CAAC,GAAG,cAAc,EAAE,GAAG,YAAY,CAAC,EAAA,QAAA,EAAA,w9CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;sBAU5C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAIrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAErC,YAAY;uBAAC,sBAAsB;;sBACnC,YAAY;uBAAC,8BAA8B;;sBAC3C,YAAY;uBAAC,kBAAkB;;sBAC/B,SAAS;uBAAC,aAAa;;sBACvB,SAAS;uBAAC,YAAY;;sBAKtB,WAAW;uBAAC,OAAO;;;AExBjB,MAAM,uBAAuB,GAAG;IACnC,0BAA0B;IAC1B,8BAA8B;IAC9B,gCAAgC;IAChC,iCAAiC;IACjC,8CAA8C;IAC9C,iCAAiC;IACjC,gCAAgC;;;ACvBpC;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"eui-ecl-components-ecl-media-container.mjs","sources":["../../components/ecl-media-container/ecl-media-container-iframe.directive.ts","../../components/ecl-media-container/ecl-media-container-item-audio-description.directive.ts","../../components/ecl-media-container/ecl-media-container-item.directive.ts","../../components/ecl-media-container/ecl-media-container-picture.directive.ts","../../components/ecl-media-container/ecl-media-container-caption.directive.ts","../../components/ecl-media-container/ecl-media-container-credit.directive.ts","../../components/ecl-media-container/ecl-media-container.component.ts","../../components/ecl-media-container/ecl-media-container.component.html","../../components/ecl-media-container/index.ts","../../components/ecl-media-container/eui-ecl-components-ecl-media-container.ts"],"sourcesContent":["import { Directive, ElementRef, HostBinding, Input, inject } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Adds styling and attributes to the iframe element.\n */\n@Directive({\n selector: 'iframe[eclMediaContainerIframe]',\n})\nexport class EclMediaContainerIframeDirective extends ECLBaseDirective {\n @Input() width;\n @Input() height;\n @Input()\n @HostBinding('style.aspect-ratio')\n get ratio(): string {\n return this.hasCustomRatio ? this.calculateCustomRatio() : null;\n }\n\n hasCustomRatio = false;\n private elem = inject(ElementRef);\n\n calculateCustomRatio(): string {\n let iframeHeight = this.height;\n let iframeWidth = this.width;\n if (!iframeWidth || !iframeHeight) {\n iframeWidth = this.elem.nativeElement.offsetWidth;\n iframeHeight = this.elem.nativeElement.offsetHeight;\n }\n return `${iframeWidth}/${iframeHeight}`;\n }\n}\n","import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Adds styling to the media container description.\n */\n@Directive({\n\tselector: '[eclMediaContainerItemAudioDescription]',\n})\nexport class EclMediaContainerItemAudioDescriptionDirective extends ECLBaseDirective {\n\t@HostBinding('class')\n\tget cssClasses(): string {\n\t\treturn [super.getCssClasses('ecl-media-container__media-audio')].join(' ').trim();\n\t}\n}\n","import { AfterContentInit, ContentChild, Directive, ElementRef, HostBinding, Input, PLATFORM_ID, afterNextRender, inject } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclMediaContainerIframeDirective } from './ecl-media-container-iframe.directive';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * Adds styling and functionality to the media container item /image.\n */\n@Directive({\n selector: '[eclMediaContainerItem], img[eclMediaContainerImage]',\n})\nexport class EclMediaContainerItemDirective extends ECLBaseDirective implements AfterContentInit {\n el = inject(ElementRef);\n\n @Input() ratio: string;\n @ContentChild(EclMediaContainerIframeDirective, { static: false }) contentIframe: EclMediaContainerIframeDirective;\n\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-media-container__media'),\n this.ratio ? `ecl-media-container__media--ratio-${this.ratio}` : '',\n this.isVideo ? 'ecl-video' : '',\n ]\n .join(' ')\n .trim();\n }\n\n public isVideo = false;\n private platformId = inject(PLATFORM_ID);\n\n constructor() {\n super();\n afterNextRender(() => {\n this.setIframeUrl();\n });\n }\n\n ngAfterContentInit(): void {\n if (this.contentIframe) {\n this.contentIframe.hasCustomRatio = this.ratio ? false : true;\n }\n if (isPlatformBrowser(this.platformId)) {\n const selector = this.el.nativeElement.tagName;\n this.isVideo = selector === 'VIDEO';\n }\n }\n\n // TODO: is this really needed?\n setIframeUrl(): void {\n if (this.el.nativeElement.lastChild && this.el.nativeElement.lastChild.nodeName === 'IFRAME') {\n const iframe = this.el.nativeElement.lastChild;\n const iframeUrl = new URL(iframe.src);\n if (iframeUrl.host.includes('youtube')) {\n iframe.src = iframeUrl;\n }\n }\n }\n}\n","import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Applies styles for the picture element.\n */\n@Directive({\n selector: 'picture[eclMediaContainerPicture]',\n})\nexport class EclMediaContainerPictureDirective extends ECLBaseDirective {\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-picture ecl-media-container__picture')].join(' ').trim();\n }\n}\n","import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Adds styling and attributes to the media container caption element.\n */\n@Directive({\n selector: 'figcaption[eclMediaContainerCaption]',\n})\nexport class EclMediaContainerCaptionDirective extends ECLBaseDirective {\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-media-container__caption')].join(' ').trim();\n }\n}\n","import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Adds styling and attributes to the media container credit element.\n */\n@Directive({\n selector: 'footer[eclMediaContainerCredit]',\n})\nexport class EclMediaContainerCreditDirective extends ECLBaseDirective {\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-media-container__credit')].join(' ').trim();\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { AfterContentInit, booleanAttribute, Component, computed, ContentChild, contentChild, DOCUMENT, ElementRef, inject, Input, input, OnDestroy, PLATFORM_ID, QueryList, Renderer2, signal, ViewChild, ViewChildren } from '@angular/core';\nimport { EclButtonComponent, EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EclExpandableComponent } from '@eui/ecl/components/ecl-expandable';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { auditTime, fromEvent, Subject, take, takeUntil, timer } from 'rxjs';\nimport { EclMediaContainerCreditDirective } from './ecl-media-container-credit.directive';\nimport { EclMediaContainerItemDirective } from './ecl-media-container-item.directive';\n\n/**\n * A media container is used to display media items (video, audio, image or other data) with a caption.\n */\n@Component({\n selector: 'ecl-media-container',\n templateUrl: './ecl-media-container.component.html',\n imports: [...EUI_ECL_BUTTON, ...EUI_ECL_ICON],\n host: {\n '[class]': 'cssClasses()',\n },\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\n\nexport class EclMediaContainerComponent extends ECLBaseDirective implements AfterContentInit, OnDestroy {\n @Input({ transform: booleanAttribute }) isFullWidth = false;\n /**\n * Used for a video only - if the video should play immediately.\n */\n @Input({ transform: booleanAttribute }) eclAutoplay = false;\n\n captionPosition = input<'over' | 'bottom' | 'hidden'>('bottom');\n\n /**\n * Allows a parent component to override the caption position programmatically.\n */\n captionPositionOverride = signal<'over' | 'bottom' | 'hidden' | null>(null);\n\n @ContentChild(EclExpandableComponent) expandable: EclExpandableComponent;\n @ContentChild(EclMediaContainerItemDirective) eclMediaContainerItem: EclMediaContainerItemDirective;\n @ViewChildren(EclButtonComponent) eclButtons: QueryList<EclButtonComponent>;\n @ViewChild('pauseButton') pauseButton: EclButtonComponent;\n @ViewChild('playButton') playButton: EclButtonComponent;\n private creditEl = contentChild(EclMediaContainerCreditDirective, { read: ElementRef });\n private readonly document = inject<Document>(DOCUMENT);\n private readonly window = this.document.defaultView;\n\n captionBottomOffset = signal<string | null>(null);\n\n /**\n * Resolved caption position considering the override.\n */\n resolvedCaptionPosition = computed(() => this.captionPositionOverride() ?? this.captionPosition());\n\n /**\n * Applies specific classes for the component.\n */\n cssClasses = computed(() => {\n const position = this.resolvedCaptionPosition();\n return [super.getCssClasses('ecl-media-container'),\n position !== 'bottom' ? `ecl-media-container--caption-${position}` : ''\n ].join(' ').trim();\n });\n\n hasVideo = signal(false);\n\n public isPlaying = false;\n private readonly DELAY = 0;\n private renderer = inject(Renderer2);\n private removeVideoListeners: Array<() => void> = [];\n private platformId = inject(PLATFORM_ID);\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n ngAfterContentInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.hasVideo.set(this.eclMediaContainerItem?.isVideo ?? false);\n\n if (this.hasVideo() && this.eclAutoplay) {\n const videoEl = this.eclMediaContainerItem?.el?.nativeElement as HTMLVideoElement | undefined;\n if (videoEl) {\n this.removeVideoListeners.push(\n this.renderer.listen(videoEl, 'play', () => (this.isPlaying = true)),\n this.renderer.listen(videoEl, 'pause', () => (this.isPlaying = false)),\n );\n\n this.renderer.setAttribute(videoEl, 'loop', '');\n this.renderer.setAttribute(videoEl, 'muted', '');\n this.renderer.setProperty(videoEl, 'muted', true);\n this.renderer.removeAttribute(videoEl, 'controls');\n }\n }\n this.setCaptionBottom();\n fromEvent(this.window, 'resize').pipe(\n auditTime(50),\n takeUntil(this.destroy$)).subscribe(() => {\n this.setCaptionBottom();\n });\n }\n\n if (this.expandable) {\n this.expandable.class = [this.expandable.class, 'ecl-media-container__expandable'].join(' ');\n }\n }\n\n ngOnDestroy(): void {\n for (const unlisten of this.removeVideoListeners) unlisten();\n this.removeVideoListeners = [];\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * When user clicks on 'play' button -> start the video and move the focus to the 'pause' button.\n */\n onVideoPlay(): void {\n const videoEl = this.eclMediaContainerItem.el.nativeElement;\n videoEl.play();\n\n timer(this.DELAY).pipe(take(1)).subscribe(() => {\n const pauseButton = this.eclButtons.find(\n button => button === this.pauseButton);\n this.focusOnButton(pauseButton);\n });\n }\n\n /**\n * When user clicks on 'pause' button -> pause the video and move the focus to the 'play' button.\n */\n onVideoPause(): void {\n const videoEl = this.eclMediaContainerItem.el.nativeElement;\n videoEl.pause();\n\n timer(this.DELAY).pipe(take(1)).subscribe(() => {\n const playButton = this.eclButtons.find(\n button => button === this.playButton);\n this.focusOnButton(playButton);\n });\n }\n\n private focusOnButton(button: EclButtonComponent): void {\n if (!button) {\n return;\n }\n button.onFocus();\n }\n\n private setCaptionBottom(): void {\n if (!this.creditEl() || this.resolvedCaptionPosition() !== 'over') {\n this.captionBottomOffset.set(null);\n return;\n }\n this.captionBottomOffset.set(`${this.creditEl().nativeElement.offsetHeight}px`);\n }\n}\n","<figure class=\"ecl-media-container__figure\" [class.ecl-media-container--full-width]=\"isFullWidth\" [style.--ecl-caption-bottom]=\"captionBottomOffset()\">\n @if (hasVideo()) {\n <div class=\"ecl-media-container__video-wrapper\">\n <ng-content select=\"video[eclMediaContainerItem]\"></ng-content>\n @if (eclAutoplay) {\n <button #playButton eclButton variant=\"tertiary\" isIconOnly class=\"ecl-media-container__play\" (click)=\"onVideoPlay()\"\n [style.display]=\"isPlaying ? 'none' : 'flex'\" type=\"button\">\n <span eclButtonLabel>Play</span>\n <ecl-icon icon=\"play-outline\" size=\"m\"></ecl-icon>\n </button>\n <button #pauseButton eclButton variant=\"tertiary\" isIconOnly class=\"ecl-media-container__pause\" (click)=\"onVideoPause()\"\n [style.display]=\"isPlaying ? 'flex' : 'none'\" type=\"button\">\n <span eclButtonLabel>Pause</span>\n <ecl-icon icon=\"pause-outline\" size=\"m\"></ecl-icon>\n </button>\n }\n </div>\n }\n <ng-content select=\"div[eclMediaContainerItem]\"></ng-content>\n <ng-content select=\"picture[eclMediaContainerPicture]\"></ng-content>\n\n <ng-content select=\"figcaption[eclMediaContainerCaption]\"></ng-content>\n <ng-content select=\"footer[eclMediaContainerCredit]\"></ng-content>\n <ng-content select=\"ecl-expandable\"></ng-content>\n</figure>\n","import { EclMediaContainerIframeDirective } from './ecl-media-container-iframe.directive';\nimport { EclMediaContainerItemAudioDescriptionDirective } from './ecl-media-container-item-audio-description.directive';\nimport { EclMediaContainerItemDirective } from './ecl-media-container-item.directive';\nimport { EclMediaContainerPictureDirective } from './ecl-media-container-picture.directive';\nimport { EclMediaContainerCaptionDirective } from './ecl-media-container-caption.directive';\nimport { EclMediaContainerCreditDirective } from './ecl-media-container-credit.directive';\nimport { EclMediaContainerComponent } from './ecl-media-container.component';\n\nexport * from './ecl-media-container.component';\nexport * from './ecl-media-container-item.directive';\nexport * from './ecl-media-container-iframe.directive';\nexport * from './ecl-media-container-picture.directive';\nexport * from './ecl-media-container-item-audio-description.directive';\nexport * from './ecl-media-container-caption.directive';\nexport * from './ecl-media-container-credit.directive';\n\nexport const EUI_ECL_MEDIA_CONTAINER = [\n EclMediaContainerComponent,\n EclMediaContainerItemDirective,\n EclMediaContainerIframeDirective,\n EclMediaContainerPictureDirective,\n EclMediaContainerItemAudioDescriptionDirective,\n EclMediaContainerCaptionDirective,\n EclMediaContainerCreditDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +1,19 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { Directive } from '@angular/core';
|
|
3
3
|
|
|
4
4
|
class EclPageInformationDirective {
|
|
5
|
-
constructor() {
|
|
6
|
-
/**
|
|
7
|
-
* Applies 'ecl-page-info' class to the host.
|
|
8
|
-
*
|
|
9
|
-
* @default 'ecl-page-info'
|
|
10
|
-
*/
|
|
11
|
-
this.className = 'ecl-page-info';
|
|
12
|
-
}
|
|
13
5
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: EclPageInformationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
14
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.17", type: EclPageInformationDirective, isStandalone: true, selector: "[eclPageInformation]", host: {
|
|
6
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.17", type: EclPageInformationDirective, isStandalone: true, selector: "[eclPageInformation]", host: { classAttribute: "ecl-page-info" }, ngImport: i0 }); }
|
|
15
7
|
}
|
|
16
8
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: EclPageInformationDirective, decorators: [{
|
|
17
9
|
type: Directive,
|
|
18
10
|
args: [{
|
|
19
11
|
selector: '[eclPageInformation]',
|
|
12
|
+
host: {
|
|
13
|
+
class: 'ecl-page-info'
|
|
14
|
+
}
|
|
20
15
|
}]
|
|
21
|
-
}]
|
|
22
|
-
type: HostBinding,
|
|
23
|
-
args: ['class']
|
|
24
|
-
}] } });
|
|
16
|
+
}] });
|
|
25
17
|
|
|
26
18
|
const EUI_ECL_PAGE_INFORMATION = [
|
|
27
19
|
EclPageInformationDirective,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-page-information.mjs","sources":["../../components/ecl-page-information/ecl-page-information.directive.ts","../../components/ecl-page-information/index.ts","../../components/ecl-page-information/eui-ecl-components-ecl-page-information.ts"],"sourcesContent":["import { Directive
|
|
1
|
+
{"version":3,"file":"eui-ecl-components-ecl-page-information.mjs","sources":["../../components/ecl-page-information/ecl-page-information.directive.ts","../../components/ecl-page-information/index.ts","../../components/ecl-page-information/eui-ecl-components-ecl-page-information.ts"],"sourcesContent":["import { Directive } from \"@angular/core\";\n\n@Directive({\n selector: '[eclPageInformation]',\n host: {\n class: 'ecl-page-info'\n }\n})\nexport class EclPageInformationDirective {}","import { EclPageInformationDirective } from './ecl-page-information.directive';\n\nexport * from './ecl-page-information.directive';\n\nexport const EUI_ECL_PAGE_INFORMATION = [\n EclPageInformationDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAQa,2BAA2B,CAAA;+GAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV;AACJ,iBAAA;;;ACHM,MAAM,wBAAwB,GAAG;IACpC,2BAA2B;;;ACL/B;;AAEG;;;;"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, booleanAttribute, Component } from '@angular/core';
|
|
3
|
+
import * as i1 from '@eui/ecl/components/ecl-icon';
|
|
4
|
+
import { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';
|
|
5
|
+
|
|
6
|
+
class EclPageSummaryComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.hasIcon = input(true, { ...(ngDevMode ? { debugName: "hasIcon" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
9
|
+
this.eclTitle = input(...(ngDevMode ? [undefined, { debugName: "eclTitle" }] : /* istanbul ignore next */ []));
|
|
10
|
+
}
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: EclPageSummaryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: EclPageSummaryComponent, isStandalone: true, selector: "ecl-page-summary", inputs: { hasIcon: { classPropertyName: "hasIcon", publicName: "hasIcon", isSignal: true, isRequired: false, transformFunction: null }, eclTitle: { classPropertyName: "eclTitle", publicName: "eclTitle", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "ecl-page-summary" }, ngImport: i0, template: "<div class=\"ecl-page-summary__header\">\n @if(hasIcon()) {\n <ecl-icon iconSet=\"phosphor\" size=\"m\" icon=\"book-open\" class=\"ecl-page-summary__icon\" />\n }\n @if(eclTitle()) {\n <span class=\"ecl-page-summary__title\">{{ eclTitle() }}</span>\n }\n</div>\n<div class=\"ecl-page-summary__description\"><ng-content></ng-content></div>", dependencies: [{ kind: "component", type: i1.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }] }); }
|
|
13
|
+
}
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: EclPageSummaryComponent, decorators: [{
|
|
15
|
+
type: Component,
|
|
16
|
+
args: [{ selector: 'ecl-page-summary', host: {
|
|
17
|
+
class: 'ecl-page-summary'
|
|
18
|
+
}, imports: [EUI_ECL_ICON], template: "<div class=\"ecl-page-summary__header\">\n @if(hasIcon()) {\n <ecl-icon iconSet=\"phosphor\" size=\"m\" icon=\"book-open\" class=\"ecl-page-summary__icon\" />\n }\n @if(eclTitle()) {\n <span class=\"ecl-page-summary__title\">{{ eclTitle() }}</span>\n }\n</div>\n<div class=\"ecl-page-summary__description\"><ng-content></ng-content></div>" }]
|
|
19
|
+
}], propDecorators: { hasIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasIcon", required: false }] }], eclTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "eclTitle", required: false }] }] } });
|
|
20
|
+
|
|
21
|
+
const EUI_ECL_PAGE_SUMMARY = [
|
|
22
|
+
EclPageSummaryComponent,
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Generated bundle index. Do not edit.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
export { EUI_ECL_PAGE_SUMMARY, EclPageSummaryComponent };
|
|
30
|
+
//# sourceMappingURL=eui-ecl-components-ecl-page-summary.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eui-ecl-components-ecl-page-summary.mjs","sources":["../../components/ecl-page-summary/ecl-page-summary.component.ts","../../components/ecl-page-summary/ecl-page-summary.component.html","../../components/ecl-page-summary/index.ts","../../components/ecl-page-summary/eui-ecl-components-ecl-page-summary.ts"],"sourcesContent":["import { booleanAttribute, Component, input } from \"@angular/core\";\nimport { EUI_ECL_ICON } from \"@eui/ecl/components/ecl-icon\";\n\n@Component({\n selector: 'ecl-page-summary',\n templateUrl: './ecl-page-summary.component.html',\n host: {\n class: 'ecl-page-summary'\n },\n imports: [EUI_ECL_ICON],\n})\nexport class EclPageSummaryComponent {\n hasIcon = input(true, { transform: booleanAttribute });\n eclTitle = input<string>();\n}","<div class=\"ecl-page-summary__header\">\n @if(hasIcon()) {\n <ecl-icon iconSet=\"phosphor\" size=\"m\" icon=\"book-open\" class=\"ecl-page-summary__icon\" />\n }\n @if(eclTitle()) {\n <span class=\"ecl-page-summary__title\">{{ eclTitle() }}</span>\n }\n</div>\n<div class=\"ecl-page-summary__description\"><ng-content></ng-content></div>","import { EclPageSummaryComponent } from './ecl-page-summary.component';\n\nexport * from './ecl-page-summary.component';\n\nexport const EUI_ECL_PAGE_SUMMARY = [\n EclPageSummaryComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAWa,uBAAuB,CAAA;AARpC,IAAA,WAAA,GAAA;QASI,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QACtD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAC7B,IAAA;+GAHY,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,qYCXpC,sWAQ0E,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,CAAA,EAAA,CAAA,CAAA;;4FDG7D,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,IAAA,EAEtB;AACF,wBAAA,KAAK,EAAE;qBACV,EAAA,OAAA,EACQ,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,sWAAA,EAAA;;;AELpB,MAAM,oBAAoB,GAAG;IAChC,uBAAuB;;;ACL3B;;AAEG;;;;"}
|