@sbb-esta/lyne-elements-dev 5.0.0-next.3-dev.1780495434 → 5.0.0-next.3-dev.1780500158

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/core/styles/mixins/_scrollbar.scss +6 -0
  2. package/core/styles/styles.js +1 -1
  3. package/core.js +1 -1
  4. package/custom-elements.json +10 -2
  5. package/development/core/styles/styles.js +1 -1
  6. package/development/core.js +1 -1
  7. package/development/header/header/header.component.d.ts +2 -0
  8. package/development/header/header/header.component.d.ts.map +1 -1
  9. package/development/header/header/header.component.js +1 -1
  10. package/development/header.component-FVw_5NRT.js +336 -0
  11. package/development/header.js +1 -1
  12. package/development/header.pure.js +1 -1
  13. package/development/map-container/map-container.component.d.ts +2 -2
  14. package/development/map-container/map-container.component.js +1 -1
  15. package/development/map-container.component-ASCfDs-R.js +176 -0
  16. package/development/map-container.js +1 -1
  17. package/development/map-container.pure.js +1 -1
  18. package/development/{styles-AtR8n_N4.js → styles-CUz7LBUc.js} +3 -3
  19. package/header/_header.global.scss +8 -1
  20. package/header/header/header.component.js +1 -1
  21. package/{header.component-DgWfgTse.js → header.component-BbdHh5fF.js} +1 -1
  22. package/header.js +1 -1
  23. package/header.pure.js +1 -1
  24. package/lean-off-brand-theme.css +7 -1
  25. package/lean-safety-theme.css +7 -1
  26. package/lean-theme.css +7 -1
  27. package/map-container/map-container.component.js +1 -1
  28. package/{map-container.component-bI8Gb4I8.js → map-container.component-C2_Miiv0.js} +1 -1
  29. package/map-container.js +1 -1
  30. package/map-container.pure.js +1 -1
  31. package/off-brand-theme.css +7 -1
  32. package/package.json +2 -2
  33. package/safety-theme.css +7 -1
  34. package/standard-theme.css +7 -1
  35. package/styles-BwvY_TyZ.js +5 -0
  36. package/development/header.component-B43X03Jg.js +0 -334
  37. package/development/map-container.component-N-e2oBnd.js +0 -176
  38. package/styles-Cx8wGnh9.js +0 -5
@@ -67,6 +67,10 @@
67
67
  );
68
68
  }
69
69
 
70
+ @mixin scrollbar-variables--color-track-invisible {
71
+ --sbb-scrollbar-track-color: transparent;
72
+ }
73
+
70
74
  @mixin scrollbar-variables--color-positive-track-visible {
71
75
  --sbb-scrollbar-track-color: var(--sbb-background-color-4);
72
76
  }
@@ -99,6 +103,8 @@
99
103
  @include scrollbar-variables--color-negative-track-visible;
100
104
  } @else if $track-visible {
101
105
  @include scrollbar-variables--color-positive-track-visible;
106
+ } @else {
107
+ @include scrollbar-variables--color-track-invisible;
102
108
  }
103
109
  }
104
110
 
@@ -1,2 +1,2 @@
1
- import { a as e, i as t, n, o as r, r as i, t as a } from "../../styles-Cx8wGnh9.js";
1
+ import { a as e, i as t, n, o as r, r as i, t as a } from "../../styles-BwvY_TyZ.js";
2
2
  export { a as buttonResetStyles, n as hostScrollbarStyles, i as listResetStyles, t as popoverResetStyles, e as screenReaderOnlyStyles, r as scrollbarStyles };
package/core.js CHANGED
@@ -58,5 +58,5 @@ import { getElementPosition as Gn, getElementPositionHorizontal as Kn, getElemen
58
58
  import { setOverlayPosition as Yn } from "./core/overlay/overlay-option-panel.js";
59
59
  import { SbbOverlayOutsidePointerEventListener as Xn, sbbOverlayOutsidePointerEventListener as Zn } from "./core/overlay/overlay-outside-pointer-event-listener.js";
60
60
  import { removeAriaComboBoxAttributes as Qn, removeAriaOverlayTriggerProperties as $n, setAriaComboBoxAttributes as er, setAriaOverlayTriggerProperties as tr } from "./core/overlay/overlay-trigger-attributes.js";
61
- import { a as nr, i as rr, n as ir, o as ar, r as or, t as sr } from "./styles-Cx8wGnh9.js";
61
+ import { a as nr, i as rr, n as ir, o as ar, r as or, t as sr } from "./styles-BwvY_TyZ.js";
62
62
  export { q as DateAdapter, J as FORMAT_DATE, Y as FRIDAY, X as ISO8601_FORMAT_DATE, l as IS_FOCUSABLE_QUERY, u as InteractivityChecker, d as IsFocusableConfig, Z as MONDAY, re as NativeDateAdapter, Q as SATURDAY, $ as SUNDAY, x as SbbActionBaseElement, kn as SbbAnimationCompleteMixin, S as SbbButtonBaseElement, C as SbbButtonLikeBaseElement, P as SbbDarkModeController, An as SbbDisabledInteractiveMixin, jn as SbbDisabledMixin, Mn as SbbDisabledTabIndexActionMixin, b as SbbElement, A as SbbEscapableOverlayController, p as SbbFocusTrapController, c as SbbFocusVisibleWithinController, Fn as SbbFormAssociatedCheckboxMixin, Ln as SbbFormAssociatedInputMixin, Nn as SbbFormAssociatedMixin, Rn as SbbFormAssociatedRadioButtonMixin, j as SbbIdReferenceController, M as SbbInertController, N as SbbLanguageController, w as SbbLinkBaseElement, m as SbbLiveAnnouncer, F as SbbMediaMatcherController, I as SbbMediaQueryBreakpointLargeAndAbove, L as SbbMediaQueryBreakpointLargeAndBelow, R as SbbMediaQueryBreakpointSmallAndAbove, z as SbbMediaQueryBreakpointSmallAndBelow, B as SbbMediaQueryBreakpointUltraAndAbove, V as SbbMediaQueryBreakpointZeroAndAbove, H as SbbMediaQueryDarkMode, U as SbbMediaQueryForcedColors, W as SbbMediaQueryHover, G as SbbMediaQueryPointerCoarse, Bn as SbbNamedSlotListMixin, Vn as SbbNegativeMixin, T as SbbOpenCloseBaseElement, Xn as SbbOverlayOutsidePointerEventListener, K as SbbOverlayPositionController, Hn as SbbPanelMixin, k as SbbPropertyWatcherController, In as SbbReadonlyMixin, Pn as SbbRequiredMixin, Oe as SbbScrollHandler, E as SbbSelectionGroupBaseElement, Un as SbbSelectionPanelMixin, v as SbbSlottedChangeEvent, Wn as SbbUpdateSchedulerMixin, ee as THURSDAY, te as TUESDAY, ae as TemporalDateAdapter, ne as WEDNESDAY, y as appendAriaElements, sr as buttonResetStyles, me as containsPierceShadowDom, ie as defaultDateAdapter, oe as forceType, Me as forwardEvent, Gn as getElementPosition, Kn as getElementPositionHorizontal, qn as getElementRectangle, Ae as getEventTarget, e as getNextElementIndex, se as getOverride, ce as handleDistinctChange, ir as hostScrollbarStyles, Pe as i18nAdditionalWagonInformationHeading, Fe as i18nAnd, Ie as i18nArrival, Le as i18nBlockedPassage, Re as i18nBreadcrumbEllipsisButtonLabel, ze as i18nCalendarDateSelection, Be as i18nCalendarWeekNumber, Ve as i18nCarouselArrowsNavigationHint, He as i18nCarouselItemAriaLabel, Ue as i18nCheckboxRequired, We as i18nChipDelete, Ge as i18nChipGroupInputDescription, Ke as i18nClass, qe as i18nClearInput, Je as i18nCloseAlert, Ye as i18nCloseDialog, Xe as i18nCloseNavigation, Ze as i18nCloseNotification, Qe as i18nClosePopover, $e as i18nCloseSidebar, et as i18nClosedCompartmentLabel, tt as i18nCollapsed, nt as i18nConnectionFrom, rt as i18nConnectionRoundtrip, it as i18nConnectionTo, at as i18nCouchetteWagonLabel, ot as i18nDateChangedTo, st as i18nDateInvalid, ct as i18nDateMax, lt as i18nDateMin, ut as i18nDatePickerPlaceholder, dt as i18nDeparture, ft as i18nDialog, pt as i18nDirection, mt as i18nDurationDay, ht as i18nDurationHour, gt as i18nDurationMinute, _t as i18nExpanded, vt as i18nFileSelectorButtonLabel, yt as i18nFileSelectorButtonLabelMultiple, bt as i18nFileSelectorCurrentlySelected, xt as i18nFileSelectorDeleteFile, St as i18nFileSelectorSubtitleLabel, Ct as i18nFileSelectorSubtitleLabelMultiple, wt as i18nFlipCard, Tt as i18nFromPlatform, Et as i18nGoBack, Dt as i18nInputRequired, Ot as i18nItemsPerPage, kt as i18nLocomotiveLabel, At as i18nMapContainerButtonLabel, jt as i18nMeansOfTransport, Mt as i18nNew, Nt as i18nNextDay, Pt as i18nNextMonth, Ft as i18nNextPage, It as i18nNextSlide, Lt as i18nNextYear, Rt as i18nNextYearRange, zt as i18nOccupancy, Bt as i18nPage, Vt as i18nPaginatorOf, Ht as i18nPaginatorSelected, Ut as i18nPreviousDay, Wt as i18nPreviousMonth, Gt as i18nPreviousPage, Kt as i18nPreviousSlide, qt as i18nPreviousYear, Jt as i18nPreviousYearRange, Yt as i18nRealTimeInfo, Xt as i18nRemainingCharacters, Zt as i18nRestaurantWagonLabel, Qt as i18nReverseCard, $t as i18nSector, en as i18nSectorShort, tn as i18nSelectNextDay, nn as i18nSelectPreviousDay, rn as i18nSelectionRequired, an as i18nShowCalendar, on as i18nSleepingWagonLabel, sn as i18nSlide, cn as i18nSupersaver, ln as i18nTargetOpensInNewWindow, un as i18nTimeInputChange, dn as i18nTimeInvalid, fn as i18nTimeMax, pn as i18nTimeMaxLength, mn as i18nTimetableFormSwapButtonLabel, hn as i18nToday, gn as i18nTrain, _n as i18nTrains, vn as i18nTransferProcedure, yn as i18nTransferProcedures, bn as i18nTravelhints, xn as i18nTripDuration, Sn as i18nTripQuayChange, Cn as i18nWagonLabel, wn as i18nWagonLabelNumber, Tn as i18nWagonsLabel, En as i18nWalkingDistanceArrival, Dn as i18nWalkingDistanceDeparture, On as i18nYearMonthSelection, le as idReference, f as interactivityChecker, ge as isAndroid, t as isArrowKeyOrPageKeysPressed, n as isArrowKeyPressed, _e as isBlink, ve as isChromium, ye as isEdge, Jn as isEventOnElement, Ne as isEventPrevented, a as isFakeMousedownFromScreenReader, o as isFakeTouchstartFromScreenReader, be as isFirefox, xe as isIOS, Se as isMacOS, r as isNextArrowKeyPressed, Ce as isNextjs, i as isPreviousArrowKeyPressed, we as isSafari, Te as isTrident, Ee as isWebkit, pe as isZeroAnimationDuration, or as listResetStyles, D as mergeConfig, ue as omitEmptyConverter, ke as pageScrollDisabled, de as plainDate, fe as plainDateConverter, rr as popoverResetStyles, je as preventScrollOnSpacebarPress, De as queueDomContentLoaded, zn as radioButtonRegistry, O as readConfig, Qn as removeAriaComboBoxAttributes, _ as removeAriaElements, $n as removeAriaOverlayTriggerProperties, s as sbbInputModalityDetector, h as sbbLiveAnnouncer, Zn as sbbOverlayOutsidePointerEventListener, nr as screenReaderOnlyStyles, ar as scrollbarStyles, er as setAriaComboBoxAttributes, tr as setAriaOverlayTriggerProperties, he as setOrRemoveAttribute, Yn as setOverlayPosition, g as ɵstateController };
@@ -113736,6 +113736,14 @@
113736
113736
  "description": "Can be used to modify height of the header.",
113737
113737
  "name": "--sbb-header-height",
113738
113738
  "default": "zero-small:var(--sbb-spacing-fixed-14x);large-ultra:var(--sbb-spacing-fixed-24x)"
113739
+ },
113740
+ {
113741
+ "description": "Defines the header's padding-block-start. It defaults to the device's safe-area inset to prevent the header from being obscured by display cutouts or system UI elements. This variable must be set on the root document element (`<html>`) so that components relying on the header's height can calculate their layout correctly.",
113742
+ "name": "--sbb-header-padding-block-start:env(safe-area-inset-top, 0)"
113743
+ },
113744
+ {
113745
+ "description": "Readonly; sum of var(--sbb-header-height) and var(--sbb-header-padding-block-start) that can be used to manage spacing of absolute positioned elements that shouldn't overlap the header.",
113746
+ "name": "--sbb-header-vertical-spacing"
113739
113747
  }
