@m3e/web 2.1.3 → 2.2.0

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 (185) hide show
  1. package/README.md +3 -0
  2. package/dist/all.js +2765 -343
  3. package/dist/all.js.map +1 -1
  4. package/dist/all.min.js +77 -41
  5. package/dist/all.min.js.map +1 -1
  6. package/dist/app-bar.js +14 -7
  7. package/dist/app-bar.js.map +1 -1
  8. package/dist/app-bar.min.js +1 -1
  9. package/dist/app-bar.min.js.map +1 -1
  10. package/dist/autocomplete.js +5 -9
  11. package/dist/autocomplete.js.map +1 -1
  12. package/dist/autocomplete.min.js +1 -1
  13. package/dist/autocomplete.min.js.map +1 -1
  14. package/dist/bottom-sheet.js +8 -27
  15. package/dist/bottom-sheet.js.map +1 -1
  16. package/dist/bottom-sheet.min.js +1 -1
  17. package/dist/bottom-sheet.min.js.map +1 -1
  18. package/dist/calendar.js +1082 -0
  19. package/dist/calendar.js.map +1 -0
  20. package/dist/calendar.min.js +43 -0
  21. package/dist/calendar.min.js.map +1 -0
  22. package/dist/chips.js +2 -6
  23. package/dist/chips.js.map +1 -1
  24. package/dist/chips.min.js +1 -1
  25. package/dist/chips.min.js.map +1 -1
  26. package/dist/core-a11y.js +23 -9
  27. package/dist/core-a11y.js.map +1 -1
  28. package/dist/core-a11y.min.js +4 -4
  29. package/dist/core-a11y.min.js.map +1 -1
  30. package/dist/core-anchoring.js +135 -15
  31. package/dist/core-anchoring.js.map +1 -1
  32. package/dist/core-anchoring.min.js +1 -1
  33. package/dist/core-anchoring.min.js.map +1 -1
  34. package/dist/core.js +101 -1
  35. package/dist/core.js.map +1 -1
  36. package/dist/core.min.js +1 -1
  37. package/dist/core.min.js.map +1 -1
  38. package/dist/css-custom-data.json +819 -319
  39. package/dist/custom-elements.json +16252 -11972
  40. package/dist/datepicker.js +552 -0
  41. package/dist/datepicker.js.map +1 -0
  42. package/dist/datepicker.min.js +7 -0
  43. package/dist/datepicker.min.js.map +1 -0
  44. package/dist/fab-menu.js +1 -1
  45. package/dist/fab-menu.js.map +1 -1
  46. package/dist/fab-menu.min.js +1 -1
  47. package/dist/fab-menu.min.js.map +1 -1
  48. package/dist/form-field.js +2 -6
  49. package/dist/form-field.js.map +1 -1
  50. package/dist/form-field.min.js +3 -3
  51. package/dist/form-field.min.js.map +1 -1
  52. package/dist/html-custom-data.json +478 -112
  53. package/dist/menu.js +3 -7
  54. package/dist/menu.js.map +1 -1
  55. package/dist/menu.min.js +1 -1
  56. package/dist/menu.min.js.map +1 -1
  57. package/dist/nav-menu.js +3 -11
  58. package/dist/nav-menu.js.map +1 -1
  59. package/dist/nav-menu.min.js +1 -1
  60. package/dist/nav-menu.min.js.map +1 -1
  61. package/dist/nav-rail.js +2 -6
  62. package/dist/nav-rail.js.map +1 -1
  63. package/dist/nav-rail.min.js +1 -1
  64. package/dist/nav-rail.min.js.map +1 -1
  65. package/dist/option.js +3 -7
  66. package/dist/option.js.map +1 -1
  67. package/dist/option.min.js +1 -1
  68. package/dist/option.min.js.map +1 -1
  69. package/dist/paginator.js.map +1 -1
  70. package/dist/paginator.min.js.map +1 -1
  71. package/dist/search.js +805 -0
  72. package/dist/search.js.map +1 -0
  73. package/dist/search.min.js +7 -0
  74. package/dist/search.min.js.map +1 -0
  75. package/dist/select.js +3 -14
  76. package/dist/select.js.map +1 -1
  77. package/dist/select.min.js +1 -1
  78. package/dist/select.min.js.map +1 -1
  79. package/dist/snackbar.js +2 -6
  80. package/dist/snackbar.js.map +1 -1
  81. package/dist/snackbar.min.js +1 -1
  82. package/dist/snackbar.min.js.map +1 -1
  83. package/dist/src/all.d.ts +3 -0
  84. package/dist/src/all.d.ts.map +1 -1
  85. package/dist/src/app-bar/AppBarElement.d.ts +6 -4
  86. package/dist/src/app-bar/AppBarElement.d.ts.map +1 -1
  87. package/dist/src/autocomplete/AutocompleteElement.d.ts +2 -2
  88. package/dist/src/autocomplete/AutocompleteElement.d.ts.map +1 -1
  89. package/dist/src/autocomplete/AutocompleteQueryEventDetail.d.ts +12 -0
  90. package/dist/src/autocomplete/AutocompleteQueryEventDetail.d.ts.map +1 -0
  91. package/dist/src/autocomplete/QueryEventDetail.d.ts +3 -8
  92. package/dist/src/autocomplete/QueryEventDetail.d.ts.map +1 -1
  93. package/dist/src/autocomplete/index.d.ts +1 -0
  94. package/dist/src/autocomplete/index.d.ts.map +1 -1
  95. package/dist/src/bottom-sheet/BottomSheetElement.d.ts.map +1 -1
  96. package/dist/src/calendar/CalendarElement.d.ts +213 -0
  97. package/dist/src/calendar/CalendarElement.d.ts.map +1 -0
  98. package/dist/src/calendar/CalendarView.d.ts +3 -0
  99. package/dist/src/calendar/CalendarView.d.ts.map +1 -0
  100. package/dist/src/calendar/CalendarViewElementBase.d.ts +28 -0
  101. package/dist/src/calendar/CalendarViewElementBase.d.ts.map +1 -0
  102. package/dist/src/calendar/MonthViewElement.d.ts +36 -0
  103. package/dist/src/calendar/MonthViewElement.d.ts.map +1 -0
  104. package/dist/src/calendar/MultiYearViewElement.d.ts +27 -0
  105. package/dist/src/calendar/MultiYearViewElement.d.ts.map +1 -0
  106. package/dist/src/calendar/YearViewElement.d.ts +27 -0
  107. package/dist/src/calendar/YearViewElement.d.ts.map +1 -0
  108. package/dist/src/calendar/index.d.ts +7 -0
  109. package/dist/src/calendar/index.d.ts.map +1 -0
  110. package/dist/src/calendar/utils.d.ts +24 -0
  111. package/dist/src/calendar/utils.d.ts.map +1 -0
  112. package/dist/src/chips/InputChipSetElement.d.ts.map +1 -1
  113. package/dist/src/core/a11y/FocusTrapElement.d.ts.map +1 -1
  114. package/dist/src/core/a11y/InteractivityChecker.d.ts.map +1 -1
  115. package/dist/src/core/anchoring/AnchorOptions.d.ts +1 -1
  116. package/dist/src/core/anchoring/AnchorOptions.d.ts.map +1 -1
  117. package/dist/src/core/anchoring/FloatingPanelElement.d.ts +18 -3
  118. package/dist/src/core/anchoring/FloatingPanelElement.d.ts.map +1 -1
  119. package/dist/src/core/anchoring/positionAnchor.d.ts.map +1 -1
  120. package/dist/src/core/shared/controllers/InertController.d.ts +19 -0
  121. package/dist/src/core/shared/controllers/InertController.d.ts.map +1 -0
  122. package/dist/src/core/shared/controllers/index.d.ts +1 -0
  123. package/dist/src/core/shared/controllers/index.d.ts.map +1 -1
  124. package/dist/src/core/shared/converters/dateConverter.d.ts +4 -0
  125. package/dist/src/core/shared/converters/dateConverter.d.ts.map +1 -0
  126. package/dist/src/core/shared/converters/index.d.ts +1 -0
  127. package/dist/src/core/shared/converters/index.d.ts.map +1 -1
  128. package/dist/src/core/shared/utils/index.d.ts +1 -0
  129. package/dist/src/core/shared/utils/index.d.ts.map +1 -1
  130. package/dist/src/core/shared/utils/registerStyleSheet.d.ts +7 -0
  131. package/dist/src/core/shared/utils/registerStyleSheet.d.ts.map +1 -0
  132. package/dist/src/datepicker/DatepickerElement.d.ts +237 -0
  133. package/dist/src/datepicker/DatepickerElement.d.ts.map +1 -0
  134. package/dist/src/datepicker/DatepickerToggleElement.d.ts +21 -0
  135. package/dist/src/datepicker/DatepickerToggleElement.d.ts.map +1 -0
  136. package/dist/src/datepicker/DatepickerVariant.d.ts +3 -0
  137. package/dist/src/datepicker/DatepickerVariant.d.ts.map +1 -0
  138. package/dist/src/datepicker/index.d.ts +4 -0
  139. package/dist/src/datepicker/index.d.ts.map +1 -0
  140. package/dist/src/form-field/FormFieldElement.d.ts.map +1 -1
  141. package/dist/src/menu/MenuElement.d.ts.map +1 -1
  142. package/dist/src/nav-menu/NavMenuElement.d.ts.map +1 -1
  143. package/dist/src/nav-menu/NavMenuItemElement.d.ts.map +1 -1
  144. package/dist/src/nav-rail/NavRailElement.d.ts.map +1 -1
  145. package/dist/src/option/OptionPanelElement.d.ts.map +1 -1
  146. package/dist/src/paginator/PageEventDetail.d.ts +6 -11
  147. package/dist/src/paginator/PageEventDetail.d.ts.map +1 -1
  148. package/dist/src/paginator/PaginatorElement.d.ts +2 -2
  149. package/dist/src/paginator/PaginatorElement.d.ts.map +1 -1
  150. package/dist/src/paginator/PaginatorPageEventDetail.d.ts +12 -0
  151. package/dist/src/paginator/PaginatorPageEventDetail.d.ts.map +1 -0
  152. package/dist/src/paginator/index.d.ts +1 -0
  153. package/dist/src/paginator/index.d.ts.map +1 -1
  154. package/dist/src/search/SearchBarElement.d.ts +92 -0
  155. package/dist/src/search/SearchBarElement.d.ts.map +1 -0
  156. package/dist/src/search/SearchViewElement.d.ts +146 -0
  157. package/dist/src/search/SearchViewElement.d.ts.map +1 -0
  158. package/dist/src/search/SearchViewMode.d.ts +3 -0
  159. package/dist/src/search/SearchViewMode.d.ts.map +1 -0
  160. package/dist/src/search/SearchViewQueryEventDetail.d.ts +12 -0
  161. package/dist/src/search/SearchViewQueryEventDetail.d.ts.map +1 -0
  162. package/dist/src/search/index.d.ts +5 -0
  163. package/dist/src/search/index.d.ts.map +1 -0
  164. package/dist/src/search/styles/SearchBarStyle.d.ts +12 -0
  165. package/dist/src/search/styles/SearchBarStyle.d.ts.map +1 -0
  166. package/dist/src/search/styles/SearchBarToken.d.ts +27 -0
  167. package/dist/src/search/styles/SearchBarToken.d.ts.map +1 -0
  168. package/dist/src/search/styles/SearchViewStyle.d.ts +12 -0
  169. package/dist/src/search/styles/SearchViewStyle.d.ts.map +1 -0
  170. package/dist/src/search/styles/SearchViewToken.d.ts +26 -0
  171. package/dist/src/search/styles/SearchViewToken.d.ts.map +1 -0
  172. package/dist/src/search/styles/index.d.ts +3 -0
  173. package/dist/src/search/styles/index.d.ts.map +1 -0
  174. package/dist/src/select/SelectElement.d.ts.map +1 -1
  175. package/dist/src/snackbar/SnackbarElement.d.ts.map +1 -1
  176. package/dist/src/stepper/StepperElement.d.ts.map +1 -1
  177. package/dist/stepper.js +2 -6
  178. package/dist/stepper.js.map +1 -1
  179. package/dist/stepper.min.js +1 -1
  180. package/dist/stepper.min.js.map +1 -1
  181. package/dist/tooltip.js +1 -1
  182. package/dist/tooltip.js.map +1 -1
  183. package/dist/tooltip.min.js +1 -1
  184. package/dist/tooltip.min.js.map +1 -1
  185. package/package.json +16 -1
package/dist/app-bar.js CHANGED
@@ -96,7 +96,7 @@ const AppBarToken = {
96
96
  const AppBarStyle = css`:host { display: block; flex: none; } :host([size="small"]) .base, :host(:not([size="small"]):not([centered])) .heading { padding-inline-start: ${AppBarToken.paddingLeft}; padding-inline-end: ${AppBarToken.paddingRight}; } .base { box-sizing: border-box; display: flex; transition: ${unsafeCSS(`background-color ${DesignToken.motion.duration.medium1} ${DesignToken.motion.easing.standard},
97
97
  box-shadow ${DesignToken.motion.duration.medium1} ${DesignToken.motion.easing.standard}`)}; } .base:not(.on-scroll) { background-color: ${AppBarToken.containerColor}; box-shadow: ${AppBarToken.containerElevation}; } .base.on-scroll { background-color: ${AppBarToken.containerColorOnScroll}; box-shadow: ${AppBarToken.containerElevationOnScroll}; } .leading-icon, .trailing-icon { display: flex; flex: none; align-items: center; } .leading-icon { min-width: var(--_leading-icon-min-width); } .trailing-icon { min-width: var(--_trailing-icon-min-width); } .heading { display: flex; align-items: center; } :host([size="small"]) .heading { flex: 1 1 auto; } .spacer { flex: 1 1 auto; } .label { display: flex; flex-direction: column; flex: none; } .title { color: ${AppBarToken.titleTextColor}; } .subtitle { color: ${AppBarToken.subtitleTextColor}; } .base:not(.with-title) .title, .base:not(.with-subtitle) .subtitle, .base:not(.with-title):not(.with-subtitle) .label, .base:not(.with-trailing-icon) .trailing-icon { display: none; } :host([size="small"]) .base { align-items: center; } :host([size="small"]) .heading { min-width: 0; } :host([size="small"]) .label { flex: 1 1 auto; min-width: 0; } :host([size="small"]) .title, :host([size="small"]) .subtitle { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } :host(:not([size="small"])) .base { flex-direction: column; } :host([centered]) .title, :host([centered]) .subtitle { text-align: center; } @media (prefers-reduced-motion) { .base { transition: none; } } @media (forced-colors: active) { .base { transition: none; } .base:not(.on-scroll), .base.on-scroll { background-color: Canvas; box-shadow: unset; } .title { color: CanvasText; } .subtitle { color: FieldText; } }`;
98
98
 
99
- var _M3eAppBarElement_instances, _M3eAppBarElement_scrollHandler, _M3eAppBarElement_frameLoadHandler, _M3eAppBarElement_handleTitleSlotChange, _M3eAppBarElement_handleSubtitleSlotChange, _M3eAppBarElement_handleLeadingIconSlotChange, _M3eAppBarElement_handleTrailingIconsSlotChange, _M3eAppBarElement_clearCentered, _M3eAppBarElement_computeCentered, _M3eAppBarElement_handleFrameLoad, _M3eAppBarElement_getFrameScrollTop;
99
+ var _M3eAppBarElement_instances, _M3eAppBarElement_scrollHandler, _M3eAppBarElement_frameLoadHandler, _M3eAppBarElement_handleTitleSlotChange, _M3eAppBarElement_handleSubtitleSlotChange, _M3eAppBarElement_handleLeadingIconSlotChange, _M3eAppBarElement_handleTrailingIconsSlotChange, _M3eAppBarElement_handleDeprecatedSlotChange, _M3eAppBarElement_clearCentered, _M3eAppBarElement_computeCentered, _M3eAppBarElement_handleFrameLoad, _M3eAppBarElement_getFrameScrollTop;
100
100
  /**
101
101
  * A bar, placed a the top of a screen, used to help users navigate through an application.
102
102
  *
@@ -137,10 +137,12 @@ var _M3eAppBarElement_instances, _M3eAppBarElement_scrollHandler, _M3eAppBarElem
137
137
  *
138
138
  * @tag m3e-app-bar
139
139
  *
140
- * @slot leading-icon - Renders a leading icon.
141
- * @slot subtitle - Renders the subtitle.
142
- * @slot title - Renders the title.
143
- * @slot trailing-icon - Renders a trailing icon.
140
+ * @slot leading - Renders content positioned at the start of the bar.
141
+ * @slot subtitle - Renders the subtitle of the bar.
142
+ * @slot title - Renders the title of the bar.
143
+ * @slot trailing - Renders one or more action buttons aligned to the end of the bar.
144
+ * @slot leading-icon - Deprecated: use the `leading` slot.
145
+ * @slot trailing-icon - Deprecated: use the `trailing` slot.
144
146
  *
145
147
  * @attr centered - Whether the title and subtitle are centered.
146
148
  * @attr for - The identifier of the interactive control to which this element is attached.
@@ -255,9 +257,9 @@ let M3eAppBarElement = class M3eAppBarElement extends HtmlFor(Role(LitElement, "
255
257
  render() {
256
258
  switch (this.size) {
257
259
  case "small":
258
- return html`<div class="base"><div class="leading-icon"><slot name="leading-icon" @slotchange="${__classPrivateFieldGet(this, _M3eAppBarElement_instances, "m", _M3eAppBarElement_handleLeadingIconSlotChange)}"></slot></div><div class="heading"><div class="label"><div class="title"><slot name="title" @slotchange="${__classPrivateFieldGet(this, _M3eAppBarElement_instances, "m", _M3eAppBarElement_handleTitleSlotChange)}"></slot></div><div class="subtitle"><slot name="subtitle" @slotchange="${__classPrivateFieldGet(this, _M3eAppBarElement_instances, "m", _M3eAppBarElement_handleSubtitleSlotChange)}"></slot></div></div></div><div class="trailing-icon"><slot name="trailing-icon" @slotchange="${__classPrivateFieldGet(this, _M3eAppBarElement_instances, "m", _M3eAppBarElement_handleTrailingIconsSlotChange)}"></slot></div></div>`;
260
+ return html`<div class="base"><div class="leading-icon"><slot name="leading" @slotchange="${__classPrivateFieldGet(this, _M3eAppBarElement_instances, "m", _M3eAppBarElement_handleLeadingIconSlotChange)}"><slot name="leading-icon" @slotchange="${__classPrivateFieldGet(this, _M3eAppBarElement_instances, "m", _M3eAppBarElement_handleDeprecatedSlotChange)}"></slot></slot></div><div class="heading"><div class="label"><div class="title"><slot name="title" @slotchange="${__classPrivateFieldGet(this, _M3eAppBarElement_instances, "m", _M3eAppBarElement_handleTitleSlotChange)}"></slot></div><div class="subtitle"><slot name="subtitle" @slotchange="${__classPrivateFieldGet(this, _M3eAppBarElement_instances, "m", _M3eAppBarElement_handleSubtitleSlotChange)}"></slot></div></div></div><div class="trailing-icon"><slot name="trailing" @slotchange="${__classPrivateFieldGet(this, _M3eAppBarElement_instances, "m", _M3eAppBarElement_handleTrailingIconsSlotChange)}"><slot name="trailing-icon" @slotchange="${__classPrivateFieldGet(this, _M3eAppBarElement_instances, "m", _M3eAppBarElement_handleDeprecatedSlotChange)}"></slot></slot></div></div>`;
259
261
  default:
260
- return html`<div class="base"><div class="heading"><div class="leading-icon"><slot name="leading-icon" @slotchange="${__classPrivateFieldGet(this, _M3eAppBarElement_instances, "m", _M3eAppBarElement_handleLeadingIconSlotChange)}"></slot></div><div class="spacer"></div><div class="trailing-icon"><slot name="trailing-icon" @slotchange="${__classPrivateFieldGet(this, _M3eAppBarElement_instances, "m", _M3eAppBarElement_handleTrailingIconsSlotChange)}"></slot></div></div><div class="spacer"></div><div class="label"><div class="title"><slot name="title" @slotchange="${__classPrivateFieldGet(this, _M3eAppBarElement_instances, "m", _M3eAppBarElement_handleTitleSlotChange)}"></slot></div><div class="subtitle"><slot name="subtitle" @slotchange="${__classPrivateFieldGet(this, _M3eAppBarElement_instances, "m", _M3eAppBarElement_handleSubtitleSlotChange)}"></slot></div></div></div>`;
262
+ return html`<div class="base"><div class="heading"><div class="leading-icon"><slot name="leading" @slotchange="${__classPrivateFieldGet(this, _M3eAppBarElement_instances, "m", _M3eAppBarElement_handleLeadingIconSlotChange)}"><slot name="leading-icon" @slotchange="${__classPrivateFieldGet(this, _M3eAppBarElement_instances, "m", _M3eAppBarElement_handleDeprecatedSlotChange)}"></slot></slot></div><div class="spacer"></div><div class="trailing-icon"><slot name="trailing" @slotchange="${__classPrivateFieldGet(this, _M3eAppBarElement_instances, "m", _M3eAppBarElement_handleTrailingIconsSlotChange)}"><slot name="trailing-icon" @slotchange="${__classPrivateFieldGet(this, _M3eAppBarElement_instances, "m", _M3eAppBarElement_handleDeprecatedSlotChange)}"></slot></slot></div></div><div class="spacer"></div><div class="label"><div class="title"><slot name="title" @slotchange="${__classPrivateFieldGet(this, _M3eAppBarElement_instances, "m", _M3eAppBarElement_handleTitleSlotChange)}"></slot></div><div class="subtitle"><slot name="subtitle" @slotchange="${__classPrivateFieldGet(this, _M3eAppBarElement_instances, "m", _M3eAppBarElement_handleSubtitleSlotChange)}"></slot></div></div></div>`;
261
263
  }
262
264
  }
263
265
  /** @private */
@@ -292,6 +294,11 @@ _M3eAppBarElement_handleTrailingIconsSlotChange = function _M3eAppBarElement_han
292
294
  setTimeout(() => __classPrivateFieldGet(this, _M3eAppBarElement_instances, "m", _M3eAppBarElement_computeCentered).call(this), 40);
293
295
  }
294
296
  };
