{"version":3,"names":["createSchemes","newSchemes","AllColors.SECTION_SCHEMES","forEach","element","schemeName","bgColor","AllColors","toConstantCase","footerSeparatorColor","scheme","SECTION_SCHEME_CONFIG","SECTION_SCHEME_MAP","Map","Object","entries","createSectionMapDefinition","map","background","config","HTML_TAG_SECTION","HTML_TAG_FOOTER","SECTION_VIDEO_CONTROL_COLOR_LIGHT","SECTION_LOCALIZATION","en","play","pause","de","sv","nl","it","hu","da","fr","es","pl","ro","hr","cs","sl","sectionSvgs","h","width","height","viewBox","fill","xmlns","d","sectionCss","EonUiSectionStyle0","Section","this","schemeConfig","schemeMap","localization","componentWillLoad","applyScheme","setCurrentLocalization","gridControlChilds","hostElement","querySelectorAll","videoElement","getFirstNestedChild","enterViewport","checkForParentSection","updateClassesForInnerSection","useTheRightHtmlTag","setImageProperties","wall","toggleWall","componentDidLoad","setCssVariables","getBackgroundColorOfNextSection","applySchemeDelegate","setCssVariablesDelegate","backgroundElement","querySelector","appearance","innerBackground","IMAGE_COMPONENTS_ON_BRIGHT_IMAGE_BACKGROUND_SCHEME","IMAGE_COMPONENTS_ON_DARK_IMAGE_BACKGROUND_SCHEME","activeScheme","useAsFooter","ariaLabel","htmlTag","gridControl","removeBottomSpacings","removeVerticalGutter","removeHorizontalGutter","sameHeight","backgroundImage","Array","from","children","filter","call","child","getAttribute","setAttribute","backgroundOffset","sectionsOnPage","document","sectionIndex","indexOf","nextSection","setCssVariable","camelToDashCase","get","parent","parentNode","host","tagName","sectionInSection","classList","add","handlePlayToggle","isPlaying","pausePlayback","startPlayback","window","IntersectionObserver","videoObserver","entry","intersectionRatio","threshold","observe","setCurrentLocalizationDelegate","render","TagForSection","Host","key","class","pfx","removeTopSpacing","removeBottomSpacing","fullWidth","stretchGrid","name","videoPlaybackOption","tabindex","videoControlColor","onClick","currentLocalization"],"sources":["src/components/section/constants/section-constants.ts","src/components/section/constants/section-i18n.ts","src/components/section/icon-svgs.tsx","src/components/section/section.scss?tag=eon-ui-section&encapsulation=shadow","src/components/section/section.tsx"],"sourcesContent":["import * as AllColors from \"../../../constants/colors\";\nimport { toConstantCase } from \"../../../utils/string-format\";\nimport { SectionSchemeDefinition } from \"./section-types\";\nimport { BackgroundColor } from \"../../background/constants/background-types\";\nimport { createSectionMapDefinition } from \"../../../utils/scheme-helper\";\n\nfunction createSchemes() {\n let newSchemes: AllColors.SectionSchemeConfiguration = {};\n AllColors.SECTION_SCHEMES.forEach((element) => {\n newSchemes[element.schemeName] = {\n bgColor: AllColors[`COLOR_${toConstantCase(element.schemeName)}`],\n footerSeparatorColor: AllColors[`COLOR_${toConstantCase(element.schemeName)}_SHADE_1`]\n };\n if (element.scheme) {\n newSchemes[element.schemeName] = { ...newSchemes[element.schemeName], ...element.scheme };\n }\n });\n return newSchemes;\n}\n\nexport const SECTION_SCHEME_CONFIG: AllColors.SectionSchemeConfiguration = createSchemes();\n\nexport const SECTION_SCHEME_MAP: Map = new Map(\n Object.entries(createSectionMapDefinition()).map(([background, config]) => [\n background as BackgroundColor,\n SECTION_SCHEME_CONFIG[config as string]\n ])\n);\n\nexport const HTML_TAG_SECTION = \"section\";\nexport const HTML_TAG_FOOTER = \"footer\";\nexport const HTML_TAGS = [HTML_TAG_SECTION, HTML_TAG_FOOTER] as const;\nexport const SECTION_VIDEO_CONTROL_COLOR_LIGHT = \"light\";\nexport const SECTION_VIDEO_CONTROL_COLOR_DARK = \"dark\";\n\nexport const SECTION_VIDEO_CONTROL_COLORS = [\n SECTION_VIDEO_CONTROL_COLOR_LIGHT,\n SECTION_VIDEO_CONTROL_COLOR_DARK\n] as const;\n","import { Localization } from \"../../../common/localizable-component\";\nimport { SectionLocalization } from \"./section-types\";\n\nexport const SECTION_LOCALIZATION: Localization = {\n en: {\n play: \"Pause playback\",\n pause: \"Resume playback\"\n },\n de: {\n play: \"Wiedergabe anhalten\",\n pause: \"Wiedergabe fortsetzen\"\n },\n sv: {\n play: \"Pausa uppspelning\",\n pause: \"Återuppta uppspelning\"\n },\n nl: {\n play: \"Afspelen onderbreken\",\n pause: \"afspelen hervatten\"\n },\n it: {\n play: \"Interrompere la riproduzione\",\n pause: \"Riprendere la riproduzione\"\n },\n hu: {\n play: \"Lejátszás szüneteltetése\",\n pause: \"Lejátszás folytatása\"\n },\n da: {\n play: \"Pause playback\",\n pause: \"Fortsæt playback\"\n },\n fr: {\n play: \"Pause de la lecture\",\n pause: \"Reprise de la lecture\"\n },\n es: {\n play: \"Pausa la reproducción\",\n pause: \"Reanudar la reproducción\"\n },\n pl: {\n play: \"Wstrzymanie odtwarzania\",\n pause: \"Wznowienie odtwarzania\"\n },\n ro: {\n play: \"Pauză la redare\",\n pause: \"Reluarea redării\"\n },\n hr: {\n play: \"Pauziraj reprodukciju\",\n pause: \"Nastavak reprodukcije\"\n },\n cs: {\n play: \"Pozastavení přehrávání\",\n pause: \"Obnovení přehrávání\"\n },\n sl: {\n play: \"Prekinitev predvajanja\",\n pause: \"Nadaljevanje predvajanja\"\n }\n};\n","import { h } from \"@stencil/core\";\n\n// the props in this are (factory) functions instead of attributes because it's not recommended to reuse JSX elements in Stencil\n// see https://stenciljs.com/docs/templating-jsx#avoid-shared-jsx-nodes\nexport const sectionSvgs = {\n pause: () => (\n \n \n \n ),\n play: () => (\n \n \n \n )\n};\n","/**\n * THEME JSON CONFIG CSS VARS\n * The following default component scss variables can be overwritten via theme configuration per brand.\n * If you need to add new one, please make sure to set a default value.\n * JSON Definition for Component with name \"Example\": testCssVar: \"20px\"\n * Resulting CSS var: $example-test-css-var: 20px;\n */\n\n$section-padding-top-desktop-large: 88px !default;\n$section-padding-bottom-desktop-large: 88px !default;\n$section-padding-top-desktop: 72px !default;\n$section-padding-bottom-desktop: 72px !default;\n$section-padding-top-tablet: 64px !default;\n$section-padding-bottom-tablet: 64px !default;\n$section-padding-top-phone: 56px !default;\n$section-padding-bottom-phone: 56px !default;\n$section-padding-top-footer: 48px !default;\n$section-padding-bottom-footer: 64px !default;\n$section-margin-phone: 24px !default;\n$section-margin-tablet: 32px !default;\n$section-margin-desktop: 48px !default;\n$section-margin-desktop-large: 48px !default;\n$section-h-gutter-phone: 16px !default;\n$section-h-gutter-tablet: 24px !default;\n$section-h-gutter-desktop: 40px !default;\n$section-h-gutter-desktop-large: 48px !default;\n\n/* END THEME JSON CONFIG CSS VARS ******************************************************* */\n\n:host {\n display: block;\n}\n\n* {\n margin: 0;\n padding: 0;\n}\n\n*,\n*::after,\n*::before {\n box-sizing: border-box;\n outline: 0 none;\n text-rendering: optimizelegibility;\n}\n\n.#{$prefix}section-wrapper {\n position: relative;\n background-color: v(bgColor);\n\n &.#{$prefix}background-offset {\n @include for-size(desktop-l) {\n background: v(bgColor);\n background: linear-gradient(\n 0deg,\n var(--nextSectionBackgroundColor) 0%,\n var(--nextSectionBackgroundColor) 80px,\n v(bgColor) 80px,\n v(bgColor) 100%\n );\n }\n }\n\n .#{$prefix}section-inner {\n position: relative;\n max-width: calc($content-max-width-desktop-l + $section-margin-desktop-large * 2);\n height: auto;\n padding-top: $section-padding-top-desktop-large;\n padding-left: $section-margin-desktop-large;\n padding-bottom: $section-padding-bottom-desktop-large;\n padding-right: $section-margin-desktop-large;\n margin: 0px auto 0px auto;\n\n @include for-size(desktop) {\n max-width: calc($content-max-width-desktop + $section-margin-desktop * 2);\n padding-top: $section-padding-top-desktop;\n padding-right: $section-margin-desktop;\n padding-bottom: $section-padding-bottom-desktop;\n padding-left: $section-margin-desktop;\n }\n\n @include for-size(tablet) {\n max-width: 100%;\n padding-top: $section-padding-top-tablet;\n padding-right: $section-margin-tablet;\n padding-bottom: $section-padding-bottom-tablet;\n padding-left: $section-margin-tablet;\n }\n\n @include for-size(phone) {\n max-width: 100%;\n padding-top: $section-padding-top-phone;\n padding-right: $section-margin-phone;\n padding-bottom: $section-padding-bottom-phone;\n padding-left: $section-margin-phone;\n }\n\n .#{$prefix}icon-text-wrapper {\n display: flex;\n gap: 4px;\n align-items: center;\n background: none;\n border: none;\n padding-right: 8px;\n\n .#{$prefix}icon-wrapper {\n svg {\n display: block;\n }\n }\n\n .#{$prefix}text {\n font-family: \"EONBrixSans\";\n font-style: normal;\n height: 18px;\n font-weight: 700;\n font-size: 14px;\n line-height: 18px;\n padding-top: 3px;\n }\n\n &.#{$prefix}video-control-light {\n &:focus {\n outline: $section-video-control-color-light solid 2px;\n outline-offset: 4px;\n }\n path {\n fill: $section-video-control-color-light;\n }\n .#{$prefix}text {\n color: $section-video-control-color-light;\n\n &:hover {\n border-bottom: 2px solid $section-video-control-color-light;\n }\n }\n }\n\n &.#{$prefix}video-control-dark {\n &:focus {\n outline: $section-video-control-color-dark solid 2px;\n outline-offset: 4px;\n }\n path {\n fill: $section-video-control-color-dark;\n }\n .#{$prefix}text {\n color: $section-video-control-color-dark;\n\n &:hover {\n border-bottom: 2px solid $section-video-control-color-dark;\n }\n }\n }\n }\n }\n\n &.#{$prefix}remove-top-padding {\n .#{$prefix}section-inner {\n padding-top: 0;\n }\n }\n\n &.#{$prefix}remove-bottom-padding {\n .#{$prefix}section-inner {\n padding-bottom: 0;\n }\n }\n\n &.#{$prefix}full-width {\n .#{$prefix}section-inner {\n padding-left: 0;\n padding-right: 0;\n }\n }\n\n &.#{$prefix}stretch-grid {\n .#{$prefix}section-inner {\n max-width: 1920px;\n }\n }\n\n &.#{$prefix}stretch-grid {\n &.#{$prefix}full-width {\n .#{$prefix}section-inner {\n max-width: 1920px;\n padding-left: 0;\n padding-right: 0;\n }\n }\n }\n\n &.#{$prefix}section-in-section {\n .#{$prefix}section-inner {\n padding: 48px;\n\n @include for-size(desktop) {\n padding: 40px;\n }\n\n @include for-size(tablet) {\n padding: 32px;\n }\n\n @include for-size(phone) {\n padding: 24px;\n }\n }\n }\n}\n\nfooter.#{$prefix}section-wrapper {\n .#{$prefix}section-inner {\n padding-top: $section-padding-top-footer;\n padding-bottom: $section-padding-bottom-footer;\n\n .#{$prefix}footer-separator {\n position: absolute;\n top: 0;\n background: v(footerSeparatorColor);\n height: 4px;\n width: calc(100% - 2 * $section-margin-desktop-large);\n\n @include for-size(desktop) {\n width: calc(100% - 2 * $section-margin-desktop);\n }\n\n @include for-size(tablet) {\n width: calc(100% - 2 * $section-margin-tablet);\n }\n\n @include for-size(phone) {\n width: calc(100% - 2 * $section-margin-phone);\n }\n }\n }\n}\n\n::slotted(eon-ui-grid-control) {\n margin-bottom: $section-h-gutter-desktop-large !important;\n\n @include for-size(desktop) {\n margin-bottom: $section-h-gutter-desktop !important;\n }\n\n @include for-size(tablet) {\n margin-bottom: $section-h-gutter-tablet !important;\n }\n\n @include for-size(phone) {\n margin-bottom: $section-h-gutter-phone !important;\n }\n}\n\n::slotted(eon-ui-grid-control[remove-bottom-spacings]) {\n margin-bottom: 0 !important;\n}\n\n::slotted(eon-ui-grid-control:last-child) {\n margin-bottom: 0 !important;\n}\n","import { Component, Host, h, Prop, Element, Watch, State } from \"@stencil/core\";\nimport {\n HTML_TAG_FOOTER,\n HTML_TAG_SECTION,\n SECTION_SCHEME_CONFIG,\n SECTION_SCHEME_MAP,\n SECTION_VIDEO_CONTROL_COLOR_LIGHT\n} from \"./constants/section-constants\";\nimport {\n HtmlTags,\n SectionLocalization,\n SectionSchemeDefinition,\n SectionSchemeName,\n SectionVideoControlColor\n} from \"./constants/section-types\";\nimport pfx from \"../../utils/style-class-prefix-helper\";\nimport { SectionSchemeConfiguration } from \"../../constants/colors\";\nimport { applySchemeDelegate, ColorableComponent, setCssVariablesDelegate } from \"../../common/colorable-component\";\nimport { setCssVariable } from \"../../utils/css-variables\";\nimport { camelToDashCase } from \"../../utils/string-format\";\nimport {\n IMAGE_COMPONENTS_ON_DARK_IMAGE_BACKGROUND_SCHEME,\n IMAGE_COMPONENTS_ON_BRIGHT_IMAGE_BACKGROUND_SCHEME,\n SECTION_SHOW_FOOTER_SEPARATOR\n} from \"../../constants/global-constants\";\nimport { SECTION_LOCALIZATION } from \"./constants/section-i18n\";\nimport { LocalizableComponent, Localization, setCurrentLocalizationDelegate } from \"../../common/localizable-component\";\nimport { sectionSvgs } from \"./icon-svgs\";\nimport { getFirstNestedChild } from \"../../utils/dom-helper\";\n// import { InitLogging } from \"../../decorators/init-logging\";\n\n/**\n * @slot [unnamed] - holds any number of HTML elements.\n * @slot [background-image] - holds an eon-ui-image component as background.\n */\n@Component({\n tag: \"eon-ui-section\",\n styleUrl: \"section.scss\",\n shadow: true\n})\nexport class Section\n implements\n ColorableComponent>,\n LocalizableComponent {\n // @InitLogging() sentryTransaction;\n schemeConfig: SectionSchemeConfiguration = SECTION_SCHEME_CONFIG;\n schemeMap = SECTION_SCHEME_MAP;\n\n localization: Localization = SECTION_LOCALIZATION;\n currentLocalization: SectionLocalization;\n\n @Element() hostElement: HTMLEonUiSectionElement;\n\n @State() gridChildren;\n @State() backgroundImage;\n @State() htmlTag: HtmlTags;\n @State() sectionInSection: boolean = false; // Temporary workaround for eon.de section in section usage.\n @State() isPlaying: boolean = true;\n\n private ariaLabel: string;\n private gridControlChilds;\n private videoElement: HTMLEonUiVideoplayerElement;\n\n /**\n * The components active scheme. If {@link scheme} is set, it will be set to the corresponding scheme.\n * If not set, the component will try to calculate it based on the nearest enclosing background information given by inner-background attribute or eon-ui-background component.\n */\n @State() activeScheme: SectionSchemeDefinition;\n\n /**\n * The name of the color scheme of the component.\n * If not set, the component will try to calculate it based on the nearest enclosing background information given by inner-background attribute or eon-ui-background component.\n */\n @Prop({ attribute: \"background-color\", reflect: true }) scheme: SectionSchemeName;\n\n /**\n * Represents the internal color of the component.\n * It will be read by colorable-component.ts getColorOfNearestBackground() function to realize\n * the detection of backgrounds inside of components, hidden by shadow dom.\n * @disableControlInStorybook true\n */\n @Prop({ reflect: true, mutable: true }) innerBackground: string;\n\n /**\n * Removes section padding at the top. Combined with remove-bottom-spacing it can be used for stages or header components.\n * @default false\n */\n @Prop() removeTopSpacing: boolean = false;\n\n /**\n * Removes section padding at the bottom. Combined with remove-top-spacing it can be used for stages or header components.\n * @default false\n */\n @Prop() removeBottomSpacing: boolean = false;\n\n /**\n * Removes outer margins from the grid for header components.\n * @default false\n */\n @Prop() fullWidth: boolean = false;\n\n /**\n * Removes the 1200px width restriction of the content.\n * @default false\n */\n @Prop() stretchGrid: boolean = false;\n\n /**\n * set this property to true if the section is used as footer.\n * @default false\n */\n @Prop() useAsFooter: boolean = false;\n\n /**\n * Background offset takes the color of the next section and uses it as part of this sections background. This is visible on viewport > 1920px.\n * @default false\n */\n @Prop() backgroundOffset: boolean = false;\n\n /**\n * Removes all horiztontal and vertical gutters from the internal grids to realize a visual appearance of components building up a wall.\n */\n @Prop() wall: boolean = false;\n\n /**\n * Defines color of pause/resume icon and text\n * @example \n */\n @Prop({ reflect: true }) videoControlColor: SectionVideoControlColor = SECTION_VIDEO_CONTROL_COLOR_LIGHT;\n\n /**\n * Enables the playback option for the video. This property will only be used when video is set to the background.\n */\n @Prop() videoPlaybackOption: boolean = false;\n\n componentWillLoad() {\n this.applyScheme();\n this.setCurrentLocalization();\n\n this.gridControlChilds = this.hostElement.querySelectorAll(\"EON-UI-GRID-CONTROL\");\n this.videoElement = getFirstNestedChild(this.hostElement, \"eon-ui-videoplayer\");\n this.videoElement && this.enterViewport(this.hostElement);\n\n if (this.checkForParentSection(this.hostElement)) this.updateClassesForInnerSection(); // Temporary workaround for eon.de section in section usage.\n this.useTheRightHtmlTag();\n this.setImageProperties();\n if (this.wall) this.toggleWall();\n }\n\n componentDidLoad() {\n this.setCssVariables();\n this.getBackgroundColorOfNextSection();\n }\n\n @Watch(\"scheme\")\n applyScheme() {\n applySchemeDelegate(this);\n }\n\n @Watch(\"activeScheme\")\n setCssVariables(): void {\n setCssVariablesDelegate(this);\n const backgroundElement = this.hostElement.querySelector('[slot=\"background-image\"]') as HTMLEonUiImageElement;\n\n if (!!backgroundElement && !this.scheme) {\n switch (backgroundElement.appearance) {\n case \"bright\":\n this.innerBackground = IMAGE_COMPONENTS_ON_BRIGHT_IMAGE_BACKGROUND_SCHEME;\n break;\n case \"dark\":\n this.innerBackground = IMAGE_COMPONENTS_ON_DARK_IMAGE_BACKGROUND_SCHEME;\n break;\n default:\n this.innerBackground = IMAGE_COMPONENTS_ON_DARK_IMAGE_BACKGROUND_SCHEME;\n break;\n }\n } else {\n this.innerBackground = this.scheme === \"transparent\" ? null : this.activeScheme.bgColor;\n }\n }\n\n @Watch(\"useAsFooter\")\n useTheRightHtmlTag() {\n if (this.useAsFooter) {\n this.ariaLabel = \"footer-navigation\";\n this.htmlTag = HTML_TAG_FOOTER;\n } else {\n this.htmlTag = HTML_TAG_SECTION;\n }\n }\n\n @Watch(\"wall\")\n private toggleWall() {\n this.gridControlChilds.forEach((gridControl: HTMLEonUiGridControlElement) => {\n gridControl.removeBottomSpacings = this.wall;\n gridControl.removeVerticalGutter = this.wall;\n gridControl.removeHorizontalGutter = this.wall;\n gridControl.sameHeight = this.wall;\n });\n }\n\n private setImageProperties() {\n this.backgroundImage = Array.from(this.hostElement.children).filter.call(\n this.hostElement.children,\n function (child: HTMLElement) {\n return child.getAttribute(\"slot\") === \"background-image\" || child.getAttribute(\"slot\") === \"background-video\";\n }\n );\n this.backgroundImage.forEach((backgroundImage) => {\n backgroundImage.setAttribute(\"use-as-background\", \"true\");\n });\n }\n\n @Watch(\"backgroundOffset\")\n private getBackgroundColorOfNextSection() {\n if (this.backgroundOffset) {\n const sectionsOnPage = document.querySelectorAll(\"EON-UI-SECTION\");\n const sectionIndex = Array.from(sectionsOnPage).indexOf(this.hostElement);\n const nextSection = sectionsOnPage[sectionIndex + 1] as HTMLEonUiSectionElement;\n\n if (nextSection && nextSection.scheme) {\n setCssVariable(\n this.hostElement,\n `--nextSectionBackgroundColor`,\n `var(--eon-${camelToDashCase(nextSection.scheme)})`\n );\n } else {\n setCssVariable(\n this.hostElement,\n `--nextSectionBackgroundColor`,\n `var(--${this.schemeMap.get(\"default\").bgColor})`\n );\n }\n }\n }\n\n /*\n * Temporary workaround for eon.de section in section usage.\n */\n private checkForParentSection(element: HTMLElement): boolean {\n const parent = (element.parentNode as HTMLElement) || ((element as any).host as HTMLElement);\n\n if (!parent) return false;\n if (parent.tagName === \"EON-UI-SECTION\") return true;\n\n return this.checkForParentSection(parent);\n }\n\n /*\n * Temporary workaround for eon.de section in section usage.\n */\n private updateClassesForInnerSection() {\n this.sectionInSection = true;\n this.gridControlChilds.forEach((gridControl: HTMLEonUiGridControlElement) => {\n gridControl.classList.add(\"ignore-column-gaps\");\n });\n }\n\n handlePlayToggle() {\n this.isPlaying ? this.videoElement.pausePlayback() : this.videoElement.startPlayback();\n this.isPlaying = !this.isPlaying;\n }\n\n private enterViewport(element: HTMLElement) {\n if (window && window.IntersectionObserver) {\n const videoObserver = new window.IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n entries.forEach((entry) => {\n if (entry.intersectionRatio > 0) {\n this.isPlaying = true;\n } else {\n this.isPlaying = false;\n }\n });\n },\n {\n threshold: [0, 1]\n }\n );\n videoObserver.observe(element);\n }\n }\n\n setCurrentLocalization() {\n setCurrentLocalizationDelegate(this);\n }\n\n render() {\n const TagForSection = `${this.htmlTag}` as keyof JSX.IntrinsicElements;\n return (\n \n \n \n \n {SECTION_SHOW_FOOTER_SEPARATOR && this.useAsFooter &&
}\n \n {this.videoElement && this.videoPlaybackOption && (\n this.handlePlayToggle()}\n >\n
{this.isPlaying ? sectionSvgs.pause() : sectionSvgs.play()}
\n
\n \n {this.isPlaying ? this.currentLocalization.play : this.currentLocalization.pause}\n \n
\n \n )}\n \n \n
\n );\n }\n}\n"],"mappings":"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"}