113740
113748
  ],
113741
113749
  "slots": [
@@ -125872,7 +125880,7 @@
125872
125880
  {
125873
125881
  "description": "The component comes along with a height calculation that subtracts the height of the header. For specific use cases, this variable can be used to modify the preset height.",
125874
125882
  "name": "--sbb-map-container-margin-start",
125875
- "default": "var(--sbb-header-height)"
125883
+ "default": "var(--sbb-header-vertical-spacing)"
125876
125884
  },
125877
125885
  {
125878
125886
  "description": "Can be used to modify the width of the left sidebar.",
@@ -125880,7 +125888,7 @@
125880
125888
  "default": "zero-large:400px;ultra:480px"
125881
125889
  },
125882
125890
  {
125883
- "description": "If e.g. a header with a fixed height is placed before the map-container, the map should be sticky respecting this offset from the document's top. Only applied on mobile views. Most commonly it can be set to `var(--sbb-header-height)`.",
125891
+ "description": "If e.g. a header with a fixed height is placed before the map-container, the map should be sticky respecting this offset from the document's top. Only applied on mobile views. Most commonly it can be set to `var(--sbb-header-vertical-spacing)`.",
125884
125892
  "name": "--sbb-map-container-mobile-sticky-block-start",
125885
125893
  "default": "0"
125886
125894
  }
@@ -1,2 +1,2 @@
1
- import { a as screenReaderOnlyStyles, i as popoverResetStyles, n as hostScrollbarStyles, o as scrollbarStyles, r as listResetStyles, t as buttonResetStyles } from "../../styles-AtR8n_N4.js";
1
+ import { a as screenReaderOnlyStyles, i as popoverResetStyles, n as hostScrollbarStyles, o as scrollbarStyles, r as listResetStyles, t as buttonResetStyles } from "../../styles-CUz7LBUc.js";
2
2
  export { buttonResetStyles, hostScrollbarStyles, listResetStyles, popoverResetStyles, screenReaderOnlyStyles, scrollbarStyles };
@@ -58,5 +58,5 @@ import { getElementPosition, getElementPositionHorizontal, getElementRectangle,
58
58
  import { setOverlayPosition } from "./core/overlay/overlay-option-panel.js";
59
59
  import { SbbOverlayOutsidePointerEventListener, sbbOverlayOutsidePointerEventListener } from "./core/overlay/overlay-outside-pointer-event-listener.js";
60
60
  import { removeAriaComboBoxAttributes, removeAriaOverlayTriggerProperties, setAriaComboBoxAttributes, setAriaOverlayTriggerProperties } from "./core/overlay/overlay-trigger-attributes.js";
61
- import { a as screenReaderOnlyStyles, i as popoverResetStyles, n as hostScrollbarStyles, o as scrollbarStyles, r as listResetStyles, t as buttonResetStyles } from "./styles-AtR8n_N4.js";
61
+ import { a as screenReaderOnlyStyles, i as popoverResetStyles, n as hostScrollbarStyles, o as scrollbarStyles, r as listResetStyles, t as buttonResetStyles } from "./styles-CUz7LBUc.js";
62
62
  export { DateAdapter, FORMAT_DATE, FRIDAY, ISO8601_FORMAT_DATE, IS_FOCUSABLE_QUERY, InteractivityChecker, IsFocusableConfig, MONDAY, NativeDateAdapter, SATURDAY, SUNDAY, SbbActionBaseElement, SbbAnimationCompleteMixin, SbbButtonBaseElement, SbbButtonLikeBaseElement, SbbDarkModeController, SbbDisabledInteractiveMixin, SbbDisabledMixin, SbbDisabledTabIndexActionMixin, SbbElement, SbbEscapableOverlayController, SbbFocusTrapController, SbbFocusVisibleWithinController, SbbFormAssociatedCheckboxMixin, SbbFormAssociatedInputMixin, SbbFormAssociatedMixin, SbbFormAssociatedRadioButtonMixin, SbbIdReferenceController, SbbInertController, SbbLanguageController, SbbLinkBaseElement, SbbLiveAnnouncer, SbbMediaMatcherController, SbbMediaQueryBreakpointLargeAndAbove, SbbMediaQueryBreakpointLargeAndBelow, SbbMediaQueryBreakpointSmallAndAbove, SbbMediaQueryBreakpointSmallAndBelow, SbbMediaQueryBreakpointUltraAndAbove, SbbMediaQueryBreakpointZeroAndAbove, SbbMediaQueryDarkMode, SbbMediaQueryForcedColors, SbbMediaQueryHover, SbbMediaQueryPointerCoarse, SbbNamedSlotListMixin, SbbNegativeMixin, SbbOpenCloseBaseElement, SbbOverlayOutsidePointerEventListener, SbbOverlayPositionController, SbbPanelMixin, SbbPropertyWatcherController, SbbReadonlyMixin, SbbRequiredMixin, SbbScrollHandler, SbbSelectionGroupBaseElement, SbbSelectionPanelMixin, SbbSlottedChangeEvent, SbbUpdateSchedulerMixin, THURSDAY, TUESDAY, TemporalDateAdapter, WEDNESDAY, appendAriaElements, buttonResetStyles, containsPierceShadowDom, defaultDateAdapter, forceType, forwardEvent, getElementPosition, getElementPositionHorizontal, getElementRectangle, getEventTarget, getNextElementIndex, getOverride, handleDistinctChange, hostScrollbarStyles, i18nAdditionalWagonInformationHeading, i18nAnd, i18nArrival, i18nBlockedPassage, i18nBreadcrumbEllipsisButtonLabel, i18nCalendarDateSelection, i18nCalendarWeekNumber, i18nCarouselArrowsNavigationHint, i18nCarouselItemAriaLabel, i18nCheckboxRequired, i18nChipDelete, i18nChipGroupInputDescription, i18nClass, i18nClearInput, i18nCloseAlert, i18nCloseDialog, i18nCloseNavigation, i18nCloseNotification, i18nClosePopover, i18nCloseSidebar, i18nClosedCompartmentLabel, i18nCollapsed, i18nConnectionFrom, i18nConnectionRoundtrip, i18nConnectionTo, i18nCouchetteWagonLabel, i18nDateChangedTo, i18nDateInvalid, i18nDateMax, i18nDateMin, i18nDatePickerPlaceholder, i18nDeparture, i18nDialog, i18nDirection, i18nDurationDay, i18nDurationHour, i18nDurationMinute, i18nExpanded, i18nFileSelectorButtonLabel, i18nFileSelectorButtonLabelMultiple, i18nFileSelectorCurrentlySelected, i18nFileSelectorDeleteFile, i18nFileSelectorSubtitleLabel, i18nFileSelectorSubtitleLabelMultiple, i18nFlipCard, i18nFromPlatform, i18nGoBack, i18nInputRequired, i18nItemsPerPage, i18nLocomotiveLabel, i18nMapContainerButtonLabel, i18nMeansOfTransport, i18nNew, i18nNextDay, i18nNextMonth, i18nNextPage, i18nNextSlide, i18nNextYear, i18nNextYearRange, i18nOccupancy, i18nPage, i18nPaginatorOf, i18nPaginatorSelected, i18nPreviousDay, i18nPreviousMonth, i18nPreviousPage, i18nPreviousSlide, i18nPreviousYear, i18nPreviousYearRange, i18nRealTimeInfo, i18nRemainingCharacters, i18nRestaurantWagonLabel, i18nReverseCard, i18nSector, i18nSectorShort, i18nSelectNextDay, i18nSelectPreviousDay, i18nSelectionRequired, i18nShowCalendar, i18nSleepingWagonLabel, i18nSlide, i18nSupersaver, i18nTargetOpensInNewWindow, i18nTimeInputChange, i18nTimeInvalid, i18nTimeMax, i18nTimeMaxLength, i18nTimetableFormSwapButtonLabel, i18nToday, i18nTrain, i18nTrains, i18nTransferProcedure, i18nTransferProcedures, i18nTravelhints, i18nTripDuration, i18nTripQuayChange, i18nWagonLabel, i18nWagonLabelNumber, i18nWagonsLabel, i18nWalkingDistanceArrival, i18nWalkingDistanceDeparture, i18nYearMonthSelection, idReference, interactivityChecker, isAndroid, isArrowKeyOrPageKeysPressed, isArrowKeyPressed, isBlink, isChromium, isEdge, isEventOnElement, isEventPrevented, isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader, isFirefox, isIOS, isMacOS, isNextArrowKeyPressed, isNextjs, isPreviousArrowKeyPressed, isSafari, isTrident, isWebkit, isZeroAnimationDuration, listResetStyles, mergeConfig, omitEmptyConverter, pageScrollDisabled, plainDate, plainDateConverter, popoverResetStyles, preventScrollOnSpacebarPress, queueDomContentLoaded, radioButtonRegistry, readConfig, removeAriaComboBoxAttributes, removeAriaElements, removeAriaOverlayTriggerProperties, sbbInputModalityDetector, sbbLiveAnnouncer, sbbOverlayOutsidePointerEventListener, screenReaderOnlyStyles, scrollbarStyles, setAriaComboBoxAttributes, setAriaOverlayTriggerProperties, setOrRemoveAttribute, setOverlayPosition, ɵstateController };
@@ -6,6 +6,8 @@ import { SbbElement } from '../../core.ts';
6
6
  * @slot - Use the unnamed slot to add actions, content and logo to the header.
7
7
  * @cssprop [--sbb-header-z-index=10] - Can be used to modify the z-index of the header.
8
8
  * @cssprop [--sbb-header-height=zero-small:var(--sbb-spacing-fixed-14x);large-ultra:var(--sbb-spacing-fixed-24x)] - Can be used to modify height of the header.
9
+ * @cssprop [--sbb-header-padding-block-start:env(safe-area-inset-top, 0)] - Defines the header's padding-block-start. It defaults to the device's safe-area inset to prevent the header from being obscured by display cutouts or system UI elements. This variable must be set on the root document element (`<html>`) so that components relying on the header's height can calculate their layout correctly.
10
+ * @cssprop [--sbb-header-vertical-spacing] - Readonly; sum of var(--sbb-header-height) and var(--sbb-header-padding-block-start) that can be used to manage spacing of absolute positioned elements that shouldn't overlap the header.
9
11
  */
10
12
  export declare class SbbHeaderElement extends SbbElement {
11
13
  static readonly elementName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"header.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/header/header/header.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,KAAK,CAAC;AAGb,OAAO,EAIL,UAAU,EAEX,MAAM,eAAe,CAAC;AAMvB;;;;;;GAMG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAC9C,gBAAgC,WAAW,EAAE,MAAM,CAAgB;IACnE,OAAuB,MAAM,EAAE,cAAc,CAAsB;IAEnE,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAA0B;IAC7D,OAAO,CAAC,MAAM,CAAC,eAAe,CAA+B;IAU7D;;;OAGG;IACH,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C;;;;OAIG;IACH,SAEgB,YAAY,EAAE,WAAW,GAAG,IAAI,CAAQ;IAExD,yDAAyD;IACzD,SAEgB,YAAY,EAAE,OAAO,CAAS;IAE9C;;OAEG;IACH,SAA6C,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAQ;IAElE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IAE9C,OAAO,CAAC,cAAc,CAA4C;IAClE,OAAO,CAAC,uBAAuB,CAAmB;IAClD,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,yBAAyB,CAA4B;;IAO7D,OAAO,CAAC,MAAM,CAAC,+BAA+B;IA2B9C,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAM1C,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAQzC,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAgBpC,gGAAgG;IAChF,iBAAiB,IAAI,IAAI;IAQzC,2DAA2D;IAC3C,oBAAoB,IAAI,IAAI;IAO5B,aAAa,CAC3B,IAAI,CAAC,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI;cAQY,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAK9E,OAAO,CAAC,qBAAqB;IAuB7B,wDAAwD;IACxD,OAAO,CAAC,kBAAkB;IAI1B,2DAA2D;IAC3D,OAAO,CAAC,yBAAyB;IAOjC;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IA8CvB,uEAAuE;IACvE,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,kBAAkB;cAiBP,MAAM,IAAI,cAAc;CAS5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,YAAY,EAAE,gBAAgB,CAAC;KAChC;CACF"}
1
+ {"version":3,"file":"header.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/header/header/header.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,KAAK,CAAC;AAGb,OAAO,EAIL,UAAU,EAEX,MAAM,eAAe,CAAC;AAMvB;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAC9C,gBAAgC,WAAW,EAAE,MAAM,CAAgB;IACnE,OAAuB,MAAM,EAAE,cAAc,CAAsB;IAEnE,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAA0B;IAC7D,OAAO,CAAC,MAAM,CAAC,eAAe,CAA+B;IAU7D;;;OAGG;IACH,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C;;;;OAIG;IACH,SAEgB,YAAY,EAAE,WAAW,GAAG,IAAI,CAAQ;IAExD,yDAAyD;IACzD,SAEgB,YAAY,EAAE,OAAO,CAAS;IAE9C;;OAEG;IACH,SAA6C,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAQ;IAElE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IAE9C,OAAO,CAAC,cAAc,CAA4C;IAClE,OAAO,CAAC,uBAAuB,CAAmB;IAClD,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,yBAAyB,CAA4B;;IAO7D,OAAO,CAAC,MAAM,CAAC,+BAA+B;IA2B9C,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAM1C,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAQzC,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAgBpC,gGAAgG;IAChF,iBAAiB,IAAI,IAAI;IAQzC,2DAA2D;IAC3C,oBAAoB,IAAI,IAAI;IAO5B,aAAa,CAC3B,IAAI,CAAC,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI;cAQY,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAK9E,OAAO,CAAC,qBAAqB;IAuB7B,wDAAwD;IACxD,OAAO,CAAC,kBAAkB;IAI1B,2DAA2D;IAC3D,OAAO,CAAC,yBAAyB;IAOjC;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IA8CvB,uEAAuE;IACvE,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,kBAAkB;cAiBP,MAAM,IAAI,cAAc;CAS5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,YAAY,EAAE,gBAAgB,CAAC;KAChC;CACF"}
@@ -1,2 +1,2 @@
1
- import { t as SbbHeaderElement } from "../../header.component-B43X03Jg.js";
1
+ import { t as SbbHeaderElement } from "../../header.component-FVw_5NRT.js";
2
2
  export { SbbHeaderElement };
@@ -0,0 +1,336 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { html, isServer, unsafeCSS } from "lit";
3
+ import { property, state } from "lit/decorators.js";
4
+ import { SbbElement, SbbFocusVisibleWithinController, forceType, idReference, queueDomContentLoaded } from "./core.js";
5
+ //#region src/elements/header/header/header.scss?inline
6
+ var header_default = ":host {\n --sbb-logo-height: 1rem;\n --sbb-signet-height: 1rem;\n --sbb-header-transition-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-6x)\n );\n}\n@media (min-width: calc(64rem)) {\n :host {\n --sbb-logo-height: 1.25rem;\n --sbb-signet-height: 1.25rem;\n }\n}\n:host {\n display: block;\n height: var(--sbb-header-height);\n line-height: var(--sbb-typo-line-height-text);\n padding-block-start: calc(var(--sbb-header-height) + var(--sbb-header-padding-block-start));\n}\n\n:host([size=s]) {\n --sbb-header-height: var(--sbb-header-height-s);\n}\n\n:host([size=m]) {\n --sbb-header-height: var(--sbb-header-height-m);\n}\n\n:host([hide-on-scroll]) {\n --sbb-header-position: absolute;\n}\n\n:host([hide-on-scroll]:is(:state(fixed),[state--fixed])) {\n --sbb-header-position: fixed;\n --sbb-header-animation-name: hide;\n --sbb-header-transform: translate3d(0, -100%, 0);\n --sbb-header-inset-inline-end: var(--sbb-scrollbar-width, 0);\n}\n\n:host([hide-on-scroll]:is(:state(fixed),[state--fixed]):is(:state(animated),[state--animated])) {\n --sbb-header-transition-timing: cubic-bezier(0.4, 0, 1, 1);\n}\n\n:host([hide-on-scroll]:is(:state(fixed),[state--fixed]):is(:state(visible),[state--visible])) {\n --sbb-header-animation-name: show;\n --sbb-header-transform: translate3d(0, 0, 0);\n --sbb-header-transition-timing: cubic-bezier(0, 0, 0.2, 1);\n}\n\n:host([hide-on-scroll]:is(:state(fixed),[state--fixed]):is(:state(has-visible-focus-within),[state--has-visible-focus-within])) {\n --sbb-header-transition-duration: 0;\n --sbb-header-transform: translate3d(0, 0, 0);\n}\n\n.sbb-header {\n position: var(--sbb-header-position);\n inset: 0 var(--sbb-header-inset-inline-end) auto 0;\n padding-block-start: var(--sbb-header-padding-block-start);\n background: var(--sbb-header-background);\n z-index: var(--sbb-header-z-index, 10);\n transform: var(--sbb-header-transform);\n transition-property: box-shadow;\n transition-duration: var(--sbb-header-transition-duration);\n transition-timing-function: var(--sbb-header-transition-timing);\n animation-name: var(--sbb-header-animation-name);\n animation-duration: var(--sbb-header-transition-duration);\n animation-timing-function: var(--sbb-header-transition-timing);\n}\n:host(:is(:is(:state(shadow),[state--shadow]), :is(:state(has-visible-focus-within),[state--has-visible-focus-within]):is(:state(fixed),[state--fixed]))) .sbb-header {\n box-shadow: var(--sbb-header-box-shadow);\n}\n@media (forced-colors: active) {\n .sbb-header {\n border-block-end: var(--sbb-border-width-1x) solid CanvasText;\n }\n}\n\n.sbb-header__wrapper {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n height: var(--sbb-header-height);\n}\n:host(:not([expanded])) .sbb-header__wrapper {\n padding-inline: var(--sbb-page-spacing-padding, var(--sbb-layout-base-offset-responsive));\n margin-inline: auto;\n width: 100%;\n}\n@media (min-width: calc(90rem)) {\n :host(:not([expanded])) .sbb-header__wrapper {\n max-width: var(--sbb-spacing-max-width, calc(var(--sbb-layout-base-page-max-width) + 2 * var(--sbb-layout-base-offset-responsive)));\n }\n}\n:host([expanded]) .sbb-header__wrapper {\n padding-inline: var(--sbb-page-spacing-padding, var(--sbb-spacing-responsive-xxs));\n}\n\n::slotted(:is(sbb-header-button, sbb-header-link):first-child) {\n margin-inline-start: var(--sbb-header-first-item-margin-inline-start);\n}\n\n::slotted(*) {\n flex: 0 0 auto;\n}\n\n::slotted(.sbb-header-shrinkable) {\n flex-shrink: 1;\n min-width: 0;\n}\n\n::slotted(.sbb-header-spacer) {\n flex-grow: 1;\n}\n\n::slotted(.sbb-header-logo) {\n margin-inline-start: var(--sbb-spacing-responsive-s);\n}\n\n::slotted(a.sbb-header-logo) {\n display: block;\n padding-block: var(--sbb-spacing-fixed-3x);\n position: relative;\n outline: none !important;\n}\n\n::slotted(a.sbb-header-logo)::before {\n content: \"\";\n display: block;\n position: absolute;\n inset: var(--sbb-spacing-fixed-3x) 0;\n}\n\n::slotted(a.sbb-header-logo:focus-visible)::before {\n outline-offset: var(--sbb-focus-outline-offset);\n outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);\n outline-offset: var(--sbb-spacing-fixed-3x);\n border-radius: 1px;\n}\n\n@keyframes show {\n from {\n transform: translate3d(0, -100%, 0);\n }\n to {\n transform: translate3d(0, 0, 0);\n }\n}\n@keyframes hide {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(0, -100%, 0);\n }\n}";
7
+ //#endregion
8
+ //#region src/elements/header/header/header.component.ts
9
+ var IS_MENU_OPENED_QUERY = "[aria-controls][aria-expanded='true']";
10
+ /**
11
+ * It displays a header section for the page.
12
+ *
13
+ * @slot - Use the unnamed slot to add actions, content and logo to the header.
14
+ * @cssprop [--sbb-header-z-index=10] - Can be used to modify the z-index of the header.
15
+ * @cssprop [--sbb-header-height=zero-small:var(--sbb-spacing-fixed-14x);large-ultra:var(--sbb-spacing-fixed-24x)] - Can be used to modify height of the header.
16
+ * @cssprop [--sbb-header-padding-block-start:env(safe-area-inset-top, 0)] - Defines the header's padding-block-start. It defaults to the device's safe-area inset to prevent the header from being obscured by display cutouts or system UI elements. This variable must be set on the root document element (`<html>`) so that components relying on the header's height can calculate their layout correctly.
17
+ * @cssprop [--sbb-header-vertical-spacing] - Readonly; sum of var(--sbb-header-height) and var(--sbb-header-padding-block-start) that can be used to manage spacing of absolute positioned elements that shouldn't overlap the header.
18
+ */
19
+ var SbbHeaderElement = (() => {
20
+ let _classSuper = SbbElement;
21
+ let _expanded_decorators;
22
+ let _expanded_initializers = [];
23
+ let _expanded_extraInitializers = [];
24
+ let _scrollOrigin_decorators;
25
+ let _scrollOrigin_initializers = [];
26
+ let _scrollOrigin_extraInitializers = [];
27
+ let _hideOnScroll_decorators;
28
+ let _hideOnScroll_initializers = [];
29
+ let _hideOnScroll_extraInitializers = [];
30
+ let _size_decorators;
31
+ let _size_initializers = [];
32
+ let _size_extraInitializers = [];
33
+ let __headerOnTop_decorators;
34
+ let __headerOnTop_initializers = [];
35
+ let __headerOnTop_extraInitializers = [];
36
+ return class SbbHeaderElement extends _classSuper {
37
+ static {
38
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
39
+ _expanded_decorators = [forceType(), property({
40
+ reflect: true,
41
+ type: Boolean
42
+ })];
43
+ _scrollOrigin_decorators = [idReference(), property({ attribute: "scroll-origin" })];
44
+ _hideOnScroll_decorators = [forceType(), property({
45
+ attribute: "hide-on-scroll",
46
+ reflect: true,
47
+ type: Boolean
48
+ })];
49
+ _size_decorators = [property({ reflect: true })];
50
+ __headerOnTop_decorators = [state()];
51
+ __esDecorate(this, null, _expanded_decorators, {
52
+ kind: "accessor",
53
+ name: "expanded",
54
+ static: false,
55
+ private: false,
56
+ access: {
57
+ has: (obj) => "expanded" in obj,
58
+ get: (obj) => obj.expanded,
59
+ set: (obj, value) => {
60
+ obj.expanded = value;
61
+ }
62
+ },
63
+ metadata: _metadata
64
+ }, _expanded_initializers, _expanded_extraInitializers);
65
+ __esDecorate(this, null, _scrollOrigin_decorators, {
66
+ kind: "accessor",
67
+ name: "scrollOrigin",
68
+ static: false,
69
+ private: false,
70
+ access: {
71
+ has: (obj) => "scrollOrigin" in obj,
72
+ get: (obj) => obj.scrollOrigin,
73
+ set: (obj, value) => {
74
+ obj.scrollOrigin = value;
75
+ }
76
+ },
77
+ metadata: _metadata
78
+ }, _scrollOrigin_initializers, _scrollOrigin_extraInitializers);
79
+ __esDecorate(this, null, _hideOnScroll_decorators, {
80
+ kind: "accessor",
81
+ name: "hideOnScroll",
82
+ static: false,
83
+ private: false,
84
+ access: {
85
+ has: (obj) => "hideOnScroll" in obj,
86
+ get: (obj) => obj.hideOnScroll,
87
+ set: (obj, value) => {
88
+ obj.hideOnScroll = value;
89
+ }
90
+ },
91
+ metadata: _metadata
92
+ }, _hideOnScroll_initializers, _hideOnScroll_extraInitializers);
93
+ __esDecorate(this, null, _size_decorators, {
94
+ kind: "accessor",
95
+ name: "size",
96
+ static: false,
97
+ private: false,
98
+ access: {
99
+ has: (obj) => "size" in obj,
100
+ get: (obj) => obj.size,
101
+ set: (obj, value) => {
102
+ obj.size = value;
103
+ }
104
+ },
105
+ metadata: _metadata
106
+ }, _size_initializers, _size_extraInitializers);
107
+ __esDecorate(this, null, __headerOnTop_decorators, {
108
+ kind: "accessor",
109
+ name: "_headerOnTop",
110
+ static: false,
111
+ private: false,
112
+ access: {
113
+ has: (obj) => "_headerOnTop" in obj,
114
+ get: (obj) => obj._headerOnTop,
115
+ set: (obj, value) => {
116
+ obj._headerOnTop = value;
117
+ }
118
+ },
119
+ metadata: _metadata
120
+ }, __headerOnTop_initializers, __headerOnTop_extraInitializers);
121
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, {
122
+ enumerable: true,
123
+ configurable: true,
124
+ writable: true,
125
+ value: _metadata
126
+ });
127
+ }
128
+ static {
129
+ this.elementName = "sbb-header";
130
+ }
131
+ static {
132
+ this.styles = [unsafeCSS(header_default)];
133
+ }
134
+ static {
135
+ this._headerScrollOrigins = /* @__PURE__ */ new Set();
136
+ }
137
+ static {
138
+ this._headerElements = /* @__PURE__ */ new Set();
139
+ }
140
+ static {
141
+ if (!isServer) queueDomContentLoaded(() => this._initializeScrollOriginObserver());
142
+ }
143
+ #expanded_accessor_storage;
144
+ /**
145
+ * Whether to allow the header content to stretch to full width.
146
+ * By default, the content has the appropriate page size.
147
+ */
148
+ get expanded() {
149
+ return this.#expanded_accessor_storage;
150
+ }
151
+ set expanded(value) {
152
+ this.#expanded_accessor_storage = value;
153
+ }
154
+ #scrollOrigin_accessor_storage;
155
+ /**
156
+ * The element's id or the element on which the scroll listener is attached.
157
+ *
158
+ * For attribute usage, provide an id reference.
159
+ */
160
+ get scrollOrigin() {
161
+ return this.#scrollOrigin_accessor_storage;
162
+ }
163
+ set scrollOrigin(value) {
164
+ this.#scrollOrigin_accessor_storage = value;
165
+ }
166
+ #hideOnScroll_accessor_storage;
167
+ /** Whether the header should hide and show on scroll. */
168
+ get hideOnScroll() {
169
+ return this.#hideOnScroll_accessor_storage;
170
+ }
171
+ set hideOnScroll(value) {
172
+ this.#hideOnScroll_accessor_storage = value;
173
+ }
174
+ #size_accessor_storage;
175
+ /**
176
+ * Size of the header, either s (lean theme default) or m (standard theme default).
177
+ */
178
+ get size() {
179
+ return this.#size_accessor_storage;
180
+ }
181
+ set size(value) {
182
+ this.#size_accessor_storage = value;
183
+ }
184
+ #_headerOnTop_accessor_storage;
185
+ get _headerOnTop() {
186
+ return this.#_headerOnTop_accessor_storage;
187
+ }
188
+ set _headerOnTop(value) {
189
+ this.#_headerOnTop_accessor_storage = value;
190
+ }
191
+ constructor() {
192
+ super();
193
+ this.#expanded_accessor_storage = __runInitializers(this, _expanded_initializers, false);
194
+ this.#scrollOrigin_accessor_storage = (__runInitializers(this, _expanded_extraInitializers), __runInitializers(this, _scrollOrigin_initializers, null));
195
+ this.#hideOnScroll_accessor_storage = (__runInitializers(this, _scrollOrigin_extraInitializers), __runInitializers(this, _hideOnScroll_initializers, false));
196
+ this.#size_accessor_storage = (__runInitializers(this, _hideOnScroll_extraInitializers), __runInitializers(this, _size_initializers, null));
197
+ this.#_headerOnTop_accessor_storage = (__runInitializers(this, _size_extraInitializers), __runInitializers(this, __headerOnTop_initializers, true));
198
+ this._scrollElement = __runInitializers(this, __headerOnTop_extraInitializers);
199
+ this._lastScroll = 0;
200
+ this._scrollOriginFromObserver = null;
201
+ this.addController(new SbbFocusVisibleWithinController(this));
202
+ }
203
+ static _initializeScrollOriginObserver() {
204
+ new MutationObserver((mutations) => {
205
+ for (const mutation of mutations) if (mutation.type === "attributes") this._handleScrollOriginElement(mutation.target);
206
+ else if (mutation.type === "childList") for (const node of [...mutation.addedNodes, ...mutation.removedNodes].filter((n) => n.nodeType === n.ELEMENT_NODE)) {
207
+ this._handleScrollOriginElement(node);
208
+ this._findAndHandleScrollOrigins(node);
209
+ }
210
+ this._updateHeaderElements();
211
+ }).observe(document.documentElement, {
212
+ attributeFilter: ["sbb-header-scroll-origin"],
213
+ childList: true,
214
+ subtree: true
215
+ });
216
+ this._findAndHandleScrollOrigins(document.body);
217
+ this._updateHeaderElements();
218
+ }
219
+ static _findAndHandleScrollOrigins(root) {
220
+ root.querySelectorAll("[sbb-header-scroll-origin]").forEach((e) => this._handleScrollOriginElement(e));
221
+ }
222
+ static _handleScrollOriginElement(element) {
223
+ if (element.isConnected && element.hasAttribute("sbb-header-scroll-origin")) this._headerScrollOrigins.add(element);
224
+ else this._headerScrollOrigins.delete(element);
225
+ }
226
+ static _updateHeaderElements() {
227
+ for (const header of this._headerElements) {
228
+ if (this._headerScrollOrigins.size === 0) header._scrollOriginFromObserver = null;
229
+ else if (this._headerScrollOrigins.size === 1) header._scrollOriginFromObserver = this._headerScrollOrigins.values().next().value ?? null;
230
+ else header._scrollOriginFromObserver = Array.from(this._headerScrollOrigins).sort((c1, c2) => c1.compareDocumentPosition(c2) & Node.DOCUMENT_POSITION_CONTAINS).at(-1) ?? null;
231
+ header._updateScrollListener();
232
+ }
233
+ }
234
+ /** If `hideOnScroll` is set, checks the element to hook the listener on, and possibly add it.*/
235
+ connectedCallback() {
236
+ super.connectedCallback();
237
+ SbbHeaderElement._headerElements.add(this);
238
+ if (this.hasUpdated) this._updateScrollListener();
239
+ }
240
+ /** Removes the scroll listener, if previously attached. */
241
+ disconnectedCallback() {
242
+ super.disconnectedCallback();
243
+ this._scrollElement = null;
244
+ this._scrollEventsController?.abort();
245
+ SbbHeaderElement._headerElements.delete(this);
246
+ }
247
+ requestUpdate(name, oldValue, options) {
248
+ super.requestUpdate(name, oldValue, options);
249
+ if (!isServer && (!name || name === "scrollOrigin") && this.hasUpdated) this._updateScrollListener();
250
+ }
251
+ firstUpdated(changedProperties) {
252
+ super.firstUpdated(changedProperties);
253
+ this._updateScrollListener();
254
+ }
255
+ _updateScrollListener() {
256
+ const scrollElement = this.scrollOrigin ?? this._scrollOriginFromObserver ?? document;
257
+ if (scrollElement === this._scrollElement) return;
258
+ this._scrollEventsController?.abort();
259
+ this._scrollElement = scrollElement;
260
+ if (!this._scrollElement) return;
261
+ this._scrollEventsController = new AbortController();
262
+ this._scrollFunction = this._getScrollFunction.bind(this);
263
+ this._scrollElement.addEventListener("scroll", this._scrollFunction, {
264
+ passive: true,
265
+ signal: this._scrollEventsController.signal
266
+ });
267
+ const currentScroll = this._getCurrentScrollProperty("scrollTop");
268
+ this._lastScroll = currentScroll <= 0 ? 0 : currentScroll;
269
+ }
270
+ /** Returns the correct function to attach on scroll. */
271
+ _getScrollFunction() {
272
+ return this.hideOnScroll ? this._scrollListener() : this._scrollShadowListener();
273
+ }
274
+ /** Returns the requested property of the scrollContext. */
275
+ _getCurrentScrollProperty(property) {
276
+ if (this._scrollElement instanceof Document) return this._scrollElement.documentElement[property] || this._scrollElement.body[property];
277
+ return this._scrollElement?.[property] || 0;
278
+ }
279
+ /**
280
+ * Sets the correct value for `scrollTop`, then:
281
+ * - apply the shadow if the element/document has been scrolled down;
282
+ * - hides the header, remove the shadow and possibly close any open menu on the header if it is not visible anymore;
283
+ * - shows the header and re-apply the shadow if the element/document has been scrolled up.
284
+ */
285
+ _scrollListener() {
286
+ const currentScroll = this._getCurrentScrollProperty("scrollTop");
287
+ if (this._getCurrentScrollProperty("scrollHeight") - window.innerHeight - currentScroll <= 0) return;
288
+ this.toggleState("shadow", currentScroll !== 0);
289
+ if (currentScroll > this.offsetHeight && currentScroll > 0 && this._lastScroll < currentScroll) this._closeOpenOverlays();
290
+ if (currentScroll > this.offsetHeight * 2) {
291
+ this._headerOnTop = false;
292
+ if (currentScroll > 0 && this._lastScroll < currentScroll) ["shadow", "visible"].forEach((name) => this.internals.states.delete(name));
293
+ else [
294
+ "fixed",
295
+ "shadow",
296
+ "animated",
297
+ "visible"
298
+ ].forEach((name) => this.internals.states.add(name));
299
+ } else {
300
+ if (currentScroll === 0) this._headerOnTop = true;
301
+ if (this._headerOnTop) [
302
+ "shadow",
303
+ "animated",
304
+ "fixed",
305
+ "visible"
306
+ ].forEach((name) => this.internals.states.delete(name));
307
+ }
308
+ this._lastScroll = currentScroll <= 0 ? 0 : currentScroll;
309
+ }
310
+ /** Apply the shadow if the element/document has been scrolled down. */
311
+ _scrollShadowListener() {
312
+ this.toggleState("shadow", this._getCurrentScrollProperty("scrollTop") !== 0);
313
+ }
314
+ _closeOpenOverlays() {
315
+ if (this.matches(":is(:state(has-visible-focus-within),[state--has-visible-focus-within])")) return;
316
+ const overlayTriggers = Array.from(this.querySelectorAll(IS_MENU_OPENED_QUERY));
317
+ for (const overlayTrigger of overlayTriggers) {
318
+ const overlay = overlayTrigger.ariaControlsElements[0];
319
+ if (typeof overlay?.close === "function") overlay.close();
320
+ }
321
+ }
322
+ render() {
323
+ return html`
324
+ <header class="sbb-header">
325
+ <div class="sbb-header__wrapper">
326
+ <slot></slot>
327
+ </div>
328
+ </header>
329
+ `;
330
+ }
331
+ };
332
+ })();
333
+ //#endregion
334
+ export { SbbHeaderElement as t };
335
+
336
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC1GVndfNU5SVC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvaGVhZGVyL2hlYWRlci9oZWFkZXIuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvaGVhZGVyL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgLS1zYmItbG9nby1oZWlnaHQ6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgxNil9O1xuICAtLXNiYi1zaWduZXQtaGVpZ2h0OiAje3NiYi5weC10by1yZW0tYnVpbGQoMTYpfTtcbiAgLS1zYmItaGVhZGVyLXRyYW5zaXRpb24tZHVyYXRpb246IHZhcihcbiAgICAtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbixcbiAgICB2YXIoLS1zYmItYW5pbWF0aW9uLWR1cmF0aW9uLTZ4KVxuICApO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogbGFyZ2UpIHtcbiAgICAtLXNiYi1sb2dvLWhlaWdodDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDIwKX07XG4gICAgLS1zYmItc2lnbmV0LWhlaWdodDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDIwKX07XG4gIH1cblxuICBkaXNwbGF5OiBibG9jaztcblxuICAvLyBTZXR0aW5nIHRoZSBoZWlnaHQgaGVyZSByZXNlcnZlcyB0aGUgc3BhY2UgZm9yIHRoZSBoZWFkZXIgd2hpY2ggd2lsbCBlbHNlIGJlIGxvc3Qgd2l0aCBmaXhlZCBwb3NpdGlvbi5cbiAgaGVpZ2h0OiB2YXIoLS1zYmItaGVhZGVyLWhlaWdodCk7XG5cbiAgLy8gU2V0IHRoZSBsaW5lLWhlaWdodCBmb3IgYWRqYWNlbnQgZWxlbWVudHMgaW4gb3JkZXIgdG8gcHJldmVudCBmcm9tIGluZmx1ZW5jZSBvZiBhIGNvbnN1bWVyLXNldCBsaW5lLWhlaWdodC5cbiAgbGluZS1oZWlnaHQ6IHZhcigtLXNiYi10eXBvLWxpbmUtaGVpZ2h0LXRleHQpO1xuICBwYWRkaW5nLWJsb2NrLXN0YXJ0OiBjYWxjKHZhcigtLXNiYi1oZWFkZXItaGVpZ2h0KSArIHZhcigtLXNiYi1oZWFkZXItcGFkZGluZy1ibG9jay1zdGFydCkpO1xufVxuXG46aG9zdChbc2l6ZT0ncyddKSB7XG4gIC0tc2JiLWhlYWRlci1oZWlnaHQ6IHZhcigtLXNiYi1oZWFkZXItaGVpZ2h0LXMpO1xufVxuXG46aG9zdChbc2l6ZT0nbSddKSB7XG4gIC0tc2JiLWhlYWRlci1oZWlnaHQ6IHZhcigtLXNiYi1oZWFkZXItaGVpZ2h0LW0pO1xufVxuXG46aG9zdChbaGlkZS1vbi1zY3JvbGxdKSB7XG4gIC0tc2JiLWhlYWRlci1wb3NpdGlvbjogYWJzb2x1dGU7XG59XG5cbjpob3N0KFtoaWRlLW9uLXNjcm9sbF06c3RhdGUoZml4ZWQpKSB7XG4gIC0tc2JiLWhlYWRlci1wb3NpdGlvbjogZml4ZWQ7XG4gIC0tc2JiLWhlYWRlci1hbmltYXRpb24tbmFtZTogaGlkZTtcbiAgLS1zYmItaGVhZGVyLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuICAtLXNiYi1oZWFkZXItaW5zZXQtaW5saW5lLWVuZDogdmFyKC0tc2JiLXNjcm9sbGJhci13aWR0aCwgMCk7XG59XG5cbjpob3N0KFtoaWRlLW9uLXNjcm9sbF06c3RhdGUoZml4ZWQpOnN0YXRlKGFuaW1hdGVkKSkge1xuICAvLyBIaWRlIHRyYW5zaXRpb25cbiAgLS1zYmItaGVhZGVyLXRyYW5zaXRpb24tdGltaW5nOiBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbn1cblxuOmhvc3QoW2hpZGUtb24tc2Nyb2xsXTpzdGF0ZShmaXhlZCk6c3RhdGUodmlzaWJsZSkpIHtcbiAgLS1zYmItaGVhZGVyLWFuaW1hdGlvbi1uYW1lOiBzaG93O1xuICAtLXNiYi1oZWFkZXItdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcblxuICAvLyBTaG93IHRyYW5zaXRpb25cbiAgLS1zYmItaGVhZGVyLXRyYW5zaXRpb24tdGltaW5nOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbn1cblxuOmhvc3QoW2hpZGUtb24tc2Nyb2xsXTpzdGF0ZShmaXhlZCk6c3RhdGUoaGFzLXZpc2libGUtZm9jdXMtd2l0aGluKSkge1xuICAtLXNiYi1oZWFkZXItdHJhbnNpdGlvbi1kdXJhdGlvbjogMDtcbiAgLS1zYmItaGVhZGVyLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG59XG5cbi5zYmItaGVhZGVyIHtcbiAgcG9zaXRpb246IHZhcigtLXNiYi1oZWFkZXItcG9zaXRpb24pO1xuICBpbnNldDogMCB2YXIoLS1zYmItaGVhZGVyLWluc2V0LWlubGluZS1lbmQpIGF1dG8gMDtcbiAgcGFkZGluZy1ibG9jay1zdGFydDogdmFyKC0tc2JiLWhlYWRlci1wYWRkaW5nLWJsb2NrLXN0YXJ0KTtcbiAgYmFja2dyb3VuZDogdmFyKC0tc2JiLWhlYWRlci1iYWNrZ3JvdW5kKTtcbiAgei1pbmRleDogdmFyKC0tc2JiLWhlYWRlci16LWluZGV4LCAxMCk7XG4gIHRyYW5zZm9ybTogdmFyKC0tc2JiLWhlYWRlci10cmFuc2Zvcm0pO1xuICB0cmFuc2l0aW9uOiB7XG4gICAgcHJvcGVydHk6IGJveC1zaGFkb3c7XG4gICAgZHVyYXRpb246IHZhcigtLXNiYi1oZWFkZXItdHJhbnNpdGlvbi1kdXJhdGlvbik7XG4gICAgdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItaGVhZGVyLXRyYW5zaXRpb24tdGltaW5nKTtcbiAgfVxuICBhbmltYXRpb246IHtcbiAgICBuYW1lOiB2YXIoLS1zYmItaGVhZGVyLWFuaW1hdGlvbi1uYW1lKTtcbiAgICBkdXJhdGlvbjogdmFyKC0tc2JiLWhlYWRlci10cmFuc2l0aW9uLWR1cmF0aW9uKTtcbiAgICB0aW1pbmctZnVuY3Rpb246IHZhcigtLXNiYi1oZWFkZXItdHJhbnNpdGlvbi10aW1pbmcpO1xuICB9XG5cbiAgOmhvc3QoOmlzKDpzdGF0ZShzaGFkb3cpLCA6c3RhdGUoaGFzLXZpc2libGUtZm9jdXMtd2l0aGluKTpzdGF0ZShmaXhlZCkpKSAmIHtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zYmItaGVhZGVyLWJveC1zaGFkb3cpO1xuICB9XG5cbiAgQG1lZGlhIChmb3JjZWQtY29sb3JzOiBhY3RpdmUpIHtcbiAgICBib3JkZXItYmxvY2stZW5kOiB2YXIoLS1zYmItYm9yZGVyLXdpZHRoLTF4KSBzb2xpZCBDYW52YXNUZXh0O1xuICB9XG59XG5cbi5zYmItaGVhZGVyX193cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBoZWlnaHQ6IHZhcigtLXNiYi1oZWFkZXItaGVpZ2h0KTtcblxuICA6aG9zdCg6bm90KFtleHBhbmRlZF0pKSAmIHtcbiAgICBAaW5jbHVkZSBzYmIucGFnZS1zcGFjaW5nO1xuICB9XG5cbiAgOmhvc3QoW2V4cGFuZGVkXSkgJiB7XG4gICAgQGluY2x1ZGUgc2JiLnBhZ2Utc3BhY2luZy1leHBhbmRlZDtcbiAgfVxufVxuXG4vLyBGaXggbGVmdCBvZmZzZXQgaWYgZmlyc3QgZWxlbWVudCBvZiB0aGUgaGVhZGVyIGlzIGEgc2JiLWhlYWRlci1idXR0b24vc2JiLWhlYWRlci1saW5rLlxuLy8gVGhlIHZhbHVlIG9mIHRoZSBvZmZzZXQgaXMgY2FsY3VsYXRlZCBpbnNpZGUgc2JiLWhlYWRlci1idXR0b24vc2JiLWhlYWRlci1saW5rIHN0eWxlcy5cbjo6c2xvdHRlZCg6aXMoc2JiLWhlYWRlci1idXR0b24sIHNiYi1oZWFkZXItbGluayk6Zmlyc3QtY2hpbGQpIHtcbiAgbWFyZ2luLWlubGluZS1zdGFydDogdmFyKC0tc2JiLWhlYWRlci1maXJzdC1pdGVtLW1hcmdpbi1pbmxpbmUtc3RhcnQpO1xufVxuXG46OnNsb3R0ZWQoKikge1xuICBmbGV4OiAwIDAgYXV0bztcbn1cblxuOjpzbG90dGVkKC5zYmItaGVhZGVyLXNocmlua2FibGUpIHtcbiAgZmxleC1zaHJpbms6IDE7XG4gIG1pbi13aWR0aDogMDtcbn1cblxuOjpzbG90dGVkKC5zYmItaGVhZGVyLXNwYWNlcikge1xuICBmbGV4LWdyb3c6IDE7XG59XG5cbjo6c2xvdHRlZCguc2JiLWhlYWRlci1sb2dvKSB7XG4gIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IHZhcigtLXNiYi1zcGFjaW5nLXJlc3BvbnNpdmUtcyk7XG59XG5cbi8vIEFwcGx5IHBhZGRpbmcgYW5kIG91dGxpbmUgdG8gcG9zc2libGUgc2xvdHRlZCBsaW5rIGluIGxvZ28gc2xvdFxuOjpzbG90dGVkKGEuc2JiLWhlYWRlci1sb2dvKSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nLWJsb2NrOiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0zeCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBVc2UgIWltcG9ydGFudCBoZXJlIHRvIG5vdCBpbnRlcmZlcmUgd2l0aCBGaXJlZm94IGZvY3VzIHJpbmcgZGVmaW5pdGlvblxuICAvLyB3aGljaCBhcHBlYXJzIGluIG5vcm1hbGl6ZSBDU1Mgb2Ygc2V2ZXJhbCBmcmFtZXdvcmtzLlxuICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi8vIFRvIHNob3cgdGhlIGNvcnJlY3Qgb3V0bGluZSwgd2UgbmVlZCB0byBzcGFuIGEgaGlkZGVuIGVsZW1lbnQgZmlsbGluZyB0aGUgbGluayBidXQgd2l0aG91dCB0aGUgb3V0bGluZS1vZmZzZXQuXG46OnNsb3R0ZWQoYS5zYmItaGVhZGVyLWxvZ28pOjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTN4KSAwO1xufVxuXG46OnNsb3R0ZWQoYS5zYmItaGVhZGVyLWxvZ286Zm9jdXMtdmlzaWJsZSk6OmJlZm9yZSB7XG4gIEBpbmNsdWRlIHNiYi5mb2N1cy1vdXRsaW5lO1xuXG4gIG91dGxpbmUtb2Zmc2V0OiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0zeCk7XG5cbiAgLy8gQXMgaWYgdGhlIG91dGxpbmUgaGFzIGFuIG9mZnNldCwgdGhlIGJvcmRlciByYWRpdXMgaW5jcmVhc2VzLCB3ZSBzZXQgaXQgdG8gdGhlIHNtYWxsZXN0IHBvc3NpYmxlIGJvcmRlci1yYWRpdXMuXG4gIGJvcmRlci1yYWRpdXM6IDFweDtcbn1cblxuQGtleWZyYW1lcyBzaG93IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGhpZGUge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG5cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuICB9XG59XG4iLCJpbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBpc1NlcnZlcixcbiAgdHlwZSBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxuICB1bnNhZmVDU1MsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7XG4gIGZvcmNlVHlwZSxcbiAgaWRSZWZlcmVuY2UsXG4gIHF1ZXVlRG9tQ29udGVudExvYWRlZCxcbiAgU2JiRWxlbWVudCxcbiAgU2JiRm9jdXNWaXNpYmxlV2l0aGluQ29udHJvbGxlcixcbn0gZnJvbSAnLi4vLi4vY29yZS50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2hlYWRlci5zY3NzP2lubGluZSc7XG5cbmNvbnN0IElTX01FTlVfT1BFTkVEX1FVRVJZID0gXCJbYXJpYS1jb250cm9sc11bYXJpYS1leHBhbmRlZD0ndHJ1ZSddXCI7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYSBoZWFkZXIgc2VjdGlvbiBmb3IgdGhlIHBhZ2UuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYWN0aW9ucywgY29udGVudCBhbmQgbG9nbyB0byB0aGUgaGVhZGVyLlxuICogQGNzc3Byb3AgWy0tc2JiLWhlYWRlci16LWluZGV4PTEwXSAtIENhbiBiZSB1c2VkIHRvIG1vZGlmeSB0aGUgei1pbmRleCBvZiB0aGUgaGVhZGVyLlxuICogQGNzc3Byb3AgWy0tc2JiLWhlYWRlci1oZWlnaHQ9emVyby1zbWFsbDp2YXIoLS1zYmItc3BhY2luZy1maXhlZC0xNHgpO2xhcmdlLXVsdHJhOnZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTI0eCldIC0gQ2FuIGJlIHVzZWQgdG8gbW9kaWZ5IGhlaWdodCBvZiB0aGUgaGVhZGVyLlxuICogQGNzc3Byb3AgWy0tc2JiLWhlYWRlci1wYWRkaW5nLWJsb2NrLXN0YXJ0OmVudihzYWZlLWFyZWEtaW5zZXQtdG9wLCAwKV0gLSBEZWZpbmVzIHRoZSBoZWFkZXIncyBwYWRkaW5nLWJsb2NrLXN0YXJ0LiBJdCBkZWZhdWx0cyB0byB0aGUgZGV2aWNlJ3Mgc2FmZS1hcmVhIGluc2V0IHRvIHByZXZlbnQgdGhlIGhlYWRlciBmcm9tIGJlaW5nIG9ic2N1cmVkIGJ5IGRpc3BsYXkgY3V0b3V0cyBvciBzeXN0ZW0gVUkgZWxlbWVudHMuIFRoaXMgdmFyaWFibGUgbXVzdCBiZSBzZXQgb24gdGhlIHJvb3QgZG9jdW1lbnQgZWxlbWVudCAoYDxodG1sPmApIHNvIHRoYXQgY29tcG9uZW50cyByZWx5aW5nIG9uIHRoZSBoZWFkZXIncyBoZWlnaHQgY2FuIGNhbGN1bGF0ZSB0aGVpciBsYXlvdXQgY29ycmVjdGx5LlxuICogQGNzc3Byb3AgWy0tc2JiLWhlYWRlci12ZXJ0aWNhbC1zcGFjaW5nXSAtIFJlYWRvbmx5OyBzdW0gb2YgdmFyKC0tc2JiLWhlYWRlci1oZWlnaHQpIGFuZCB2YXIoLS1zYmItaGVhZGVyLXBhZGRpbmctYmxvY2stc3RhcnQpIHRoYXQgY2FuIGJlIHVzZWQgdG8gbWFuYWdlIHNwYWNpbmcgb2YgYWJzb2x1dGUgcG9zaXRpb25lZCBlbGVtZW50cyB0aGF0IHNob3VsZG4ndCBvdmVybGFwIHRoZSBoZWFkZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJIZWFkZXJFbGVtZW50IGV4dGVuZHMgU2JiRWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItaGVhZGVyJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW3Vuc2FmZUNTUyhzdHlsZSldO1xuXG4gIHByaXZhdGUgc3RhdGljIF9oZWFkZXJTY3JvbGxPcmlnaW5zID0gbmV3IFNldDxIVE1MRWxlbWVudD4oKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2hlYWRlckVsZW1lbnRzID0gbmV3IFNldDxTYmJIZWFkZXJFbGVtZW50PigpO1xuXG4gIHN0YXRpYyB7XG4gICAgaWYgKCFpc1NlcnZlcikge1xuICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBibG9jayBleGVjdXRpb24gZm9yIGluaXRpYWxpemF0aW9uLFxuICAgICAgLy8gc28gd2UgZGVmZXIgaXQgdW50aWwgdGhlIERPTSBjb250ZW50IGlzIGxvYWRlZC5cbiAgICAgIHF1ZXVlRG9tQ29udGVudExvYWRlZCgoKSA9PiB0aGlzLl9pbml0aWFsaXplU2Nyb2xsT3JpZ2luT2JzZXJ2ZXIoKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWxsb3cgdGhlIGhlYWRlciBjb250ZW50IHRvIHN0cmV0Y2ggdG8gZnVsbCB3aWR0aC5cbiAgICogQnkgZGVmYXVsdCwgdGhlIGNvbnRlbnQgaGFzIHRoZSBhcHByb3ByaWF0ZSBwYWdlIHNpemUuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGVsZW1lbnQncyBpZCBvciB0aGUgZWxlbWVudCBvbiB3aGljaCB0aGUgc2Nyb2xsIGxpc3RlbmVyIGlzIGF0dGFjaGVkLlxuICAgKlxuICAgKiBGb3IgYXR0cmlidXRlIHVzYWdlLCBwcm92aWRlIGFuIGlkIHJlZmVyZW5jZS5cbiAgICovXG4gIEBpZFJlZmVyZW5jZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3Njcm9sbC1vcmlnaW4nIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBzY3JvbGxPcmlnaW46IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGhlYWRlciBzaG91bGQgaGlkZSBhbmQgc2hvdyBvbiBzY3JvbGwuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdoaWRlLW9uLXNjcm9sbCcsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGhpZGVPblNjcm9sbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTaXplIG9mIHRoZSBoZWFkZXIsIGVpdGhlciBzIChsZWFuIHRoZW1lIGRlZmF1bHQpIG9yIG0gKHN0YW5kYXJkIHRoZW1lIGRlZmF1bHQpLlxuICAgKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgYWNjZXNzb3Igc2l6ZTogJ3MnIHwgJ20nIHwgbnVsbCA9IG51bGw7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfaGVhZGVyT25Ub3AgPSB0cnVlO1xuXG4gIHByaXZhdGUgX3Njcm9sbEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgRG9jdW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9zY3JvbGxFdmVudHNDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9zY3JvbGxGdW5jdGlvbjogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9sYXN0U2Nyb2xsID0gMDtcbiAgcHJpdmF0ZSBfc2Nyb2xsT3JpZ2luRnJvbU9ic2VydmVyOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkQ29udHJvbGxlcihuZXcgU2JiRm9jdXNWaXNpYmxlV2l0aGluQ29udHJvbGxlcih0aGlzKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfaW5pdGlhbGl6ZVNjcm9sbE9yaWdpbk9ic2VydmVyKCk6IHZvaWQge1xuICAgIC8vIFdlIGFyZSB1c2luZyBNdXRhdGlvbk9ic2VydmVyIGRpcmVjdGx5IGhlcmUsIGFzIGl0IHdpbGwgb25seSBiZSBjYWxsZWQgb24gY2xpZW50IHNpZGUsXG4gICAgLy8gYW5kIHdlIGRvIG5vdCBuZWVkIHRvIGRpc2Nvbm5lY3QgaXQsIGFzIHdlIHdhbnQgaXQgdG8gd29yayBkdXJpbmcgdGhlIGZ1bGwgbGlmZXRpbWVcbiAgICAvLyBvZiB0aGUgcGFnZS5cbiAgICBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBpZiAobXV0YXRpb24udHlwZSA9PT0gJ2F0dHJpYnV0ZXMnKSB7XG4gICAgICAgICAgdGhpcy5faGFuZGxlU2Nyb2xsT3JpZ2luRWxlbWVudChtdXRhdGlvbi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKG11dGF0aW9uLnR5cGUgPT09ICdjaGlsZExpc3QnKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIFsuLi5tdXRhdGlvbi5hZGRlZE5vZGVzLCAuLi5tdXRhdGlvbi5yZW1vdmVkTm9kZXNdLmZpbHRlcihcbiAgICAgICAgICAgIChuKTogbiBpcyBIVE1MRWxlbWVudCA9PiBuLm5vZGVUeXBlID09PSBuLkVMRU1FTlRfTk9ERSxcbiAgICAgICAgICApKSB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVTY3JvbGxPcmlnaW5FbGVtZW50KG5vZGUpO1xuICAgICAgICAgICAgdGhpcy5fZmluZEFuZEhhbmRsZVNjcm9sbE9yaWdpbnMobm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLl91cGRhdGVIZWFkZXJFbGVtZW50cygpO1xuICAgIH0pLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB7XG4gICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnc2JiLWhlYWRlci1zY3JvbGwtb3JpZ2luJ10sXG4gICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMuX2ZpbmRBbmRIYW5kbGVTY3JvbGxPcmlnaW5zKGRvY3VtZW50LmJvZHkpO1xuICAgIHRoaXMuX3VwZGF0ZUhlYWRlckVsZW1lbnRzKCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfZmluZEFuZEhhbmRsZVNjcm9sbE9yaWdpbnMocm9vdDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICByb290XG4gICAgICAucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJ1tzYmItaGVhZGVyLXNjcm9sbC1vcmlnaW5dJylcbiAgICAgIC5mb3JFYWNoKChlKSA9PiB0aGlzLl9oYW5kbGVTY3JvbGxPcmlnaW5FbGVtZW50KGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIF9oYW5kbGVTY3JvbGxPcmlnaW5FbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKGVsZW1lbnQuaXNDb25uZWN0ZWQgJiYgZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ3NiYi1oZWFkZXItc2Nyb2xsLW9yaWdpbicpKSB7XG4gICAgICB0aGlzLl9oZWFkZXJTY3JvbGxPcmlnaW5zLmFkZChlbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faGVhZGVyU2Nyb2xsT3JpZ2lucy5kZWxldGUoZWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX3VwZGF0ZUhlYWRlckVsZW1lbnRzKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgaGVhZGVyIG9mIHRoaXMuX2hlYWRlckVsZW1lbnRzKSB7XG4gICAgICBpZiAodGhpcy5faGVhZGVyU2Nyb2xsT3JpZ2lucy5zaXplID09PSAwKSB7XG4gICAgICAgIGhlYWRlci5fc2Nyb2xsT3JpZ2luRnJvbU9ic2VydmVyID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5faGVhZGVyU2Nyb2xsT3JpZ2lucy5zaXplID09PSAxKSB7XG4gICAgICAgIGhlYWRlci5fc2Nyb2xsT3JpZ2luRnJvbU9ic2VydmVyID0gdGhpcy5faGVhZGVyU2Nyb2xsT3JpZ2lucy52YWx1ZXMoKS5uZXh0KCkudmFsdWUgPz8gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhlYWRlci5fc2Nyb2xsT3JpZ2luRnJvbU9ic2VydmVyID1cbiAgICAgICAgICBBcnJheS5mcm9tKHRoaXMuX2hlYWRlclNjcm9sbE9yaWdpbnMpXG4gICAgICAgICAgICAuc29ydCgoYzEsIGMyKSA9PiBjMS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihjMikgJiBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5TKVxuICAgICAgICAgICAgLmF0KC0xKSA/PyBudWxsO1xuICAgICAgfVxuICAgICAgaGVhZGVyLl91cGRhdGVTY3JvbGxMaXN0ZW5lcigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBJZiBgaGlkZU9uU2Nyb2xsYCBpcyBzZXQsIGNoZWNrcyB0aGUgZWxlbWVudCB0byBob29rIHRoZSBsaXN0ZW5lciBvbiwgYW5kIHBvc3NpYmx5IGFkZCBpdC4qL1xuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBTYmJIZWFkZXJFbGVtZW50Ll9oZWFkZXJFbGVtZW50cy5hZGQodGhpcyk7XG4gICAgaWYgKHRoaXMuaGFzVXBkYXRlZCkge1xuICAgICAgdGhpcy5fdXBkYXRlU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG4gIH1cblxuICAvKiogUmVtb3ZlcyB0aGUgc2Nyb2xsIGxpc3RlbmVyLCBpZiBwcmV2aW91c2x5IGF0dGFjaGVkLiAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9zY3JvbGxFbGVtZW50ID0gbnVsbDtcbiAgICB0aGlzLl9zY3JvbGxFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIFNiYkhlYWRlckVsZW1lbnQuX2hlYWRlckVsZW1lbnRzLmRlbGV0ZSh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuXG4gICAgaWYgKCFpc1NlcnZlciAmJiAoIW5hbWUgfHwgbmFtZSA9PT0gJ3Njcm9sbE9yaWdpbicpICYmIHRoaXMuaGFzVXBkYXRlZCkge1xuICAgICAgdGhpcy5fdXBkYXRlU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgdGhpcy5fdXBkYXRlU2Nyb2xsTGlzdGVuZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVNjcm9sbExpc3RlbmVyKCk6IHZvaWQge1xuICAgIGNvbnN0IHNjcm9sbEVsZW1lbnQgPSB0aGlzLnNjcm9sbE9yaWdpbiA/PyB0aGlzLl9zY3JvbGxPcmlnaW5Gcm9tT2JzZXJ2ZXIgPz8gZG9jdW1lbnQ7XG4gICAgaWYgKHNjcm9sbEVsZW1lbnQgPT09IHRoaXMuX3Njcm9sbEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zY3JvbGxFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX3Njcm9sbEVsZW1lbnQgPSBzY3JvbGxFbGVtZW50O1xuICAgIGlmICghdGhpcy5fc2Nyb2xsRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9zY3JvbGxFdmVudHNDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX3Njcm9sbEZ1bmN0aW9uID0gdGhpcy5fZ2V0U2Nyb2xsRnVuY3Rpb24uYmluZCh0aGlzKTtcbiAgICB0aGlzLl9zY3JvbGxFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuX3Njcm9sbEZ1bmN0aW9uLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9zY3JvbGxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcblxuICAgIGNvbnN0IGN1cnJlbnRTY3JvbGwgPSB0aGlzLl9nZXRDdXJyZW50U2Nyb2xsUHJvcGVydHkoJ3Njcm9sbFRvcCcpO1xuICAgIC8vIGBjdXJyZW50U2Nyb2xsYCBjYW4gYmUgbmVnYXRpdmUsIGUuZy4gb24gbW9iaWxlOyB0aGlzIGlzIG5vdCBhbGxvd2VkLlxuICAgIHRoaXMuX2xhc3RTY3JvbGwgPSBjdXJyZW50U2Nyb2xsIDw9IDAgPyAwIDogY3VycmVudFNjcm9sbDtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBjb3JyZWN0IGZ1bmN0aW9uIHRvIGF0dGFjaCBvbiBzY3JvbGwuICovXG4gIHByaXZhdGUgX2dldFNjcm9sbEZ1bmN0aW9uKCk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLmhpZGVPblNjcm9sbCA/IHRoaXMuX3Njcm9sbExpc3RlbmVyKCkgOiB0aGlzLl9zY3JvbGxTaGFkb3dMaXN0ZW5lcigpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIHJlcXVlc3RlZCBwcm9wZXJ0eSBvZiB0aGUgc2Nyb2xsQ29udGV4dC4gKi9cbiAgcHJpdmF0ZSBfZ2V0Q3VycmVudFNjcm9sbFByb3BlcnR5KHByb3BlcnR5OiAnc2Nyb2xsVG9wJyB8ICdzY3JvbGxIZWlnaHQnKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5fc2Nyb2xsRWxlbWVudCBpbnN0YW5jZW9mIERvY3VtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2Nyb2xsRWxlbWVudC5kb2N1bWVudEVsZW1lbnRbcHJvcGVydHldIHx8IHRoaXMuX3Njcm9sbEVsZW1lbnQuYm9keVtwcm9wZXJ0eV07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zY3JvbGxFbGVtZW50Py5bcHJvcGVydHldIHx8IDA7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgYHNjcm9sbFRvcGAsIHRoZW46XG4gICAqIC0gYXBwbHkgdGhlIHNoYWRvdyBpZiB0aGUgZWxlbWVudC9kb2N1bWVudCBoYXMgYmVlbiBzY3JvbGxlZCBkb3duO1xuICAgKiAtIGhpZGVzIHRoZSBoZWFkZXIsIHJlbW92ZSB0aGUgc2hhZG93IGFuZCBwb3NzaWJseSBjbG9zZSBhbnkgb3BlbiBtZW51IG9uIHRoZSBoZWFkZXIgaWYgaXQgaXMgbm90IHZpc2libGUgYW55bW9yZTtcbiAgICogLSBzaG93cyB0aGUgaGVhZGVyIGFuZCByZS1hcHBseSB0aGUgc2hhZG93IGlmIHRoZSBlbGVtZW50L2RvY3VtZW50IGhhcyBiZWVuIHNjcm9sbGVkIHVwLlxuICAgKi9cbiAgcHJpdmF0ZSBfc2Nyb2xsTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFNjcm9sbCA9IHRoaXMuX2dldEN1cnJlbnRTY3JvbGxQcm9wZXJ0eSgnc2Nyb2xsVG9wJyk7XG5cbiAgICAvLyBXaGV0aGVyIHRoZSBzY3JvbGwgdmlldyBpcyBib3VuY2luZyBwYXN0IHRoZSBlZGdlIG9mIGNvbnRlbnQgYW5kIGJhY2sgYWdhaW4uXG4gICAgaWYgKHRoaXMuX2dldEN1cnJlbnRTY3JvbGxQcm9wZXJ0eSgnc2Nyb2xsSGVpZ2h0JykgLSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBjdXJyZW50U2Nyb2xsIDw9IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCdzaGFkb3cnLCBjdXJyZW50U2Nyb2xsICE9PSAwKTtcblxuICAgIC8vIENsb3NlIG9wZW4gb3ZlcmxheXMgd2hlbiBzY3JvbGxpbmcgZG93biBpZiB0aGUgaGVhZGVyIGlzIHNjcm9sbGVkIG91dCBvZiBzaWdodC5cbiAgICBpZiAoXG4gICAgICBjdXJyZW50U2Nyb2xsID4gdGhpcy5vZmZzZXRIZWlnaHQgJiZcbiAgICAgIGN1cnJlbnRTY3JvbGwgPiAwICYmXG4gICAgICB0aGlzLl9sYXN0U2Nyb2xsIDwgY3VycmVudFNjcm9sbFxuICAgICkge1xuICAgICAgdGhpcy5fY2xvc2VPcGVuT3ZlcmxheXMoKTtcbiAgICB9XG4gICAgLy8gQ2hlY2sgaWYgdGhlIGhlYWRlciBpcyBzY3JvbGxlZCBvdXQgb2Ygc2lnaHQsIHNjcm9sbCBwb3NpdGlvbiA+IGhlYWRlciBoZWlnaHQgKiAyLlxuICAgIGlmIChjdXJyZW50U2Nyb2xsID4gdGhpcy5vZmZzZXRIZWlnaHQgKiAyKSB7XG4gICAgICB0aGlzLl9oZWFkZXJPblRvcCA9IGZhbHNlO1xuICAgICAgaWYgKGN1cnJlbnRTY3JvbGwgPiAwICYmIHRoaXMuX2xhc3RTY3JvbGwgPCBjdXJyZW50U2Nyb2xsKSB7XG4gICAgICAgIC8vIFNjcm9sbGluZyBkb3duXG4gICAgICAgIFsnc2hhZG93JywgJ3Zpc2libGUnXS5mb3JFYWNoKChuYW1lKSA9PiB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKG5hbWUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNjcm9sbGluZyB1cFxuICAgICAgICBbJ2ZpeGVkJywgJ3NoYWRvdycsICdhbmltYXRlZCcsICd2aXNpYmxlJ10uZm9yRWFjaCgobmFtZSkgPT5cbiAgICAgICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKG5hbWUpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDaGVjayBpZiBoZWFkZXIgaW4gaXRzIG9yaWdpbmFsIHBvc2l0aW9uLCBzY3JvbGwgcG9zaXRpb24gPCBoZWFkZXIgaGVpZ2h0LlxuICAgICAgLy8gUmVzZXQgaGVhZGVyIGJlaGF2aW9yIHdoZW4gc2Nyb2xsIGhpdHMgdG9wIG9mIHRoZSBwYWdlLCBvbiBzY3JvbGwgcG9zaXRpb24gPSAwLlxuICAgICAgaWYgKGN1cnJlbnRTY3JvbGwgPT09IDApIHtcbiAgICAgICAgdGhpcy5faGVhZGVyT25Ub3AgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX2hlYWRlck9uVG9wKSB7XG4gICAgICAgIFsnc2hhZG93JywgJ2FuaW1hdGVkJywgJ2ZpeGVkJywgJ3Zpc2libGUnXS5mb3JFYWNoKChuYW1lKSA9PlxuICAgICAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUobmFtZSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGBjdXJyZW50U2Nyb2xsYCBjYW4gYmUgbmVnYXRpdmUsIGUuZy4gb24gbW9iaWxlOyB0aGlzIGlzIG5vdCBhbGxvd2VkLlxuICAgIHRoaXMuX2xhc3RTY3JvbGwgPSBjdXJyZW50U2Nyb2xsIDw9IDAgPyAwIDogY3VycmVudFNjcm9sbDtcbiAgfVxuXG4gIC8qKiBBcHBseSB0aGUgc2hhZG93IGlmIHRoZSBlbGVtZW50L2RvY3VtZW50IGhhcyBiZWVuIHNjcm9sbGVkIGRvd24uICovXG4gIHByaXZhdGUgX3Njcm9sbFNoYWRvd0xpc3RlbmVyKCk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ3NoYWRvdycsIHRoaXMuX2dldEN1cnJlbnRTY3JvbGxQcm9wZXJ0eSgnc2Nyb2xsVG9wJykgIT09IDApO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VPcGVuT3ZlcmxheXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWF0Y2hlcygnOnN0YXRlKGhhcy12aXNpYmxlLWZvY3VzLXdpdGhpbiknKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvdmVybGF5VHJpZ2dlcnM6IEhUTUxFbGVtZW50W10gPSBBcnJheS5mcm9tKFxuICAgICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsKElTX01FTlVfT1BFTkVEX1FVRVJZKSBhcyBOb2RlTGlzdE9mPEhUTUxFbGVtZW50PixcbiAgICApO1xuICAgIGZvciAoY29uc3Qgb3ZlcmxheVRyaWdnZXIgb2Ygb3ZlcmxheVRyaWdnZXJzKSB7XG4gICAgICBjb25zdCBvdmVybGF5ID0gb3ZlcmxheVRyaWdnZXIuYXJpYUNvbnRyb2xzRWxlbWVudHMhWzBdIGFzIEhUTUxFbGVtZW50ICYge1xuICAgICAgICBjbG9zZTogKCkgPT4gdm9pZDtcbiAgICAgIH07XG4gICAgICBpZiAodHlwZW9mIG92ZXJsYXk/LmNsb3NlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG92ZXJsYXkuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxoZWFkZXIgY2xhc3M9XCJzYmItaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItaGVhZGVyX193cmFwcGVyXCI+XG4gICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaGVhZGVyPlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1oZWFkZXInOiBTYmJIZWFkZXJFbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FDcUJBLElBQU0sdUJBQXVCOzs7Ozs7Ozs7O0lBV2hCLDBCQUFnQjttQkFBUzs7Ozs7Ozs7Ozs7Ozs7OztjQUF6Qix5QkFBeUIsWUFBVTs7OzJCQW1CN0MsVUFBUyxHQUNULFNBQVM7SUFBRSxTQUFTO0lBQU0sTUFBTTtHQUFPLENBQUUsQ0FBQzsrQkFRMUMsWUFBVyxHQUNYLFNBQVMsRUFBRSxXQUFXLGdCQUFlLENBQUUsQ0FBQzsrQkFJeEMsVUFBUyxHQUNULFNBQVM7SUFBRSxXQUFXO0lBQWtCLFNBQVM7SUFBTSxNQUFNO0dBQU8sQ0FBRSxDQUFDO3VCQU12RSxTQUFTLEVBQUUsU0FBUyxLQUFJLENBQUUsQ0FBQzsrQkFFM0IsTUFBSyxDQUFFO0dBckJSLGFBQUEsTUFBQSxNQUFBLHNCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsY0FBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFRLE1BQUEsS0FBQSxVQUFBO01BQUEsSUFBUixXQUFRO0tBQUE7SUFBQTtJQUFBLFVBQUE7R0FBQSxHQUFBLHdCQUFBLDJCQUFBO0dBU3hCLGFBQUEsTUFBQSxNQUFBLDBCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7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
@@ -2,7 +2,7 @@ import { t as SbbHeaderActionCommonElementMixin } from "./header-action-common-D
2
2
  import { SbbHeaderButtonElement } from "./header/header-button/header-button.component.js";
3
3
  import { t as SbbHeaderEnvironmentElement } from "./header-environment.component--4YEZyKq.js";
4
4
  import { SbbHeaderLinkElement } from "./header/header-link/header-link.component.js";
5
- import { t as SbbHeaderElement } from "./header.component-B43X03Jg.js";
5
+ import { t as SbbHeaderElement } from "./header.component-FVw_5NRT.js";
6
6
  import "./header.pure.js";
7
7
  //#region src/elements/header.ts
8
8
  /** @entrypoint */
@@ -2,5 +2,5 @@ import { t as SbbHeaderActionCommonElementMixin } from "./header-action-common-D
2
2
  import { SbbHeaderButtonElement } from "./header/header-button/header-button.component.js";
3
3
  import { t as SbbHeaderEnvironmentElement } from "./header-environment.component--4YEZyKq.js";
4
4
  import { SbbHeaderLinkElement } from "./header/header-link/header-link.component.js";
5
- import { t as SbbHeaderElement } from "./header.component-B43X03Jg.js";
5
+ import { t as SbbHeaderElement } from "./header.component-FVw_5NRT.js";
6
6
  export { SbbHeaderActionCommonElementMixin, SbbHeaderButtonElement, SbbHeaderElement, SbbHeaderEnvironmentElement, SbbHeaderLinkElement };
@@ -5,7 +5,7 @@ import { SbbElement, SbbElementType } from '../core.ts';
5
5
  *
6
6
  * @slot - Use the unnamed slot to add content to the sidebar.
7
7
  * @slot map - Used for slotting the map.
8
- * @cssprop [--sbb-map-container-margin-start=var(--sbb-header-height)] - The component
8
+ * @cssprop [--sbb-map-container-margin-start=var(--sbb-header-vertical-spacing)] - The component
9
9
  * comes along with a height calculation that subtracts the height of the header.
10
10
  * For specific use cases, this variable can be used to modify the preset height.
11
11
  * @cssprop [--sbb-map-container-sidebar-width=zero-large:400px;ultra:480px] - Can be used
@@ -13,7 +13,7 @@ import { SbbElement, SbbElementType } from '../core.ts';
13
13
  * @cssprop [--sbb-map-container-mobile-sticky-block-start=0] - If e.g. a header with a fixed height
14
14
  * is placed before the map-container, the map should be sticky respecting
15
15
  * this offset from the document's top. Only applied on mobile views.
16
- * Most commonly it can be set to `var(--sbb-header-height)`.
16
+ * Most commonly it can be set to `var(--sbb-header-vertical-spacing)`.
17
17
  */
18
18
  export declare class SbbMapContainerElement extends SbbElement {
19
19
  static readonly elementName: string;
@@ -1,2 +1,2 @@
1
- import { t as SbbMapContainerElement } from "../map-container.component-N-e2oBnd.js";
1
+ import { t as SbbMapContainerElement } from "../map-container.component-ASCfDs-R.js";
2
2
  export { SbbMapContainerElement };