297
+ _M3eAppBarElement_handleDeprecatedSlotChange = function _M3eAppBarElement_handleDeprecatedSlotChange(e) {
298
+ const deprecatedSlot = e.target.name;
299
+ const useSlot = deprecatedSlot.replace("-icon", "");
300
+ console.warn(`[m3e-app-bar] Slot "${deprecatedSlot}" is deprecated and will be removed in a future release. Use "${useSlot}" instead.`);
301
+ };
295
302
  _M3eAppBarElement_clearCentered = function _M3eAppBarElement_clearCentered() {
296
303
  this._base?.style.removeProperty("--_leading-icon-min-width");
297
304
  this._base?.style.removeProperty("--_trailing-icon-min-width");
@@ -1 +1 @@
1
- {"version":3,"file":"app-bar.js","sources":["../../src/app-bar/styles/AppBarSizeToken.ts","../../src/app-bar/styles/AppBarSizeStyle.ts","../../src/app-bar/styles/AppBarToken.ts","../../src/app-bar/styles/AppBarStyle.ts","../../src/app-bar/AppBarElement.ts"],"sourcesContent":["import { CSSResult, unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\nimport { AppBarSize } from \"../AppBarSize\";\r\n\r\n/** @private */\r\ntype _AppBarSizeToken = {\r\n containerHeight: CSSResult;\r\n containerHeightWithSubtitle?: CSSResult;\r\n paddingTop?: CSSResult;\r\n paddingBottom?: CSSResult;\r\n titleTextFontSize: CSSResult;\r\n titleTextFontWeight: CSSResult;\r\n titleTextLineHeight: CSSResult;\r\n titleTextTracking: CSSResult;\r\n subtitleTextFontSize: CSSResult;\r\n subtitleTextFontWeight: CSSResult;\r\n subtitleTextLineHeight: CSSResult;\r\n subtitleTextTracking: CSSResult;\r\n titleMaxLines?: CSSResult;\r\n subtitleMaxLines?: CSSResult;\r\n headingPaddingLeft: CSSResult;\r\n headingPaddingRight: CSSResult;\r\n};\r\n\r\n/**\r\n * Component design tokens that control the `M3eAppBarElement` for all size variants.\r\n * @internal\r\n */\r\nexport const AppBarSizeToken: Record<AppBarSize, _AppBarSizeToken> = {\r\n small: {\r\n containerHeight: unsafeCSS(`var(--m3e-app-bar-small-container-height, 4rem)`),\r\n titleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-small-title-text-font-size, ${DesignToken.typescale.standard.title.large.fontSize})`,\r\n ),\r\n titleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-small-title-text-font-weight, ${DesignToken.typescale.standard.title.large.fontWeight})`,\r\n ),\r\n titleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-small-title-text-line-height, ${DesignToken.typescale.standard.title.large.lineHeight})`,\r\n ),\r\n titleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-small-subtitle-text-tracking, ${DesignToken.typescale.standard.title.large.tracking})`,\r\n ),\r\n subtitleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-small-subtitle-text-font-size, ${DesignToken.typescale.standard.label.medium.fontSize})`,\r\n ),\r\n subtitleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-small-subtitle-text-font-weight, ${DesignToken.typescale.standard.label.medium.fontWeight})`,\r\n ),\r\n subtitleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-small-subtitle-text-line-height, ${DesignToken.typescale.standard.label.medium.lineHeight})`,\r\n ),\r\n subtitleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-small-subtitle-text-tracking, ${DesignToken.typescale.standard.label.medium.tracking})`,\r\n ),\r\n headingPaddingLeft: unsafeCSS(`var(--m3e-app-bar-small-heading-padding-left, 0.25rem)`),\r\n headingPaddingRight: unsafeCSS(`var(--m3e-app-bar-small-heading-padding-right, 0.25rem)`),\r\n },\r\n medium: {\r\n containerHeight: unsafeCSS(`var(--m3e-app-bar-medium-container-height, 7rem)`),\r\n containerHeightWithSubtitle: unsafeCSS(`var(--m3e-app-bar-medium-container-height-with-subtitle, 8.5rem)`),\r\n titleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-medium-title-text-font-size, ${DesignToken.typescale.standard.headline.medium.fontSize})`,\r\n ),\r\n titleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-medium-title-text-font-weight, ${DesignToken.typescale.standard.headline.medium.fontWeight})`,\r\n ),\r\n titleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-medium-title-text-line-height, ${DesignToken.typescale.standard.headline.medium.lineHeight})`,\r\n ),\r\n titleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-medium-subtitle-text-tracking, ${DesignToken.typescale.standard.headline.medium.tracking})`,\r\n ),\r\n subtitleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-medium-subtitle-text-font-size, ${DesignToken.typescale.standard.title.small.fontSize})`,\r\n ),\r\n subtitleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-medium-subtitle-text-font-weight, ${DesignToken.typescale.standard.title.small.fontWeight})`,\r\n ),\r\n subtitleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-medium-subtitle-text-line-height, ${DesignToken.typescale.standard.title.small.lineHeight})`,\r\n ),\r\n subtitleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-medium-subtitle-text-tracking, ${DesignToken.typescale.standard.title.small.tracking})`,\r\n ),\r\n headingPaddingLeft: unsafeCSS(`var(--m3e-app-bar-medium-heading-padding-left, 1rem)`),\r\n headingPaddingRight: unsafeCSS(`var(--m3e-app-bar-medium-heading-padding-right, 0.25rem)`),\r\n paddingTop: unsafeCSS(`var(--m3e-app-bar-medium-padding-top, 0.5rem)`),\r\n paddingBottom: unsafeCSS(`var(--m3e-app-bar-medium-padding-bottom, 0.75rem)`),\r\n titleMaxLines: unsafeCSS(`var(--m3e-app-bar-medium-title-max-lines, 2)`),\r\n subtitleMaxLines: unsafeCSS(`var(--m3e-app-bar-medium-subtitle-max-lines, 1)`),\r\n },\r\n large: {\r\n containerHeight: unsafeCSS(`var(--m3e-app-bar-large-container-height, 7.5rem)`),\r\n containerHeightWithSubtitle: unsafeCSS(`var(--m3e-app-bar-large-container-height-with-subtitle, 9.5rem)`),\r\n titleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-large-title-text-font-size, ${DesignToken.typescale.standard.display.small.fontSize})`,\r\n ),\r\n titleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-large-title-text-font-weight, ${DesignToken.typescale.standard.display.small.fontWeight})`,\r\n ),\r\n titleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-large-title-text-line-height, ${DesignToken.typescale.standard.display.small.lineHeight})`,\r\n ),\r\n titleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-large-subtitle-text-tracking, ${DesignToken.typescale.standard.display.small.tracking})`,\r\n ),\r\n subtitleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-large-subtitle-text-font-size, ${DesignToken.typescale.standard.title.medium.fontSize})`,\r\n ),\r\n subtitleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-large-subtitle-text-font-weight, ${DesignToken.typescale.standard.title.medium.fontWeight})`,\r\n ),\r\n subtitleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-large-subtitle-text-line-height, ${DesignToken.typescale.standard.title.medium.lineHeight})`,\r\n ),\r\n subtitleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-large-subtitle-text-tracking, ${DesignToken.typescale.standard.title.medium.tracking})`,\r\n ),\r\n headingPaddingLeft: unsafeCSS(`var(--m3e-app-bar-large-heading-padding-left, 1rem)`),\r\n headingPaddingRight: unsafeCSS(`var(--m3e-app-bar-large-heading-padding-right, 0.25rem)`),\r\n paddingTop: unsafeCSS(`var(--m3e-app-bar-large-padding-top, 0.5rem)`),\r\n paddingBottom: unsafeCSS(`var(--m3e-app-bar-large-padding-bottom, 0.75rem)`),\r\n titleMaxLines: unsafeCSS(`var(--m3e-app-bar-large-title-max-lines, 2)`),\r\n subtitleMaxLines: unsafeCSS(`var(--m3e-app-bar-large-subtitle-max-lines, 1)`),\r\n },\r\n} as const;\r\n","import { css, CSSResult, CSSResultGroup, unsafeCSS } from \"lit\";\r\n\r\nimport { AppBarSize } from \"../AppBarSize\";\r\nimport { AppBarSizeToken } from \"./AppBarSizeToken\";\r\n\r\n/** @private */\r\nfunction appBarStyle(size: AppBarSize): CSSResult {\r\n return css`\r\n :host([size=\"${unsafeCSS(size)}\"]) .base:not(.with-subtitle) {\r\n min-height: ${AppBarSizeToken[size].containerHeight};\r\n }\r\n :host([size=\"${unsafeCSS(size)}\"]) .base.with-subtitle {\r\n min-height: ${AppBarSizeToken[size].containerHeightWithSubtitle ?? AppBarSizeToken[size].containerHeight};\r\n }\r\n :host([size=\"${unsafeCSS(size)}\"]) .title {\r\n font-size: ${AppBarSizeToken[size].titleTextFontSize};\r\n font-weight: ${AppBarSizeToken[size].titleTextFontWeight};\r\n line-height: ${AppBarSizeToken[size].titleTextLineHeight};\r\n letter-spacing: ${AppBarSizeToken[size].titleTextTracking};\r\n }\r\n :host([size=\"${unsafeCSS(size)}\"]) .subtitle {\r\n font-size: ${AppBarSizeToken[size].subtitleTextFontSize};\r\n font-weight: ${AppBarSizeToken[size].subtitleTextFontWeight};\r\n line-height: ${AppBarSizeToken[size].subtitleTextLineHeight};\r\n letter-spacing: ${AppBarSizeToken[size].subtitleTextTracking};\r\n }\r\n :host(:not([centered])[size=\"${unsafeCSS(size)}\"]) .label {\r\n padding-inline-start: ${AppBarSizeToken[size].headingPaddingLeft};\r\n padding-inline-end: ${AppBarSizeToken[size].headingPaddingRight};\r\n }\r\n :host([centered][size=\"${unsafeCSS(size)}\"]) .label {\r\n padding-inline: ${AppBarSizeToken[size].headingPaddingLeft};\r\n }\r\n :host([size=\"${unsafeCSS(size)}\"]) .base {\r\n padding-block-start: ${AppBarSizeToken[size].paddingTop ?? unsafeCSS(\"unset\")};\r\n padding-block-end: ${AppBarSizeToken[size].paddingBottom ?? unsafeCSS(\"unset\")};\r\n }\r\n ${AppBarSizeToken[size].titleMaxLines\r\n ? css`\r\n :host([size=\"${unsafeCSS(size)}\"]) .title {\r\n display: -webkit-box;\r\n -webkit-line-clamp: ${AppBarSizeToken[size].titleMaxLines};\r\n -webkit-box-orient: vertical;\r\n overflow: hidden;\r\n line-clamp: ${AppBarSizeToken[size].titleMaxLines};\r\n }\r\n `\r\n : css``}\r\n ${AppBarSizeToken[size].subtitleMaxLines\r\n ? css`\r\n :host([size=\"${unsafeCSS(size)}\"]) .subtitle {\r\n display: -webkit-box;\r\n -webkit-line-clamp: ${AppBarSizeToken[size].subtitleMaxLines};\r\n -webkit-box-orient: vertical;\r\n overflow: hidden;\r\n line-clamp: ${AppBarSizeToken[size].subtitleMaxLines};\r\n }\r\n `\r\n : css``}\r\n `;\r\n}\r\n\r\n/**\r\n * Size variant styles for `M3eAppBarElement`.\r\n * @internal\r\n */\r\nexport const AppBarSizeStyle: CSSResultGroup = [appBarStyle(\"small\"), appBarStyle(\"medium\"), appBarStyle(\"large\")];\r\n","import { unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\n/**\r\n * Component design tokens that control `M3eAppBarElement`.\r\n * @internal\r\n */\r\nexport const AppBarToken = {\r\n containerColor: unsafeCSS(`var(--m3e-app-bar-container-color, ${DesignToken.color.surface})`),\r\n containerColorOnScroll: unsafeCSS(\r\n `var(--m3e-app-bar-container-color-on-scroll, ${DesignToken.color.surfaceContainer})`,\r\n ),\r\n containerElevation: unsafeCSS(`var(--m3e-app-bar-container-elevation, ${DesignToken.elevation.level0})`),\r\n containerElevationOnScroll: unsafeCSS(\r\n `var(--m3e-app-bar-container-elevation-on-scroll, ${DesignToken.elevation.level1})`,\r\n ),\r\n titleTextColor: unsafeCSS(`var(--m3e-app-bar-title-text-color, ${DesignToken.color.onSurface})`),\r\n subtitleTextColor: unsafeCSS(`var(--m3e-app-bar-subtitle-text-color, ${DesignToken.color.onSurfaceVariant})`),\r\n paddingLeft: unsafeCSS(`var(--m3e-app-bar-padding-left, 0.25rem)`),\r\n paddingRight: unsafeCSS(`var(--m3e-app-bar-padding-right, 0.25rem)`),\r\n} as const;\r\n","import { css, CSSResult, unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\nimport { AppBarToken } from \"./AppBarToken\";\r\n\r\n/**\r\n * Baseline styles for `M3eAppBarElement`.\r\n * @internal\r\n */\r\nexport const AppBarStyle: CSSResult = css`\r\n :host {\r\n display: block;\r\n flex: none;\r\n }\r\n :host([size=\"small\"]) .base,\r\n :host(:not([size=\"small\"]):not([centered])) .heading {\r\n padding-inline-start: ${AppBarToken.paddingLeft};\r\n padding-inline-end: ${AppBarToken.paddingRight};\r\n }\r\n .base {\r\n box-sizing: border-box;\r\n display: flex;\r\n transition: ${unsafeCSS(\r\n `background-color ${DesignToken.motion.duration.medium1} ${DesignToken.motion.easing.standard},\r\n box-shadow ${DesignToken.motion.duration.medium1} ${DesignToken.motion.easing.standard}`,\r\n )};\r\n }\r\n .base:not(.on-scroll) {\r\n background-color: ${AppBarToken.containerColor};\r\n box-shadow: ${AppBarToken.containerElevation};\r\n }\r\n .base.on-scroll {\r\n background-color: ${AppBarToken.containerColorOnScroll};\r\n box-shadow: ${AppBarToken.containerElevationOnScroll};\r\n }\r\n .leading-icon,\r\n .trailing-icon {\r\n display: flex;\r\n flex: none;\r\n align-items: center;\r\n }\r\n .leading-icon {\r\n min-width: var(--_leading-icon-min-width);\r\n }\r\n .trailing-icon {\r\n min-width: var(--_trailing-icon-min-width);\r\n }\r\n .heading {\r\n display: flex;\r\n align-items: center;\r\n }\r\n :host([size=\"small\"]) .heading {\r\n flex: 1 1 auto;\r\n }\r\n .spacer {\r\n flex: 1 1 auto;\r\n }\r\n .label {\r\n display: flex;\r\n flex-direction: column;\r\n flex: none;\r\n }\r\n .title {\r\n color: ${AppBarToken.titleTextColor};\r\n }\r\n .subtitle {\r\n color: ${AppBarToken.subtitleTextColor};\r\n }\r\n .base:not(.with-title) .title,\r\n .base:not(.with-subtitle) .subtitle,\r\n .base:not(.with-title):not(.with-subtitle) .label,\r\n .base:not(.with-trailing-icon) .trailing-icon {\r\n display: none;\r\n }\r\n :host([size=\"small\"]) .base {\r\n align-items: center;\r\n }\r\n :host([size=\"small\"]) .heading {\r\n min-width: 0;\r\n }\r\n :host([size=\"small\"]) .label {\r\n flex: 1 1 auto;\r\n min-width: 0;\r\n }\r\n :host([size=\"small\"]) .title,\r\n :host([size=\"small\"]) .subtitle {\r\n display: block;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n :host(:not([size=\"small\"])) .base {\r\n flex-direction: column;\r\n }\r\n :host([centered]) .title,\r\n :host([centered]) .subtitle {\r\n text-align: center;\r\n }\r\n @media (prefers-reduced-motion) {\r\n .base {\r\n transition: none;\r\n }\r\n }\r\n @media (forced-colors: active) {\r\n .base {\r\n transition: none;\r\n }\r\n .base:not(.on-scroll),\r\n .base.on-scroll {\r\n background-color: Canvas;\r\n box-shadow: unset;\r\n }\r\n .title {\r\n color: CanvasText;\r\n }\r\n .subtitle {\r\n color: FieldText;\r\n }\r\n }\r\n`;\r\n","import { CSSResultGroup, html, LitElement, PropertyValues } from \"lit\";\r\nimport { property, query } from \"lit/decorators.js\";\r\n\r\nimport { customElement, debounce, hasAssignedNodes, HtmlFor, Role } from \"@m3e/web/core\";\r\n\r\nimport { AppBarSize } from \"./AppBarSize\";\r\n\r\nimport { AppBarSizeStyle, AppBarStyle } from \"./styles\";\r\n\r\n/**\r\n * A bar, placed a the top of a screen, used to help users navigate through an application.\r\n *\r\n * @description\r\n * The `m3e-app-bar` component is a prominent user interface component that provides consistent\r\n * access to key actions, navigation, and contextual information at the top of an application screen.\r\n * Designed according to Material 3 principles, it organizes content with clear hierarchy, supports\r\n * dynamic color, elevation, and shape, and adapts to scrolling behavior.\r\n *\r\n * @example\r\n * ```html\r\n * <m3e-app-bar size=\"medium\">\r\n * <m3e-icon-button slot=\"leading-icon\" aria-label=\"Back\">\r\n * <m3e-icon name=\"arrow_back\"></m3e-icon>\r\n * </m3e-icon-button>\r\n * <span slot=\"title\">Top 10 hiking trails</span>\r\n * <span slot=\"subtitle\">Discover popular trails</span>\r\n * <m3e-icon-button slot=\"trailing-icon\" aria-label=\"Bookmark\" variant=\"tonal\">\r\n * <m3e-icon name=\"bookmark\" filled></m3e-icon>\r\n * </m3e-icon-button>\r\n * <m3e-app-bar>\r\n * ```\r\n * @example\r\n * The next example illustrates how to attach an app bar to a parenting scroll container\r\n * to produce elevation on scroll. In this example, the `for` attribute is used to attach a\r\n * sticky positioned `m3e-app-bar` to a parenting container styled to overflow vertically.\r\n * When scrolled, the app bar will automatically transition to an elevated state.\r\n * ```html\r\n * <div style=\"overflow-y: auto; height: 300px\" id=\"scrollContainer\">\r\n * <m3e-app-bar for=\"scrollContainer\" style=\"position: sticky; top: 0\">\r\n * <span slot=\"title\">Title</span>\r\n * </m3e-app-bar>\r\n * <div style=\"height: 400px; display: flex; align-items: center; justify-content: center\">\r\n * I am scrolling content\r\n * </div>\r\n * </div>\r\n * ```\r\n *\r\n * @tag m3e-app-bar\r\n *\r\n * @slot leading-icon - Renders a leading icon.\r\n * @slot subtitle - Renders the subtitle.\r\n * @slot title - Renders the title.\r\n * @slot trailing-icon - Renders a trailing icon.\r\n *\r\n * @attr centered - Whether the title and subtitle are centered.\r\n * @attr for - The identifier of the interactive control to which this element is attached.\r\n * @attr size - The size of the bar.\r\n *\r\n * @cssprop --m3e-app-bar-container-color - Background color of the app bar container.\r\n * @cssprop --m3e-app-bar-container-color-on-scroll - Background color of the app bar container when scrolled.\r\n * @cssprop --m3e-app-bar-container-elevation - Elevation (shadow) of the app bar container.\r\n * @cssprop --m3e-app-bar-container-elevation-on-scroll - Elevation (shadow) of the app bar container when scrolled.\r\n * @cssprop --m3e-app-bar-title-text-color - Color of the app bar title text.\r\n * @cssprop --m3e-app-bar-subtitle-text-color - Color of the app bar subtitle text.\r\n * @cssprop --m3e-app-bar-padding-left - Left padding for the app bar container.\r\n * @cssprop --m3e-app-bar-padding-right - Right padding for the app bar container.\r\n * @cssprop --m3e-app-bar-small-container-height - Height of the small app bar container.\r\n * @cssprop --m3e-app-bar-small-title-text-font-size - Font size for the small app bar title text.\r\n * @cssprop --m3e-app-bar-small-title-text-font-weight - Font weight for the small app bar title text.\r\n * @cssprop --m3e-app-bar-small-title-text-line-height - Line height for the small app bar title text.\r\n * @cssprop --m3e-app-bar-small-subtitle-text-tracking - Letter spacing (tracking) for the small app bar title text.\r\n * @cssprop --m3e-app-bar-small-subtitle-text-font-size - Font size for the small app bar subtitle text.\r\n * @cssprop --m3e-app-bar-small-subtitle-text-font-weight - Font weight for the small app bar subtitle text.\r\n * @cssprop --m3e-app-bar-small-subtitle-text-line-height - Line height for the small app bar subtitle text.\r\n * @cssprop --m3e-app-bar-small-subtitle-text-tracking - Letter spacing (tracking) for the small app bar subtitle text.\r\n * @cssprop --m3e-app-bar-small-heading-padding-left - Left padding for the small app bar heading.\r\n * @cssprop --m3e-app-bar-small-heading-padding-right - Right padding for the small app bar heading.\r\n * @cssprop --m3e-app-bar-medium-container-height - Height of the medium app bar container.\r\n * @cssprop --m3e-app-bar-medium-container-height-with-subtitle - Height of the medium app bar container with subtitle.\r\n * @cssprop --m3e-app-bar-medium-title-text-font-size - Font size for the medium app bar title text.\r\n * @cssprop --m3e-app-bar-medium-title-text-font-weight - Font weight for the medium app bar title text.\r\n * @cssprop --m3e-app-bar-medium-title-text-line-height - Line height for the medium app bar title text.\r\n * @cssprop --m3e-app-bar-medium-subtitle-text-tracking - Letter spacing (tracking) for the medium app bar title text.\r\n * @cssprop --m3e-app-bar-medium-subtitle-text-font-size - Font size for the medium app bar subtitle text.\r\n * @cssprop --m3e-app-bar-medium-subtitle-text-font-weight - Font weight for the medium app bar subtitle text.\r\n * @cssprop --m3e-app-bar-medium-subtitle-text-line-height - Line height for the medium app bar subtitle text.\r\n * @cssprop --m3e-app-bar-medium-subtitle-text-tracking - Letter spacing (tracking) for the medium app bar subtitle text.\r\n * @cssprop --m3e-app-bar-medium-heading-padding-left - Left padding for the medium app bar heading.\r\n * @cssprop --m3e-app-bar-medium-heading-padding-right - Right padding for the medium app bar heading.\r\n * @cssprop --m3e-app-bar-medium-padding-top - Top padding for the medium app bar.\r\n * @cssprop --m3e-app-bar-medium-padding-bottom - Bottom padding for the medium app bar.\r\n * @cssprop --m3e-app-bar-medium-title-max-lines - Maximum number of lines for the medium app bar title.\r\n * @cssprop --m3e-app-bar-medium-subtitle-max-lines - Maximum number of lines for the medium app bar subtitle.\r\n * @cssprop --m3e-app-bar-large-container-height - Height of the large app bar container.\r\n * @cssprop --m3e-app-bar-large-container-height-with-subtitle - Height of the large app bar container with subtitle.\r\n * @cssprop --m3e-app-bar-large-title-text-font-size - Font size for the large app bar title text.\r\n * @cssprop --m3e-app-bar-large-title-text-font-weight - Font weight for the large app bar title text.\r\n * @cssprop --m3e-app-bar-large-title-text-line-height - Line height for the large app bar title text.\r\n * @cssprop --m3e-app-bar-large-subtitle-text-tracking - Letter spacing (tracking) for the large app bar title text.\r\n * @cssprop --m3e-app-bar-large-subtitle-text-font-size - Font size for the large app bar subtitle text.\r\n * @cssprop --m3e-app-bar-large-subtitle-text-font-weight - Font weight for the large app bar subtitle text.\r\n * @cssprop --m3e-app-bar-large-subtitle-text-line-height - Line height for the large app bar subtitle text.\r\n * @cssprop --m3e-app-bar-large-subtitle-text-tracking - Letter spacing (tracking) for the large app bar subtitle text.\r\n * @cssprop --m3e-app-bar-large-heading-padding-left - Left padding for the large app bar heading.\r\n * @cssprop --m3e-app-bar-large-heading-padding-right - Right padding for the large app bar heading.\r\n * @cssprop --m3e-app-bar-large-padding-top - Top padding for the large app bar.\r\n * @cssprop --m3e-app-bar-large-padding-bottom - Bottom padding for the large app bar.\r\n * @cssprop --m3e-app-bar-large-title-max-lines - Maximum number of lines for the large app bar title.\r\n * @cssprop --m3e-app-bar-large-subtitle-max-lines - Maximum number of lines for the large app bar subtitle.\r\n */\r\n@customElement(\"m3e-app-bar\")\r\nexport class M3eAppBarElement extends HtmlFor(Role(LitElement, \"banner\")) {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = [AppBarStyle, AppBarSizeStyle];\r\n\r\n /** @private */ readonly #scrollHandler = (e: Event) => this._updateScroll(e);\r\n /** @private */ readonly #frameLoadHandler = () => this.#handleFrameLoad();\r\n /** @private */ @query(\".base\") private readonly _base?: HTMLElement;\r\n /** @private */ @query(\".leading-icon\") private readonly _leadingIcon?: HTMLElement;\r\n /** @private */ @query(\".trailing-icon\") private readonly _trailingIcon?: HTMLElement;\r\n\r\n /**\r\n * Whether the title and subtitle are centered.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) centered = false;\r\n\r\n /**\r\n * The size of the bar.\r\n * @default \"small\"\r\n */\r\n @property({ reflect: true }) size: AppBarSize = \"small\";\r\n\r\n /** @inheritdoc */\r\n override attach(control: HTMLElement): void {\r\n super.attach(control);\r\n\r\n if (control instanceof HTMLIFrameElement) {\r\n control.addEventListener(\"load\", this.#frameLoadHandler);\r\n this.#handleFrameLoad();\r\n } else {\r\n control.addEventListener(\"scroll\", this.#scrollHandler, { passive: true });\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override detach(): void {\r\n if (this.control instanceof HTMLIFrameElement) {\r\n this.control.removeEventListener(\"load\", this.#frameLoadHandler);\r\n this.control.contentDocument?.removeEventListener(\"scroll\", this.#scrollHandler);\r\n }\r\n if (this.control) {\r\n this.control.removeEventListener(\"scroll\", this.#scrollHandler);\r\n }\r\n super.detach();\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override updated(_changedProperties: PropertyValues<this>): void {\r\n super.updated(_changedProperties);\r\n\r\n if (_changedProperties.has(\"centered\") || _changedProperties.has(\"size\")) {\r\n if (this.centered && this.size === \"small\") {\r\n this.#computeCentered();\r\n } else {\r\n this.#clearCentered();\r\n }\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n switch (this.size) {\r\n case \"small\":\r\n return html`<div class=\"base\">\r\n <div class=\"leading-icon\">\r\n <slot name=\"leading-icon\" @slotchange=\"${this.#handleLeadingIconSlotChange}\"></slot>\r\n </div>\r\n <div class=\"heading\">\r\n <div class=\"label\">\r\n <div class=\"title\">\r\n <slot name=\"title\" @slotchange=\"${this.#handleTitleSlotChange}\"></slot>\r\n </div>\r\n <div class=\"subtitle\">\r\n <slot name=\"subtitle\" @slotchange=\"${this.#handleSubtitleSlotChange}\"></slot>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"trailing-icon\">\r\n <slot name=\"trailing-icon\" @slotchange=\"${this.#handleTrailingIconsSlotChange}\"></slot>\r\n </div>\r\n </div>`;\r\n\r\n default:\r\n return html`<div class=\"base\">\r\n <div class=\"heading\">\r\n <div class=\"leading-icon\">\r\n <slot name=\"leading-icon\" @slotchange=\"${this.#handleLeadingIconSlotChange}\"></slot>\r\n </div>\r\n <div class=\"spacer\"></div>\r\n <div class=\"trailing-icon\">\r\n <slot name=\"trailing-icon\" @slotchange=\"${this.#handleTrailingIconsSlotChange}\"></slot>\r\n </div>\r\n </div>\r\n <div class=\"spacer\"></div>\r\n <div class=\"label\">\r\n <div class=\"title\">\r\n <slot name=\"title\" @slotchange=\"${this.#handleTitleSlotChange}\"></slot>\r\n </div>\r\n <div class=\"subtitle\">\r\n <slot name=\"subtitle\" @slotchange=\"${this.#handleSubtitleSlotChange}\"></slot>\r\n </div>\r\n </div>\r\n </div>`;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleTitleSlotChange(e: Event): void {\r\n this._base?.classList.toggle(\"with-title\", hasAssignedNodes(<HTMLSlotElement>e.target));\r\n }\r\n\r\n /** @private */\r\n #handleSubtitleSlotChange(e: Event): void {\r\n this._base?.classList.toggle(\"with-subtitle\", hasAssignedNodes(<HTMLSlotElement>e.target));\r\n }\r\n\r\n /** @private */\r\n #handleLeadingIconSlotChange(e: Event): void {\r\n this._base?.classList.toggle(\"with-leading-icon\", hasAssignedNodes(<HTMLSlotElement>e.target));\r\n if (this.centered && this.size === \"small\") {\r\n setTimeout(() => this.#computeCentered(), 40);\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleTrailingIconsSlotChange(e: Event): void {\r\n this._base?.classList.toggle(\"with-trailing-icon\", hasAssignedNodes(<HTMLSlotElement>e.target));\r\n if (this.centered && this.size === \"small\") {\r\n setTimeout(() => this.#computeCentered(), 40);\r\n }\r\n }\r\n\r\n /** @private */\r\n #clearCentered() {\r\n this._base?.style.removeProperty(\"--_leading-icon-min-width\");\r\n this._base?.style.removeProperty(\"--_trailing-icon-min-width\");\r\n }\r\n\r\n /** @private */\r\n #computeCentered(): void {\r\n this.#clearCentered();\r\n\r\n const leadingWidth = this._leadingIcon?.getBoundingClientRect().width ?? 0;\r\n const trailingWidth = this._trailingIcon?.getBoundingClientRect().width ?? 0;\r\n\r\n if (leadingWidth < trailingWidth) {\r\n this._base?.style.setProperty(\"--_leading-icon-min-width\", `${trailingWidth}px`);\r\n } else if (leadingWidth > trailingWidth) {\r\n this._base?.style.setProperty(\"--_trailing-icon-min-width\", `${leadingWidth}px`);\r\n }\r\n }\r\n\r\n /** @private */\r\n @debounce(40)\r\n private _updateScroll(e: Event): void {\r\n let scrollTop = 0;\r\n\r\n if (this.control instanceof HTMLIFrameElement) {\r\n scrollTop = this.#getFrameScrollTop(this.control);\r\n } else if (e.target instanceof HTMLElement) {\r\n scrollTop = e.target.scrollTop;\r\n }\r\n\r\n this._base?.classList.toggle(\"on-scroll\", scrollTop > 0);\r\n }\r\n\r\n /** @private */\r\n #handleFrameLoad(): void {\r\n if (this.control instanceof HTMLIFrameElement) {\r\n this.control.contentDocument?.addEventListener(\"scroll\", this.#scrollHandler, { passive: true });\r\n this._base?.classList.toggle(\"on-scroll\", this.#getFrameScrollTop(this.control) > 0);\r\n }\r\n }\r\n\r\n /** @private */\r\n #getFrameScrollTop(frame: HTMLIFrameElement): number {\r\n // Both document element (<html>) and body are tested for scroll top, taking the maximum.\r\n return Math.max(\r\n frame.contentDocument?.documentElement?.scrollTop ?? 0,\r\n frame.contentDocument?.body?.scrollTop ?? 0,\r\n );\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-app-bar\": M3eAppBarElement;\r\n }\r\n}\r\n"],"names":["AppBarSizeToken","small","containerHeight","unsafeCSS","titleTextFontSize","DesignToken","typescale","standard","title","large","fontSize","titleTextFontWeight","fontWeight","titleTextLineHeight","lineHeight","titleTextTracking","tracking","subtitleTextFontSize","label","medium","subtitleTextFontWeight","subtitleTextLineHeight","subtitleTextTracking","headingPaddingLeft","headingPaddingRight","containerHeightWithSubtitle","headline","paddingTop","paddingBottom","titleMaxLines","subtitleMaxLines","display","appBarStyle","size","css","AppBarSizeStyle","AppBarToken","containerColor","color","surface","containerColorOnScroll","surfaceContainer","containerElevation","elevation","level0","containerElevationOnScroll","level1","titleTextColor","onSurface","subtitleTextColor","onSurfaceVariant","paddingLeft","paddingRight","AppBarStyle","motion","duration","medium1","easing","M3eAppBarElement","HtmlFor","Role","LitElement","constructor","_M3eAppBarElement_scrollHandler","set","e","_updateScroll","_M3eAppBarElement_frameLoadHandler","__classPrivateFieldGet","_M3eAppBarElement_instances","_M3eAppBarElement_handleFrameLoad","call","centered","attach","control","HTMLIFrameElement","addEventListener","passive","detach","removeEventListener","contentDocument","updated","_changedProperties","has","_M3eAppBarElement_computeCentered","_M3eAppBarElement_clearCentered","render","html","_M3eAppBarElement_handleLeadingIconSlotChange","_M3eAppBarElement_handleTitleSlotChange","_M3eAppBarElement_handleSubtitleSlotChange","_M3eAppBarElement_handleTrailingIconsSlotChange","scrollTop","_M3eAppBarElement_getFrameScrollTop","target","HTMLElement","_base","classList","toggle","hasAssignedNodes","setTimeout","style","removeProperty","leadingWidth","_leadingIcon","getBoundingClientRect","width","trailingWidth","_trailingIcon","setProperty","frame","Math","max","documentElement","body","styles","__decorate","query","prototype","property","type","Boolean","reflect","debounce","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"app-bar.js","sources":["../../src/app-bar/styles/AppBarSizeToken.ts","../../src/app-bar/styles/AppBarSizeStyle.ts","../../src/app-bar/styles/AppBarToken.ts","../../src/app-bar/styles/AppBarStyle.ts","../../src/app-bar/AppBarElement.ts"],"sourcesContent":["import { CSSResult, unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\nimport { AppBarSize } from \"../AppBarSize\";\r\n\r\n/** @private */\r\ntype _AppBarSizeToken = {\r\n containerHeight: CSSResult;\r\n containerHeightWithSubtitle?: CSSResult;\r\n paddingTop?: CSSResult;\r\n paddingBottom?: CSSResult;\r\n titleTextFontSize: CSSResult;\r\n titleTextFontWeight: CSSResult;\r\n titleTextLineHeight: CSSResult;\r\n titleTextTracking: CSSResult;\r\n subtitleTextFontSize: CSSResult;\r\n subtitleTextFontWeight: CSSResult;\r\n subtitleTextLineHeight: CSSResult;\r\n subtitleTextTracking: CSSResult;\r\n titleMaxLines?: CSSResult;\r\n subtitleMaxLines?: CSSResult;\r\n headingPaddingLeft: CSSResult;\r\n headingPaddingRight: CSSResult;\r\n};\r\n\r\n/**\r\n * Component design tokens that control the `M3eAppBarElement` for all size variants.\r\n * @internal\r\n */\r\nexport const AppBarSizeToken: Record<AppBarSize, _AppBarSizeToken> = {\r\n small: {\r\n containerHeight: unsafeCSS(`var(--m3e-app-bar-small-container-height, 4rem)`),\r\n titleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-small-title-text-font-size, ${DesignToken.typescale.standard.title.large.fontSize})`,\r\n ),\r\n titleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-small-title-text-font-weight, ${DesignToken.typescale.standard.title.large.fontWeight})`,\r\n ),\r\n titleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-small-title-text-line-height, ${DesignToken.typescale.standard.title.large.lineHeight})`,\r\n ),\r\n titleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-small-subtitle-text-tracking, ${DesignToken.typescale.standard.title.large.tracking})`,\r\n ),\r\n subtitleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-small-subtitle-text-font-size, ${DesignToken.typescale.standard.label.medium.fontSize})`,\r\n ),\r\n subtitleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-small-subtitle-text-font-weight, ${DesignToken.typescale.standard.label.medium.fontWeight})`,\r\n ),\r\n subtitleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-small-subtitle-text-line-height, ${DesignToken.typescale.standard.label.medium.lineHeight})`,\r\n ),\r\n subtitleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-small-subtitle-text-tracking, ${DesignToken.typescale.standard.label.medium.tracking})`,\r\n ),\r\n headingPaddingLeft: unsafeCSS(`var(--m3e-app-bar-small-heading-padding-left, 0.25rem)`),\r\n headingPaddingRight: unsafeCSS(`var(--m3e-app-bar-small-heading-padding-right, 0.25rem)`),\r\n },\r\n medium: {\r\n containerHeight: unsafeCSS(`var(--m3e-app-bar-medium-container-height, 7rem)`),\r\n containerHeightWithSubtitle: unsafeCSS(`var(--m3e-app-bar-medium-container-height-with-subtitle, 8.5rem)`),\r\n titleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-medium-title-text-font-size, ${DesignToken.typescale.standard.headline.medium.fontSize})`,\r\n ),\r\n titleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-medium-title-text-font-weight, ${DesignToken.typescale.standard.headline.medium.fontWeight})`,\r\n ),\r\n titleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-medium-title-text-line-height, ${DesignToken.typescale.standard.headline.medium.lineHeight})`,\r\n ),\r\n titleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-medium-subtitle-text-tracking, ${DesignToken.typescale.standard.headline.medium.tracking})`,\r\n ),\r\n subtitleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-medium-subtitle-text-font-size, ${DesignToken.typescale.standard.title.small.fontSize})`,\r\n ),\r\n subtitleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-medium-subtitle-text-font-weight, ${DesignToken.typescale.standard.title.small.fontWeight})`,\r\n ),\r\n subtitleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-medium-subtitle-text-line-height, ${DesignToken.typescale.standard.title.small.lineHeight})`,\r\n ),\r\n subtitleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-medium-subtitle-text-tracking, ${DesignToken.typescale.standard.title.small.tracking})`,\r\n ),\r\n headingPaddingLeft: unsafeCSS(`var(--m3e-app-bar-medium-heading-padding-left, 1rem)`),\r\n headingPaddingRight: unsafeCSS(`var(--m3e-app-bar-medium-heading-padding-right, 0.25rem)`),\r\n paddingTop: unsafeCSS(`var(--m3e-app-bar-medium-padding-top, 0.5rem)`),\r\n paddingBottom: unsafeCSS(`var(--m3e-app-bar-medium-padding-bottom, 0.75rem)`),\r\n titleMaxLines: unsafeCSS(`var(--m3e-app-bar-medium-title-max-lines, 2)`),\r\n subtitleMaxLines: unsafeCSS(`var(--m3e-app-bar-medium-subtitle-max-lines, 1)`),\r\n },\r\n large: {\r\n containerHeight: unsafeCSS(`var(--m3e-app-bar-large-container-height, 7.5rem)`),\r\n containerHeightWithSubtitle: unsafeCSS(`var(--m3e-app-bar-large-container-height-with-subtitle, 9.5rem)`),\r\n titleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-large-title-text-font-size, ${DesignToken.typescale.standard.display.small.fontSize})`,\r\n ),\r\n titleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-large-title-text-font-weight, ${DesignToken.typescale.standard.display.small.fontWeight})`,\r\n ),\r\n titleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-large-title-text-line-height, ${DesignToken.typescale.standard.display.small.lineHeight})`,\r\n ),\r\n titleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-large-subtitle-text-tracking, ${DesignToken.typescale.standard.display.small.tracking})`,\r\n ),\r\n subtitleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-large-subtitle-text-font-size, ${DesignToken.typescale.standard.title.medium.fontSize})`,\r\n ),\r\n subtitleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-large-subtitle-text-font-weight, ${DesignToken.typescale.standard.title.medium.fontWeight})`,\r\n ),\r\n subtitleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-large-subtitle-text-line-height, ${DesignToken.typescale.standard.title.medium.lineHeight})`,\r\n ),\r\n subtitleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-large-subtitle-text-tracking, ${DesignToken.typescale.standard.title.medium.tracking})`,\r\n ),\r\n headingPaddingLeft: unsafeCSS(`var(--m3e-app-bar-large-heading-padding-left, 1rem)`),\r\n headingPaddingRight: unsafeCSS(`var(--m3e-app-bar-large-heading-padding-right, 0.25rem)`),\r\n paddingTop: unsafeCSS(`var(--m3e-app-bar-large-padding-top, 0.5rem)`),\r\n paddingBottom: unsafeCSS(`var(--m3e-app-bar-large-padding-bottom, 0.75rem)`),\r\n titleMaxLines: unsafeCSS(`var(--m3e-app-bar-large-title-max-lines, 2)`),\r\n subtitleMaxLines: unsafeCSS(`var(--m3e-app-bar-large-subtitle-max-lines, 1)`),\r\n },\r\n} as const;\r\n","import { css, CSSResult, CSSResultGroup, unsafeCSS } from \"lit\";\r\n\r\nimport { AppBarSize } from \"../AppBarSize\";\r\nimport { AppBarSizeToken } from \"./AppBarSizeToken\";\r\n\r\n/** @private */\r\nfunction appBarStyle(size: AppBarSize): CSSResult {\r\n return css`\r\n :host([size=\"${unsafeCSS(size)}\"]) .base:not(.with-subtitle) {\r\n min-height: ${AppBarSizeToken[size].containerHeight};\r\n }\r\n :host([size=\"${unsafeCSS(size)}\"]) .base.with-subtitle {\r\n min-height: ${AppBarSizeToken[size].containerHeightWithSubtitle ?? AppBarSizeToken[size].containerHeight};\r\n }\r\n :host([size=\"${unsafeCSS(size)}\"]) .title {\r\n font-size: ${AppBarSizeToken[size].titleTextFontSize};\r\n font-weight: ${AppBarSizeToken[size].titleTextFontWeight};\r\n line-height: ${AppBarSizeToken[size].titleTextLineHeight};\r\n letter-spacing: ${AppBarSizeToken[size].titleTextTracking};\r\n }\r\n :host([size=\"${unsafeCSS(size)}\"]) .subtitle {\r\n font-size: ${AppBarSizeToken[size].subtitleTextFontSize};\r\n font-weight: ${AppBarSizeToken[size].subtitleTextFontWeight};\r\n line-height: ${AppBarSizeToken[size].subtitleTextLineHeight};\r\n letter-spacing: ${AppBarSizeToken[size].subtitleTextTracking};\r\n }\r\n :host(:not([centered])[size=\"${unsafeCSS(size)}\"]) .label {\r\n padding-inline-start: ${AppBarSizeToken[size].headingPaddingLeft};\r\n padding-inline-end: ${AppBarSizeToken[size].headingPaddingRight};\r\n }\r\n :host([centered][size=\"${unsafeCSS(size)}\"]) .label {\r\n padding-inline: ${AppBarSizeToken[size].headingPaddingLeft};\r\n }\r\n :host([size=\"${unsafeCSS(size)}\"]) .base {\r\n padding-block-start: ${AppBarSizeToken[size].paddingTop ?? unsafeCSS(\"unset\")};\r\n padding-block-end: ${AppBarSizeToken[size].paddingBottom ?? unsafeCSS(\"unset\")};\r\n }\r\n ${AppBarSizeToken[size].titleMaxLines\r\n ? css`\r\n :host([size=\"${unsafeCSS(size)}\"]) .title {\r\n display: -webkit-box;\r\n -webkit-line-clamp: ${AppBarSizeToken[size].titleMaxLines};\r\n -webkit-box-orient: vertical;\r\n overflow: hidden;\r\n line-clamp: ${AppBarSizeToken[size].titleMaxLines};\r\n }\r\n `\r\n : css``}\r\n ${AppBarSizeToken[size].subtitleMaxLines\r\n ? css`\r\n :host([size=\"${unsafeCSS(size)}\"]) .subtitle {\r\n display: -webkit-box;\r\n -webkit-line-clamp: ${AppBarSizeToken[size].subtitleMaxLines};\r\n -webkit-box-orient: vertical;\r\n overflow: hidden;\r\n line-clamp: ${AppBarSizeToken[size].subtitleMaxLines};\r\n }\r\n `\r\n : css``}\r\n `;\r\n}\r\n\r\n/**\r\n * Size variant styles for `M3eAppBarElement`.\r\n * @internal\r\n */\r\nexport const AppBarSizeStyle: CSSResultGroup = [appBarStyle(\"small\"), appBarStyle(\"medium\"), appBarStyle(\"large\")];\r\n","import { unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\n/**\r\n * Component design tokens that control `M3eAppBarElement`.\r\n * @internal\r\n */\r\nexport const AppBarToken = {\r\n containerColor: unsafeCSS(`var(--m3e-app-bar-container-color, ${DesignToken.color.surface})`),\r\n containerColorOnScroll: unsafeCSS(\r\n `var(--m3e-app-bar-container-color-on-scroll, ${DesignToken.color.surfaceContainer})`,\r\n ),\r\n containerElevation: unsafeCSS(`var(--m3e-app-bar-container-elevation, ${DesignToken.elevation.level0})`),\r\n containerElevationOnScroll: unsafeCSS(\r\n `var(--m3e-app-bar-container-elevation-on-scroll, ${DesignToken.elevation.level1})`,\r\n ),\r\n titleTextColor: unsafeCSS(`var(--m3e-app-bar-title-text-color, ${DesignToken.color.onSurface})`),\r\n subtitleTextColor: unsafeCSS(`var(--m3e-app-bar-subtitle-text-color, ${DesignToken.color.onSurfaceVariant})`),\r\n paddingLeft: unsafeCSS(`var(--m3e-app-bar-padding-left, 0.25rem)`),\r\n paddingRight: unsafeCSS(`var(--m3e-app-bar-padding-right, 0.25rem)`),\r\n} as const;\r\n","import { css, CSSResult, unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\nimport { AppBarToken } from \"./AppBarToken\";\r\n\r\n/**\r\n * Baseline styles for `M3eAppBarElement`.\r\n * @internal\r\n */\r\nexport const AppBarStyle: CSSResult = css`\r\n :host {\r\n display: block;\r\n flex: none;\r\n }\r\n :host([size=\"small\"]) .base,\r\n :host(:not([size=\"small\"]):not([centered])) .heading {\r\n padding-inline-start: ${AppBarToken.paddingLeft};\r\n padding-inline-end: ${AppBarToken.paddingRight};\r\n }\r\n .base {\r\n box-sizing: border-box;\r\n display: flex;\r\n transition: ${unsafeCSS(\r\n `background-color ${DesignToken.motion.duration.medium1} ${DesignToken.motion.easing.standard},\r\n box-shadow ${DesignToken.motion.duration.medium1} ${DesignToken.motion.easing.standard}`,\r\n )};\r\n }\r\n .base:not(.on-scroll) {\r\n background-color: ${AppBarToken.containerColor};\r\n box-shadow: ${AppBarToken.containerElevation};\r\n }\r\n .base.on-scroll {\r\n background-color: ${AppBarToken.containerColorOnScroll};\r\n box-shadow: ${AppBarToken.containerElevationOnScroll};\r\n }\r\n .leading-icon,\r\n .trailing-icon {\r\n display: flex;\r\n flex: none;\r\n align-items: center;\r\n }\r\n .leading-icon {\r\n min-width: var(--_leading-icon-min-width);\r\n }\r\n .trailing-icon {\r\n min-width: var(--_trailing-icon-min-width);\r\n }\r\n .heading {\r\n display: flex;\r\n align-items: center;\r\n }\r\n :host([size=\"small\"]) .heading {\r\n flex: 1 1 auto;\r\n }\r\n .spacer {\r\n flex: 1 1 auto;\r\n }\r\n .label {\r\n display: flex;\r\n flex-direction: column;\r\n flex: none;\r\n }\r\n .title {\r\n color: ${AppBarToken.titleTextColor};\r\n }\r\n .subtitle {\r\n color: ${AppBarToken.subtitleTextColor};\r\n }\r\n .base:not(.with-title) .title,\r\n .base:not(.with-subtitle) .subtitle,\r\n .base:not(.with-title):not(.with-subtitle) .label,\r\n .base:not(.with-trailing-icon) .trailing-icon {\r\n display: none;\r\n }\r\n :host([size=\"small\"]) .base {\r\n align-items: center;\r\n }\r\n :host([size=\"small\"]) .heading {\r\n min-width: 0;\r\n }\r\n :host([size=\"small\"]) .label {\r\n flex: 1 1 auto;\r\n min-width: 0;\r\n }\r\n :host([size=\"small\"]) .title,\r\n :host([size=\"small\"]) .subtitle {\r\n display: block;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n :host(:not([size=\"small\"])) .base {\r\n flex-direction: column;\r\n }\r\n :host([centered]) .title,\r\n :host([centered]) .subtitle {\r\n text-align: center;\r\n }\r\n @media (prefers-reduced-motion) {\r\n .base {\r\n transition: none;\r\n }\r\n }\r\n @media (forced-colors: active) {\r\n .base {\r\n transition: none;\r\n }\r\n .base:not(.on-scroll),\r\n .base.on-scroll {\r\n background-color: Canvas;\r\n box-shadow: unset;\r\n }\r\n .title {\r\n color: CanvasText;\r\n }\r\n .subtitle {\r\n color: FieldText;\r\n }\r\n }\r\n`;\r\n","import { CSSResultGroup, html, LitElement, PropertyValues } from \"lit\";\r\nimport { property, query } from \"lit/decorators.js\";\r\n\r\nimport { customElement, debounce, hasAssignedNodes, HtmlFor, Role } from \"@m3e/web/core\";\r\n\r\nimport { AppBarSize } from \"./AppBarSize\";\r\n\r\nimport { AppBarSizeStyle, AppBarStyle } from \"./styles\";\r\n\r\n/**\r\n * A bar, placed a the top of a screen, used to help users navigate through an application.\r\n *\r\n * @description\r\n * The `m3e-app-bar` component is a prominent user interface component that provides consistent\r\n * access to key actions, navigation, and contextual information at the top of an application screen.\r\n * Designed according to Material 3 principles, it organizes content with clear hierarchy, supports\r\n * dynamic color, elevation, and shape, and adapts to scrolling behavior.\r\n *\r\n * @example\r\n * ```html\r\n * <m3e-app-bar size=\"medium\">\r\n * <m3e-icon-button slot=\"leading-icon\" aria-label=\"Back\">\r\n * <m3e-icon name=\"arrow_back\"></m3e-icon>\r\n * </m3e-icon-button>\r\n * <span slot=\"title\">Top 10 hiking trails</span>\r\n * <span slot=\"subtitle\">Discover popular trails</span>\r\n * <m3e-icon-button slot=\"trailing-icon\" aria-label=\"Bookmark\" variant=\"tonal\">\r\n * <m3e-icon name=\"bookmark\" filled></m3e-icon>\r\n * </m3e-icon-button>\r\n * <m3e-app-bar>\r\n * ```\r\n * @example\r\n * The next example illustrates how to attach an app bar to a parenting scroll container\r\n * to produce elevation on scroll. In this example, the `for` attribute is used to attach a\r\n * sticky positioned `m3e-app-bar` to a parenting container styled to overflow vertically.\r\n * When scrolled, the app bar will automatically transition to an elevated state.\r\n * ```html\r\n * <div style=\"overflow-y: auto; height: 300px\" id=\"scrollContainer\">\r\n * <m3e-app-bar for=\"scrollContainer\" style=\"position: sticky; top: 0\">\r\n * <span slot=\"title\">Title</span>\r\n * </m3e-app-bar>\r\n * <div style=\"height: 400px; display: flex; align-items: center; justify-content: center\">\r\n * I am scrolling content\r\n * </div>\r\n * </div>\r\n * ```\r\n *\r\n * @tag m3e-app-bar\r\n *\r\n * @slot leading - Renders content positioned at the start of the bar.\r\n * @slot subtitle - Renders the subtitle of the bar.\r\n * @slot title - Renders the title of the bar.\r\n * @slot trailing - Renders one or more action buttons aligned to the end of the bar.\r\n * @slot leading-icon - Deprecated: use the `leading` slot.\r\n * @slot trailing-icon - Deprecated: use the `trailing` slot.\r\n *\r\n * @attr centered - Whether the title and subtitle are centered.\r\n * @attr for - The identifier of the interactive control to which this element is attached.\r\n * @attr size - The size of the bar.\r\n *\r\n * @cssprop --m3e-app-bar-container-color - Background color of the app bar container.\r\n * @cssprop --m3e-app-bar-container-color-on-scroll - Background color of the app bar container when scrolled.\r\n * @cssprop --m3e-app-bar-container-elevation - Elevation (shadow) of the app bar container.\r\n * @cssprop --m3e-app-bar-container-elevation-on-scroll - Elevation (shadow) of the app bar container when scrolled.\r\n * @cssprop --m3e-app-bar-title-text-color - Color of the app bar title text.\r\n * @cssprop --m3e-app-bar-subtitle-text-color - Color of the app bar subtitle text.\r\n * @cssprop --m3e-app-bar-padding-left - Left padding for the app bar container.\r\n * @cssprop --m3e-app-bar-padding-right - Right padding for the app bar container.\r\n * @cssprop --m3e-app-bar-small-container-height - Height of the small app bar container.\r\n * @cssprop --m3e-app-bar-small-title-text-font-size - Font size for the small app bar title text.\r\n * @cssprop --m3e-app-bar-small-title-text-font-weight - Font weight for the small app bar title text.\r\n * @cssprop --m3e-app-bar-small-title-text-line-height - Line height for the small app bar title text.\r\n * @cssprop --m3e-app-bar-small-subtitle-text-tracking - Letter spacing (tracking) for the small app bar title text.\r\n * @cssprop --m3e-app-bar-small-subtitle-text-font-size - Font size for the small app bar subtitle text.\r\n * @cssprop --m3e-app-bar-small-subtitle-text-font-weight - Font weight for the small app bar subtitle text.\r\n * @cssprop --m3e-app-bar-small-subtitle-text-line-height - Line height for the small app bar subtitle text.\r\n * @cssprop --m3e-app-bar-small-subtitle-text-tracking - Letter spacing (tracking) for the small app bar subtitle text.\r\n * @cssprop --m3e-app-bar-small-heading-padding-left - Left padding for the small app bar heading.\r\n * @cssprop --m3e-app-bar-small-heading-padding-right - Right padding for the small app bar heading.\r\n * @cssprop --m3e-app-bar-medium-container-height - Height of the medium app bar container.\r\n * @cssprop --m3e-app-bar-medium-container-height-with-subtitle - Height of the medium app bar container with subtitle.\r\n * @cssprop --m3e-app-bar-medium-title-text-font-size - Font size for the medium app bar title text.\r\n * @cssprop --m3e-app-bar-medium-title-text-font-weight - Font weight for the medium app bar title text.\r\n * @cssprop --m3e-app-bar-medium-title-text-line-height - Line height for the medium app bar title text.\r\n * @cssprop --m3e-app-bar-medium-subtitle-text-tracking - Letter spacing (tracking) for the medium app bar title text.\r\n * @cssprop --m3e-app-bar-medium-subtitle-text-font-size - Font size for the medium app bar subtitle text.\r\n * @cssprop --m3e-app-bar-medium-subtitle-text-font-weight - Font weight for the medium app bar subtitle text.\r\n * @cssprop --m3e-app-bar-medium-subtitle-text-line-height - Line height for the medium app bar subtitle text.\r\n * @cssprop --m3e-app-bar-medium-subtitle-text-tracking - Letter spacing (tracking) for the medium app bar subtitle text.\r\n * @cssprop --m3e-app-bar-medium-heading-padding-left - Left padding for the medium app bar heading.\r\n * @cssprop --m3e-app-bar-medium-heading-padding-right - Right padding for the medium app bar heading.\r\n * @cssprop --m3e-app-bar-medium-padding-top - Top padding for the medium app bar.\r\n * @cssprop --m3e-app-bar-medium-padding-bottom - Bottom padding for the medium app bar.\r\n * @cssprop --m3e-app-bar-medium-title-max-lines - Maximum number of lines for the medium app bar title.\r\n * @cssprop --m3e-app-bar-medium-subtitle-max-lines - Maximum number of lines for the medium app bar subtitle.\r\n * @cssprop --m3e-app-bar-large-container-height - Height of the large app bar container.\r\n * @cssprop --m3e-app-bar-large-container-height-with-subtitle - Height of the large app bar container with subtitle.\r\n * @cssprop --m3e-app-bar-large-title-text-font-size - Font size for the large app bar title text.\r\n * @cssprop --m3e-app-bar-large-title-text-font-weight - Font weight for the large app bar title text.\r\n * @cssprop --m3e-app-bar-large-title-text-line-height - Line height for the large app bar title text.\r\n * @cssprop --m3e-app-bar-large-subtitle-text-tracking - Letter spacing (tracking) for the large app bar title text.\r\n * @cssprop --m3e-app-bar-large-subtitle-text-font-size - Font size for the large app bar subtitle text.\r\n * @cssprop --m3e-app-bar-large-subtitle-text-font-weight - Font weight for the large app bar subtitle text.\r\n * @cssprop --m3e-app-bar-large-subtitle-text-line-height - Line height for the large app bar subtitle text.\r\n * @cssprop --m3e-app-bar-large-subtitle-text-tracking - Letter spacing (tracking) for the large app bar subtitle text.\r\n * @cssprop --m3e-app-bar-large-heading-padding-left - Left padding for the large app bar heading.\r\n * @cssprop --m3e-app-bar-large-heading-padding-right - Right padding for the large app bar heading.\r\n * @cssprop --m3e-app-bar-large-padding-top - Top padding for the large app bar.\r\n * @cssprop --m3e-app-bar-large-padding-bottom - Bottom padding for the large app bar.\r\n * @cssprop --m3e-app-bar-large-title-max-lines - Maximum number of lines for the large app bar title.\r\n * @cssprop --m3e-app-bar-large-subtitle-max-lines - Maximum number of lines for the large app bar subtitle.\r\n */\r\n@customElement(\"m3e-app-bar\")\r\nexport class M3eAppBarElement extends HtmlFor(Role(LitElement, \"banner\")) {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = [AppBarStyle, AppBarSizeStyle];\r\n\r\n /** @private */ readonly #scrollHandler = (e: Event) => this._updateScroll(e);\r\n /** @private */ readonly #frameLoadHandler = () => this.#handleFrameLoad();\r\n /** @private */ @query(\".base\") private readonly _base?: HTMLElement;\r\n /** @private */ @query(\".leading-icon\") private readonly _leadingIcon?: HTMLElement;\r\n /** @private */ @query(\".trailing-icon\") private readonly _trailingIcon?: HTMLElement;\r\n\r\n /**\r\n * Whether the title and subtitle are centered.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) centered = false;\r\n\r\n /**\r\n * The size of the bar.\r\n * @default \"small\"\r\n */\r\n @property({ reflect: true }) size: AppBarSize = \"small\";\r\n\r\n /** @inheritdoc */\r\n override attach(control: HTMLElement): void {\r\n super.attach(control);\r\n\r\n if (control instanceof HTMLIFrameElement) {\r\n control.addEventListener(\"load\", this.#frameLoadHandler);\r\n this.#handleFrameLoad();\r\n } else {\r\n control.addEventListener(\"scroll\", this.#scrollHandler, { passive: true });\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override detach(): void {\r\n if (this.control instanceof HTMLIFrameElement) {\r\n this.control.removeEventListener(\"load\", this.#frameLoadHandler);\r\n this.control.contentDocument?.removeEventListener(\"scroll\", this.#scrollHandler);\r\n }\r\n if (this.control) {\r\n this.control.removeEventListener(\"scroll\", this.#scrollHandler);\r\n }\r\n super.detach();\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override updated(_changedProperties: PropertyValues<this>): void {\r\n super.updated(_changedProperties);\r\n\r\n if (_changedProperties.has(\"centered\") || _changedProperties.has(\"size\")) {\r\n if (this.centered && this.size === \"small\") {\r\n this.#computeCentered();\r\n } else {\r\n this.#clearCentered();\r\n }\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n switch (this.size) {\r\n case \"small\":\r\n return html`<div class=\"base\">\r\n <div class=\"leading-icon\">\r\n <slot name=\"leading\" @slotchange=\"${this.#handleLeadingIconSlotChange}\">\r\n <slot name=\"leading-icon\" @slotchange=\"${this.#handleDeprecatedSlotChange}\"></slot>\r\n </slot>\r\n </div>\r\n <div class=\"heading\">\r\n <div class=\"label\">\r\n <div class=\"title\">\r\n <slot name=\"title\" @slotchange=\"${this.#handleTitleSlotChange}\"></slot>\r\n </div>\r\n <div class=\"subtitle\">\r\n <slot name=\"subtitle\" @slotchange=\"${this.#handleSubtitleSlotChange}\"></slot>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"trailing-icon\">\r\n <slot name=\"trailing\" @slotchange=\"${this.#handleTrailingIconsSlotChange}\">\r\n <slot name=\"trailing-icon\" @slotchange=\"${this.#handleDeprecatedSlotChange}\"></slot>\r\n </slot>\r\n </div>\r\n </div>`;\r\n\r\n default:\r\n return html`<div class=\"base\">\r\n <div class=\"heading\">\r\n <div class=\"leading-icon\">\r\n <slot name=\"leading\" @slotchange=\"${this.#handleLeadingIconSlotChange}\">\r\n <slot name=\"leading-icon\" @slotchange=\"${this.#handleDeprecatedSlotChange}\"></slot>\r\n </slot>\r\n </div>\r\n <div class=\"spacer\"></div>\r\n <div class=\"trailing-icon\">\r\n <slot name=\"trailing\" @slotchange=\"${this.#handleTrailingIconsSlotChange}\">\r\n <slot name=\"trailing-icon\" @slotchange=\"${this.#handleDeprecatedSlotChange}\"></slot>\r\n </slot>\r\n </div>\r\n </div>\r\n <div class=\"spacer\"></div>\r\n <div class=\"label\">\r\n <div class=\"title\">\r\n <slot name=\"title\" @slotchange=\"${this.#handleTitleSlotChange}\"></slot>\r\n </div>\r\n <div class=\"subtitle\">\r\n <slot name=\"subtitle\" @slotchange=\"${this.#handleSubtitleSlotChange}\"></slot>\r\n </div>\r\n </div>\r\n </div>`;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleTitleSlotChange(e: Event): void {\r\n this._base?.classList.toggle(\"with-title\", hasAssignedNodes(<HTMLSlotElement>e.target));\r\n }\r\n\r\n /** @private */\r\n #handleSubtitleSlotChange(e: Event): void {\r\n this._base?.classList.toggle(\"with-subtitle\", hasAssignedNodes(<HTMLSlotElement>e.target));\r\n }\r\n\r\n /** @private */\r\n #handleLeadingIconSlotChange(e: Event): void {\r\n this._base?.classList.toggle(\"with-leading-icon\", hasAssignedNodes(<HTMLSlotElement>e.target));\r\n if (this.centered && this.size === \"small\") {\r\n setTimeout(() => this.#computeCentered(), 40);\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleTrailingIconsSlotChange(e: Event): void {\r\n this._base?.classList.toggle(\"with-trailing-icon\", hasAssignedNodes(<HTMLSlotElement>e.target));\r\n if (this.centered && this.size === \"small\") {\r\n setTimeout(() => this.#computeCentered(), 40);\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleDeprecatedSlotChange(e: Event): void {\r\n const deprecatedSlot = (e.target as HTMLSlotElement).name;\r\n const useSlot = deprecatedSlot.replace(\"-icon\", \"\");\r\n\r\n console.warn(\r\n `[m3e-app-bar] Slot \"${deprecatedSlot}\" is deprecated and will be removed in a future release. Use \"${useSlot}\" instead.`,\r\n );\r\n }\r\n\r\n /** @private */\r\n #clearCentered() {\r\n this._base?.style.removeProperty(\"--_leading-icon-min-width\");\r\n this._base?.style.removeProperty(\"--_trailing-icon-min-width\");\r\n }\r\n\r\n /** @private */\r\n #computeCentered(): void {\r\n this.#clearCentered();\r\n\r\n const leadingWidth = this._leadingIcon?.getBoundingClientRect().width ?? 0;\r\n const trailingWidth = this._trailingIcon?.getBoundingClientRect().width ?? 0;\r\n\r\n if (leadingWidth < trailingWidth) {\r\n this._base?.style.setProperty(\"--_leading-icon-min-width\", `${trailingWidth}px`);\r\n } else if (leadingWidth > trailingWidth) {\r\n this._base?.style.setProperty(\"--_trailing-icon-min-width\", `${leadingWidth}px`);\r\n }\r\n }\r\n\r\n /** @private */\r\n @debounce(40)\r\n private _updateScroll(e: Event): void {\r\n let scrollTop = 0;\r\n\r\n if (this.control instanceof HTMLIFrameElement) {\r\n scrollTop = this.#getFrameScrollTop(this.control);\r\n } else if (e.target instanceof HTMLElement) {\r\n scrollTop = e.target.scrollTop;\r\n }\r\n\r\n this._base?.classList.toggle(\"on-scroll\", scrollTop > 0);\r\n }\r\n\r\n /** @private */\r\n #handleFrameLoad(): void {\r\n if (this.control instanceof HTMLIFrameElement) {\r\n this.control.contentDocument?.addEventListener(\"scroll\", this.#scrollHandler, { passive: true });\r\n this._base?.classList.toggle(\"on-scroll\", this.#getFrameScrollTop(this.control) > 0);\r\n }\r\n }\r\n\r\n /** @private */\r\n #getFrameScrollTop(frame: HTMLIFrameElement): number {\r\n // Both document element (<html>) and body are tested for scroll top, taking the maximum.\r\n return Math.max(\r\n frame.contentDocument?.documentElement?.scrollTop ?? 0,\r\n frame.contentDocument?.body?.scrollTop ?? 0,\r\n );\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-app-bar\": M3eAppBarElement;\r\n }\r\n}\r\n"],"names":["AppBarSizeToken","small","containerHeight","unsafeCSS","titleTextFontSize","DesignToken","typescale","standard","title","large","fontSize","titleTextFontWeight","fontWeight","titleTextLineHeight","lineHeight","titleTextTracking","tracking","subtitleTextFontSize","label","medium","subtitleTextFontWeight","subtitleTextLineHeight","subtitleTextTracking","headingPaddingLeft","headingPaddingRight","containerHeightWithSubtitle","headline","paddingTop","paddingBottom","titleMaxLines","subtitleMaxLines","display","appBarStyle","size","css","AppBarSizeStyle","AppBarToken","containerColor","color","surface","containerColorOnScroll","surfaceContainer","containerElevation","elevation","level0","containerElevationOnScroll","level1","titleTextColor","onSurface","subtitleTextColor","onSurfaceVariant","paddingLeft","paddingRight","AppBarStyle","motion","duration","medium1","easing","M3eAppBarElement","HtmlFor","Role","LitElement","constructor","_M3eAppBarElement_scrollHandler","set","e","_updateScroll","_M3eAppBarElement_frameLoadHandler","__classPrivateFieldGet","_M3eAppBarElement_instances","_M3eAppBarElement_handleFrameLoad","call","centered","attach","control","HTMLIFrameElement","addEventListener","passive","detach","removeEventListener","contentDocument","updated","_changedProperties","has","_M3eAppBarElement_computeCentered","_M3eAppBarElement_clearCentered","render","html","_M3eAppBarElement_handleLeadingIconSlotChange","_M3eAppBarElement_handleDeprecatedSlotChange","_M3eAppBarElement_handleTitleSlotChange","_M3eAppBarElement_handleSubtitleSlotChange","_M3eAppBarElement_handleTrailingIconsSlotChange","scrollTop","_M3eAppBarElement_getFrameScrollTop","target","HTMLElement","_base","classList","toggle","hasAssignedNodes","setTimeout","deprecatedSlot","name","useSlot","replace","console","warn","style","removeProperty","leadingWidth","_leadingIcon","getBoundingClientRect","width","trailingWidth","_trailingIcon","setProperty","frame","Math","max","documentElement","body","styles","__decorate","query","prototype","property","type","Boolean","reflect","debounce","customElement"],"mappings":"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"}
@@ -3,5 +3,5 @@
3
3
  * Copyright (c) 2025 matraic
4
4
  * See LICENSE file in the project root for full license text.
5
5
  */
6
- import{__classPrivateFieldGet as t,__decorate as e}from"tslib";import{unsafeCSS as i,css as a,LitElement as l,html as n}from"lit";import{query as s,property as o}from"lit/decorators.js";import{DesignToken as r,HtmlFor as d,Role as m,hasAssignedNodes as c,debounce as h,customElement as g}from"@m3e/web/core";const p={small:{containerHeight:i("var(--m3e-app-bar-small-container-height, 4rem)"),titleTextFontSize:i(`var(--m3e-app-bar-small-title-text-font-size, ${r.typescale.standard.title.large.fontSize})`),titleTextFontWeight:i(`var(--m3e-app-bar-small-title-text-font-weight, ${r.typescale.standard.title.large.fontWeight})`),titleTextLineHeight:i(`var(--m3e-app-bar-small-title-text-line-height, ${r.typescale.standard.title.large.lineHeight})`),titleTextTracking:i(`var(--m3e-app-bar-small-subtitle-text-tracking, ${r.typescale.standard.title.large.tracking})`),subtitleTextFontSize:i(`var(--m3e-app-bar-small-subtitle-text-font-size, ${r.typescale.standard.label.medium.fontSize})`),subtitleTextFontWeight:i(`var(--m3e-app-bar-small-subtitle-text-font-weight, ${r.typescale.standard.label.medium.fontWeight})`),subtitleTextLineHeight:i(`var(--m3e-app-bar-small-subtitle-text-line-height, ${r.typescale.standard.label.medium.lineHeight})`),subtitleTextTracking:i(`var(--m3e-app-bar-small-subtitle-text-tracking, ${r.typescale.standard.label.medium.tracking})`),headingPaddingLeft:i("var(--m3e-app-bar-small-heading-padding-left, 0.25rem)"),headingPaddingRight:i("var(--m3e-app-bar-small-heading-padding-right, 0.25rem)")},medium:{containerHeight:i("var(--m3e-app-bar-medium-container-height, 7rem)"),containerHeightWithSubtitle:i("var(--m3e-app-bar-medium-container-height-with-subtitle, 8.5rem)"),titleTextFontSize:i(`var(--m3e-app-bar-medium-title-text-font-size, ${r.typescale.standard.headline.medium.fontSize})`),titleTextFontWeight:i(`var(--m3e-app-bar-medium-title-text-font-weight, ${r.typescale.standard.headline.medium.fontWeight})`),titleTextLineHeight:i(`var(--m3e-app-bar-medium-title-text-line-height, ${r.typescale.standard.headline.medium.lineHeight})`),titleTextTracking:i(`var(--m3e-app-bar-medium-subtitle-text-tracking, ${r.typescale.standard.headline.medium.tracking})`),subtitleTextFontSize:i(`var(--m3e-app-bar-medium-subtitle-text-font-size, ${r.typescale.standard.title.small.fontSize})`),subtitleTextFontWeight:i(`var(--m3e-app-bar-medium-subtitle-text-font-weight, ${r.typescale.standard.title.small.fontWeight})`),subtitleTextLineHeight:i(`var(--m3e-app-bar-medium-subtitle-text-line-height, ${r.typescale.standard.title.small.lineHeight})`),subtitleTextTracking:i(`var(--m3e-app-bar-medium-subtitle-text-tracking, ${r.typescale.standard.title.small.tracking})`),headingPaddingLeft:i("var(--m3e-app-bar-medium-heading-padding-left, 1rem)"),headingPaddingRight:i("var(--m3e-app-bar-medium-heading-padding-right, 0.25rem)"),paddingTop:i("var(--m3e-app-bar-medium-padding-top, 0.5rem)"),paddingBottom:i("var(--m3e-app-bar-medium-padding-bottom, 0.75rem)"),titleMaxLines:i("var(--m3e-app-bar-medium-title-max-lines, 2)"),subtitleMaxLines:i("var(--m3e-app-bar-medium-subtitle-max-lines, 1)")},large:{containerHeight:i("var(--m3e-app-bar-large-container-height, 7.5rem)"),containerHeightWithSubtitle:i("var(--m3e-app-bar-large-container-height-with-subtitle, 9.5rem)"),titleTextFontSize:i(`var(--m3e-app-bar-large-title-text-font-size, ${r.typescale.standard.display.small.fontSize})`),titleTextFontWeight:i(`var(--m3e-app-bar-large-title-text-font-weight, ${r.typescale.standard.display.small.fontWeight})`),titleTextLineHeight:i(`var(--m3e-app-bar-large-title-text-line-height, ${r.typescale.standard.display.small.lineHeight})`),titleTextTracking:i(`var(--m3e-app-bar-large-subtitle-text-tracking, ${r.typescale.standard.display.small.tracking})`),subtitleTextFontSize:i(`var(--m3e-app-bar-large-subtitle-text-font-size, ${r.typescale.standard.title.medium.fontSize})`),subtitleTextFontWeight:i(`var(--m3e-app-bar-large-subtitle-text-font-weight, ${r.typescale.standard.title.medium.fontWeight})`),subtitleTextLineHeight:i(`var(--m3e-app-bar-large-subtitle-text-line-height, ${r.typescale.standard.title.medium.lineHeight})`),subtitleTextTracking:i(`var(--m3e-app-bar-large-subtitle-text-tracking, ${r.typescale.standard.title.medium.tracking})`),headingPaddingLeft:i("var(--m3e-app-bar-large-heading-padding-left, 1rem)"),headingPaddingRight:i("var(--m3e-app-bar-large-heading-padding-right, 0.25rem)"),paddingTop:i("var(--m3e-app-bar-large-padding-top, 0.5rem)"),paddingBottom:i("var(--m3e-app-bar-large-padding-bottom, 0.75rem)"),titleMaxLines:i("var(--m3e-app-bar-large-title-max-lines, 2)"),subtitleMaxLines:i("var(--m3e-app-bar-large-subtitle-max-lines, 1)")}};function b(t){return a`:host([size="${i(t)}"]) .base:not(.with-subtitle) { min-height: ${p[t].containerHeight}; } :host([size="${i(t)}"]) .base.with-subtitle { min-height: ${p[t].containerHeightWithSubtitle??p[t].containerHeight}; } :host([size="${i(t)}"]) .title { font-size: ${p[t].titleTextFontSize}; font-weight: ${p[t].titleTextFontWeight}; line-height: ${p[t].titleTextLineHeight}; letter-spacing: ${p[t].titleTextTracking}; } :host([size="${i(t)}"]) .subtitle { font-size: ${p[t].subtitleTextFontSize}; font-weight: ${p[t].subtitleTextFontWeight}; line-height: ${p[t].subtitleTextLineHeight}; letter-spacing: ${p[t].subtitleTextTracking}; } :host(:not([centered])[size="${i(t)}"]) .label { padding-inline-start: ${p[t].headingPaddingLeft}; padding-inline-end: ${p[t].headingPaddingRight}; } :host([centered][size="${i(t)}"]) .label { padding-inline: ${p[t].headingPaddingLeft}; } :host([size="${i(t)}"]) .base { padding-block-start: ${p[t].paddingTop??i("unset")}; padding-block-end: ${p[t].paddingBottom??i("unset")}; } ${p[t].titleMaxLines?a`:host([size="${i(t)}"]) .title { display: -webkit-box; -webkit-line-clamp: ${p[t].titleMaxLines}; -webkit-box-orient: vertical; overflow: hidden; line-clamp: ${p[t].titleMaxLines}; }`:a``} ${p[t].subtitleMaxLines?a`:host([size="${i(t)}"]) .subtitle { display: -webkit-box; -webkit-line-clamp: ${p[t].subtitleMaxLines}; -webkit-box-orient: vertical; overflow: hidden; line-clamp: ${p[t].subtitleMaxLines}; }`:a``}`}const u=[b("small"),b("medium"),b("large")],v=i(`var(--m3e-app-bar-container-color, ${r.color.surface})`),x=i(`var(--m3e-app-bar-container-color-on-scroll, ${r.color.surfaceContainer})`),f=i(`var(--m3e-app-bar-container-elevation, ${r.elevation.level0})`),$=i(`var(--m3e-app-bar-container-elevation-on-scroll, ${r.elevation.level1})`),T=i(`var(--m3e-app-bar-title-text-color, ${r.color.onSurface})`),y=i(`var(--m3e-app-bar-subtitle-text-color, ${r.color.onSurfaceVariant})`),w=i("var(--m3e-app-bar-padding-left, 0.25rem)"),z=i("var(--m3e-app-bar-padding-right, 0.25rem)"),L=a`:host { display: block; flex: none; } :host([size="small"]) .base, :host(:not([size="small"]):not([centered])) .heading { padding-inline-start: ${w}; padding-inline-end: ${z}; } .base { box-sizing: border-box; display: flex; transition: ${i(`background-color ${r.motion.duration.medium1} ${r.motion.easing.standard},\n box-shadow ${r.motion.duration.medium1} ${r.motion.easing.standard}`)}; } .base:not(.on-scroll) { background-color: ${v}; box-shadow: ${f}; } .base.on-scroll { background-color: ${x}; box-shadow: ${$}; } .leading-icon, .trailing-icon { display: flex; flex: none; align-items: center; } .leading-icon { min-width: var(--_leading-icon-min-width); } .trailing-icon { min-width: var(--_trailing-icon-min-width); } .heading { display: flex; align-items: center; } :host([size="small"]) .heading { flex: 1 1 auto; } .spacer { flex: 1 1 auto; } .label { display: flex; flex-direction: column; flex: none; } .title { color: ${T}; } .subtitle { color: ${y}; } .base:not(.with-title) .title, .base:not(.with-subtitle) .subtitle, .base:not(.with-title):not(.with-subtitle) .label, .base:not(.with-trailing-icon) .trailing-icon { display: none; } :host([size="small"]) .base { align-items: center; } :host([size="small"]) .heading { min-width: 0; } :host([size="small"]) .label { flex: 1 1 auto; min-width: 0; } :host([size="small"]) .title, :host([size="small"]) .subtitle { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } :host(:not([size="small"])) .base { flex-direction: column; } :host([centered]) .title, :host([centered]) .subtitle { text-align: center; } @media (prefers-reduced-motion) { .base { transition: none; } } @media (forced-colors: active) { .base { transition: none; } .base:not(.on-scroll), .base.on-scroll { background-color: Canvas; box-shadow: unset; } .title { color: CanvasText; } .subtitle { color: FieldText; } }`;var k,H,_,S,F,W,M,P,E,I,B;let R=class extends(d(m(l,"banner"))){constructor(){super(...arguments),k.add(this),H.set(this,t=>this._updateScroll(t)),_.set(this,()=>t(this,k,"m",I).call(this)),this.centered=!1,this.size="small"}attach(e){super.attach(e),e instanceof HTMLIFrameElement?(e.addEventListener("load",t(this,_,"f")),t(this,k,"m",I).call(this)):e.addEventListener("scroll",t(this,H,"f"),{passive:!0})}detach(){this.control instanceof HTMLIFrameElement&&(this.control.removeEventListener("load",t(this,_,"f")),this.control.contentDocument?.removeEventListener("scroll",t(this,H,"f"))),this.control&&this.control.removeEventListener("scroll",t(this,H,"f")),super.detach()}updated(e){super.updated(e),(e.has("centered")||e.has("size"))&&(this.centered&&"small"===this.size?t(this,k,"m",E).call(this):t(this,k,"m",P).call(this))}render(){return"small"===this.size?n`<div class="base"><div class="leading-icon"><slot name="leading-icon" @slotchange="${t(this,k,"m",W)}"></slot></div><div class="heading"><div class="label"><div class="title"><slot name="title" @slotchange="${t(this,k,"m",S)}"></slot></div><div class="subtitle"><slot name="subtitle" @slotchange="${t(this,k,"m",F)}"></slot></div></div></div><div class="trailing-icon"><slot name="trailing-icon" @slotchange="${t(this,k,"m",M)}"></slot></div></div>`:n`<div class="base"><div class="heading"><div class="leading-icon"><slot name="leading-icon" @slotchange="${t(this,k,"m",W)}"></slot></div><div class="spacer"></div><div class="trailing-icon"><slot name="trailing-icon" @slotchange="${t(this,k,"m",M)}"></slot></div></div><div class="spacer"></div><div class="label"><div class="title"><slot name="title" @slotchange="${t(this,k,"m",S)}"></slot></div><div class="subtitle"><slot name="subtitle" @slotchange="${t(this,k,"m",F)}"></slot></div></div></div>`}_updateScroll(e){let i=0;this.control instanceof HTMLIFrameElement?i=t(this,k,"m",B).call(this,this.control):e.target instanceof HTMLElement&&(i=e.target.scrollTop),this._base?.classList.toggle("on-scroll",i>0)}};H=new WeakMap,_=new WeakMap,k=new WeakSet,S=function(t){this._base?.classList.toggle("with-title",c(t.target))},F=function(t){this._base?.classList.toggle("with-subtitle",c(t.target))},W=function(e){this._base?.classList.toggle("with-leading-icon",c(e.target)),this.centered&&"small"===this.size&&setTimeout(()=>t(this,k,"m",E).call(this),40)},M=function(e){this._base?.classList.toggle("with-trailing-icon",c(e.target)),this.centered&&"small"===this.size&&setTimeout(()=>t(this,k,"m",E).call(this),40)},P=function(){this._base?.style.removeProperty("--_leading-icon-min-width"),this._base?.style.removeProperty("--_trailing-icon-min-width")},E=function(){t(this,k,"m",P).call(this);const e=this._leadingIcon?.getBoundingClientRect().width??0,i=this._trailingIcon?.getBoundingClientRect().width??0;e<i?this._base?.style.setProperty("--_leading-icon-min-width",`${i}px`):e>i&&this._base?.style.setProperty("--_trailing-icon-min-width",`${e}px`)},I=function(){this.control instanceof HTMLIFrameElement&&(this.control.contentDocument?.addEventListener("scroll",t(this,H,"f"),{passive:!0}),this._base?.classList.toggle("on-scroll",t(this,k,"m",B).call(this,this.control)>0))},B=function(t){return Math.max(t.contentDocument?.documentElement?.scrollTop??0,t.contentDocument?.body?.scrollTop??0)},R.styles=[L,u],e([s(".base")],R.prototype,"_base",void 0),e([s(".leading-icon")],R.prototype,"_leadingIcon",void 0),e([s(".trailing-icon")],R.prototype,"_trailingIcon",void 0),e([o({type:Boolean,reflect:!0})],R.prototype,"centered",void 0),e([o({reflect:!0})],R.prototype,"size",void 0),e([h(40)],R.prototype,"_updateScroll",null),R=e([g("m3e-app-bar")],R);export{R as M3eAppBarElement};
6
+ import{__classPrivateFieldGet as t,__decorate as e}from"tslib";import{unsafeCSS as i,css as a,LitElement as l,html as n}from"lit";import{query as s,property as o}from"lit/decorators.js";import{DesignToken as r,HtmlFor as d,Role as m,hasAssignedNodes as c,debounce as h,customElement as g}from"@m3e/web/core";const p={small:{containerHeight:i("var(--m3e-app-bar-small-container-height, 4rem)"),titleTextFontSize:i(`var(--m3e-app-bar-small-title-text-font-size, ${r.typescale.standard.title.large.fontSize})`),titleTextFontWeight:i(`var(--m3e-app-bar-small-title-text-font-weight, ${r.typescale.standard.title.large.fontWeight})`),titleTextLineHeight:i(`var(--m3e-app-bar-small-title-text-line-height, ${r.typescale.standard.title.large.lineHeight})`),titleTextTracking:i(`var(--m3e-app-bar-small-subtitle-text-tracking, ${r.typescale.standard.title.large.tracking})`),subtitleTextFontSize:i(`var(--m3e-app-bar-small-subtitle-text-font-size, ${r.typescale.standard.label.medium.fontSize})`),subtitleTextFontWeight:i(`var(--m3e-app-bar-small-subtitle-text-font-weight, ${r.typescale.standard.label.medium.fontWeight})`),subtitleTextLineHeight:i(`var(--m3e-app-bar-small-subtitle-text-line-height, ${r.typescale.standard.label.medium.lineHeight})`),subtitleTextTracking:i(`var(--m3e-app-bar-small-subtitle-text-tracking, ${r.typescale.standard.label.medium.tracking})`),headingPaddingLeft:i("var(--m3e-app-bar-small-heading-padding-left, 0.25rem)"),headingPaddingRight:i("var(--m3e-app-bar-small-heading-padding-right, 0.25rem)")},medium:{containerHeight:i("var(--m3e-app-bar-medium-container-height, 7rem)"),containerHeightWithSubtitle:i("var(--m3e-app-bar-medium-container-height-with-subtitle, 8.5rem)"),titleTextFontSize:i(`var(--m3e-app-bar-medium-title-text-font-size, ${r.typescale.standard.headline.medium.fontSize})`),titleTextFontWeight:i(`var(--m3e-app-bar-medium-title-text-font-weight, ${r.typescale.standard.headline.medium.fontWeight})`),titleTextLineHeight:i(`var(--m3e-app-bar-medium-title-text-line-height, ${r.typescale.standard.headline.medium.lineHeight})`),titleTextTracking:i(`var(--m3e-app-bar-medium-subtitle-text-tracking, ${r.typescale.standard.headline.medium.tracking})`),subtitleTextFontSize:i(`var(--m3e-app-bar-medium-subtitle-text-font-size, ${r.typescale.standard.title.small.fontSize})`),subtitleTextFontWeight:i(`var(--m3e-app-bar-medium-subtitle-text-font-weight, ${r.typescale.standard.title.small.fontWeight})`),subtitleTextLineHeight:i(`var(--m3e-app-bar-medium-subtitle-text-line-height, ${r.typescale.standard.title.small.lineHeight})`),subtitleTextTracking:i(`var(--m3e-app-bar-medium-subtitle-text-tracking, ${r.typescale.standard.title.small.tracking})`),headingPaddingLeft:i("var(--m3e-app-bar-medium-heading-padding-left, 1rem)"),headingPaddingRight:i("var(--m3e-app-bar-medium-heading-padding-right, 0.25rem)"),paddingTop:i("var(--m3e-app-bar-medium-padding-top, 0.5rem)"),paddingBottom:i("var(--m3e-app-bar-medium-padding-bottom, 0.75rem)"),titleMaxLines:i("var(--m3e-app-bar-medium-title-max-lines, 2)"),subtitleMaxLines:i("var(--m3e-app-bar-medium-subtitle-max-lines, 1)")},large:{containerHeight:i("var(--m3e-app-bar-large-container-height, 7.5rem)"),containerHeightWithSubtitle:i("var(--m3e-app-bar-large-container-height-with-subtitle, 9.5rem)"),titleTextFontSize:i(`var(--m3e-app-bar-large-title-text-font-size, ${r.typescale.standard.display.small.fontSize})`),titleTextFontWeight:i(`var(--m3e-app-bar-large-title-text-font-weight, ${r.typescale.standard.display.small.fontWeight})`),titleTextLineHeight:i(`var(--m3e-app-bar-large-title-text-line-height, ${r.typescale.standard.display.small.lineHeight})`),titleTextTracking:i(`var(--m3e-app-bar-large-subtitle-text-tracking, ${r.typescale.standard.display.small.tracking})`),subtitleTextFontSize:i(`var(--m3e-app-bar-large-subtitle-text-font-size, ${r.typescale.standard.title.medium.fontSize})`),subtitleTextFontWeight:i(`var(--m3e-app-bar-large-subtitle-text-font-weight, ${r.typescale.standard.title.medium.fontWeight})`),subtitleTextLineHeight:i(`var(--m3e-app-bar-large-subtitle-text-line-height, ${r.typescale.standard.title.medium.lineHeight})`),subtitleTextTracking:i(`var(--m3e-app-bar-large-subtitle-text-tracking, ${r.typescale.standard.title.medium.tracking})`),headingPaddingLeft:i("var(--m3e-app-bar-large-heading-padding-left, 1rem)"),headingPaddingRight:i("var(--m3e-app-bar-large-heading-padding-right, 0.25rem)"),paddingTop:i("var(--m3e-app-bar-large-padding-top, 0.5rem)"),paddingBottom:i("var(--m3e-app-bar-large-padding-bottom, 0.75rem)"),titleMaxLines:i("var(--m3e-app-bar-large-title-max-lines, 2)"),subtitleMaxLines:i("var(--m3e-app-bar-large-subtitle-max-lines, 1)")}};function b(t){return a`:host([size="${i(t)}"]) .base:not(.with-subtitle) { min-height: ${p[t].containerHeight}; } :host([size="${i(t)}"]) .base.with-subtitle { min-height: ${p[t].containerHeightWithSubtitle??p[t].containerHeight}; } :host([size="${i(t)}"]) .title { font-size: ${p[t].titleTextFontSize}; font-weight: ${p[t].titleTextFontWeight}; line-height: ${p[t].titleTextLineHeight}; letter-spacing: ${p[t].titleTextTracking}; } :host([size="${i(t)}"]) .subtitle { font-size: ${p[t].subtitleTextFontSize}; font-weight: ${p[t].subtitleTextFontWeight}; line-height: ${p[t].subtitleTextLineHeight}; letter-spacing: ${p[t].subtitleTextTracking}; } :host(:not([centered])[size="${i(t)}"]) .label { padding-inline-start: ${p[t].headingPaddingLeft}; padding-inline-end: ${p[t].headingPaddingRight}; } :host([centered][size="${i(t)}"]) .label { padding-inline: ${p[t].headingPaddingLeft}; } :host([size="${i(t)}"]) .base { padding-block-start: ${p[t].paddingTop??i("unset")}; padding-block-end: ${p[t].paddingBottom??i("unset")}; } ${p[t].titleMaxLines?a`:host([size="${i(t)}"]) .title { display: -webkit-box; -webkit-line-clamp: ${p[t].titleMaxLines}; -webkit-box-orient: vertical; overflow: hidden; line-clamp: ${p[t].titleMaxLines}; }`:a``} ${p[t].subtitleMaxLines?a`:host([size="${i(t)}"]) .subtitle { display: -webkit-box; -webkit-line-clamp: ${p[t].subtitleMaxLines}; -webkit-box-orient: vertical; overflow: hidden; line-clamp: ${p[t].subtitleMaxLines}; }`:a``}`}const u=[b("small"),b("medium"),b("large")],v=i(`var(--m3e-app-bar-container-color, ${r.color.surface})`),x=i(`var(--m3e-app-bar-container-color-on-scroll, ${r.color.surfaceContainer})`),$=i(`var(--m3e-app-bar-container-elevation, ${r.elevation.level0})`),f=i(`var(--m3e-app-bar-container-elevation-on-scroll, ${r.elevation.level1})`),w=i(`var(--m3e-app-bar-title-text-color, ${r.color.onSurface})`),T=i(`var(--m3e-app-bar-subtitle-text-color, ${r.color.onSurfaceVariant})`),y=i("var(--m3e-app-bar-padding-left, 0.25rem)"),z=i("var(--m3e-app-bar-padding-right, 0.25rem)"),L=a`:host { display: block; flex: none; } :host([size="small"]) .base, :host(:not([size="small"]):not([centered])) .heading { padding-inline-start: ${y}; padding-inline-end: ${z}; } .base { box-sizing: border-box; display: flex; transition: ${i(`background-color ${r.motion.duration.medium1} ${r.motion.easing.standard},\n box-shadow ${r.motion.duration.medium1} ${r.motion.easing.standard}`)}; } .base:not(.on-scroll) { background-color: ${v}; box-shadow: ${$}; } .base.on-scroll { background-color: ${x}; box-shadow: ${f}; } .leading-icon, .trailing-icon { display: flex; flex: none; align-items: center; } .leading-icon { min-width: var(--_leading-icon-min-width); } .trailing-icon { min-width: var(--_trailing-icon-min-width); } .heading { display: flex; align-items: center; } :host([size="small"]) .heading { flex: 1 1 auto; } .spacer { flex: 1 1 auto; } .label { display: flex; flex-direction: column; flex: none; } .title { color: ${w}; } .subtitle { color: ${T}; } .base:not(.with-title) .title, .base:not(.with-subtitle) .subtitle, .base:not(.with-title):not(.with-subtitle) .label, .base:not(.with-trailing-icon) .trailing-icon { display: none; } :host([size="small"]) .base { align-items: center; } :host([size="small"]) .heading { min-width: 0; } :host([size="small"]) .label { flex: 1 1 auto; min-width: 0; } :host([size="small"]) .title, :host([size="small"]) .subtitle { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } :host(:not([size="small"])) .base { flex-direction: column; } :host([centered]) .title, :host([centered]) .subtitle { text-align: center; } @media (prefers-reduced-motion) { .base { transition: none; } } @media (forced-colors: active) { .base { transition: none; } .base:not(.on-scroll), .base.on-scroll { background-color: Canvas; box-shadow: unset; } .title { color: CanvasText; } .subtitle { color: FieldText; } }`;var k,H,S,_,F,W,M,P,E,I,B,R;let C=class extends(d(m(l,"banner"))){constructor(){super(...arguments),k.add(this),H.set(this,t=>this._updateScroll(t)),S.set(this,()=>t(this,k,"m",B).call(this)),this.centered=!1,this.size="small"}attach(e){super.attach(e),e instanceof HTMLIFrameElement?(e.addEventListener("load",t(this,S,"f")),t(this,k,"m",B).call(this)):e.addEventListener("scroll",t(this,H,"f"),{passive:!0})}detach(){this.control instanceof HTMLIFrameElement&&(this.control.removeEventListener("load",t(this,S,"f")),this.control.contentDocument?.removeEventListener("scroll",t(this,H,"f"))),this.control&&this.control.removeEventListener("scroll",t(this,H,"f")),super.detach()}updated(e){super.updated(e),(e.has("centered")||e.has("size"))&&(this.centered&&"small"===this.size?t(this,k,"m",I).call(this):t(this,k,"m",E).call(this))}render(){return"small"===this.size?n`<div class="base"><div class="leading-icon"><slot name="leading" @slotchange="${t(this,k,"m",W)}"><slot name="leading-icon" @slotchange="${t(this,k,"m",P)}"></slot></slot></div><div class="heading"><div class="label"><div class="title"><slot name="title" @slotchange="${t(this,k,"m",_)}"></slot></div><div class="subtitle"><slot name="subtitle" @slotchange="${t(this,k,"m",F)}"></slot></div></div></div><div class="trailing-icon"><slot name="trailing" @slotchange="${t(this,k,"m",M)}"><slot name="trailing-icon" @slotchange="${t(this,k,"m",P)}"></slot></slot></div></div>`:n`<div class="base"><div class="heading"><div class="leading-icon"><slot name="leading" @slotchange="${t(this,k,"m",W)}"><slot name="leading-icon" @slotchange="${t(this,k,"m",P)}"></slot></slot></div><div class="spacer"></div><div class="trailing-icon"><slot name="trailing" @slotchange="${t(this,k,"m",M)}"><slot name="trailing-icon" @slotchange="${t(this,k,"m",P)}"></slot></slot></div></div><div class="spacer"></div><div class="label"><div class="title"><slot name="title" @slotchange="${t(this,k,"m",_)}"></slot></div><div class="subtitle"><slot name="subtitle" @slotchange="${t(this,k,"m",F)}"></slot></div></div></div>`}_updateScroll(e){let i=0;this.control instanceof HTMLIFrameElement?i=t(this,k,"m",R).call(this,this.control):e.target instanceof HTMLElement&&(i=e.target.scrollTop),this._base?.classList.toggle("on-scroll",i>0)}};H=new WeakMap,S=new WeakMap,k=new WeakSet,_=function(t){this._base?.classList.toggle("with-title",c(t.target))},F=function(t){this._base?.classList.toggle("with-subtitle",c(t.target))},W=function(e){this._base?.classList.toggle("with-leading-icon",c(e.target)),this.centered&&"small"===this.size&&setTimeout(()=>t(this,k,"m",I).call(this),40)},M=function(e){this._base?.classList.toggle("with-trailing-icon",c(e.target)),this.centered&&"small"===this.size&&setTimeout(()=>t(this,k,"m",I).call(this),40)},P=function(t){const e=t.target.name,i=e.replace("-icon","");console.warn(`[m3e-app-bar] Slot "${e}" is deprecated and will be removed in a future release. Use "${i}" instead.`)},E=function(){this._base?.style.removeProperty("--_leading-icon-min-width"),this._base?.style.removeProperty("--_trailing-icon-min-width")},I=function(){t(this,k,"m",E).call(this);const e=this._leadingIcon?.getBoundingClientRect().width??0,i=this._trailingIcon?.getBoundingClientRect().width??0;e<i?this._base?.style.setProperty("--_leading-icon-min-width",`${i}px`):e>i&&this._base?.style.setProperty("--_trailing-icon-min-width",`${e}px`)},B=function(){this.control instanceof HTMLIFrameElement&&(this.control.contentDocument?.addEventListener("scroll",t(this,H,"f"),{passive:!0}),this._base?.classList.toggle("on-scroll",t(this,k,"m",R).call(this,this.control)>0))},R=function(t){return Math.max(t.contentDocument?.documentElement?.scrollTop??0,t.contentDocument?.body?.scrollTop??0)},C.styles=[L,u],e([s(".base")],C.prototype,"_base",void 0),e([s(".leading-icon")],C.prototype,"_leadingIcon",void 0),e([s(".trailing-icon")],C.prototype,"_trailingIcon",void 0),e([o({type:Boolean,reflect:!0})],C.prototype,"centered",void 0),e([o({reflect:!0})],C.prototype,"size",void 0),e([h(40)],C.prototype,"_updateScroll",null),C=e([g("m3e-app-bar")],C);export{C as M3eAppBarElement};
7
7
  //# sourceMappingURL=app-bar.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-bar.min.js","sources":["../../src/app-bar/styles/AppBarSizeToken.ts","../../src/app-bar/styles/AppBarSizeStyle.ts","../../src/app-bar/styles/AppBarToken.ts","../../src/app-bar/styles/AppBarStyle.ts","../../src/app-bar/AppBarElement.ts"],"sourcesContent":["import { CSSResult, unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\nimport { AppBarSize } from \"../AppBarSize\";\r\n\r\n/** @private */\r\ntype _AppBarSizeToken = {\r\n containerHeight: CSSResult;\r\n containerHeightWithSubtitle?: CSSResult;\r\n paddingTop?: CSSResult;\r\n paddingBottom?: CSSResult;\r\n titleTextFontSize: CSSResult;\r\n titleTextFontWeight: CSSResult;\r\n titleTextLineHeight: CSSResult;\r\n titleTextTracking: CSSResult;\r\n subtitleTextFontSize: CSSResult;\r\n subtitleTextFontWeight: CSSResult;\r\n subtitleTextLineHeight: CSSResult;\r\n subtitleTextTracking: CSSResult;\r\n titleMaxLines?: CSSResult;\r\n subtitleMaxLines?: CSSResult;\r\n headingPaddingLeft: CSSResult;\r\n headingPaddingRight: CSSResult;\r\n};\r\n\r\n/**\r\n * Component design tokens that control the `M3eAppBarElement` for all size variants.\r\n * @internal\r\n */\r\nexport const AppBarSizeToken: Record<AppBarSize, _AppBarSizeToken> = {\r\n small: {\r\n containerHeight: unsafeCSS(`var(--m3e-app-bar-small-container-height, 4rem)`),\r\n titleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-small-title-text-font-size, ${DesignToken.typescale.standard.title.large.fontSize})`,\r\n ),\r\n titleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-small-title-text-font-weight, ${DesignToken.typescale.standard.title.large.fontWeight})`,\r\n ),\r\n titleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-small-title-text-line-height, ${DesignToken.typescale.standard.title.large.lineHeight})`,\r\n ),\r\n titleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-small-subtitle-text-tracking, ${DesignToken.typescale.standard.title.large.tracking})`,\r\n ),\r\n subtitleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-small-subtitle-text-font-size, ${DesignToken.typescale.standard.label.medium.fontSize})`,\r\n ),\r\n subtitleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-small-subtitle-text-font-weight, ${DesignToken.typescale.standard.label.medium.fontWeight})`,\r\n ),\r\n subtitleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-small-subtitle-text-line-height, ${DesignToken.typescale.standard.label.medium.lineHeight})`,\r\n ),\r\n subtitleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-small-subtitle-text-tracking, ${DesignToken.typescale.standard.label.medium.tracking})`,\r\n ),\r\n headingPaddingLeft: unsafeCSS(`var(--m3e-app-bar-small-heading-padding-left, 0.25rem)`),\r\n headingPaddingRight: unsafeCSS(`var(--m3e-app-bar-small-heading-padding-right, 0.25rem)`),\r\n },\r\n medium: {\r\n containerHeight: unsafeCSS(`var(--m3e-app-bar-medium-container-height, 7rem)`),\r\n containerHeightWithSubtitle: unsafeCSS(`var(--m3e-app-bar-medium-container-height-with-subtitle, 8.5rem)`),\r\n titleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-medium-title-text-font-size, ${DesignToken.typescale.standard.headline.medium.fontSize})`,\r\n ),\r\n titleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-medium-title-text-font-weight, ${DesignToken.typescale.standard.headline.medium.fontWeight})`,\r\n ),\r\n titleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-medium-title-text-line-height, ${DesignToken.typescale.standard.headline.medium.lineHeight})`,\r\n ),\r\n titleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-medium-subtitle-text-tracking, ${DesignToken.typescale.standard.headline.medium.tracking})`,\r\n ),\r\n subtitleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-medium-subtitle-text-font-size, ${DesignToken.typescale.standard.title.small.fontSize})`,\r\n ),\r\n subtitleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-medium-subtitle-text-font-weight, ${DesignToken.typescale.standard.title.small.fontWeight})`,\r\n ),\r\n subtitleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-medium-subtitle-text-line-height, ${DesignToken.typescale.standard.title.small.lineHeight})`,\r\n ),\r\n subtitleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-medium-subtitle-text-tracking, ${DesignToken.typescale.standard.title.small.tracking})`,\r\n ),\r\n headingPaddingLeft: unsafeCSS(`var(--m3e-app-bar-medium-heading-padding-left, 1rem)`),\r\n headingPaddingRight: unsafeCSS(`var(--m3e-app-bar-medium-heading-padding-right, 0.25rem)`),\r\n paddingTop: unsafeCSS(`var(--m3e-app-bar-medium-padding-top, 0.5rem)`),\r\n paddingBottom: unsafeCSS(`var(--m3e-app-bar-medium-padding-bottom, 0.75rem)`),\r\n titleMaxLines: unsafeCSS(`var(--m3e-app-bar-medium-title-max-lines, 2)`),\r\n subtitleMaxLines: unsafeCSS(`var(--m3e-app-bar-medium-subtitle-max-lines, 1)`),\r\n },\r\n large: {\r\n containerHeight: unsafeCSS(`var(--m3e-app-bar-large-container-height, 7.5rem)`),\r\n containerHeightWithSubtitle: unsafeCSS(`var(--m3e-app-bar-large-container-height-with-subtitle, 9.5rem)`),\r\n titleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-large-title-text-font-size, ${DesignToken.typescale.standard.display.small.fontSize})`,\r\n ),\r\n titleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-large-title-text-font-weight, ${DesignToken.typescale.standard.display.small.fontWeight})`,\r\n ),\r\n titleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-large-title-text-line-height, ${DesignToken.typescale.standard.display.small.lineHeight})`,\r\n ),\r\n titleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-large-subtitle-text-tracking, ${DesignToken.typescale.standard.display.small.tracking})`,\r\n ),\r\n subtitleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-large-subtitle-text-font-size, ${DesignToken.typescale.standard.title.medium.fontSize})`,\r\n ),\r\n subtitleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-large-subtitle-text-font-weight, ${DesignToken.typescale.standard.title.medium.fontWeight})`,\r\n ),\r\n subtitleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-large-subtitle-text-line-height, ${DesignToken.typescale.standard.title.medium.lineHeight})`,\r\n ),\r\n subtitleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-large-subtitle-text-tracking, ${DesignToken.typescale.standard.title.medium.tracking})`,\r\n ),\r\n headingPaddingLeft: unsafeCSS(`var(--m3e-app-bar-large-heading-padding-left, 1rem)`),\r\n headingPaddingRight: unsafeCSS(`var(--m3e-app-bar-large-heading-padding-right, 0.25rem)`),\r\n paddingTop: unsafeCSS(`var(--m3e-app-bar-large-padding-top, 0.5rem)`),\r\n paddingBottom: unsafeCSS(`var(--m3e-app-bar-large-padding-bottom, 0.75rem)`),\r\n titleMaxLines: unsafeCSS(`var(--m3e-app-bar-large-title-max-lines, 2)`),\r\n subtitleMaxLines: unsafeCSS(`var(--m3e-app-bar-large-subtitle-max-lines, 1)`),\r\n },\r\n} as const;\r\n","import { css, CSSResult, CSSResultGroup, unsafeCSS } from \"lit\";\r\n\r\nimport { AppBarSize } from \"../AppBarSize\";\r\nimport { AppBarSizeToken } from \"./AppBarSizeToken\";\r\n\r\n/** @private */\r\nfunction appBarStyle(size: AppBarSize): CSSResult {\r\n return css`\r\n :host([size=\"${unsafeCSS(size)}\"]) .base:not(.with-subtitle) {\r\n min-height: ${AppBarSizeToken[size].containerHeight};\r\n }\r\n :host([size=\"${unsafeCSS(size)}\"]) .base.with-subtitle {\r\n min-height: ${AppBarSizeToken[size].containerHeightWithSubtitle ?? AppBarSizeToken[size].containerHeight};\r\n }\r\n :host([size=\"${unsafeCSS(size)}\"]) .title {\r\n font-size: ${AppBarSizeToken[size].titleTextFontSize};\r\n font-weight: ${AppBarSizeToken[size].titleTextFontWeight};\r\n line-height: ${AppBarSizeToken[size].titleTextLineHeight};\r\n letter-spacing: ${AppBarSizeToken[size].titleTextTracking};\r\n }\r\n :host([size=\"${unsafeCSS(size)}\"]) .subtitle {\r\n font-size: ${AppBarSizeToken[size].subtitleTextFontSize};\r\n font-weight: ${AppBarSizeToken[size].subtitleTextFontWeight};\r\n line-height: ${AppBarSizeToken[size].subtitleTextLineHeight};\r\n letter-spacing: ${AppBarSizeToken[size].subtitleTextTracking};\r\n }\r\n :host(:not([centered])[size=\"${unsafeCSS(size)}\"]) .label {\r\n padding-inline-start: ${AppBarSizeToken[size].headingPaddingLeft};\r\n padding-inline-end: ${AppBarSizeToken[size].headingPaddingRight};\r\n }\r\n :host([centered][size=\"${unsafeCSS(size)}\"]) .label {\r\n padding-inline: ${AppBarSizeToken[size].headingPaddingLeft};\r\n }\r\n :host([size=\"${unsafeCSS(size)}\"]) .base {\r\n padding-block-start: ${AppBarSizeToken[size].paddingTop ?? unsafeCSS(\"unset\")};\r\n padding-block-end: ${AppBarSizeToken[size].paddingBottom ?? unsafeCSS(\"unset\")};\r\n }\r\n ${AppBarSizeToken[size].titleMaxLines\r\n ? css`\r\n :host([size=\"${unsafeCSS(size)}\"]) .title {\r\n display: -webkit-box;\r\n -webkit-line-clamp: ${AppBarSizeToken[size].titleMaxLines};\r\n -webkit-box-orient: vertical;\r\n overflow: hidden;\r\n line-clamp: ${AppBarSizeToken[size].titleMaxLines};\r\n }\r\n `\r\n : css``}\r\n ${AppBarSizeToken[size].subtitleMaxLines\r\n ? css`\r\n :host([size=\"${unsafeCSS(size)}\"]) .subtitle {\r\n display: -webkit-box;\r\n -webkit-line-clamp: ${AppBarSizeToken[size].subtitleMaxLines};\r\n -webkit-box-orient: vertical;\r\n overflow: hidden;\r\n line-clamp: ${AppBarSizeToken[size].subtitleMaxLines};\r\n }\r\n `\r\n : css``}\r\n `;\r\n}\r\n\r\n/**\r\n * Size variant styles for `M3eAppBarElement`.\r\n * @internal\r\n */\r\nexport const AppBarSizeStyle: CSSResultGroup = [appBarStyle(\"small\"), appBarStyle(\"medium\"), appBarStyle(\"large\")];\r\n","import { unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\n/**\r\n * Component design tokens that control `M3eAppBarElement`.\r\n * @internal\r\n */\r\nexport const AppBarToken = {\r\n containerColor: unsafeCSS(`var(--m3e-app-bar-container-color, ${DesignToken.color.surface})`),\r\n containerColorOnScroll: unsafeCSS(\r\n `var(--m3e-app-bar-container-color-on-scroll, ${DesignToken.color.surfaceContainer})`,\r\n ),\r\n containerElevation: unsafeCSS(`var(--m3e-app-bar-container-elevation, ${DesignToken.elevation.level0})`),\r\n containerElevationOnScroll: unsafeCSS(\r\n `var(--m3e-app-bar-container-elevation-on-scroll, ${DesignToken.elevation.level1})`,\r\n ),\r\n titleTextColor: unsafeCSS(`var(--m3e-app-bar-title-text-color, ${DesignToken.color.onSurface})`),\r\n subtitleTextColor: unsafeCSS(`var(--m3e-app-bar-subtitle-text-color, ${DesignToken.color.onSurfaceVariant})`),\r\n paddingLeft: unsafeCSS(`var(--m3e-app-bar-padding-left, 0.25rem)`),\r\n paddingRight: unsafeCSS(`var(--m3e-app-bar-padding-right, 0.25rem)`),\r\n} as const;\r\n","import { css, CSSResult, unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\nimport { AppBarToken } from \"./AppBarToken\";\r\n\r\n/**\r\n * Baseline styles for `M3eAppBarElement`.\r\n * @internal\r\n */\r\nexport const AppBarStyle: CSSResult = css`\r\n :host {\r\n display: block;\r\n flex: none;\r\n }\r\n :host([size=\"small\"]) .base,\r\n :host(:not([size=\"small\"]):not([centered])) .heading {\r\n padding-inline-start: ${AppBarToken.paddingLeft};\r\n padding-inline-end: ${AppBarToken.paddingRight};\r\n }\r\n .base {\r\n box-sizing: border-box;\r\n display: flex;\r\n transition: ${unsafeCSS(\r\n `background-color ${DesignToken.motion.duration.medium1} ${DesignToken.motion.easing.standard},\r\n box-shadow ${DesignToken.motion.duration.medium1} ${DesignToken.motion.easing.standard}`,\r\n )};\r\n }\r\n .base:not(.on-scroll) {\r\n background-color: ${AppBarToken.containerColor};\r\n box-shadow: ${AppBarToken.containerElevation};\r\n }\r\n .base.on-scroll {\r\n background-color: ${AppBarToken.containerColorOnScroll};\r\n box-shadow: ${AppBarToken.containerElevationOnScroll};\r\n }\r\n .leading-icon,\r\n .trailing-icon {\r\n display: flex;\r\n flex: none;\r\n align-items: center;\r\n }\r\n .leading-icon {\r\n min-width: var(--_leading-icon-min-width);\r\n }\r\n .trailing-icon {\r\n min-width: var(--_trailing-icon-min-width);\r\n }\r\n .heading {\r\n display: flex;\r\n align-items: center;\r\n }\r\n :host([size=\"small\"]) .heading {\r\n flex: 1 1 auto;\r\n }\r\n .spacer {\r\n flex: 1 1 auto;\r\n }\r\n .label {\r\n display: flex;\r\n flex-direction: column;\r\n flex: none;\r\n }\r\n .title {\r\n color: ${AppBarToken.titleTextColor};\r\n }\r\n .subtitle {\r\n color: ${AppBarToken.subtitleTextColor};\r\n }\r\n .base:not(.with-title) .title,\r\n .base:not(.with-subtitle) .subtitle,\r\n .base:not(.with-title):not(.with-subtitle) .label,\r\n .base:not(.with-trailing-icon) .trailing-icon {\r\n display: none;\r\n }\r\n :host([size=\"small\"]) .base {\r\n align-items: center;\r\n }\r\n :host([size=\"small\"]) .heading {\r\n min-width: 0;\r\n }\r\n :host([size=\"small\"]) .label {\r\n flex: 1 1 auto;\r\n min-width: 0;\r\n }\r\n :host([size=\"small\"]) .title,\r\n :host([size=\"small\"]) .subtitle {\r\n display: block;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n :host(:not([size=\"small\"])) .base {\r\n flex-direction: column;\r\n }\r\n :host([centered]) .title,\r\n :host([centered]) .subtitle {\r\n text-align: center;\r\n }\r\n @media (prefers-reduced-motion) {\r\n .base {\r\n transition: none;\r\n }\r\n }\r\n @media (forced-colors: active) {\r\n .base {\r\n transition: none;\r\n }\r\n .base:not(.on-scroll),\r\n .base.on-scroll {\r\n background-color: Canvas;\r\n box-shadow: unset;\r\n }\r\n .title {\r\n color: CanvasText;\r\n }\r\n .subtitle {\r\n color: FieldText;\r\n }\r\n }\r\n`;\r\n","import { CSSResultGroup, html, LitElement, PropertyValues } from \"lit\";\r\nimport { property, query } from \"lit/decorators.js\";\r\n\r\nimport { customElement, debounce, hasAssignedNodes, HtmlFor, Role } from \"@m3e/web/core\";\r\n\r\nimport { AppBarSize } from \"./AppBarSize\";\r\n\r\nimport { AppBarSizeStyle, AppBarStyle } from \"./styles\";\r\n\r\n/**\r\n * A bar, placed a the top of a screen, used to help users navigate through an application.\r\n *\r\n * @description\r\n * The `m3e-app-bar` component is a prominent user interface component that provides consistent\r\n * access to key actions, navigation, and contextual information at the top of an application screen.\r\n * Designed according to Material 3 principles, it organizes content with clear hierarchy, supports\r\n * dynamic color, elevation, and shape, and adapts to scrolling behavior.\r\n *\r\n * @example\r\n * ```html\r\n * <m3e-app-bar size=\"medium\">\r\n * <m3e-icon-button slot=\"leading-icon\" aria-label=\"Back\">\r\n * <m3e-icon name=\"arrow_back\"></m3e-icon>\r\n * </m3e-icon-button>\r\n * <span slot=\"title\">Top 10 hiking trails</span>\r\n * <span slot=\"subtitle\">Discover popular trails</span>\r\n * <m3e-icon-button slot=\"trailing-icon\" aria-label=\"Bookmark\" variant=\"tonal\">\r\n * <m3e-icon name=\"bookmark\" filled></m3e-icon>\r\n * </m3e-icon-button>\r\n * <m3e-app-bar>\r\n * ```\r\n * @example\r\n * The next example illustrates how to attach an app bar to a parenting scroll container\r\n * to produce elevation on scroll. In this example, the `for` attribute is used to attach a\r\n * sticky positioned `m3e-app-bar` to a parenting container styled to overflow vertically.\r\n * When scrolled, the app bar will automatically transition to an elevated state.\r\n * ```html\r\n * <div style=\"overflow-y: auto; height: 300px\" id=\"scrollContainer\">\r\n * <m3e-app-bar for=\"scrollContainer\" style=\"position: sticky; top: 0\">\r\n * <span slot=\"title\">Title</span>\r\n * </m3e-app-bar>\r\n * <div style=\"height: 400px; display: flex; align-items: center; justify-content: center\">\r\n * I am scrolling content\r\n * </div>\r\n * </div>\r\n * ```\r\n *\r\n * @tag m3e-app-bar\r\n *\r\n * @slot leading-icon - Renders a leading icon.\r\n * @slot subtitle - Renders the subtitle.\r\n * @slot title - Renders the title.\r\n * @slot trailing-icon - Renders a trailing icon.\r\n *\r\n * @attr centered - Whether the title and subtitle are centered.\r\n * @attr for - The identifier of the interactive control to which this element is attached.\r\n * @attr size - The size of the bar.\r\n *\r\n * @cssprop --m3e-app-bar-container-color - Background color of the app bar container.\r\n * @cssprop --m3e-app-bar-container-color-on-scroll - Background color of the app bar container when scrolled.\r\n * @cssprop --m3e-app-bar-container-elevation - Elevation (shadow) of the app bar container.\r\n * @cssprop --m3e-app-bar-container-elevation-on-scroll - Elevation (shadow) of the app bar container when scrolled.\r\n * @cssprop --m3e-app-bar-title-text-color - Color of the app bar title text.\r\n * @cssprop --m3e-app-bar-subtitle-text-color - Color of the app bar subtitle text.\r\n * @cssprop --m3e-app-bar-padding-left - Left padding for the app bar container.\r\n * @cssprop --m3e-app-bar-padding-right - Right padding for the app bar container.\r\n * @cssprop --m3e-app-bar-small-container-height - Height of the small app bar container.\r\n * @cssprop --m3e-app-bar-small-title-text-font-size - Font size for the small app bar title text.\r\n * @cssprop --m3e-app-bar-small-title-text-font-weight - Font weight for the small app bar title text.\r\n * @cssprop --m3e-app-bar-small-title-text-line-height - Line height for the small app bar title text.\r\n * @cssprop --m3e-app-bar-small-subtitle-text-tracking - Letter spacing (tracking) for the small app bar title text.\r\n * @cssprop --m3e-app-bar-small-subtitle-text-font-size - Font size for the small app bar subtitle text.\r\n * @cssprop --m3e-app-bar-small-subtitle-text-font-weight - Font weight for the small app bar subtitle text.\r\n * @cssprop --m3e-app-bar-small-subtitle-text-line-height - Line height for the small app bar subtitle text.\r\n * @cssprop --m3e-app-bar-small-subtitle-text-tracking - Letter spacing (tracking) for the small app bar subtitle text.\r\n * @cssprop --m3e-app-bar-small-heading-padding-left - Left padding for the small app bar heading.\r\n * @cssprop --m3e-app-bar-small-heading-padding-right - Right padding for the small app bar heading.\r\n * @cssprop --m3e-app-bar-medium-container-height - Height of the medium app bar container.\r\n * @cssprop --m3e-app-bar-medium-container-height-with-subtitle - Height of the medium app bar container with subtitle.\r\n * @cssprop --m3e-app-bar-medium-title-text-font-size - Font size for the medium app bar title text.\r\n * @cssprop --m3e-app-bar-medium-title-text-font-weight - Font weight for the medium app bar title text.\r\n * @cssprop --m3e-app-bar-medium-title-text-line-height - Line height for the medium app bar title text.\r\n * @cssprop --m3e-app-bar-medium-subtitle-text-tracking - Letter spacing (tracking) for the medium app bar title text.\r\n * @cssprop --m3e-app-bar-medium-subtitle-text-font-size - Font size for the medium app bar subtitle text.\r\n * @cssprop --m3e-app-bar-medium-subtitle-text-font-weight - Font weight for the medium app bar subtitle text.\r\n * @cssprop --m3e-app-bar-medium-subtitle-text-line-height - Line height for the medium app bar subtitle text.\r\n * @cssprop --m3e-app-bar-medium-subtitle-text-tracking - Letter spacing (tracking) for the medium app bar subtitle text.\r\n * @cssprop --m3e-app-bar-medium-heading-padding-left - Left padding for the medium app bar heading.\r\n * @cssprop --m3e-app-bar-medium-heading-padding-right - Right padding for the medium app bar heading.\r\n * @cssprop --m3e-app-bar-medium-padding-top - Top padding for the medium app bar.\r\n * @cssprop --m3e-app-bar-medium-padding-bottom - Bottom padding for the medium app bar.\r\n * @cssprop --m3e-app-bar-medium-title-max-lines - Maximum number of lines for the medium app bar title.\r\n * @cssprop --m3e-app-bar-medium-subtitle-max-lines - Maximum number of lines for the medium app bar subtitle.\r\n * @cssprop --m3e-app-bar-large-container-height - Height of the large app bar container.\r\n * @cssprop --m3e-app-bar-large-container-height-with-subtitle - Height of the large app bar container with subtitle.\r\n * @cssprop --m3e-app-bar-large-title-text-font-size - Font size for the large app bar title text.\r\n * @cssprop --m3e-app-bar-large-title-text-font-weight - Font weight for the large app bar title text.\r\n * @cssprop --m3e-app-bar-large-title-text-line-height - Line height for the large app bar title text.\r\n * @cssprop --m3e-app-bar-large-subtitle-text-tracking - Letter spacing (tracking) for the large app bar title text.\r\n * @cssprop --m3e-app-bar-large-subtitle-text-font-size - Font size for the large app bar subtitle text.\r\n * @cssprop --m3e-app-bar-large-subtitle-text-font-weight - Font weight for the large app bar subtitle text.\r\n * @cssprop --m3e-app-bar-large-subtitle-text-line-height - Line height for the large app bar subtitle text.\r\n * @cssprop --m3e-app-bar-large-subtitle-text-tracking - Letter spacing (tracking) for the large app bar subtitle text.\r\n * @cssprop --m3e-app-bar-large-heading-padding-left - Left padding for the large app bar heading.\r\n * @cssprop --m3e-app-bar-large-heading-padding-right - Right padding for the large app bar heading.\r\n * @cssprop --m3e-app-bar-large-padding-top - Top padding for the large app bar.\r\n * @cssprop --m3e-app-bar-large-padding-bottom - Bottom padding for the large app bar.\r\n * @cssprop --m3e-app-bar-large-title-max-lines - Maximum number of lines for the large app bar title.\r\n * @cssprop --m3e-app-bar-large-subtitle-max-lines - Maximum number of lines for the large app bar subtitle.\r\n */\r\n@customElement(\"m3e-app-bar\")\r\nexport class M3eAppBarElement extends HtmlFor(Role(LitElement, \"banner\")) {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = [AppBarStyle, AppBarSizeStyle];\r\n\r\n /** @private */ readonly #scrollHandler = (e: Event) => this._updateScroll(e);\r\n /** @private */ readonly #frameLoadHandler = () => this.#handleFrameLoad();\r\n /** @private */ @query(\".base\") private readonly _base?: HTMLElement;\r\n /** @private */ @query(\".leading-icon\") private readonly _leadingIcon?: HTMLElement;\r\n /** @private */ @query(\".trailing-icon\") private readonly _trailingIcon?: HTMLElement;\r\n\r\n /**\r\n * Whether the title and subtitle are centered.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) centered = false;\r\n\r\n /**\r\n * The size of the bar.\r\n * @default \"small\"\r\n */\r\n @property({ reflect: true }) size: AppBarSize = \"small\";\r\n\r\n /** @inheritdoc */\r\n override attach(control: HTMLElement): void {\r\n super.attach(control);\r\n\r\n if (control instanceof HTMLIFrameElement) {\r\n control.addEventListener(\"load\", this.#frameLoadHandler);\r\n this.#handleFrameLoad();\r\n } else {\r\n control.addEventListener(\"scroll\", this.#scrollHandler, { passive: true });\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override detach(): void {\r\n if (this.control instanceof HTMLIFrameElement) {\r\n this.control.removeEventListener(\"load\", this.#frameLoadHandler);\r\n this.control.contentDocument?.removeEventListener(\"scroll\", this.#scrollHandler);\r\n }\r\n if (this.control) {\r\n this.control.removeEventListener(\"scroll\", this.#scrollHandler);\r\n }\r\n super.detach();\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override updated(_changedProperties: PropertyValues<this>): void {\r\n super.updated(_changedProperties);\r\n\r\n if (_changedProperties.has(\"centered\") || _changedProperties.has(\"size\")) {\r\n if (this.centered && this.size === \"small\") {\r\n this.#computeCentered();\r\n } else {\r\n this.#clearCentered();\r\n }\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n switch (this.size) {\r\n case \"small\":\r\n return html`<div class=\"base\">\r\n <div class=\"leading-icon\">\r\n <slot name=\"leading-icon\" @slotchange=\"${this.#handleLeadingIconSlotChange}\"></slot>\r\n </div>\r\n <div class=\"heading\">\r\n <div class=\"label\">\r\n <div class=\"title\">\r\n <slot name=\"title\" @slotchange=\"${this.#handleTitleSlotChange}\"></slot>\r\n </div>\r\n <div class=\"subtitle\">\r\n <slot name=\"subtitle\" @slotchange=\"${this.#handleSubtitleSlotChange}\"></slot>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"trailing-icon\">\r\n <slot name=\"trailing-icon\" @slotchange=\"${this.#handleTrailingIconsSlotChange}\"></slot>\r\n </div>\r\n </div>`;\r\n\r\n default:\r\n return html`<div class=\"base\">\r\n <div class=\"heading\">\r\n <div class=\"leading-icon\">\r\n <slot name=\"leading-icon\" @slotchange=\"${this.#handleLeadingIconSlotChange}\"></slot>\r\n </div>\r\n <div class=\"spacer\"></div>\r\n <div class=\"trailing-icon\">\r\n <slot name=\"trailing-icon\" @slotchange=\"${this.#handleTrailingIconsSlotChange}\"></slot>\r\n </div>\r\n </div>\r\n <div class=\"spacer\"></div>\r\n <div class=\"label\">\r\n <div class=\"title\">\r\n <slot name=\"title\" @slotchange=\"${this.#handleTitleSlotChange}\"></slot>\r\n </div>\r\n <div class=\"subtitle\">\r\n <slot name=\"subtitle\" @slotchange=\"${this.#handleSubtitleSlotChange}\"></slot>\r\n </div>\r\n </div>\r\n </div>`;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleTitleSlotChange(e: Event): void {\r\n this._base?.classList.toggle(\"with-title\", hasAssignedNodes(<HTMLSlotElement>e.target));\r\n }\r\n\r\n /** @private */\r\n #handleSubtitleSlotChange(e: Event): void {\r\n this._base?.classList.toggle(\"with-subtitle\", hasAssignedNodes(<HTMLSlotElement>e.target));\r\n }\r\n\r\n /** @private */\r\n #handleLeadingIconSlotChange(e: Event): void {\r\n this._base?.classList.toggle(\"with-leading-icon\", hasAssignedNodes(<HTMLSlotElement>e.target));\r\n if (this.centered && this.size === \"small\") {\r\n setTimeout(() => this.#computeCentered(), 40);\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleTrailingIconsSlotChange(e: Event): void {\r\n this._base?.classList.toggle(\"with-trailing-icon\", hasAssignedNodes(<HTMLSlotElement>e.target));\r\n if (this.centered && this.size === \"small\") {\r\n setTimeout(() => this.#computeCentered(), 40);\r\n }\r\n }\r\n\r\n /** @private */\r\n #clearCentered() {\r\n this._base?.style.removeProperty(\"--_leading-icon-min-width\");\r\n this._base?.style.removeProperty(\"--_trailing-icon-min-width\");\r\n }\r\n\r\n /** @private */\r\n #computeCentered(): void {\r\n this.#clearCentered();\r\n\r\n const leadingWidth = this._leadingIcon?.getBoundingClientRect().width ?? 0;\r\n const trailingWidth = this._trailingIcon?.getBoundingClientRect().width ?? 0;\r\n\r\n if (leadingWidth < trailingWidth) {\r\n this._base?.style.setProperty(\"--_leading-icon-min-width\", `${trailingWidth}px`);\r\n } else if (leadingWidth > trailingWidth) {\r\n this._base?.style.setProperty(\"--_trailing-icon-min-width\", `${leadingWidth}px`);\r\n }\r\n }\r\n\r\n /** @private */\r\n @debounce(40)\r\n private _updateScroll(e: Event): void {\r\n let scrollTop = 0;\r\n\r\n if (this.control instanceof HTMLIFrameElement) {\r\n scrollTop = this.#getFrameScrollTop(this.control);\r\n } else if (e.target instanceof HTMLElement) {\r\n scrollTop = e.target.scrollTop;\r\n }\r\n\r\n this._base?.classList.toggle(\"on-scroll\", scrollTop > 0);\r\n }\r\n\r\n /** @private */\r\n #handleFrameLoad(): void {\r\n if (this.control instanceof HTMLIFrameElement) {\r\n this.control.contentDocument?.addEventListener(\"scroll\", this.#scrollHandler, { passive: true });\r\n this._base?.classList.toggle(\"on-scroll\", this.#getFrameScrollTop(this.control) > 0);\r\n }\r\n }\r\n\r\n /** @private */\r\n #getFrameScrollTop(frame: HTMLIFrameElement): number {\r\n // Both document element (<html>) and body are tested for scroll top, taking the maximum.\r\n return Math.max(\r\n frame.contentDocument?.documentElement?.scrollTop ?? 0,\r\n frame.contentDocument?.body?.scrollTop ?? 0,\r\n );\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-app-bar\": M3eAppBarElement;\r\n }\r\n}\r\n"],"names":["AppBarSizeToken","small","containerHeight","unsafeCSS","titleTextFontSize","DesignToken","typescale","standard","title","large","fontSize","titleTextFontWeight","fontWeight","titleTextLineHeight","lineHeight","titleTextTracking","tracking","subtitleTextFontSize","label","medium","subtitleTextFontWeight","subtitleTextLineHeight","subtitleTextTracking","headingPaddingLeft","headingPaddingRight","containerHeightWithSubtitle","headline","paddingTop","paddingBottom","titleMaxLines","subtitleMaxLines","display","appBarStyle","size","css","AppBarSizeStyle","AppBarToken","color","surface","surfaceContainer","elevation","level0","level1","onSurface","onSurfaceVariant","AppBarStyle","motion","duration","medium1","easing","M3eAppBarElement","HtmlFor","Role","LitElement","constructor","_M3eAppBarElement_scrollHandler","set","this","e","_updateScroll","_M3eAppBarElement_frameLoadHandler","__classPrivateFieldGet","_M3eAppBarElement_instances","_M3eAppBarElement_handleFrameLoad","call","centered","attach","control","super","HTMLIFrameElement","addEventListener","passive","detach","removeEventListener","contentDocument","updated","_changedProperties","has","_M3eAppBarElement_computeCentered","_M3eAppBarElement_clearCentered","render","html","_M3eAppBarElement_handleLeadingIconSlotChange","_M3eAppBarElement_handleTitleSlotChange","_M3eAppBarElement_handleSubtitleSlotChange","_M3eAppBarElement_handleTrailingIconsSlotChange","scrollTop","_M3eAppBarElement_getFrameScrollTop","target","HTMLElement","_base","classList","toggle","hasAssignedNodes","setTimeout","style","removeProperty","leadingWidth","_leadingIcon","getBoundingClientRect","width","trailingWidth","_trailingIcon","setProperty","frame","Math","max","documentElement","body","styles","__decorate","query","prototype","property","type","Boolean","reflect","debounce","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"app-bar.min.js","sources":["../../src/app-bar/styles/AppBarSizeToken.ts","../../src/app-bar/styles/AppBarSizeStyle.ts","../../src/app-bar/styles/AppBarToken.ts","../../src/app-bar/styles/AppBarStyle.ts","../../src/app-bar/AppBarElement.ts"],"sourcesContent":["import { CSSResult, unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\nimport { AppBarSize } from \"../AppBarSize\";\r\n\r\n/** @private */\r\ntype _AppBarSizeToken = {\r\n containerHeight: CSSResult;\r\n containerHeightWithSubtitle?: CSSResult;\r\n paddingTop?: CSSResult;\r\n paddingBottom?: CSSResult;\r\n titleTextFontSize: CSSResult;\r\n titleTextFontWeight: CSSResult;\r\n titleTextLineHeight: CSSResult;\r\n titleTextTracking: CSSResult;\r\n subtitleTextFontSize: CSSResult;\r\n subtitleTextFontWeight: CSSResult;\r\n subtitleTextLineHeight: CSSResult;\r\n subtitleTextTracking: CSSResult;\r\n titleMaxLines?: CSSResult;\r\n subtitleMaxLines?: CSSResult;\r\n headingPaddingLeft: CSSResult;\r\n headingPaddingRight: CSSResult;\r\n};\r\n\r\n/**\r\n * Component design tokens that control the `M3eAppBarElement` for all size variants.\r\n * @internal\r\n */\r\nexport const AppBarSizeToken: Record<AppBarSize, _AppBarSizeToken> = {\r\n small: {\r\n containerHeight: unsafeCSS(`var(--m3e-app-bar-small-container-height, 4rem)`),\r\n titleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-small-title-text-font-size, ${DesignToken.typescale.standard.title.large.fontSize})`,\r\n ),\r\n titleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-small-title-text-font-weight, ${DesignToken.typescale.standard.title.large.fontWeight})`,\r\n ),\r\n titleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-small-title-text-line-height, ${DesignToken.typescale.standard.title.large.lineHeight})`,\r\n ),\r\n titleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-small-subtitle-text-tracking, ${DesignToken.typescale.standard.title.large.tracking})`,\r\n ),\r\n subtitleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-small-subtitle-text-font-size, ${DesignToken.typescale.standard.label.medium.fontSize})`,\r\n ),\r\n subtitleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-small-subtitle-text-font-weight, ${DesignToken.typescale.standard.label.medium.fontWeight})`,\r\n ),\r\n subtitleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-small-subtitle-text-line-height, ${DesignToken.typescale.standard.label.medium.lineHeight})`,\r\n ),\r\n subtitleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-small-subtitle-text-tracking, ${DesignToken.typescale.standard.label.medium.tracking})`,\r\n ),\r\n headingPaddingLeft: unsafeCSS(`var(--m3e-app-bar-small-heading-padding-left, 0.25rem)`),\r\n headingPaddingRight: unsafeCSS(`var(--m3e-app-bar-small-heading-padding-right, 0.25rem)`),\r\n },\r\n medium: {\r\n containerHeight: unsafeCSS(`var(--m3e-app-bar-medium-container-height, 7rem)`),\r\n containerHeightWithSubtitle: unsafeCSS(`var(--m3e-app-bar-medium-container-height-with-subtitle, 8.5rem)`),\r\n titleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-medium-title-text-font-size, ${DesignToken.typescale.standard.headline.medium.fontSize})`,\r\n ),\r\n titleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-medium-title-text-font-weight, ${DesignToken.typescale.standard.headline.medium.fontWeight})`,\r\n ),\r\n titleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-medium-title-text-line-height, ${DesignToken.typescale.standard.headline.medium.lineHeight})`,\r\n ),\r\n titleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-medium-subtitle-text-tracking, ${DesignToken.typescale.standard.headline.medium.tracking})`,\r\n ),\r\n subtitleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-medium-subtitle-text-font-size, ${DesignToken.typescale.standard.title.small.fontSize})`,\r\n ),\r\n subtitleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-medium-subtitle-text-font-weight, ${DesignToken.typescale.standard.title.small.fontWeight})`,\r\n ),\r\n subtitleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-medium-subtitle-text-line-height, ${DesignToken.typescale.standard.title.small.lineHeight})`,\r\n ),\r\n subtitleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-medium-subtitle-text-tracking, ${DesignToken.typescale.standard.title.small.tracking})`,\r\n ),\r\n headingPaddingLeft: unsafeCSS(`var(--m3e-app-bar-medium-heading-padding-left, 1rem)`),\r\n headingPaddingRight: unsafeCSS(`var(--m3e-app-bar-medium-heading-padding-right, 0.25rem)`),\r\n paddingTop: unsafeCSS(`var(--m3e-app-bar-medium-padding-top, 0.5rem)`),\r\n paddingBottom: unsafeCSS(`var(--m3e-app-bar-medium-padding-bottom, 0.75rem)`),\r\n titleMaxLines: unsafeCSS(`var(--m3e-app-bar-medium-title-max-lines, 2)`),\r\n subtitleMaxLines: unsafeCSS(`var(--m3e-app-bar-medium-subtitle-max-lines, 1)`),\r\n },\r\n large: {\r\n containerHeight: unsafeCSS(`var(--m3e-app-bar-large-container-height, 7.5rem)`),\r\n containerHeightWithSubtitle: unsafeCSS(`var(--m3e-app-bar-large-container-height-with-subtitle, 9.5rem)`),\r\n titleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-large-title-text-font-size, ${DesignToken.typescale.standard.display.small.fontSize})`,\r\n ),\r\n titleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-large-title-text-font-weight, ${DesignToken.typescale.standard.display.small.fontWeight})`,\r\n ),\r\n titleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-large-title-text-line-height, ${DesignToken.typescale.standard.display.small.lineHeight})`,\r\n ),\r\n titleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-large-subtitle-text-tracking, ${DesignToken.typescale.standard.display.small.tracking})`,\r\n ),\r\n subtitleTextFontSize: unsafeCSS(\r\n `var(--m3e-app-bar-large-subtitle-text-font-size, ${DesignToken.typescale.standard.title.medium.fontSize})`,\r\n ),\r\n subtitleTextFontWeight: unsafeCSS(\r\n `var(--m3e-app-bar-large-subtitle-text-font-weight, ${DesignToken.typescale.standard.title.medium.fontWeight})`,\r\n ),\r\n subtitleTextLineHeight: unsafeCSS(\r\n `var(--m3e-app-bar-large-subtitle-text-line-height, ${DesignToken.typescale.standard.title.medium.lineHeight})`,\r\n ),\r\n subtitleTextTracking: unsafeCSS(\r\n `var(--m3e-app-bar-large-subtitle-text-tracking, ${DesignToken.typescale.standard.title.medium.tracking})`,\r\n ),\r\n headingPaddingLeft: unsafeCSS(`var(--m3e-app-bar-large-heading-padding-left, 1rem)`),\r\n headingPaddingRight: unsafeCSS(`var(--m3e-app-bar-large-heading-padding-right, 0.25rem)`),\r\n paddingTop: unsafeCSS(`var(--m3e-app-bar-large-padding-top, 0.5rem)`),\r\n paddingBottom: unsafeCSS(`var(--m3e-app-bar-large-padding-bottom, 0.75rem)`),\r\n titleMaxLines: unsafeCSS(`var(--m3e-app-bar-large-title-max-lines, 2)`),\r\n subtitleMaxLines: unsafeCSS(`var(--m3e-app-bar-large-subtitle-max-lines, 1)`),\r\n },\r\n} as const;\r\n","import { css, CSSResult, CSSResultGroup, unsafeCSS } from \"lit\";\r\n\r\nimport { AppBarSize } from \"../AppBarSize\";\r\nimport { AppBarSizeToken } from \"./AppBarSizeToken\";\r\n\r\n/** @private */\r\nfunction appBarStyle(size: AppBarSize): CSSResult {\r\n return css`\r\n :host([size=\"${unsafeCSS(size)}\"]) .base:not(.with-subtitle) {\r\n min-height: ${AppBarSizeToken[size].containerHeight};\r\n }\r\n :host([size=\"${unsafeCSS(size)}\"]) .base.with-subtitle {\r\n min-height: ${AppBarSizeToken[size].containerHeightWithSubtitle ?? AppBarSizeToken[size].containerHeight};\r\n }\r\n :host([size=\"${unsafeCSS(size)}\"]) .title {\r\n font-size: ${AppBarSizeToken[size].titleTextFontSize};\r\n font-weight: ${AppBarSizeToken[size].titleTextFontWeight};\r\n line-height: ${AppBarSizeToken[size].titleTextLineHeight};\r\n letter-spacing: ${AppBarSizeToken[size].titleTextTracking};\r\n }\r\n :host([size=\"${unsafeCSS(size)}\"]) .subtitle {\r\n font-size: ${AppBarSizeToken[size].subtitleTextFontSize};\r\n font-weight: ${AppBarSizeToken[size].subtitleTextFontWeight};\r\n line-height: ${AppBarSizeToken[size].subtitleTextLineHeight};\r\n letter-spacing: ${AppBarSizeToken[size].subtitleTextTracking};\r\n }\r\n :host(:not([centered])[size=\"${unsafeCSS(size)}\"]) .label {\r\n padding-inline-start: ${AppBarSizeToken[size].headingPaddingLeft};\r\n padding-inline-end: ${AppBarSizeToken[size].headingPaddingRight};\r\n }\r\n :host([centered][size=\"${unsafeCSS(size)}\"]) .label {\r\n padding-inline: ${AppBarSizeToken[size].headingPaddingLeft};\r\n }\r\n :host([size=\"${unsafeCSS(size)}\"]) .base {\r\n padding-block-start: ${AppBarSizeToken[size].paddingTop ?? unsafeCSS(\"unset\")};\r\n padding-block-end: ${AppBarSizeToken[size].paddingBottom ?? unsafeCSS(\"unset\")};\r\n }\r\n ${AppBarSizeToken[size].titleMaxLines\r\n ? css`\r\n :host([size=\"${unsafeCSS(size)}\"]) .title {\r\n display: -webkit-box;\r\n -webkit-line-clamp: ${AppBarSizeToken[size].titleMaxLines};\r\n -webkit-box-orient: vertical;\r\n overflow: hidden;\r\n line-clamp: ${AppBarSizeToken[size].titleMaxLines};\r\n }\r\n `\r\n : css``}\r\n ${AppBarSizeToken[size].subtitleMaxLines\r\n ? css`\r\n :host([size=\"${unsafeCSS(size)}\"]) .subtitle {\r\n display: -webkit-box;\r\n -webkit-line-clamp: ${AppBarSizeToken[size].subtitleMaxLines};\r\n -webkit-box-orient: vertical;\r\n overflow: hidden;\r\n line-clamp: ${AppBarSizeToken[size].subtitleMaxLines};\r\n }\r\n `\r\n : css``}\r\n `;\r\n}\r\n\r\n/**\r\n * Size variant styles for `M3eAppBarElement`.\r\n * @internal\r\n */\r\nexport const AppBarSizeStyle: CSSResultGroup = [appBarStyle(\"small\"), appBarStyle(\"medium\"), appBarStyle(\"large\")];\r\n","import { unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\n/**\r\n * Component design tokens that control `M3eAppBarElement`.\r\n * @internal\r\n */\r\nexport const AppBarToken = {\r\n containerColor: unsafeCSS(`var(--m3e-app-bar-container-color, ${DesignToken.color.surface})`),\r\n containerColorOnScroll: unsafeCSS(\r\n `var(--m3e-app-bar-container-color-on-scroll, ${DesignToken.color.surfaceContainer})`,\r\n ),\r\n containerElevation: unsafeCSS(`var(--m3e-app-bar-container-elevation, ${DesignToken.elevation.level0})`),\r\n containerElevationOnScroll: unsafeCSS(\r\n `var(--m3e-app-bar-container-elevation-on-scroll, ${DesignToken.elevation.level1})`,\r\n ),\r\n titleTextColor: unsafeCSS(`var(--m3e-app-bar-title-text-color, ${DesignToken.color.onSurface})`),\r\n subtitleTextColor: unsafeCSS(`var(--m3e-app-bar-subtitle-text-color, ${DesignToken.color.onSurfaceVariant})`),\r\n paddingLeft: unsafeCSS(`var(--m3e-app-bar-padding-left, 0.25rem)`),\r\n paddingRight: unsafeCSS(`var(--m3e-app-bar-padding-right, 0.25rem)`),\r\n} as const;\r\n","import { css, CSSResult, unsafeCSS } from \"lit\";\r\n\r\nimport { DesignToken } from \"@m3e/web/core\";\r\n\r\nimport { AppBarToken } from \"./AppBarToken\";\r\n\r\n/**\r\n * Baseline styles for `M3eAppBarElement`.\r\n * @internal\r\n */\r\nexport const AppBarStyle: CSSResult = css`\r\n :host {\r\n display: block;\r\n flex: none;\r\n }\r\n :host([size=\"small\"]) .base,\r\n :host(:not([size=\"small\"]):not([centered])) .heading {\r\n padding-inline-start: ${AppBarToken.paddingLeft};\r\n padding-inline-end: ${AppBarToken.paddingRight};\r\n }\r\n .base {\r\n box-sizing: border-box;\r\n display: flex;\r\n transition: ${unsafeCSS(\r\n `background-color ${DesignToken.motion.duration.medium1} ${DesignToken.motion.easing.standard},\r\n box-shadow ${DesignToken.motion.duration.medium1} ${DesignToken.motion.easing.standard}`,\r\n )};\r\n }\r\n .base:not(.on-scroll) {\r\n background-color: ${AppBarToken.containerColor};\r\n box-shadow: ${AppBarToken.containerElevation};\r\n }\r\n .base.on-scroll {\r\n background-color: ${AppBarToken.containerColorOnScroll};\r\n box-shadow: ${AppBarToken.containerElevationOnScroll};\r\n }\r\n .leading-icon,\r\n .trailing-icon {\r\n display: flex;\r\n flex: none;\r\n align-items: center;\r\n }\r\n .leading-icon {\r\n min-width: var(--_leading-icon-min-width);\r\n }\r\n .trailing-icon {\r\n min-width: var(--_trailing-icon-min-width);\r\n }\r\n .heading {\r\n display: flex;\r\n align-items: center;\r\n }\r\n :host([size=\"small\"]) .heading {\r\n flex: 1 1 auto;\r\n }\r\n .spacer {\r\n flex: 1 1 auto;\r\n }\r\n .label {\r\n display: flex;\r\n flex-direction: column;\r\n flex: none;\r\n }\r\n .title {\r\n color: ${AppBarToken.titleTextColor};\r\n }\r\n .subtitle {\r\n color: ${AppBarToken.subtitleTextColor};\r\n }\r\n .base:not(.with-title) .title,\r\n .base:not(.with-subtitle) .subtitle,\r\n .base:not(.with-title):not(.with-subtitle) .label,\r\n .base:not(.with-trailing-icon) .trailing-icon {\r\n display: none;\r\n }\r\n :host([size=\"small\"]) .base {\r\n align-items: center;\r\n }\r\n :host([size=\"small\"]) .heading {\r\n min-width: 0;\r\n }\r\n :host([size=\"small\"]) .label {\r\n flex: 1 1 auto;\r\n min-width: 0;\r\n }\r\n :host([size=\"small\"]) .title,\r\n :host([size=\"small\"]) .subtitle {\r\n display: block;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n :host(:not([size=\"small\"])) .base {\r\n flex-direction: column;\r\n }\r\n :host([centered]) .title,\r\n :host([centered]) .subtitle {\r\n text-align: center;\r\n }\r\n @media (prefers-reduced-motion) {\r\n .base {\r\n transition: none;\r\n }\r\n }\r\n @media (forced-colors: active) {\r\n .base {\r\n transition: none;\r\n }\r\n .base:not(.on-scroll),\r\n .base.on-scroll {\r\n background-color: Canvas;\r\n box-shadow: unset;\r\n }\r\n .title {\r\n color: CanvasText;\r\n }\r\n .subtitle {\r\n color: FieldText;\r\n }\r\n }\r\n`;\r\n","import { CSSResultGroup, html, LitElement, PropertyValues } from \"lit\";\r\nimport { property, query } from \"lit/decorators.js\";\r\n\r\nimport { customElement, debounce, hasAssignedNodes, HtmlFor, Role } from \"@m3e/web/core\";\r\n\r\nimport { AppBarSize } from \"./AppBarSize\";\r\n\r\nimport { AppBarSizeStyle, AppBarStyle } from \"./styles\";\r\n\r\n/**\r\n * A bar, placed a the top of a screen, used to help users navigate through an application.\r\n *\r\n * @description\r\n * The `m3e-app-bar` component is a prominent user interface component that provides consistent\r\n * access to key actions, navigation, and contextual information at the top of an application screen.\r\n * Designed according to Material 3 principles, it organizes content with clear hierarchy, supports\r\n * dynamic color, elevation, and shape, and adapts to scrolling behavior.\r\n *\r\n * @example\r\n * ```html\r\n * <m3e-app-bar size=\"medium\">\r\n * <m3e-icon-button slot=\"leading-icon\" aria-label=\"Back\">\r\n * <m3e-icon name=\"arrow_back\"></m3e-icon>\r\n * </m3e-icon-button>\r\n * <span slot=\"title\">Top 10 hiking trails</span>\r\n * <span slot=\"subtitle\">Discover popular trails</span>\r\n * <m3e-icon-button slot=\"trailing-icon\" aria-label=\"Bookmark\" variant=\"tonal\">\r\n * <m3e-icon name=\"bookmark\" filled></m3e-icon>\r\n * </m3e-icon-button>\r\n * <m3e-app-bar>\r\n * ```\r\n * @example\r\n * The next example illustrates how to attach an app bar to a parenting scroll container\r\n * to produce elevation on scroll. In this example, the `for` attribute is used to attach a\r\n * sticky positioned `m3e-app-bar` to a parenting container styled to overflow vertically.\r\n * When scrolled, the app bar will automatically transition to an elevated state.\r\n * ```html\r\n * <div style=\"overflow-y: auto; height: 300px\" id=\"scrollContainer\">\r\n * <m3e-app-bar for=\"scrollContainer\" style=\"position: sticky; top: 0\">\r\n * <span slot=\"title\">Title</span>\r\n * </m3e-app-bar>\r\n * <div style=\"height: 400px; display: flex; align-items: center; justify-content: center\">\r\n * I am scrolling content\r\n * </div>\r\n * </div>\r\n * ```\r\n *\r\n * @tag m3e-app-bar\r\n *\r\n * @slot leading - Renders content positioned at the start of the bar.\r\n * @slot subtitle - Renders the subtitle of the bar.\r\n * @slot title - Renders the title of the bar.\r\n * @slot trailing - Renders one or more action buttons aligned to the end of the bar.\r\n * @slot leading-icon - Deprecated: use the `leading` slot.\r\n * @slot trailing-icon - Deprecated: use the `trailing` slot.\r\n *\r\n * @attr centered - Whether the title and subtitle are centered.\r\n * @attr for - The identifier of the interactive control to which this element is attached.\r\n * @attr size - The size of the bar.\r\n *\r\n * @cssprop --m3e-app-bar-container-color - Background color of the app bar container.\r\n * @cssprop --m3e-app-bar-container-color-on-scroll - Background color of the app bar container when scrolled.\r\n * @cssprop --m3e-app-bar-container-elevation - Elevation (shadow) of the app bar container.\r\n * @cssprop --m3e-app-bar-container-elevation-on-scroll - Elevation (shadow) of the app bar container when scrolled.\r\n * @cssprop --m3e-app-bar-title-text-color - Color of the app bar title text.\r\n * @cssprop --m3e-app-bar-subtitle-text-color - Color of the app bar subtitle text.\r\n * @cssprop --m3e-app-bar-padding-left - Left padding for the app bar container.\r\n * @cssprop --m3e-app-bar-padding-right - Right padding for the app bar container.\r\n * @cssprop --m3e-app-bar-small-container-height - Height of the small app bar container.\r\n * @cssprop --m3e-app-bar-small-title-text-font-size - Font size for the small app bar title text.\r\n * @cssprop --m3e-app-bar-small-title-text-font-weight - Font weight for the small app bar title text.\r\n * @cssprop --m3e-app-bar-small-title-text-line-height - Line height for the small app bar title text.\r\n * @cssprop --m3e-app-bar-small-subtitle-text-tracking - Letter spacing (tracking) for the small app bar title text.\r\n * @cssprop --m3e-app-bar-small-subtitle-text-font-size - Font size for the small app bar subtitle text.\r\n * @cssprop --m3e-app-bar-small-subtitle-text-font-weight - Font weight for the small app bar subtitle text.\r\n * @cssprop --m3e-app-bar-small-subtitle-text-line-height - Line height for the small app bar subtitle text.\r\n * @cssprop --m3e-app-bar-small-subtitle-text-tracking - Letter spacing (tracking) for the small app bar subtitle text.\r\n * @cssprop --m3e-app-bar-small-heading-padding-left - Left padding for the small app bar heading.\r\n * @cssprop --m3e-app-bar-small-heading-padding-right - Right padding for the small app bar heading.\r\n * @cssprop --m3e-app-bar-medium-container-height - Height of the medium app bar container.\r\n * @cssprop --m3e-app-bar-medium-container-height-with-subtitle - Height of the medium app bar container with subtitle.\r\n * @cssprop --m3e-app-bar-medium-title-text-font-size - Font size for the medium app bar title text.\r\n * @cssprop --m3e-app-bar-medium-title-text-font-weight - Font weight for the medium app bar title text.\r\n * @cssprop --m3e-app-bar-medium-title-text-line-height - Line height for the medium app bar title text.\r\n * @cssprop --m3e-app-bar-medium-subtitle-text-tracking - Letter spacing (tracking) for the medium app bar title text.\r\n * @cssprop --m3e-app-bar-medium-subtitle-text-font-size - Font size for the medium app bar subtitle text.\r\n * @cssprop --m3e-app-bar-medium-subtitle-text-font-weight - Font weight for the medium app bar subtitle text.\r\n * @cssprop --m3e-app-bar-medium-subtitle-text-line-height - Line height for the medium app bar subtitle text.\r\n * @cssprop --m3e-app-bar-medium-subtitle-text-tracking - Letter spacing (tracking) for the medium app bar subtitle text.\r\n * @cssprop --m3e-app-bar-medium-heading-padding-left - Left padding for the medium app bar heading.\r\n * @cssprop --m3e-app-bar-medium-heading-padding-right - Right padding for the medium app bar heading.\r\n * @cssprop --m3e-app-bar-medium-padding-top - Top padding for the medium app bar.\r\n * @cssprop --m3e-app-bar-medium-padding-bottom - Bottom padding for the medium app bar.\r\n * @cssprop --m3e-app-bar-medium-title-max-lines - Maximum number of lines for the medium app bar title.\r\n * @cssprop --m3e-app-bar-medium-subtitle-max-lines - Maximum number of lines for the medium app bar subtitle.\r\n * @cssprop --m3e-app-bar-large-container-height - Height of the large app bar container.\r\n * @cssprop --m3e-app-bar-large-container-height-with-subtitle - Height of the large app bar container with subtitle.\r\n * @cssprop --m3e-app-bar-large-title-text-font-size - Font size for the large app bar title text.\r\n * @cssprop --m3e-app-bar-large-title-text-font-weight - Font weight for the large app bar title text.\r\n * @cssprop --m3e-app-bar-large-title-text-line-height - Line height for the large app bar title text.\r\n * @cssprop --m3e-app-bar-large-subtitle-text-tracking - Letter spacing (tracking) for the large app bar title text.\r\n * @cssprop --m3e-app-bar-large-subtitle-text-font-size - Font size for the large app bar subtitle text.\r\n * @cssprop --m3e-app-bar-large-subtitle-text-font-weight - Font weight for the large app bar subtitle text.\r\n * @cssprop --m3e-app-bar-large-subtitle-text-line-height - Line height for the large app bar subtitle text.\r\n * @cssprop --m3e-app-bar-large-subtitle-text-tracking - Letter spacing (tracking) for the large app bar subtitle text.\r\n * @cssprop --m3e-app-bar-large-heading-padding-left - Left padding for the large app bar heading.\r\n * @cssprop --m3e-app-bar-large-heading-padding-right - Right padding for the large app bar heading.\r\n * @cssprop --m3e-app-bar-large-padding-top - Top padding for the large app bar.\r\n * @cssprop --m3e-app-bar-large-padding-bottom - Bottom padding for the large app bar.\r\n * @cssprop --m3e-app-bar-large-title-max-lines - Maximum number of lines for the large app bar title.\r\n * @cssprop --m3e-app-bar-large-subtitle-max-lines - Maximum number of lines for the large app bar subtitle.\r\n */\r\n@customElement(\"m3e-app-bar\")\r\nexport class M3eAppBarElement extends HtmlFor(Role(LitElement, \"banner\")) {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = [AppBarStyle, AppBarSizeStyle];\r\n\r\n /** @private */ readonly #scrollHandler = (e: Event) => this._updateScroll(e);\r\n /** @private */ readonly #frameLoadHandler = () => this.#handleFrameLoad();\r\n /** @private */ @query(\".base\") private readonly _base?: HTMLElement;\r\n /** @private */ @query(\".leading-icon\") private readonly _leadingIcon?: HTMLElement;\r\n /** @private */ @query(\".trailing-icon\") private readonly _trailingIcon?: HTMLElement;\r\n\r\n /**\r\n * Whether the title and subtitle are centered.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) centered = false;\r\n\r\n /**\r\n * The size of the bar.\r\n * @default \"small\"\r\n */\r\n @property({ reflect: true }) size: AppBarSize = \"small\";\r\n\r\n /** @inheritdoc */\r\n override attach(control: HTMLElement): void {\r\n super.attach(control);\r\n\r\n if (control instanceof HTMLIFrameElement) {\r\n control.addEventListener(\"load\", this.#frameLoadHandler);\r\n this.#handleFrameLoad();\r\n } else {\r\n control.addEventListener(\"scroll\", this.#scrollHandler, { passive: true });\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override detach(): void {\r\n if (this.control instanceof HTMLIFrameElement) {\r\n this.control.removeEventListener(\"load\", this.#frameLoadHandler);\r\n this.control.contentDocument?.removeEventListener(\"scroll\", this.#scrollHandler);\r\n }\r\n if (this.control) {\r\n this.control.removeEventListener(\"scroll\", this.#scrollHandler);\r\n }\r\n super.detach();\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override updated(_changedProperties: PropertyValues<this>): void {\r\n super.updated(_changedProperties);\r\n\r\n if (_changedProperties.has(\"centered\") || _changedProperties.has(\"size\")) {\r\n if (this.centered && this.size === \"small\") {\r\n this.#computeCentered();\r\n } else {\r\n this.#clearCentered();\r\n }\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n switch (this.size) {\r\n case \"small\":\r\n return html`<div class=\"base\">\r\n <div class=\"leading-icon\">\r\n <slot name=\"leading\" @slotchange=\"${this.#handleLeadingIconSlotChange}\">\r\n <slot name=\"leading-icon\" @slotchange=\"${this.#handleDeprecatedSlotChange}\"></slot>\r\n </slot>\r\n </div>\r\n <div class=\"heading\">\r\n <div class=\"label\">\r\n <div class=\"title\">\r\n <slot name=\"title\" @slotchange=\"${this.#handleTitleSlotChange}\"></slot>\r\n </div>\r\n <div class=\"subtitle\">\r\n <slot name=\"subtitle\" @slotchange=\"${this.#handleSubtitleSlotChange}\"></slot>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"trailing-icon\">\r\n <slot name=\"trailing\" @slotchange=\"${this.#handleTrailingIconsSlotChange}\">\r\n <slot name=\"trailing-icon\" @slotchange=\"${this.#handleDeprecatedSlotChange}\"></slot>\r\n </slot>\r\n </div>\r\n </div>`;\r\n\r\n default:\r\n return html`<div class=\"base\">\r\n <div class=\"heading\">\r\n <div class=\"leading-icon\">\r\n <slot name=\"leading\" @slotchange=\"${this.#handleLeadingIconSlotChange}\">\r\n <slot name=\"leading-icon\" @slotchange=\"${this.#handleDeprecatedSlotChange}\"></slot>\r\n </slot>\r\n </div>\r\n <div class=\"spacer\"></div>\r\n <div class=\"trailing-icon\">\r\n <slot name=\"trailing\" @slotchange=\"${this.#handleTrailingIconsSlotChange}\">\r\n <slot name=\"trailing-icon\" @slotchange=\"${this.#handleDeprecatedSlotChange}\"></slot>\r\n </slot>\r\n </div>\r\n </div>\r\n <div class=\"spacer\"></div>\r\n <div class=\"label\">\r\n <div class=\"title\">\r\n <slot name=\"title\" @slotchange=\"${this.#handleTitleSlotChange}\"></slot>\r\n </div>\r\n <div class=\"subtitle\">\r\n <slot name=\"subtitle\" @slotchange=\"${this.#handleSubtitleSlotChange}\"></slot>\r\n </div>\r\n </div>\r\n </div>`;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleTitleSlotChange(e: Event): void {\r\n this._base?.classList.toggle(\"with-title\", hasAssignedNodes(<HTMLSlotElement>e.target));\r\n }\r\n\r\n /** @private */\r\n #handleSubtitleSlotChange(e: Event): void {\r\n this._base?.classList.toggle(\"with-subtitle\", hasAssignedNodes(<HTMLSlotElement>e.target));\r\n }\r\n\r\n /** @private */\r\n #handleLeadingIconSlotChange(e: Event): void {\r\n this._base?.classList.toggle(\"with-leading-icon\", hasAssignedNodes(<HTMLSlotElement>e.target));\r\n if (this.centered && this.size === \"small\") {\r\n setTimeout(() => this.#computeCentered(), 40);\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleTrailingIconsSlotChange(e: Event): void {\r\n this._base?.classList.toggle(\"with-trailing-icon\", hasAssignedNodes(<HTMLSlotElement>e.target));\r\n if (this.centered && this.size === \"small\") {\r\n setTimeout(() => this.#computeCentered(), 40);\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleDeprecatedSlotChange(e: Event): void {\r\n const deprecatedSlot = (e.target as HTMLSlotElement).name;\r\n const useSlot = deprecatedSlot.replace(\"-icon\", \"\");\r\n\r\n console.warn(\r\n `[m3e-app-bar] Slot \"${deprecatedSlot}\" is deprecated and will be removed in a future release. Use \"${useSlot}\" instead.`,\r\n );\r\n }\r\n\r\n /** @private */\r\n #clearCentered() {\r\n this._base?.style.removeProperty(\"--_leading-icon-min-width\");\r\n this._base?.style.removeProperty(\"--_trailing-icon-min-width\");\r\n }\r\n\r\n /** @private */\r\n #computeCentered(): void {\r\n this.#clearCentered();\r\n\r\n const leadingWidth = this._leadingIcon?.getBoundingClientRect().width ?? 0;\r\n const trailingWidth = this._trailingIcon?.getBoundingClientRect().width ?? 0;\r\n\r\n if (leadingWidth < trailingWidth) {\r\n this._base?.style.setProperty(\"--_leading-icon-min-width\", `${trailingWidth}px`);\r\n } else if (leadingWidth > trailingWidth) {\r\n this._base?.style.setProperty(\"--_trailing-icon-min-width\", `${leadingWidth}px`);\r\n }\r\n }\r\n\r\n /** @private */\r\n @debounce(40)\r\n private _updateScroll(e: Event): void {\r\n let scrollTop = 0;\r\n\r\n if (this.control instanceof HTMLIFrameElement) {\r\n scrollTop = this.#getFrameScrollTop(this.control);\r\n } else if (e.target instanceof HTMLElement) {\r\n scrollTop = e.target.scrollTop;\r\n }\r\n\r\n this._base?.classList.toggle(\"on-scroll\", scrollTop > 0);\r\n }\r\n\r\n /** @private */\r\n #handleFrameLoad(): void {\r\n if (this.control instanceof HTMLIFrameElement) {\r\n this.control.contentDocument?.addEventListener(\"scroll\", this.#scrollHandler, { passive: true });\r\n this._base?.classList.toggle(\"on-scroll\", this.#getFrameScrollTop(this.control) > 0);\r\n }\r\n }\r\n\r\n /** @private */\r\n #getFrameScrollTop(frame: HTMLIFrameElement): number {\r\n // Both document element (<html>) and body are tested for scroll top, taking the maximum.\r\n return Math.max(\r\n frame.contentDocument?.documentElement?.scrollTop ?? 0,\r\n frame.contentDocument?.body?.scrollTop ?? 0,\r\n );\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-app-bar\": M3eAppBarElement;\r\n }\r\n}\r\n"],"names":["AppBarSizeToken","small","containerHeight","unsafeCSS","titleTextFontSize","DesignToken","typescale","standard","title","large","fontSize","titleTextFontWeight","fontWeight","titleTextLineHeight","lineHeight","titleTextTracking","tracking","subtitleTextFontSize","label","medium","subtitleTextFontWeight","subtitleTextLineHeight","subtitleTextTracking","headingPaddingLeft","headingPaddingRight","containerHeightWithSubtitle","headline","paddingTop","paddingBottom","titleMaxLines","subtitleMaxLines","display","appBarStyle","size","css","AppBarSizeStyle","AppBarToken","color","surface","surfaceContainer","elevation","level0","level1","onSurface","onSurfaceVariant","AppBarStyle","motion","duration","medium1","easing","M3eAppBarElement","HtmlFor","Role","LitElement","constructor","_M3eAppBarElement_scrollHandler","set","this","e","_updateScroll","_M3eAppBarElement_frameLoadHandler","__classPrivateFieldGet","_M3eAppBarElement_instances","_M3eAppBarElement_handleFrameLoad","call","centered","attach","control","super","HTMLIFrameElement","addEventListener","passive","detach","removeEventListener","contentDocument","updated","_changedProperties","has","_M3eAppBarElement_computeCentered","_M3eAppBarElement_clearCentered","render","html","_M3eAppBarElement_handleLeadingIconSlotChange","_M3eAppBarElement_handleDeprecatedSlotChange","_M3eAppBarElement_handleTitleSlotChange","_M3eAppBarElement_handleSubtitleSlotChange","_M3eAppBarElement_handleTrailingIconsSlotChange","scrollTop","_M3eAppBarElement_getFrameScrollTop","target","HTMLElement","_base","classList","toggle","hasAssignedNodes","setTimeout","deprecatedSlot","name","useSlot","replace","console","warn","style","removeProperty","leadingWidth","_leadingIcon","getBoundingClientRect","width","trailingWidth","_trailingIcon","setProperty","frame","Math","max","documentElement","body","styles","__decorate","query","prototype","property","type","Boolean","reflect","debounce","customElement"],"mappings":"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"}