@sbb-esta/lyne-elements-dev 5.0.0-next-dev.1776866482 → 5.0.0-next-dev.1776872994

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 (315) hide show
  1. package/autocomplete/autocomplete-base-element.js +1 -1
  2. package/autocomplete/autocomplete.component.js +1 -1
  3. package/{autocomplete-base-element-gPLexIVc.js → autocomplete-base-element-BmiLbRHZ.js} +1 -1
  4. package/autocomplete.js +1 -1
  5. package/autocomplete.pure.js +1 -1
  6. package/{block-link-common-CiqQc2Rs.js → block-link-common-BiM6tnUZ.js} +1 -1
  7. package/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
  8. package/{breadcrumb-group.component-Bfm4RZu7.js → breadcrumb-group.component-De3Lu3lx.js} +1 -1
  9. package/breadcrumb.js +1 -1
  10. package/breadcrumb.pure.js +1 -1
  11. package/button/common/button-common.js +1 -1
  12. package/button-common-Cu47yCSS.js +85 -0
  13. package/button.js +1 -1
  14. package/button.pure.js +1 -1
  15. package/calendar/calendar/calendar.component.js +1 -1
  16. package/{calendar.component-ZyfTrKs_.js → calendar.component-nWdtZYqg.js} +1 -1
  17. package/calendar.js +1 -1
  18. package/calendar.pure.js +1 -1
  19. package/card/card-badge/card-badge.component.js +1 -1
  20. package/{card-badge.component-CsEpGTHm.js → card-badge.component-CEqox6TU.js} +1 -1
  21. package/card.js +1 -1
  22. package/card.pure.js +1 -1
  23. package/checkbox/checkbox.component.js +1 -1
  24. package/checkbox/common/checkbox-common.js +1 -1
  25. package/{checkbox-common-Bo4u1RXX.js → checkbox-common-DSmxKbmR.js} +1 -1
  26. package/{checkbox.component-vjqZh2aC.js → checkbox.component-CR2aIgjA.js} +1 -1
  27. package/checkbox.js +2 -2
  28. package/checkbox.pure.js +2 -2
  29. package/chip/chip-group/chip-group.component.js +1 -1
  30. package/{chip-group.component-DPzfaV_H.js → chip-group.component-DbNctvjy.js} +1 -1
  31. package/chip.js +1 -1
  32. package/chip.pure.js +1 -1
  33. package/{compact-paginator.component-DEEhXiMm.js → compact-paginator.component-Dyu9bezr.js} +1 -1
  34. package/core/styles/core.scss +17 -73
  35. package/core/styles/mixins/typo.scss +2 -2
  36. package/core.css +67 -65
  37. package/custom-elements.json +3179 -3179
  38. package/development/autocomplete/autocomplete-base-element.js +1 -1
  39. package/development/autocomplete/autocomplete.component.js +1 -1
  40. package/development/autocomplete-base-element-BC3IUhrb.js +686 -0
  41. package/development/autocomplete.js +1 -1
  42. package/development/autocomplete.pure.js +1 -1
  43. package/development/{block-link-common-B9Vx8CTp.js → block-link-common-qMULXu4g.js} +2 -2
  44. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
  45. package/development/breadcrumb-group.component-BC1mWiQE.js +193 -0
  46. package/development/breadcrumb.js +1 -1
  47. package/development/breadcrumb.pure.js +1 -1
  48. package/development/button/common/button-common.js +1 -1
  49. package/development/{button-common-jaQVRdwS.js → button-common-ChY47M8t.js} +3 -3
  50. package/development/button.js +1 -1
  51. package/development/button.pure.js +1 -1
  52. package/development/calendar/calendar/calendar.component.js +1 -1
  53. package/development/calendar.component-B5dz7mau.js +1451 -0
  54. package/development/calendar.js +1 -1
  55. package/development/calendar.pure.js +1 -1
  56. package/development/card/card-badge/card-badge.component.js +1 -1
  57. package/development/card-badge.component-CQBLpmpo.js +83 -0
  58. package/development/card.js +1 -1
  59. package/development/card.pure.js +1 -1
  60. package/development/checkbox/checkbox.component.js +1 -1
  61. package/development/checkbox/common/checkbox-common.js +1 -1
  62. package/development/checkbox-common-DOoEKgML.js +84 -0
  63. package/development/{checkbox.component-DgrfkdyZ.js → checkbox.component-DZjhQhbB.js} +2 -2
  64. package/development/checkbox.js +2 -2
  65. package/development/checkbox.pure.js +2 -2
  66. package/development/chip/chip-group/chip-group.component.js +1 -1
  67. package/development/chip-group.component-B4Mjcep2.js +402 -0
  68. package/development/chip.js +1 -1
  69. package/development/chip.pure.js +1 -1
  70. package/development/compact-paginator.component-CRojCci5.js +51 -0
  71. package/development/error.component-TvgLhaZh.js +53 -0
  72. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +1 -1
  73. package/development/expansion-panel-header.component-Ok8Qmq5K.js +82 -0
  74. package/development/expansion-panel.js +1 -1
  75. package/development/expansion-panel.pure.js +1 -1
  76. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
  77. package/development/{file-selector-dropzone.component-dyv_u-Ga.js → file-selector-dropzone.component-B1Y5qOjb.js} +2 -2
  78. package/development/file-selector.js +1 -1
  79. package/development/file-selector.pure.js +1 -1
  80. package/development/footer/footer.component.js +1 -1
  81. package/development/footer.component-kFeZqO-Q.js +169 -0
  82. package/development/footer.js +1 -1
  83. package/development/footer.pure.js +1 -1
  84. package/development/form-field/error/error.component.js +1 -1
  85. package/development/form-field/form-field/form-field.component.js +1 -1
  86. package/development/form-field/hint/hint.component.js +1 -1
  87. package/development/form-field.component-CdTnOAi2.js +703 -0
  88. package/development/form-field.js +3 -3
  89. package/development/form-field.pure.js +3 -3
  90. package/development/header/header/header.component.js +1 -1
  91. package/development/header.component-BmZkCs9m.js +335 -0
  92. package/development/header.js +1 -1
  93. package/development/header.pure.js +1 -1
  94. package/development/hint.component-D5rTFJ-O.js +36 -0
  95. package/development/link/common/block-link-common.js +1 -1
  96. package/development/link.js +1 -1
  97. package/development/link.pure.js +1 -1
  98. package/development/message/message.component.js +1 -1
  99. package/development/message.component-Dzah9lXK.js +43 -0
  100. package/development/message.js +1 -1
  101. package/development/message.pure.js +1 -1
  102. package/development/navigation/common/navigation-action-common.js +1 -1
  103. package/development/navigation/navigation-marker/navigation-marker.component.js +1 -1
  104. package/development/navigation/navigation-section/navigation-section.component.js +1 -1
  105. package/development/{navigation-action-common-ZBiv0Xiw.js → navigation-action-common-B2soWZWW.js} +2 -2
  106. package/development/{navigation-marker.component-BsfPR_uk.js → navigation-marker.component-BRdbbjF5.js} +2 -2
  107. package/development/{navigation-section.component-BSvxMUxM.js → navigation-section.component-VwCJlOfE.js} +2 -2
  108. package/development/navigation.js +3 -3
  109. package/development/navigation.pure.js +3 -3
  110. package/development/notification/notification.component.js +1 -1
  111. package/development/notification.component-BgF5aGrn.js +271 -0
  112. package/development/notification.js +1 -1
  113. package/development/notification.pure.js +1 -1
  114. package/development/paginator/compact-paginator/compact-paginator.component.js +1 -1
  115. package/development/paginator/paginator/paginator.component.js +1 -1
  116. package/development/paginator.component-BlyTYIs0.js +261 -0
  117. package/development/paginator.js +2 -2
  118. package/development/paginator.pure.js +2 -2
  119. package/development/radio-button/common/radio-button-common.js +1 -1
  120. package/development/radio-button/radio-button.component.js +1 -1
  121. package/development/radio-button-common-ZMs5IFm2.js +125 -0
  122. package/development/{radio-button.component-DAgH41z0.js → radio-button.component-DggZ7RZD.js} +2 -2
  123. package/development/radio-button.js +2 -2
  124. package/development/radio-button.pure.js +2 -2
  125. package/development/select/select.component.js +1 -1
  126. package/development/select.component-CZI19HAK.js +804 -0
  127. package/development/select.js +1 -1
  128. package/development/select.pure.js +1 -1
  129. package/development/status/status.component.js +1 -1
  130. package/development/status.component-BtJ8ri61.js +110 -0
  131. package/development/status.js +1 -1
  132. package/development/status.pure.js +1 -1
  133. package/development/step-label.component-Dfx9rLcN.js +126 -0
  134. package/development/stepper/step-label/step-label.component.js +1 -1
  135. package/development/stepper.js +1 -1
  136. package/development/stepper.pure.js +1 -1
  137. package/development/styles-WppEBrlW.js +14 -0
  138. package/development/{tab-label.component-Du1W0dxN.js → tab-label.component-Ggx6qaIk.js} +2 -2
  139. package/development/tabs/common/styles.js +1 -1
  140. package/development/tabs/tab-label/tab-label.component.js +1 -1
  141. package/development/tabs.js +2 -2
  142. package/development/tabs.pure.js +2 -2
  143. package/development/tag/tag/tag.component.js +1 -1
  144. package/development/tag.component-Davxisfj.js +241 -0
  145. package/development/tag.js +1 -1
  146. package/development/tag.pure.js +1 -1
  147. package/development/teaser-hero/teaser-hero.component.js +1 -1
  148. package/development/teaser-hero.component-bp9IsVmY.js +100 -0
  149. package/development/teaser-hero.js +1 -1
  150. package/development/teaser-hero.pure.js +1 -1
  151. package/development/timetable-occupancy/timetable-occupancy.component.js +1 -1
  152. package/development/{timetable-occupancy.component-D6BIvkpY.js → timetable-occupancy.component-B-uVA9KC.js} +2 -2
  153. package/development/timetable-occupancy.js +1 -1
  154. package/development/timetable-occupancy.pure.js +1 -1
  155. package/development/title/title-base.js +1 -1
  156. package/development/title/title.component.js +1 -1
  157. package/development/{title-base-CWLTIRh_.js → title-base-DKVyL7TQ.js} +2 -2
  158. package/development/{title.component-TCKohHBO.js → title.component-BEEzA9cF.js} +2 -2
  159. package/development/title.js +2 -2
  160. package/development/title.pure.js +2 -2
  161. package/development/toast/toast.component.js +1 -1
  162. package/development/{toast.component-CZL72aVO.js → toast.component-1YR4wmm9.js} +2 -2
  163. package/development/toast.js +1 -1
  164. package/development/toast.pure.js +1 -1
  165. package/development/toggle/toggle/toggle.component.js +1 -1
  166. package/development/toggle.component-CQYpVyvs.js +244 -0
  167. package/development/toggle.js +1 -1
  168. package/development/toggle.pure.js +1 -1
  169. package/development/tooltip/tooltip.component.js +1 -1
  170. package/development/tooltip.component-Br7aDPFn.js +369 -0
  171. package/development/tooltip.js +1 -1
  172. package/development/tooltip.pure.js +1 -1
  173. package/development/train/train-wagon/train-wagon.component.js +1 -1
  174. package/development/{train-wagon.component-X0XSMLK_.js → train-wagon.component-B6V4dPKn.js} +2 -2
  175. package/development/train.js +1 -1
  176. package/development/train.pure.js +1 -1
  177. package/{error.component-BLChP2fE.js → error.component-D3JgDJfN.js} +1 -1
  178. package/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +1 -1
  179. package/{expansion-panel-header.component-DdRIlyms.js → expansion-panel-header.component-DYvq-uUi.js} +1 -1
  180. package/expansion-panel.js +1 -1
  181. package/expansion-panel.pure.js +1 -1
  182. package/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
  183. package/{file-selector-dropzone.component-Bz3Wpl0X.js → file-selector-dropzone.component-BSF-kegh.js} +1 -1
  184. package/file-selector.js +1 -1
  185. package/file-selector.pure.js +1 -1
  186. package/footer/footer.component.js +1 -1
  187. package/{footer.component-Don15vOd.js → footer.component-CdTEaV6u.js} +1 -1
  188. package/footer.js +1 -1
  189. package/footer.pure.js +1 -1
  190. package/form-field/error/error.component.js +1 -1
  191. package/form-field/form-field/form-field.component.js +1 -1
  192. package/form-field/hint/hint.component.js +1 -1
  193. package/{form-field.component-DbV7fMoe.js → form-field.component-Dtzbp6-e.js} +1 -1
  194. package/form-field.js +3 -3
  195. package/form-field.pure.js +3 -3
  196. package/header/header/header.component.js +1 -1
  197. package/{header.component-D-WVEMFn.js → header.component-DoAFSXgO.js} +1 -1
  198. package/header.js +1 -1
  199. package/header.pure.js +1 -1
  200. package/{hint.component-CaF6CBCN.js → hint.component-BB_h0G6v.js} +1 -1
  201. package/link/common/block-link-common.js +1 -1
  202. package/link.js +1 -1
  203. package/link.pure.js +1 -1
  204. package/message/message.component.js +1 -1
  205. package/message.component-CF-_MD7m.js +26 -0
  206. package/message.js +1 -1
  207. package/message.pure.js +1 -1
  208. package/navigation/common/navigation-action-common.js +1 -1
  209. package/navigation/navigation-marker/navigation-marker.component.js +1 -1
  210. package/navigation/navigation-section/navigation-section.component.js +1 -1
  211. package/{navigation-action-common-Dm47M2BG.js → navigation-action-common-D2vwX-oy.js} +1 -1
  212. package/{navigation-marker.component-1VHe19c9.js → navigation-marker.component-BQzC4gn_.js} +1 -1
  213. package/{navigation-section.component-DrnbQAZX.js → navigation-section.component-CR-FanCa.js} +1 -1
  214. package/navigation.js +3 -3
  215. package/navigation.pure.js +3 -3
  216. package/notification/notification.component.js +1 -1
  217. package/{notification.component-IsSZe3Ul.js → notification.component-D9oxjMJs.js} +1 -1
  218. package/notification.js +1 -1
  219. package/notification.pure.js +1 -1
  220. package/off-brand-theme.css +67 -65
  221. package/package.json +2 -2
  222. package/paginator/compact-paginator/compact-paginator.component.js +1 -1
  223. package/paginator/paginator/paginator.component.js +1 -1
  224. package/{paginator.component-BkECB-iV.js → paginator.component-DA_wUypF.js} +1 -1
  225. package/paginator.js +2 -2
  226. package/paginator.pure.js +2 -2
  227. package/radio-button/common/radio-button-common.js +1 -1
  228. package/radio-button/radio-button.component.js +1 -1
  229. package/{radio-button-common-CQyKqDLJ.js → radio-button-common-iNYco_B8.js} +1 -1
  230. package/{radio-button.component-Cenb6FL5.js → radio-button.component-v5czJYC3.js} +1 -1
  231. package/radio-button.js +2 -2
  232. package/radio-button.pure.js +2 -2
  233. package/safety-theme.css +67 -65
  234. package/select/select.component.js +1 -1
  235. package/{select.component-BcDZm7EM.js → select.component-CCFfP21g.js} +1 -1
  236. package/select.js +1 -1
  237. package/select.pure.js +1 -1
  238. package/standard-theme.css +67 -65
  239. package/status/status.component.js +1 -1
  240. package/{status.component-CgMvY4Pe.js → status.component-5SKEusnj.js} +1 -1
  241. package/status.js +1 -1
  242. package/status.pure.js +1 -1
  243. package/step-label.component-DM7lQw8b.js +77 -0
  244. package/stepper/step-label/step-label.component.js +1 -1
  245. package/stepper.js +1 -1
  246. package/stepper.pure.js +1 -1
  247. package/styles-DisU4TWi.js +5 -0
  248. package/{tab-label.component-CH24fqmB.js → tab-label.component-JjktN30A.js} +1 -1
  249. package/tabs/common/styles.js +1 -1
  250. package/tabs/tab-label/tab-label.component.js +1 -1
  251. package/tabs.js +2 -2
  252. package/tabs.pure.js +2 -2
  253. package/tag/tag/tag.component.js +1 -1
  254. package/{tag.component-B7YExnbA.js → tag.component-BGYVbfUx.js} +1 -1
  255. package/tag.js +1 -1
  256. package/tag.pure.js +1 -1
  257. package/teaser-hero/teaser-hero.component.js +1 -1
  258. package/{teaser-hero.component-BUhWjc2i.js → teaser-hero.component-By1HInfz.js} +1 -1
  259. package/teaser-hero.js +1 -1
  260. package/teaser-hero.pure.js +1 -1
  261. package/timetable-occupancy/timetable-occupancy.component.js +1 -1
  262. package/{timetable-occupancy.component-CLpJ-rjI.js → timetable-occupancy.component-Dq9RM6qS.js} +1 -1
  263. package/timetable-occupancy.js +1 -1
  264. package/timetable-occupancy.pure.js +1 -1
  265. package/title/title-base.js +1 -1
  266. package/title/title.component.js +1 -1
  267. package/{title-base-HD0z6npS.js → title-base-B43-Q_7r.js} +1 -1
  268. package/{title.component-CjDkG7gT.js → title.component-DXJHJ6p6.js} +1 -1
  269. package/title.js +2 -2
  270. package/title.pure.js +2 -2
  271. package/toast/toast.component.js +1 -1
  272. package/{toast.component-DzsaWxPV.js → toast.component-D53COYeM.js} +1 -1
  273. package/toast.js +1 -1
  274. package/toast.pure.js +1 -1
  275. package/toggle/toggle/toggle.component.js +1 -1
  276. package/{toggle.component-D7X0E_hM.js → toggle.component-BGgAnHau.js} +1 -1
  277. package/toggle.js +1 -1
  278. package/toggle.pure.js +1 -1
  279. package/tooltip/tooltip.component.js +1 -1
  280. package/{tooltip.component-BCRFxBuV.js → tooltip.component-Bp-8vRoA.js} +1 -1
  281. package/tooltip.js +1 -1
  282. package/tooltip.pure.js +1 -1
  283. package/train/train-wagon/train-wagon.component.js +1 -1
  284. package/{train-wagon.component-CZiVPOaZ.js → train-wagon.component-LwKwwuta.js} +1 -1
  285. package/train.js +1 -1
  286. package/train.pure.js +1 -1
  287. package/button-common-C3wYY-UK.js +0 -85
  288. package/development/autocomplete-base-element-8hV4-ys6.js +0 -686
  289. package/development/breadcrumb-group.component-DP9X9qV1.js +0 -193
  290. package/development/calendar.component-C2WJuFrr.js +0 -1451
  291. package/development/card-badge.component-Be4gXazr.js +0 -83
  292. package/development/checkbox-common-DpE48IrV.js +0 -84
  293. package/development/chip-group.component-CxM8l839.js +0 -402
  294. package/development/compact-paginator.component-DiMeNNTc.js +0 -51
  295. package/development/error.component-C8JQQqSB.js +0 -53
  296. package/development/expansion-panel-header.component-CWojFAB-.js +0 -82
  297. package/development/footer.component-Dbc5xFqr.js +0 -169
  298. package/development/form-field.component-M0wf8ZR8.js +0 -703
  299. package/development/header.component-B2T2pmHs.js +0 -335
  300. package/development/hint.component-hKw1TLvO.js +0 -36
  301. package/development/message.component-CrXtMprr.js +0 -43
  302. package/development/notification.component-CKyNdgbx.js +0 -271
  303. package/development/paginator.component-Cqm7MuRD.js +0 -261
  304. package/development/radio-button-common-u7NYOI2p.js +0 -125
  305. package/development/select.component-Ibby7Q-L.js +0 -804
  306. package/development/status.component-p-egQ_U4.js +0 -110
  307. package/development/step-label.component-BTXuaONx.js +0 -126
  308. package/development/styles-D_8dMc_0.js +0 -14
  309. package/development/tag.component-CWL9jJTW.js +0 -241
  310. package/development/teaser-hero.component-De621iKn.js +0 -100
  311. package/development/toggle.component-BeHHTgRh.js +0 -244
  312. package/development/tooltip.component-BV0yBh9f.js +0 -369
  313. package/message.component-DgTPvDym.js +0 -26
  314. package/step-label.component-CbtQ7MvH.js +0 -77
  315. package/styles-DMLyYaea.js +0 -5
@@ -1,335 +0,0 @@
1
- import { __esDecorate, __runInitializers } from "tslib";
2
- import { html, isServer, unsafeCSS } from "lit";
3
- import { property, state } from "lit/decorators.js";
4
- import { SbbElement, SbbFocusVisibleWithinController, boxSizingStyles, forceType, idReference, isLean, queueDomContentLoaded } from "./core.js";
5
- //#region src/elements/header/header/header.scss?inline
6
- var header_default = ":host {\n --sbb-logo-height: 1rem;\n --sbb-signet-height: 1rem;\n --sbb-header-transition-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-6x)\n );\n}\n@media (min-width: calc(64rem)) {\n :host {\n --sbb-logo-height: 1.25rem;\n --sbb-signet-height: 1.25rem;\n }\n}\n:host {\n display: block;\n height: var(--sbb-header-height);\n}\n\n:host([size=s]) ::slotted(:is(sbb-header-button, sbb-header-link)) {\n --sbb-header-action-min-height: var(--sbb-size-element-xs);\n --sbb-header-action-padding-inline: var(--sbb-spacing-fixed-4x);\n}\n\n:host([hide-on-scroll]) {\n --sbb-header-position: absolute;\n}\n\n:host([hide-on-scroll]:is(:state(fixed),[state--fixed])) {\n --sbb-header-position: fixed;\n --sbb-header-animation-name: hide;\n --sbb-header-transform: translate3d(0, -100%, 0);\n --sbb-header-inset-inline-end: var(--sbb-scrollbar-width, 0);\n}\n\n:host([hide-on-scroll]:is(:state(fixed),[state--fixed]):is(:state(animated),[state--animated])) {\n --sbb-header-transition-timing: cubic-bezier(0.4, 0, 1, 1);\n}\n\n:host([hide-on-scroll]:is(:state(fixed),[state--fixed]):is(:state(visible),[state--visible])) {\n --sbb-header-animation-name: show;\n --sbb-header-transform: translate3d(0, 0, 0);\n --sbb-header-transition-timing: cubic-bezier(0, 0, 0.2, 1);\n}\n\n:host([hide-on-scroll]:is(:state(fixed),[state--fixed]):is(:state(has-visible-focus-within),[state--has-visible-focus-within])) {\n --sbb-header-transition-duration: 0;\n --sbb-header-transform: translate3d(0, 0, 0);\n}\n\n.sbb-header {\n position: var(--sbb-header-position);\n inset: 0 var(--sbb-header-inset-inline-end) auto 0;\n background: var(--sbb-header-background);\n z-index: var(--sbb-header-z-index, 10);\n transform: var(--sbb-header-transform);\n transition-property: box-shadow;\n transition-duration: var(--sbb-header-transition-duration);\n transition-timing-function: var(--sbb-header-transition-timing);\n animation-name: var(--sbb-header-animation-name);\n animation-duration: var(--sbb-header-transition-duration);\n animation-timing-function: var(--sbb-header-transition-timing);\n}\n:host(:is(:is(:state(shadow),[state--shadow]), :is(:state(has-visible-focus-within),[state--has-visible-focus-within]):is(:state(fixed),[state--fixed]))) .sbb-header {\n box-shadow: var(--sbb-header-box-shadow);\n}\n@media (forced-colors: active) {\n .sbb-header {\n border-block-end: var(--sbb-border-width-1x) solid CanvasText;\n }\n}\n\n.sbb-header__wrapper {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n height: var(--sbb-header-height);\n}\n:host(:not([expanded])) .sbb-header__wrapper {\n padding-inline: var(--sbb-page-spacing-padding, var(--sbb-layout-base-offset-responsive));\n margin-inline: auto;\n width: 100%;\n}\n@media (min-width: calc(90rem)) {\n :host(:not([expanded])) .sbb-header__wrapper {\n max-width: var(--sbb-spacing-max-width, calc(var(--sbb-layout-base-page-max-width) + 2 * var(--sbb-layout-base-offset-responsive)));\n }\n}\n:host([expanded]) .sbb-header__wrapper {\n padding-inline: var(--sbb-page-spacing-padding, var(--sbb-spacing-responsive-xxs));\n}\n\n::slotted(:is(sbb-header-button, sbb-header-link):first-child) {\n margin-inline-start: var(--sbb-header-first-item-margin-inline-start);\n}\n\n::slotted(*) {\n flex: 0 0 auto;\n}\n\n::slotted(.sbb-header-shrinkable) {\n flex-shrink: 1;\n min-width: 0;\n}\n\n::slotted(.sbb-header-spacer) {\n flex-grow: 1;\n}\n\n::slotted(.sbb-header-logo) {\n margin-inline-start: var(--sbb-spacing-responsive-s);\n}\n\n::slotted(a.sbb-header-logo) {\n display: block;\n padding-block: var(--sbb-spacing-fixed-3x);\n position: relative;\n outline: none !important;\n}\n\n::slotted(a.sbb-header-logo)::before {\n content: \"\";\n display: block;\n position: absolute;\n inset: var(--sbb-spacing-fixed-3x) 0;\n}\n\n::slotted(a.sbb-header-logo:focus-visible)::before {\n outline-offset: var(--sbb-focus-outline-offset);\n outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);\n outline-offset: var(--sbb-spacing-fixed-3x);\n border-radius: 1px;\n}\n\n@keyframes show {\n from {\n transform: translate3d(0, -100%, 0);\n }\n to {\n transform: translate3d(0, 0, 0);\n }\n}\n@keyframes hide {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(0, -100%, 0);\n }\n}";
7
- //#endregion
8
- //#region src/elements/header/header/header.component.ts
9
- var IS_MENU_OPENED_QUERY = "[aria-controls][aria-expanded='true']";
10
- /**
11
- * It displays a header section for the page.
12
- *
13
- * @slot - Use the unnamed slot to add actions, content and logo to the header.
14
- * @cssprop [--sbb-header-z-index=10] - Can be used to modify the z-index of the header.
15
- * @cssprop [--sbb-header-height=zero-small:var(--sbb-spacing-fixed-14x);large-ultra:var(--sbb-spacing-fixed-24x)] - Can be used to modify height of the header.
16
- */
17
- var SbbHeaderElement = (() => {
18
- let _classSuper = SbbElement;
19
- let _expanded_decorators;
20
- let _expanded_initializers = [];
21
- let _expanded_extraInitializers = [];
22
- let _scrollOrigin_decorators;
23
- let _scrollOrigin_initializers = [];
24
- let _scrollOrigin_extraInitializers = [];
25
- let _hideOnScroll_decorators;
26
- let _hideOnScroll_initializers = [];
27
- let _hideOnScroll_extraInitializers = [];
28
- let _size_decorators;
29
- let _size_initializers = [];
30
- let _size_extraInitializers = [];
31
- let __headerOnTop_decorators;
32
- let __headerOnTop_initializers = [];
33
- let __headerOnTop_extraInitializers = [];
34
- return class SbbHeaderElement extends _classSuper {
35
- static {
36
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
37
- _expanded_decorators = [forceType(), property({
38
- reflect: true,
39
- type: Boolean
40
- })];
41
- _scrollOrigin_decorators = [idReference(), property({ attribute: "scroll-origin" })];
42
- _hideOnScroll_decorators = [forceType(), property({
43
- attribute: "hide-on-scroll",
44
- reflect: true,
45
- type: Boolean
46
- })];
47
- _size_decorators = [property({ reflect: true })];
48
- __headerOnTop_decorators = [state()];
49
- __esDecorate(this, null, _expanded_decorators, {
50
- kind: "accessor",
51
- name: "expanded",
52
- static: false,
53
- private: false,
54
- access: {
55
- has: (obj) => "expanded" in obj,
56
- get: (obj) => obj.expanded,
57
- set: (obj, value) => {
58
- obj.expanded = value;
59
- }
60
- },
61
- metadata: _metadata
62
- }, _expanded_initializers, _expanded_extraInitializers);
63
- __esDecorate(this, null, _scrollOrigin_decorators, {
64
- kind: "accessor",
65
- name: "scrollOrigin",
66
- static: false,
67
- private: false,
68
- access: {
69
- has: (obj) => "scrollOrigin" in obj,
70
- get: (obj) => obj.scrollOrigin,
71
- set: (obj, value) => {
72
- obj.scrollOrigin = value;
73
- }
74
- },
75
- metadata: _metadata
76
- }, _scrollOrigin_initializers, _scrollOrigin_extraInitializers);
77
- __esDecorate(this, null, _hideOnScroll_decorators, {
78
- kind: "accessor",
79
- name: "hideOnScroll",
80
- static: false,
81
- private: false,
82
- access: {
83
- has: (obj) => "hideOnScroll" in obj,
84
- get: (obj) => obj.hideOnScroll,
85
- set: (obj, value) => {
86
- obj.hideOnScroll = value;
87
- }
88
- },
89
- metadata: _metadata
90
- }, _hideOnScroll_initializers, _hideOnScroll_extraInitializers);
91
- __esDecorate(this, null, _size_decorators, {
92
- kind: "accessor",
93
- name: "size",
94
- static: false,
95
- private: false,
96
- access: {
97
- has: (obj) => "size" in obj,
98
- get: (obj) => obj.size,
99
- set: (obj, value) => {
100
- obj.size = value;
101
- }
102
- },
103
- metadata: _metadata
104
- }, _size_initializers, _size_extraInitializers);
105
- __esDecorate(this, null, __headerOnTop_decorators, {
106
- kind: "accessor",
107
- name: "_headerOnTop",
108
- static: false,
109
- private: false,
110
- access: {
111
- has: (obj) => "_headerOnTop" in obj,
112
- get: (obj) => obj._headerOnTop,
113
- set: (obj, value) => {
114
- obj._headerOnTop = value;
115
- }
116
- },
117
- metadata: _metadata
118
- }, __headerOnTop_initializers, __headerOnTop_extraInitializers);
119
- if (_metadata) Object.defineProperty(this, Symbol.metadata, {
120
- enumerable: true,
121
- configurable: true,
122
- writable: true,
123
- value: _metadata
124
- });
125
- }
126
- static {
127
- this.elementName = "sbb-header";
128
- }
129
- static {
130
- this.styles = [boxSizingStyles, unsafeCSS(header_default)];
131
- }
132
- static {
133
- this._headerScrollOrigins = /* @__PURE__ */ new Set();
134
- }
135
- static {
136
- this._headerElements = /* @__PURE__ */ new Set();
137
- }
138
- static {
139
- if (!isServer) queueDomContentLoaded(() => this._initializeScrollOriginObserver());
140
- }
141
- #expanded_accessor_storage;
142
- /**
143
- * Whether to allow the header content to stretch to full width.
144
- * By default, the content has the appropriate page size.
145
- */
146
- get expanded() {
147
- return this.#expanded_accessor_storage;
148
- }
149
- set expanded(value) {
150
- this.#expanded_accessor_storage = value;
151
- }
152
- #scrollOrigin_accessor_storage;
153
- /**
154
- * The element's id or the element on which the scroll listener is attached.
155
- *
156
- * For attribute usage, provide an id reference.
157
- */
158
- get scrollOrigin() {
159
- return this.#scrollOrigin_accessor_storage;
160
- }
161
- set scrollOrigin(value) {
162
- this.#scrollOrigin_accessor_storage = value;
163
- }
164
- #hideOnScroll_accessor_storage;
165
- /** Whether the header should hide and show on scroll. */
166
- get hideOnScroll() {
167
- return this.#hideOnScroll_accessor_storage;
168
- }
169
- set hideOnScroll(value) {
170
- this.#hideOnScroll_accessor_storage = value;
171
- }
172
- #size_accessor_storage;
173
- /**
174
- * Size of the header, either m or s.
175
- * @default 'm' / 's' (lean)
176
- */
177
- get size() {
178
- return this.#size_accessor_storage;
179
- }
180
- set size(value) {
181
- this.#size_accessor_storage = value;
182
- }
183
- #_headerOnTop_accessor_storage;
184
- get _headerOnTop() {
185
- return this.#_headerOnTop_accessor_storage;
186
- }
187
- set _headerOnTop(value) {
188
- this.#_headerOnTop_accessor_storage = value;
189
- }
190
- constructor() {
191
- super();
192
- this.#expanded_accessor_storage = __runInitializers(this, _expanded_initializers, false);
193
- this.#scrollOrigin_accessor_storage = (__runInitializers(this, _expanded_extraInitializers), __runInitializers(this, _scrollOrigin_initializers, null));
194
- this.#hideOnScroll_accessor_storage = (__runInitializers(this, _scrollOrigin_extraInitializers), __runInitializers(this, _hideOnScroll_initializers, false));
195
- this.#size_accessor_storage = (__runInitializers(this, _hideOnScroll_extraInitializers), __runInitializers(this, _size_initializers, isLean() ? "s" : "m"));
196
- this.#_headerOnTop_accessor_storage = (__runInitializers(this, _size_extraInitializers), __runInitializers(this, __headerOnTop_initializers, true));
197
- this._scrollElement = __runInitializers(this, __headerOnTop_extraInitializers);
198
- this._lastScroll = 0;
199
- this._scrollOriginFromObserver = null;
200
- this.addController(new SbbFocusVisibleWithinController(this));
201
- }
202
- static _initializeScrollOriginObserver() {
203
- new MutationObserver((mutations) => {
204
- for (const mutation of mutations) if (mutation.type === "attributes") this._handleScrollOriginElement(mutation.target);
205
- else if (mutation.type === "childList") for (const node of [...mutation.addedNodes, ...mutation.removedNodes].filter((n) => n.nodeType === n.ELEMENT_NODE)) {
206
- this._handleScrollOriginElement(node);
207
- this._findAndHandleScrollOrigins(node);
208
- }
209
- this._updateHeaderElements();
210
- }).observe(document.documentElement, {
211
- attributeFilter: ["sbb-header-scroll-origin"],
212
- childList: true,
213
- subtree: true
214
- });
215
- this._findAndHandleScrollOrigins(document.body);
216
- this._updateHeaderElements();
217
- }
218
- static _findAndHandleScrollOrigins(root) {
219
- root.querySelectorAll("[sbb-header-scroll-origin]").forEach((e) => this._handleScrollOriginElement(e));
220
- }
221
- static _handleScrollOriginElement(element) {
222
- if (element.isConnected && element.hasAttribute("sbb-header-scroll-origin")) this._headerScrollOrigins.add(element);
223
- else this._headerScrollOrigins.delete(element);
224
- }
225
- static _updateHeaderElements() {
226
- for (const header of this._headerElements) {
227
- if (this._headerScrollOrigins.size === 0) header._scrollOriginFromObserver = null;
228
- else if (this._headerScrollOrigins.size === 1) header._scrollOriginFromObserver = this._headerScrollOrigins.values().next().value ?? null;
229
- else header._scrollOriginFromObserver = Array.from(this._headerScrollOrigins).sort((c1, c2) => c1.compareDocumentPosition(c2) & Node.DOCUMENT_POSITION_CONTAINS).at(-1) ?? null;
230
- header._updateScrollListener();
231
- }
232
- }
233
- /** If `hideOnScroll` is set, checks the element to hook the listener on, and possibly add it.*/
234
- connectedCallback() {
235
- super.connectedCallback();
236
- SbbHeaderElement._headerElements.add(this);
237
- if (this.hasUpdated) this._updateScrollListener();
238
- }
239
- /** Removes the scroll listener, if previously attached. */
240
- disconnectedCallback() {
241
- super.disconnectedCallback();
242
- this._scrollElement = null;
243
- this._scrollEventsController?.abort();
244
- SbbHeaderElement._headerElements.delete(this);
245
- }
246
- requestUpdate(name, oldValue, options) {
247
- super.requestUpdate(name, oldValue, options);
248
- if (!isServer && (!name || name === "scrollOrigin") && this.hasUpdated) this._updateScrollListener();
249
- }
250
- firstUpdated(changedProperties) {
251
- super.firstUpdated(changedProperties);
252
- this._updateScrollListener();
253
- }
254
- _updateScrollListener() {
255
- const scrollElement = this.scrollOrigin ?? this._scrollOriginFromObserver ?? document;
256
- if (scrollElement === this._scrollElement) return;
257
- this._scrollEventsController?.abort();
258
- this._scrollElement = scrollElement;
259
- if (!this._scrollElement) return;
260
- this._scrollEventsController = new AbortController();
261
- this._scrollFunction = this._getScrollFunction.bind(this);
262
- this._scrollElement.addEventListener("scroll", this._scrollFunction, {
263
- passive: true,
264
- signal: this._scrollEventsController.signal
265
- });
266
- const currentScroll = this._getCurrentScrollProperty("scrollTop");
267
- this._lastScroll = currentScroll <= 0 ? 0 : currentScroll;
268
- }
269
- /** Returns the correct function to attach on scroll. */
270
- _getScrollFunction() {
271
- return this.hideOnScroll ? this._scrollListener() : this._scrollShadowListener();
272
- }
273
- /** Returns the requested property of the scrollContext. */
274
- _getCurrentScrollProperty(property) {
275
- if (this._scrollElement instanceof Document) return this._scrollElement.documentElement[property] || this._scrollElement.body[property];
276
- return this._scrollElement?.[property] || 0;
277
- }
278
- /**
279
- * Sets the correct value for `scrollTop`, then:
280
- * - apply the shadow if the element/document has been scrolled down;
281
- * - hides the header, remove the shadow and possibly close any open menu on the header if it is not visible anymore;
282
- * - shows the header and re-apply the shadow if the element/document has been scrolled up.
283
- */
284
- _scrollListener() {
285
- const currentScroll = this._getCurrentScrollProperty("scrollTop");
286
- if (this._getCurrentScrollProperty("scrollHeight") - window.innerHeight - currentScroll <= 0) return;
287
- this.toggleState("shadow", currentScroll !== 0);
288
- if (currentScroll > this.offsetHeight && currentScroll > 0 && this._lastScroll < currentScroll) this._closeOpenOverlays();
289
- if (currentScroll > this.offsetHeight * 2) {
290
- this._headerOnTop = false;
291
- if (currentScroll > 0 && this._lastScroll < currentScroll) ["shadow", "visible"].forEach((name) => this.internals.states.delete(name));
292
- else [
293
- "fixed",
294
- "shadow",
295
- "animated",
296
- "visible"
297
- ].forEach((name) => this.internals.states.add(name));
298
- } else {
299
- if (currentScroll === 0) this._headerOnTop = true;
300
- if (this._headerOnTop) [
301
- "shadow",
302
- "animated",
303
- "fixed",
304
- "visible"
305
- ].forEach((name) => this.internals.states.delete(name));
306
- }
307
- this._lastScroll = currentScroll <= 0 ? 0 : currentScroll;
308
- }
309
- /** Apply the shadow if the element/document has been scrolled down. */
310
- _scrollShadowListener() {
311
- this.toggleState("shadow", this._getCurrentScrollProperty("scrollTop") !== 0);
312
- }
313
- _closeOpenOverlays() {
314
- if (this.matches(":is(:state(has-visible-focus-within),[state--has-visible-focus-within])")) return;
315
- const overlayTriggers = Array.from(this.querySelectorAll(IS_MENU_OPENED_QUERY));
316
- for (const overlayTrigger of overlayTriggers) {
317
- const overlay = overlayTrigger.ariaControlsElements[0];
318
- if (typeof overlay?.close === "function") overlay.close();
319
- }
320
- }
321
- render() {
322
- return html`
323
- <header class="sbb-header">
324
- <div class="sbb-header__wrapper">
325
- <slot></slot>
326
- </div>
327
- </header>
328
- `;
329
- }
330
- };
331
- })();
332
- //#endregion
333
- export { SbbHeaderElement as t };
334
-
335
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC1CMlQycG1Icy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvaGVhZGVyL2hlYWRlci9oZWFkZXIuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvaGVhZGVyL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgLS1zYmItbG9nby1oZWlnaHQ6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgxNil9O1xuICAtLXNiYi1zaWduZXQtaGVpZ2h0OiAje3NiYi5weC10by1yZW0tYnVpbGQoMTYpfTtcbiAgLS1zYmItaGVhZGVyLXRyYW5zaXRpb24tZHVyYXRpb246IHZhcihcbiAgICAtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbixcbiAgICB2YXIoLS1zYmItYW5pbWF0aW9uLWR1cmF0aW9uLTZ4KVxuICApO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogbGFyZ2UpIHtcbiAgICAtLXNiYi1sb2dvLWhlaWdodDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDIwKX07XG4gICAgLS1zYmItc2lnbmV0LWhlaWdodDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDIwKX07XG4gIH1cblxuICBkaXNwbGF5OiBibG9jaztcblxuICAvLyBTZXR0aW5nIHRoZSBoZWlnaHQgaGVyZSByZXNlcnZlcyB0aGUgc3BhY2UgZm9yIHRoZSBoZWFkZXIgd2hpY2ggd2lsbCBlbHNlIGJlIGxvc3Qgd2l0aCBmaXhlZCBwb3NpdGlvbi5cbiAgaGVpZ2h0OiB2YXIoLS1zYmItaGVhZGVyLWhlaWdodCk7XG59XG5cbjpob3N0KFtzaXplPSdzJ10pIHtcbiAgOjpzbG90dGVkKDppcyhzYmItaGVhZGVyLWJ1dHRvbiwgc2JiLWhlYWRlci1saW5rKSkge1xuICAgIC0tc2JiLWhlYWRlci1hY3Rpb24tbWluLWhlaWdodDogdmFyKC0tc2JiLXNpemUtZWxlbWVudC14cyk7XG4gICAgLS1zYmItaGVhZGVyLWFjdGlvbi1wYWRkaW5nLWlubGluZTogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtNHgpO1xuICB9XG59XG5cbjpob3N0KFtoaWRlLW9uLXNjcm9sbF0pIHtcbiAgLS1zYmItaGVhZGVyLXBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cblxuOmhvc3QoW2hpZGUtb24tc2Nyb2xsXTpzdGF0ZShmaXhlZCkpIHtcbiAgLS1zYmItaGVhZGVyLXBvc2l0aW9uOiBmaXhlZDtcbiAgLS1zYmItaGVhZGVyLWFuaW1hdGlvbi1uYW1lOiBoaWRlO1xuICAtLXNiYi1oZWFkZXItdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XG4gIC0tc2JiLWhlYWRlci1pbnNldC1pbmxpbmUtZW5kOiB2YXIoLS1zYmItc2Nyb2xsYmFyLXdpZHRoLCAwKTtcbn1cblxuOmhvc3QoW2hpZGUtb24tc2Nyb2xsXTpzdGF0ZShmaXhlZCk6c3RhdGUoYW5pbWF0ZWQpKSB7XG4gIC8vIEhpZGUgdHJhbnNpdGlvblxuICAtLXNiYi1oZWFkZXItdHJhbnNpdGlvbi10aW1pbmc6IGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xufVxuXG46aG9zdChbaGlkZS1vbi1zY3JvbGxdOnN0YXRlKGZpeGVkKTpzdGF0ZSh2aXNpYmxlKSkge1xuICAtLXNiYi1oZWFkZXItYW5pbWF0aW9uLW5hbWU6IHNob3c7XG4gIC0tc2JiLWhlYWRlci10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuXG4gIC8vIFNob3cgdHJhbnNpdGlvblxuICAtLXNiYi1oZWFkZXItdHJhbnNpdGlvbi10aW1pbmc6IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xufVxuXG46aG9zdChbaGlkZS1vbi1zY3JvbGxdOnN0YXRlKGZpeGVkKTpzdGF0ZShoYXMtdmlzaWJsZS1mb2N1cy13aXRoaW4pKSB7XG4gIC0tc2JiLWhlYWRlci10cmFuc2l0aW9uLWR1cmF0aW9uOiAwO1xuICAtLXNiYi1oZWFkZXItdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbn1cblxuLnNiYi1oZWFkZXIge1xuICBwb3NpdGlvbjogdmFyKC0tc2JiLWhlYWRlci1wb3NpdGlvbik7XG4gIGluc2V0OiAwIHZhcigtLXNiYi1oZWFkZXItaW5zZXQtaW5saW5lLWVuZCkgYXV0byAwO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1zYmItaGVhZGVyLWJhY2tncm91bmQpO1xuICB6LWluZGV4OiB2YXIoLS1zYmItaGVhZGVyLXotaW5kZXgsIDEwKTtcbiAgdHJhbnNmb3JtOiB2YXIoLS1zYmItaGVhZGVyLXRyYW5zZm9ybSk7XG4gIHRyYW5zaXRpb246IHtcbiAgICBwcm9wZXJ0eTogYm94LXNoYWRvdztcbiAgICBkdXJhdGlvbjogdmFyKC0tc2JiLWhlYWRlci10cmFuc2l0aW9uLWR1cmF0aW9uKTtcbiAgICB0aW1pbmctZnVuY3Rpb246IHZhcigtLXNiYi1oZWFkZXItdHJhbnNpdGlvbi10aW1pbmcpO1xuICB9XG4gIGFuaW1hdGlvbjoge1xuICAgIG5hbWU6IHZhcigtLXNiYi1oZWFkZXItYW5pbWF0aW9uLW5hbWUpO1xuICAgIGR1cmF0aW9uOiB2YXIoLS1zYmItaGVhZGVyLXRyYW5zaXRpb24tZHVyYXRpb24pO1xuICAgIHRpbWluZy1mdW5jdGlvbjogdmFyKC0tc2JiLWhlYWRlci10cmFuc2l0aW9uLXRpbWluZyk7XG4gIH1cblxuICA6aG9zdCg6aXMoOnN0YXRlKHNoYWRvdyksIDpzdGF0ZShoYXMtdmlzaWJsZS1mb2N1cy13aXRoaW4pOnN0YXRlKGZpeGVkKSkpICYge1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNiYi1oZWFkZXItYm94LXNoYWRvdyk7XG4gIH1cblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgYm9yZGVyLWJsb2NrLWVuZDogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0xeCkgc29saWQgQ2FudmFzVGV4dDtcbiAgfVxufVxuXG4uc2JiLWhlYWRlcl9fd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgaGVpZ2h0OiB2YXIoLS1zYmItaGVhZGVyLWhlaWdodCk7XG5cbiAgOmhvc3QoOm5vdChbZXhwYW5kZWRdKSkgJiB7XG4gICAgQGluY2x1ZGUgc2JiLnBhZ2Utc3BhY2luZztcbiAgfVxuXG4gIDpob3N0KFtleHBhbmRlZF0pICYge1xuICAgIEBpbmNsdWRlIHNiYi5wYWdlLXNwYWNpbmctZXhwYW5kZWQ7XG4gIH1cbn1cblxuLy8gRml4IGxlZnQgb2Zmc2V0IGlmIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGhlYWRlciBpcyBhIHNiYi1oZWFkZXItYnV0dG9uL3NiYi1oZWFkZXItbGluay5cbi8vIFRoZSB2YWx1ZSBvZiB0aGUgb2Zmc2V0IGlzIGNhbGN1bGF0ZWQgaW5zaWRlIHNiYi1oZWFkZXItYnV0dG9uL3NiYi1oZWFkZXItbGluayBzdHlsZXMuXG46OnNsb3R0ZWQoOmlzKHNiYi1oZWFkZXItYnV0dG9uLCBzYmItaGVhZGVyLWxpbmspOmZpcnN0LWNoaWxkKSB7XG4gIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IHZhcigtLXNiYi1oZWFkZXItZmlyc3QtaXRlbS1tYXJnaW4taW5saW5lLXN0YXJ0KTtcbn1cblxuOjpzbG90dGVkKCopIHtcbiAgZmxleDogMCAwIGF1dG87XG59XG5cbjo6c2xvdHRlZCguc2JiLWhlYWRlci1zaHJpbmthYmxlKSB7XG4gIGZsZXgtc2hyaW5rOiAxO1xuICBtaW4td2lkdGg6IDA7XG59XG5cbjo6c2xvdHRlZCguc2JiLWhlYWRlci1zcGFjZXIpIHtcbiAgZmxleC1ncm93OiAxO1xufVxuXG46OnNsb3R0ZWQoLnNiYi1oZWFkZXItbG9nbykge1xuICBtYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLXMpO1xufVxuXG4vLyBBcHBseSBwYWRkaW5nIGFuZCBvdXRsaW5lIHRvIHBvc3NpYmxlIHNsb3R0ZWQgbGluayBpbiBsb2dvIHNsb3Rcbjo6c2xvdHRlZChhLnNiYi1oZWFkZXItbG9nbykge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZy1ibG9jazogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtM3gpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLy8gVXNlICFpbXBvcnRhbnQgaGVyZSB0byBub3QgaW50ZXJmZXJlIHdpdGggRmlyZWZveCBmb2N1cyByaW5nIGRlZmluaXRpb25cbiAgLy8gd2hpY2ggYXBwZWFycyBpbiBub3JtYWxpemUgQ1NTIG9mIHNldmVyYWwgZnJhbWV3b3Jrcy5cbiAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vLyBUbyBzaG93IHRoZSBjb3JyZWN0IG91dGxpbmUsIHdlIG5lZWQgdG8gc3BhbiBhIGhpZGRlbiBlbGVtZW50IGZpbGxpbmcgdGhlIGxpbmsgYnV0IHdpdGhvdXQgdGhlIG91dGxpbmUtb2Zmc2V0LlxuOjpzbG90dGVkKGEuc2JiLWhlYWRlci1sb2dvKTo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0zeCkgMDtcbn1cblxuOjpzbG90dGVkKGEuc2JiLWhlYWRlci1sb2dvOmZvY3VzLXZpc2libGUpOjpiZWZvcmUge1xuICBAaW5jbHVkZSBzYmIuZm9jdXMtb3V0bGluZTtcblxuICBvdXRsaW5lLW9mZnNldDogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtM3gpO1xuXG4gIC8vIEFzIGlmIHRoZSBvdXRsaW5lIGhhcyBhbiBvZmZzZXQsIHRoZSBib3JkZXIgcmFkaXVzIGluY3JlYXNlcywgd2Ugc2V0IGl0IHRvIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBib3JkZXItcmFkaXVzLlxuICBib3JkZXItcmFkaXVzOiAxcHg7XG59XG5cbkBrZXlmcmFtZXMgc2hvdyB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuICB9XG5cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBoaWRlIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgaXNTZXJ2ZXIsXG4gIHR5cGUgUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbiAgdW5zYWZlQ1NTLFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQge1xuICBib3hTaXppbmdTdHlsZXMsXG4gIGZvcmNlVHlwZSxcbiAgaWRSZWZlcmVuY2UsXG4gIGlzTGVhbixcbiAgcXVldWVEb21Db250ZW50TG9hZGVkLFxuICBTYmJFbGVtZW50LFxuICBTYmJGb2N1c1Zpc2libGVXaXRoaW5Db250cm9sbGVyLFxufSBmcm9tICcuLi8uLi9jb3JlLnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vaGVhZGVyLnNjc3M/aW5saW5lJztcblxuY29uc3QgSVNfTUVOVV9PUEVORURfUVVFUlkgPSBcIlthcmlhLWNvbnRyb2xzXVthcmlhLWV4cGFuZGVkPSd0cnVlJ11cIjtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIGhlYWRlciBzZWN0aW9uIGZvciB0aGUgcGFnZS5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBhY3Rpb25zLCBjb250ZW50IGFuZCBsb2dvIHRvIHRoZSBoZWFkZXIuXG4gKiBAY3NzcHJvcCBbLS1zYmItaGVhZGVyLXotaW5kZXg9MTBdIC0gQ2FuIGJlIHVzZWQgdG8gbW9kaWZ5IHRoZSB6LWluZGV4IG9mIHRoZSBoZWFkZXIuXG4gKiBAY3NzcHJvcCBbLS1zYmItaGVhZGVyLWhlaWdodD16ZXJvLXNtYWxsOnZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTE0eCk7bGFyZ2UtdWx0cmE6dmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtMjR4KV0gLSBDYW4gYmUgdXNlZCB0byBtb2RpZnkgaGVpZ2h0IG9mIHRoZSBoZWFkZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJIZWFkZXJFbGVtZW50IGV4dGVuZHMgU2JiRWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItaGVhZGVyJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgdW5zYWZlQ1NTKHN0eWxlKV07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2hlYWRlclNjcm9sbE9yaWdpbnMgPSBuZXcgU2V0PEhUTUxFbGVtZW50PigpO1xuICBwcml2YXRlIHN0YXRpYyBfaGVhZGVyRWxlbWVudHMgPSBuZXcgU2V0PFNiYkhlYWRlckVsZW1lbnQ+KCk7XG5cbiAgc3RhdGljIHtcbiAgICBpZiAoIWlzU2VydmVyKSB7XG4gICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGJsb2NrIGV4ZWN1dGlvbiBmb3IgaW5pdGlhbGl6YXRpb24sXG4gICAgICAvLyBzbyB3ZSBkZWZlciBpdCB1bnRpbCB0aGUgRE9NIGNvbnRlbnQgaXMgbG9hZGVkLlxuICAgICAgcXVldWVEb21Db250ZW50TG9hZGVkKCgpID0+IHRoaXMuX2luaXRpYWxpemVTY3JvbGxPcmlnaW5PYnNlcnZlcigpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBhbGxvdyB0aGUgaGVhZGVyIGNvbnRlbnQgdG8gc3RyZXRjaCB0byBmdWxsIHdpZHRoLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgY29udGVudCBoYXMgdGhlIGFwcHJvcHJpYXRlIHBhZ2Ugc2l6ZS5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBleHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCdzIGlkIG9yIHRoZSBlbGVtZW50IG9uIHdoaWNoIHRoZSBzY3JvbGwgbGlzdGVuZXIgaXMgYXR0YWNoZWQuXG4gICAqXG4gICAqIEZvciBhdHRyaWJ1dGUgdXNhZ2UsIHByb3ZpZGUgYW4gaWQgcmVmZXJlbmNlLlxuICAgKi9cbiAgQGlkUmVmZXJlbmNlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnc2Nyb2xsLW9yaWdpbicgfSlcbiAgcHVibGljIGFjY2Vzc29yIHNjcm9sbE9yaWdpbjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKiogV2hldGhlciB0aGUgaGVhZGVyIHNob3VsZCBoaWRlIGFuZCBzaG93IG9uIHNjcm9sbC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2hpZGUtb24tc2Nyb2xsJywgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgaGlkZU9uU2Nyb2xsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNpemUgb2YgdGhlIGhlYWRlciwgZWl0aGVyIG0gb3Igcy5cbiAgICogQGRlZmF1bHQgJ20nIC8gJ3MnIChsZWFuKVxuICAgKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgYWNjZXNzb3Igc2l6ZTogJ20nIHwgJ3MnID0gaXNMZWFuKCkgPyAncycgOiAnbSc7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfaGVhZGVyT25Ub3AgPSB0cnVlO1xuXG4gIHByaXZhdGUgX3Njcm9sbEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgRG9jdW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9zY3JvbGxFdmVudHNDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9zY3JvbGxGdW5jdGlvbjogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9sYXN0U2Nyb2xsID0gMDtcbiAgcHJpdmF0ZSBfc2Nyb2xsT3JpZ2luRnJvbU9ic2VydmVyOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkQ29udHJvbGxlcihuZXcgU2JiRm9jdXNWaXNpYmxlV2l0aGluQ29udHJvbGxlcih0aGlzKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfaW5pdGlhbGl6ZVNjcm9sbE9yaWdpbk9ic2VydmVyKCk6IHZvaWQge1xuICAgIC8vIFdlIGFyZSB1c2luZyBNdXRhdGlvbk9ic2VydmVyIGRpcmVjdGx5IGhlcmUsIGFzIGl0IHdpbGwgb25seSBiZSBjYWxsZWQgb24gY2xpZW50IHNpZGUsXG4gICAgLy8gYW5kIHdlIGRvIG5vdCBuZWVkIHRvIGRpc2Nvbm5lY3QgaXQsIGFzIHdlIHdhbnQgaXQgdG8gd29yayBkdXJpbmcgdGhlIGZ1bGwgbGlmZXRpbWVcbiAgICAvLyBvZiB0aGUgcGFnZS5cbiAgICBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBpZiAobXV0YXRpb24udHlwZSA9PT0gJ2F0dHJpYnV0ZXMnKSB7XG4gICAgICAgICAgdGhpcy5faGFuZGxlU2Nyb2xsT3JpZ2luRWxlbWVudChtdXRhdGlvbi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKG11dGF0aW9uLnR5cGUgPT09ICdjaGlsZExpc3QnKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIFsuLi5tdXRhdGlvbi5hZGRlZE5vZGVzLCAuLi5tdXRhdGlvbi5yZW1vdmVkTm9kZXNdLmZpbHRlcihcbiAgICAgICAgICAgIChuKTogbiBpcyBIVE1MRWxlbWVudCA9PiBuLm5vZGVUeXBlID09PSBuLkVMRU1FTlRfTk9ERSxcbiAgICAgICAgICApKSB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVTY3JvbGxPcmlnaW5FbGVtZW50KG5vZGUpO1xuICAgICAgICAgICAgdGhpcy5fZmluZEFuZEhhbmRsZVNjcm9sbE9yaWdpbnMobm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLl91cGRhdGVIZWFkZXJFbGVtZW50cygpO1xuICAgIH0pLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB7XG4gICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnc2JiLWhlYWRlci1zY3JvbGwtb3JpZ2luJ10sXG4gICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMuX2ZpbmRBbmRIYW5kbGVTY3JvbGxPcmlnaW5zKGRvY3VtZW50LmJvZHkpO1xuICAgIHRoaXMuX3VwZGF0ZUhlYWRlckVsZW1lbnRzKCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfZmluZEFuZEhhbmRsZVNjcm9sbE9yaWdpbnMocm9vdDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICByb290XG4gICAgICAucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJ1tzYmItaGVhZGVyLXNjcm9sbC1vcmlnaW5dJylcbiAgICAgIC5mb3JFYWNoKChlKSA9PiB0aGlzLl9oYW5kbGVTY3JvbGxPcmlnaW5FbGVtZW50KGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIF9oYW5kbGVTY3JvbGxPcmlnaW5FbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKGVsZW1lbnQuaXNDb25uZWN0ZWQgJiYgZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ3NiYi1oZWFkZXItc2Nyb2xsLW9yaWdpbicpKSB7XG4gICAgICB0aGlzLl9oZWFkZXJTY3JvbGxPcmlnaW5zLmFkZChlbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faGVhZGVyU2Nyb2xsT3JpZ2lucy5kZWxldGUoZWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX3VwZGF0ZUhlYWRlckVsZW1lbnRzKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgaGVhZGVyIG9mIHRoaXMuX2hlYWRlckVsZW1lbnRzKSB7XG4gICAgICBpZiAodGhpcy5faGVhZGVyU2Nyb2xsT3JpZ2lucy5zaXplID09PSAwKSB7XG4gICAgICAgIGhlYWRlci5fc2Nyb2xsT3JpZ2luRnJvbU9ic2VydmVyID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5faGVhZGVyU2Nyb2xsT3JpZ2lucy5zaXplID09PSAxKSB7XG4gICAgICAgIGhlYWRlci5fc2Nyb2xsT3JpZ2luRnJvbU9ic2VydmVyID0gdGhpcy5faGVhZGVyU2Nyb2xsT3JpZ2lucy52YWx1ZXMoKS5uZXh0KCkudmFsdWUgPz8gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhlYWRlci5fc2Nyb2xsT3JpZ2luRnJvbU9ic2VydmVyID1cbiAgICAgICAgICBBcnJheS5mcm9tKHRoaXMuX2hlYWRlclNjcm9sbE9yaWdpbnMpXG4gICAgICAgICAgICAuc29ydCgoYzEsIGMyKSA9PiBjMS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihjMikgJiBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5TKVxuICAgICAgICAgICAgLmF0KC0xKSA/PyBudWxsO1xuICAgICAgfVxuICAgICAgaGVhZGVyLl91cGRhdGVTY3JvbGxMaXN0ZW5lcigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBJZiBgaGlkZU9uU2Nyb2xsYCBpcyBzZXQsIGNoZWNrcyB0aGUgZWxlbWVudCB0byBob29rIHRoZSBsaXN0ZW5lciBvbiwgYW5kIHBvc3NpYmx5IGFkZCBpdC4qL1xuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBTYmJIZWFkZXJFbGVtZW50Ll9oZWFkZXJFbGVtZW50cy5hZGQodGhpcyk7XG4gICAgaWYgKHRoaXMuaGFzVXBkYXRlZCkge1xuICAgICAgdGhpcy5fdXBkYXRlU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG4gIH1cblxuICAvKiogUmVtb3ZlcyB0aGUgc2Nyb2xsIGxpc3RlbmVyLCBpZiBwcmV2aW91c2x5IGF0dGFjaGVkLiAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9zY3JvbGxFbGVtZW50ID0gbnVsbDtcbiAgICB0aGlzLl9zY3JvbGxFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIFNiYkhlYWRlckVsZW1lbnQuX2hlYWRlckVsZW1lbnRzLmRlbGV0ZSh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuXG4gICAgaWYgKCFpc1NlcnZlciAmJiAoIW5hbWUgfHwgbmFtZSA9PT0gJ3Njcm9sbE9yaWdpbicpICYmIHRoaXMuaGFzVXBkYXRlZCkge1xuICAgICAgdGhpcy5fdXBkYXRlU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgdGhpcy5fdXBkYXRlU2Nyb2xsTGlzdGVuZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVNjcm9sbExpc3RlbmVyKCk6IHZvaWQge1xuICAgIGNvbnN0IHNjcm9sbEVsZW1lbnQgPSB0aGlzLnNjcm9sbE9yaWdpbiA/PyB0aGlzLl9zY3JvbGxPcmlnaW5Gcm9tT2JzZXJ2ZXIgPz8gZG9jdW1lbnQ7XG4gICAgaWYgKHNjcm9sbEVsZW1lbnQgPT09IHRoaXMuX3Njcm9sbEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zY3JvbGxFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX3Njcm9sbEVsZW1lbnQgPSBzY3JvbGxFbGVtZW50O1xuICAgIGlmICghdGhpcy5fc2Nyb2xsRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9zY3JvbGxFdmVudHNDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX3Njcm9sbEZ1bmN0aW9uID0gdGhpcy5fZ2V0U2Nyb2xsRnVuY3Rpb24uYmluZCh0aGlzKTtcbiAgICB0aGlzLl9zY3JvbGxFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuX3Njcm9sbEZ1bmN0aW9uLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9zY3JvbGxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcblxuICAgIGNvbnN0IGN1cnJlbnRTY3JvbGwgPSB0aGlzLl9nZXRDdXJyZW50U2Nyb2xsUHJvcGVydHkoJ3Njcm9sbFRvcCcpO1xuICAgIC8vIGBjdXJyZW50U2Nyb2xsYCBjYW4gYmUgbmVnYXRpdmUsIGUuZy4gb24gbW9iaWxlOyB0aGlzIGlzIG5vdCBhbGxvd2VkLlxuICAgIHRoaXMuX2xhc3RTY3JvbGwgPSBjdXJyZW50U2Nyb2xsIDw9IDAgPyAwIDogY3VycmVudFNjcm9sbDtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBjb3JyZWN0IGZ1bmN0aW9uIHRvIGF0dGFjaCBvbiBzY3JvbGwuICovXG4gIHByaXZhdGUgX2dldFNjcm9sbEZ1bmN0aW9uKCk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLmhpZGVPblNjcm9sbCA/IHRoaXMuX3Njcm9sbExpc3RlbmVyKCkgOiB0aGlzLl9zY3JvbGxTaGFkb3dMaXN0ZW5lcigpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIHJlcXVlc3RlZCBwcm9wZXJ0eSBvZiB0aGUgc2Nyb2xsQ29udGV4dC4gKi9cbiAgcHJpdmF0ZSBfZ2V0Q3VycmVudFNjcm9sbFByb3BlcnR5KHByb3BlcnR5OiAnc2Nyb2xsVG9wJyB8ICdzY3JvbGxIZWlnaHQnKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5fc2Nyb2xsRWxlbWVudCBpbnN0YW5jZW9mIERvY3VtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2Nyb2xsRWxlbWVudC5kb2N1bWVudEVsZW1lbnRbcHJvcGVydHldIHx8IHRoaXMuX3Njcm9sbEVsZW1lbnQuYm9keVtwcm9wZXJ0eV07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zY3JvbGxFbGVtZW50Py5bcHJvcGVydHldIHx8IDA7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgYHNjcm9sbFRvcGAsIHRoZW46XG4gICAqIC0gYXBwbHkgdGhlIHNoYWRvdyBpZiB0aGUgZWxlbWVudC9kb2N1bWVudCBoYXMgYmVlbiBzY3JvbGxlZCBkb3duO1xuICAgKiAtIGhpZGVzIHRoZSBoZWFkZXIsIHJlbW92ZSB0aGUgc2hhZG93IGFuZCBwb3NzaWJseSBjbG9zZSBhbnkgb3BlbiBtZW51IG9uIHRoZSBoZWFkZXIgaWYgaXQgaXMgbm90IHZpc2libGUgYW55bW9yZTtcbiAgICogLSBzaG93cyB0aGUgaGVhZGVyIGFuZCByZS1hcHBseSB0aGUgc2hhZG93IGlmIHRoZSBlbGVtZW50L2RvY3VtZW50IGhhcyBiZWVuIHNjcm9sbGVkIHVwLlxuICAgKi9cbiAgcHJpdmF0ZSBfc2Nyb2xsTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFNjcm9sbCA9IHRoaXMuX2dldEN1cnJlbnRTY3JvbGxQcm9wZXJ0eSgnc2Nyb2xsVG9wJyk7XG5cbiAgICAvLyBXaGV0aGVyIHRoZSBzY3JvbGwgdmlldyBpcyBib3VuY2luZyBwYXN0IHRoZSBlZGdlIG9mIGNvbnRlbnQgYW5kIGJhY2sgYWdhaW4uXG4gICAgaWYgKHRoaXMuX2dldEN1cnJlbnRTY3JvbGxQcm9wZXJ0eSgnc2Nyb2xsSGVpZ2h0JykgLSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBjdXJyZW50U2Nyb2xsIDw9IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCdzaGFkb3cnLCBjdXJyZW50U2Nyb2xsICE9PSAwKTtcblxuICAgIC8vIENsb3NlIG9wZW4gb3ZlcmxheXMgd2hlbiBzY3JvbGxpbmcgZG93biBpZiB0aGUgaGVhZGVyIGlzIHNjcm9sbGVkIG91dCBvZiBzaWdodC5cbiAgICBpZiAoXG4gICAgICBjdXJyZW50U2Nyb2xsID4gdGhpcy5vZmZzZXRIZWlnaHQgJiZcbiAgICAgIGN1cnJlbnRTY3JvbGwgPiAwICYmXG4gICAgICB0aGlzLl9sYXN0U2Nyb2xsIDwgY3VycmVudFNjcm9sbFxuICAgICkge1xuICAgICAgdGhpcy5fY2xvc2VPcGVuT3ZlcmxheXMoKTtcbiAgICB9XG4gICAgLy8gQ2hlY2sgaWYgdGhlIGhlYWRlciBpcyBzY3JvbGxlZCBvdXQgb2Ygc2lnaHQsIHNjcm9sbCBwb3NpdGlvbiA+IGhlYWRlciBoZWlnaHQgKiAyLlxuICAgIGlmIChjdXJyZW50U2Nyb2xsID4gdGhpcy5vZmZzZXRIZWlnaHQgKiAyKSB7XG4gICAgICB0aGlzLl9oZWFkZXJPblRvcCA9IGZhbHNlO1xuICAgICAgaWYgKGN1cnJlbnRTY3JvbGwgPiAwICYmIHRoaXMuX2xhc3RTY3JvbGwgPCBjdXJyZW50U2Nyb2xsKSB7XG4gICAgICAgIC8vIFNjcm9sbGluZyBkb3duXG4gICAgICAgIFsnc2hhZG93JywgJ3Zpc2libGUnXS5mb3JFYWNoKChuYW1lKSA9PiB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKG5hbWUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNjcm9sbGluZyB1cFxuICAgICAgICBbJ2ZpeGVkJywgJ3NoYWRvdycsICdhbmltYXRlZCcsICd2aXNpYmxlJ10uZm9yRWFjaCgobmFtZSkgPT5cbiAgICAgICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKG5hbWUpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDaGVjayBpZiBoZWFkZXIgaW4gaXRzIG9yaWdpbmFsIHBvc2l0aW9uLCBzY3JvbGwgcG9zaXRpb24gPCBoZWFkZXIgaGVpZ2h0LlxuICAgICAgLy8gUmVzZXQgaGVhZGVyIGJlaGF2aW9yIHdoZW4gc2Nyb2xsIGhpdHMgdG9wIG9mIHRoZSBwYWdlLCBvbiBzY3JvbGwgcG9zaXRpb24gPSAwLlxuICAgICAgaWYgKGN1cnJlbnRTY3JvbGwgPT09IDApIHtcbiAgICAgICAgdGhpcy5faGVhZGVyT25Ub3AgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX2hlYWRlck9uVG9wKSB7XG4gICAgICAgIFsnc2hhZG93JywgJ2FuaW1hdGVkJywgJ2ZpeGVkJywgJ3Zpc2libGUnXS5mb3JFYWNoKChuYW1lKSA9PlxuICAgICAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUobmFtZSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGBjdXJyZW50U2Nyb2xsYCBjYW4gYmUgbmVnYXRpdmUsIGUuZy4gb24gbW9iaWxlOyB0aGlzIGlzIG5vdCBhbGxvd2VkLlxuICAgIHRoaXMuX2xhc3RTY3JvbGwgPSBjdXJyZW50U2Nyb2xsIDw9IDAgPyAwIDogY3VycmVudFNjcm9sbDtcbiAgfVxuXG4gIC8qKiBBcHBseSB0aGUgc2hhZG93IGlmIHRoZSBlbGVtZW50L2RvY3VtZW50IGhhcyBiZWVuIHNjcm9sbGVkIGRvd24uICovXG4gIHByaXZhdGUgX3Njcm9sbFNoYWRvd0xpc3RlbmVyKCk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ3NoYWRvdycsIHRoaXMuX2dldEN1cnJlbnRTY3JvbGxQcm9wZXJ0eSgnc2Nyb2xsVG9wJykgIT09IDApO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VPcGVuT3ZlcmxheXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWF0Y2hlcygnOnN0YXRlKGhhcy12aXNpYmxlLWZvY3VzLXdpdGhpbiknKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvdmVybGF5VHJpZ2dlcnM6IEhUTUxFbGVtZW50W10gPSBBcnJheS5mcm9tKFxuICAgICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsKElTX01FTlVfT1BFTkVEX1FVRVJZKSBhcyBOb2RlTGlzdE9mPEhUTUxFbGVtZW50PixcbiAgICApO1xuICAgIGZvciAoY29uc3Qgb3ZlcmxheVRyaWdnZXIgb2Ygb3ZlcmxheVRyaWdnZXJzKSB7XG4gICAgICBjb25zdCBvdmVybGF5ID0gb3ZlcmxheVRyaWdnZXIuYXJpYUNvbnRyb2xzRWxlbWVudHMhWzBdIGFzIEhUTUxFbGVtZW50ICYge1xuICAgICAgICBjbG9zZTogKCkgPT4gdm9pZDtcbiAgICAgIH07XG4gICAgICBpZiAodHlwZW9mIG92ZXJsYXk/LmNsb3NlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG92ZXJsYXkuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxoZWFkZXIgY2xhc3M9XCJzYmItaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItaGVhZGVyX193cmFwcGVyXCI+XG4gICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaGVhZGVyPlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1oZWFkZXInOiBTYmJIZWFkZXJFbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FDdUJBLElBQU0sdUJBQXVCOzs7Ozs7OztJQVNoQiwwQkFBZ0I7bUJBQVM7Ozs7Ozs7Ozs7Ozs7Ozs7Y0FBekIseUJBQXlCLFlBQVU7OzsyQkFtQjdDLFdBQVcsRUFDWCxTQUFTO0lBQUUsU0FBUztJQUFNLE1BQU07SUFBUyxDQUFDLENBQUE7K0JBUTFDLGFBQWEsRUFDYixTQUFTLEVBQUUsV0FBVyxpQkFBaUIsQ0FBQyxDQUFBOytCQUl4QyxXQUFXLEVBQ1gsU0FBUztJQUFFLFdBQVc7SUFBa0IsU0FBUztJQUFNLE1BQU07SUFBUyxDQUFDLENBQUE7dUJBT3ZFLFNBQVMsRUFBRSxTQUFTLE1BQU0sQ0FBQyxDQUFBOytCQUUzQixPQUFPLENBQUE7QUF0QlIsZ0JBQUEsTUFBQSxNQUFBLHNCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsY0FBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFRLE1BQUEsS0FBQSxVQUFBO0FBQUEsVUFBUixXQUFROztLQUFBO0lBQUEsVUFBQTtJQUFBLEVBQUEsd0JBQUEsNEJBQUE7QUFTeEIsZ0JBQUEsTUFBQSxNQUFBLDBCQUFBO0lBQUEs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
@@ -1,36 +0,0 @@
1
- import { html, unsafeCSS } from "lit";
2
- import { SbbElement, SbbNegativeMixin, boxSizingStyles } from "./core.js";
3
- //#region src/elements/form-field/hint/hint.scss?inline
4
- var hint_default = ":host {\n --sbb-form-field-hint-font-size: var(--sbb-text-font-size-xxs);\n display: inline-block;\n color: var(--sbb-form-field-label-color);\n font-size: var(--sbb-form-field-hint-font-size);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n}\n\n:host([negative]) {\n --sbb-form-field-label-color: var(--sbb-color-5);\n}";
5
- //#endregion
6
- //#region src/elements/form-field/hint/hint.component.ts
7
- /**
8
- * It displays a hint message in the `sbb-form-field`.
9
- *
10
- * @slot - Use the unnamed slot to display the hint message.
11
- */
12
- var SbbHintElement = class extends SbbNegativeMixin(SbbElement) {
13
- constructor() {
14
- super(...arguments);
15
- this.formField = null;
16
- }
17
- static {
18
- this.elementName = "sbb-hint";
19
- }
20
- static {
21
- this.styles = [boxSizingStyles, unsafeCSS(hint_default)];
22
- }
23
- connectedCallback() {
24
- super.connectedCallback();
25
- this.slot ||= "hint";
26
- this.formField = this.closest?.("sbb-form-field");
27
- this.negative = this.formField?.hasAttribute("negative") ?? false;
28
- }
29
- render() {
30
- return html`<slot></slot>`;
31
- }
32
- };
33
- //#endregion
34
- export { SbbHintElement as t };
35
-
36
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludC5jb21wb25lbnQtaEt3MVRMdk8uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Zvcm0tZmllbGQvaGludC9oaW50LnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Zvcm0tZmllbGQvaGludC9oaW50LmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdCB7XG4gIC0tc2JiLWZvcm0tZmllbGQtaGludC1mb250LXNpemU6IHZhcigtLXNiYi10ZXh0LWZvbnQtc2l6ZS14eHMpO1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgY29sb3I6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWxhYmVsLWNvbG9yKTtcbiAgZm9udC1zaXplOiB2YXIoLS1zYmItZm9ybS1maWVsZC1oaW50LWZvbnQtc2l6ZSk7XG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zYmItdHlwby1sZXR0ZXItc3BhY2luZy10ZXh0KTtcbn1cblxuOmhvc3QoW25lZ2F0aXZlXSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLWxhYmVsLWNvbG9yOiB2YXIoLS1zYmItY29sb3ItNSk7XG59XG4iLCJpbXBvcnQgeyB0eXBlIENTU1Jlc3VsdEdyb3VwLCBodG1sLCB0eXBlIFRlbXBsYXRlUmVzdWx0LCB1bnNhZmVDU1MgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgeyBib3hTaXppbmdTdHlsZXMsIFNiYkVsZW1lbnQsIFNiYk5lZ2F0aXZlTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiRm9ybUZpZWxkRWxlbWVudCB9IGZyb20gJy4uL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9oaW50LnNjc3M/aW5saW5lJztcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIGhpbnQgbWVzc2FnZSBpbiB0aGUgYHNiYi1mb3JtLWZpZWxkYC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGRpc3BsYXkgdGhlIGhpbnQgbWVzc2FnZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkhpbnRFbGVtZW50IGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpbihTYmJFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItaGludCc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtib3hTaXppbmdTdHlsZXMsIHVuc2FmZUNTUyhzdHlsZSldO1xuXG4gIHByb3RlY3RlZCBmb3JtRmllbGQ6IFNiYkZvcm1GaWVsZEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLnNsb3QgfHw9ICdoaW50JztcblxuICAgIHRoaXMuZm9ybUZpZWxkID0gdGhpcy5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJyk7XG4gICAgdGhpcy5uZWdhdGl2ZSA9IHRoaXMuZm9ybUZpZWxkPy5oYXNBdHRyaWJ1dGUoJ25lZ2F0aXZlJykgPz8gZmFsc2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGA8c2xvdD48L3Nsb3Q+YDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWhpbnQnOiBTYmJIaW50RWxlbWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQ1lBLElBQWEsaUJBQWIsY0FBb0MsaUJBQWlCLFdBQVcsQ0FBQTtDQUFoRSxjQUFBOztBQUlZLE9BQUEsWUFBd0M7OztBQUhsQixPQUFBLGNBQXNCOzs7QUFDL0IsT0FBQSxTQUF5QixDQUFDLGlCQUFpQixVQUFVLGFBQU0sQ0FBQzs7Q0FJbkUsb0JBQWlCO0FBQy9CLFFBQU0sbUJBQW1CO0FBQ3pCLE9BQUssU0FBUztBQUVkLE9BQUssWUFBWSxLQUFLLFVBQVUsaUJBQWlCO0FBQ2pELE9BQUssV0FBVyxLQUFLLFdBQVcsYUFBYSxXQUFXLElBQUk7O0NBRzNDLFNBQU07QUFDdkIsU0FBTyxJQUFJIn0=
@@ -1,43 +0,0 @@
1
- import { html, unsafeCSS } from "lit";
2
- import { SbbElement, boxSizingStyles } from "./core.js";
3
- //#region src/elements/message/message.scss?inline
4
- var message_default = ":host {\n display: block;\n text-align: center;\n}\n\n::slotted(sbb-title[slot=title]) {\n margin: 0;\n}\n\n::slotted([slot=image]) {\n display: block;\n margin-inline: auto !important;\n margin-block: var(--sbb-message-image-margin-block) !important;\n width: 100%;\n}\n\n::slotted([slot=subtitle]) {\n color: var(--sbb-message-subtitle-color);\n font-size: var(--sbb-text-font-size-s);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n margin: 0;\n}\n\n::slotted([slot=legend]) {\n --sbb-text-font-size: var(--sbb-text-font-size-xs);\n font-family: var(--sbb-typo-font-family);\n font-weight: normal;\n line-height: var(--sbb-typo-line-height-text);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n font-size: var(--sbb-text-font-size);\n padding: 0;\n color: var(--sbb-color-granite);\n color: light-dark(var(--sbb-color-granite), var(--sbb-color-cement));\n margin-block: var(--sbb-message-legend-margin-block);\n}\n\n::slotted([slot=action]) {\n margin-block: var(--sbb-message-action-margin-block);\n}";
5
- //#endregion
6
- //#region src/elements/message/message.component.ts
7
- /**
8
- * It displays a complex message combining a title, an image, an action and some content.
9
- *
10
- * @slot image - Use this slot to provide an `sbb-image` component.
11
- * @slot title - Use this slot to provide an `sbb-title`.
12
- * @slot subtitle - Use this slot to provide a subtitle, must be a paragraph.
13
- * @slot legend - Use this slot to provide a legend, must be a paragraph.
14
- * @slot action - Use this slot to provide an `sbb-secondary-button`.
15
- */
16
- var SbbMessageElement = class extends SbbElement {
17
- static {
18
- this.elementName = "sbb-message";
19
- }
20
- static {
21
- this.styles = [boxSizingStyles, unsafeCSS(message_default)];
22
- }
23
- _configureTitle(event) {
24
- const title = event.target.assignedElements().find((e) => e.localName === "sbb-title");
25
- if (title) {
26
- customElements.upgrade(title);
27
- title.visualLevel = "5";
28
- }
29
- }
30
- render() {
31
- return html`
32
- <slot name="image"></slot>
33
- <slot name="title" @slotchange=${this._configureTitle}></slot>
34
- <slot name="subtitle"></slot>
35
- <slot name="legend"></slot>
36
- <slot name="action"></slot>
37
- `;
38
- }
39
- };
40
- //#endregion
41
- export { SbbMessageElement as t };
42
-
43
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5jb21wb25lbnQtQ3JYdE1wcnIuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL21lc3NhZ2UvbWVzc2FnZS5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9tZXNzYWdlL21lc3NhZ2UuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuOjpzbG90dGVkKHNiYi10aXRsZVtzbG90PSd0aXRsZSddKSB7XG4gIG1hcmdpbjogMDtcbn1cblxuOjpzbG90dGVkKFtzbG90PSdpbWFnZSddKSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4taW5saW5lOiBhdXRvICFpbXBvcnRhbnQ7IC8vIG92ZXJyaWRlcyAnLnNiYi1maWd1cmUnIG1hcmdpblxuICBtYXJnaW4tYmxvY2s6IHZhcigtLXNiYi1tZXNzYWdlLWltYWdlLW1hcmdpbi1ibG9jaykgIWltcG9ydGFudDsgLy8gb3ZlcnJpZGVzICcuc2JiLWZpZ3VyZScgbWFyZ2luXG4gIHdpZHRoOiAxMDAlO1xufVxuXG46OnNsb3R0ZWQoW3Nsb3Q9J3N1YnRpdGxlJ10pIHtcbiAgY29sb3I6IHZhcigtLXNiYi1tZXNzYWdlLXN1YnRpdGxlLWNvbG9yKTtcbiAgZm9udC1zaXplOiB2YXIoLS1zYmItdGV4dC1mb250LXNpemUtcyk7XG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zYmItdHlwby1sZXR0ZXItc3BhY2luZy10ZXh0KTtcbiAgbWFyZ2luOiAwO1xufVxuXG46OnNsb3R0ZWQoW3Nsb3Q9J2xlZ2VuZCddKSB7XG4gIEBpbmNsdWRlIHNiYi5sZWdlbmQ7XG5cbiAgbWFyZ2luLWJsb2NrOiB2YXIoLS1zYmItbWVzc2FnZS1sZWdlbmQtbWFyZ2luLWJsb2NrKTtcbn1cblxuOjpzbG90dGVkKFtzbG90PSdhY3Rpb24nXSkge1xuICBtYXJnaW4tYmxvY2s6IHZhcigtLXNiYi1tZXNzYWdlLWFjdGlvbi1tYXJnaW4tYmxvY2spO1xufVxuIiwiaW1wb3J0IHsgdHlwZSBDU1NSZXN1bHRHcm91cCwgaHRtbCwgdHlwZSBUZW1wbGF0ZVJlc3VsdCwgdW5zYWZlQ1NTIH0gZnJvbSAnbGl0JztcblxuaW1wb3J0IHsgYm94U2l6aW5nU3R5bGVzLCBTYmJFbGVtZW50IH0gZnJvbSAnLi4vY29yZS50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYlRpdGxlRWxlbWVudCB9IGZyb20gJy4uL3RpdGxlLnB1cmUudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9tZXNzYWdlLnNjc3M/aW5saW5lJztcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIGNvbXBsZXggbWVzc2FnZSBjb21iaW5pbmcgYSB0aXRsZSwgYW4gaW1hZ2UsIGFuIGFjdGlvbiBhbmQgc29tZSBjb250ZW50LlxuICpcbiAqIEBzbG90IGltYWdlIC0gVXNlIHRoaXMgc2xvdCB0byBwcm92aWRlIGFuIGBzYmItaW1hZ2VgIGNvbXBvbmVudC5cbiAqIEBzbG90IHRpdGxlIC0gVXNlIHRoaXMgc2xvdCB0byBwcm92aWRlIGFuIGBzYmItdGl0bGVgLlxuICogQHNsb3Qgc3VidGl0bGUgLSBVc2UgdGhpcyBzbG90IHRvIHByb3ZpZGUgYSBzdWJ0aXRsZSwgbXVzdCBiZSBhIHBhcmFncmFwaC5cbiAqIEBzbG90IGxlZ2VuZCAtIFVzZSB0aGlzIHNsb3QgdG8gcHJvdmlkZSBhIGxlZ2VuZCwgbXVzdCBiZSBhIHBhcmFncmFwaC5cbiAqIEBzbG90IGFjdGlvbiAtIFVzZSB0aGlzIHNsb3QgdG8gcHJvdmlkZSBhbiBgc2JiLXNlY29uZGFyeS1idXR0b25gLlxuICovXG5leHBvcnQgY2xhc3MgU2JiTWVzc2FnZUVsZW1lbnQgZXh0ZW5kcyBTYmJFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBlbGVtZW50TmFtZTogc3RyaW5nID0gJ3NiYi1tZXNzYWdlJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgdW5zYWZlQ1NTKHN0eWxlKV07XG5cbiAgcHJpdmF0ZSBfY29uZmlndXJlVGl0bGUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGl0bGUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxTbG90RWxlbWVudClcbiAgICAgIC5hc3NpZ25lZEVsZW1lbnRzKClcbiAgICAgIC5maW5kKChlKTogZSBpcyBTYmJUaXRsZUVsZW1lbnQgPT4gZS5sb2NhbE5hbWUgPT09ICdzYmItdGl0bGUnKTtcbiAgICBpZiAodGl0bGUpIHtcbiAgICAgIGN1c3RvbUVsZW1lbnRzLnVwZ3JhZGUodGl0bGUpO1xuICAgICAgdGl0bGUudmlzdWFsTGV2ZWwgPSAnNSc7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c2xvdCBuYW1lPVwiaW1hZ2VcIj48L3Nsb3Q+XG4gICAgICA8c2xvdCBuYW1lPVwidGl0bGVcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX2NvbmZpZ3VyZVRpdGxlfT48L3Nsb3Q+XG4gICAgICA8c2xvdCBuYW1lPVwic3VidGl0bGVcIj48L3Nsb3Q+XG4gICAgICA8c2xvdCBuYW1lPVwibGVnZW5kXCI+PC9zbG90PlxuICAgICAgPHNsb3QgbmFtZT1cImFjdGlvblwiPjwvc2xvdD5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItbWVzc2FnZSc6IFNiYk1lc3NhZ2VFbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQ2dCQSxJQUFhLG9CQUFiLGNBQXVDLFdBQVU7O0FBQ2YsT0FBQSxjQUFzQjs7O0FBQy9CLE9BQUEsU0FBeUIsQ0FBQyxpQkFBaUIsVUFBVSxnQkFBTSxDQUFDOztDQUUzRSxnQkFBZ0IsT0FBWTtFQUNsQyxNQUFNLFFBQVMsTUFBTSxPQUNsQixrQkFBa0IsQ0FDbEIsTUFBTSxNQUE0QixFQUFFLGNBQWMsWUFBWTtBQUNqRSxNQUFJLE9BQU87QUFDVCxrQkFBZSxRQUFRLE1BQU07QUFDN0IsU0FBTSxjQUFjOzs7Q0FJTCxTQUFNO0FBQ3ZCLFNBQU8sSUFBSTs7dUNBRXdCLEtBQUssZ0JBQWUifQ==