@sbb-esta/lyne-elements-dev 4.11.0-dev.1776924022 → 4.11.0-dev.1776928413

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 (356) hide show
  1. package/autocomplete/autocomplete-base-element.js +1 -1
  2. package/autocomplete/autocomplete.component.js +1 -1
  3. package/{autocomplete-base-element-BryH362a.js → autocomplete-base-element-DNoAdA1R.js} +1 -1
  4. package/autocomplete.js +1 -1
  5. package/autocomplete.pure.js +1 -1
  6. package/{block-link-common-BwXob5QE.js → block-link-common-1kRa_czx.js} +1 -1
  7. package/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
  8. package/breadcrumb/breadcrumb-group.js +1 -1
  9. package/{breadcrumb-group.component-F3-JZkfO.js → breadcrumb-group.component-CKNsaUqs.js} +1 -1
  10. package/breadcrumb.js +1 -1
  11. package/breadcrumb.pure.js +1 -1
  12. package/button/common/button-common.js +1 -1
  13. package/button/common.js +1 -1
  14. package/button-common-BMEhm-dn.js +87 -0
  15. package/button.js +1 -1
  16. package/button.pure.js +1 -1
  17. package/calendar/calendar/calendar.component.js +1 -1
  18. package/calendar/calendar.js +1 -1
  19. package/{calendar.component-Cq0m3E48.js → calendar.component-C1jk_uE0.js} +1 -1
  20. package/calendar.js +1 -1
  21. package/calendar.pure.js +1 -1
  22. package/card/card-badge/card-badge.component.js +1 -1
  23. package/card/card-badge.js +1 -1
  24. package/{card-badge.component-BSOEYrN4.js → card-badge.component-D0r2iixU.js} +1 -1
  25. package/card.js +1 -1
  26. package/card.pure.js +1 -1
  27. package/checkbox/checkbox.component.js +1 -1
  28. package/checkbox/checkbox.js +1 -1
  29. package/checkbox/common/checkbox-common.js +1 -1
  30. package/checkbox/common.js +1 -1
  31. package/{checkbox-common-DdieysTG.js → checkbox-common-BpW4_bbi.js} +1 -1
  32. package/{checkbox.component-ROzxEnPh.js → checkbox.component-DS48CA_v.js} +1 -1
  33. package/checkbox.js +2 -2
  34. package/checkbox.pure.js +2 -2
  35. package/chip/chip-group/chip-group.component.js +1 -1
  36. package/chip/chip-group.js +1 -1
  37. package/{chip-group.component-DJzUToem.js → chip-group.component-BqBYzfXA.js} +1 -1
  38. package/chip.js +1 -1
  39. package/chip.pure.js +1 -1
  40. package/{compact-paginator.component-Cyi-t_YD.js → compact-paginator.component-BIAPutro.js} +1 -1
  41. package/core/styles/core.scss +17 -73
  42. package/core/styles/mixins/typo.scss +2 -2
  43. package/core.css +67 -65
  44. package/development/autocomplete/autocomplete-base-element.js +1 -1
  45. package/development/autocomplete/autocomplete.component.js +1 -1
  46. package/development/autocomplete-base-element-BR5zqYyY.js +692 -0
  47. package/development/autocomplete.js +1 -1
  48. package/development/autocomplete.pure.js +1 -1
  49. package/development/{block-link-common-Dh1NOKxB.js → block-link-common-COY1RI1I.js} +2 -2
  50. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
  51. package/development/breadcrumb/breadcrumb-group.js +1 -1
  52. package/development/breadcrumb-group.component-DZslNBlB.js +195 -0
  53. package/development/breadcrumb.js +1 -1
  54. package/development/breadcrumb.pure.js +1 -1
  55. package/development/button/common/button-common.js +1 -1
  56. package/development/button/common.js +1 -1
  57. package/development/{button-common-CAu09Yim.js → button-common-7dmrUx4A.js} +3 -3
  58. package/development/button.js +1 -1
  59. package/development/button.pure.js +1 -1
  60. package/development/calendar/calendar/calendar.component.js +1 -1
  61. package/development/calendar/calendar.js +1 -1
  62. package/development/calendar.component-Dg3D2A7k.js +1453 -0
  63. package/development/calendar.js +1 -1
  64. package/development/calendar.pure.js +1 -1
  65. package/development/card/card-badge/card-badge.component.js +1 -1
  66. package/development/card/card-badge.js +1 -1
  67. package/development/card-badge.component-CUZIoVbL.js +84 -0
  68. package/development/card.js +1 -1
  69. package/development/card.pure.js +1 -1
  70. package/development/checkbox/checkbox.component.js +1 -1
  71. package/development/checkbox/checkbox.js +1 -1
  72. package/development/checkbox/common/checkbox-common.js +1 -1
  73. package/development/checkbox/common.js +1 -1
  74. package/development/checkbox-common-Dd5uup8K.js +86 -0
  75. package/development/{checkbox.component-D3_FFSys.js → checkbox.component-CFZrwUTA.js} +2 -2
  76. package/development/checkbox.js +2 -2
  77. package/development/checkbox.pure.js +2 -2
  78. package/development/chip/chip-group/chip-group.component.js +1 -1
  79. package/development/chip/chip-group.js +1 -1
  80. package/development/chip-group.component-BVfHWX2-.js +409 -0
  81. package/development/chip.js +1 -1
  82. package/development/chip.pure.js +1 -1
  83. package/development/compact-paginator.component-5_Q2Reul.js +51 -0
  84. package/development/error.component-OBpWoVRL.js +55 -0
  85. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +1 -1
  86. package/development/expansion-panel/expansion-panel-header.js +1 -1
  87. package/development/expansion-panel-header.component-BEAabEE0.js +85 -0
  88. package/development/expansion-panel.js +1 -1
  89. package/development/expansion-panel.pure.js +1 -1
  90. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
  91. package/development/file-selector/file-selector-dropzone.js +1 -1
  92. package/development/{file-selector-dropzone.component-B-cBO4bf.js → file-selector-dropzone.component-xfkQt0VX.js} +2 -2
  93. package/development/file-selector.js +1 -1
  94. package/development/file-selector.pure.js +1 -1
  95. package/development/footer/footer.component.js +1 -1
  96. package/development/footer.component-BmDkxYW9.js +172 -0
  97. package/development/footer.js +1 -1
  98. package/development/footer.pure.js +1 -1
  99. package/development/form-field/error/error.component.js +1 -1
  100. package/development/form-field/error.js +1 -1
  101. package/development/form-field/form-field/form-field.component.js +1 -1
  102. package/development/form-field/form-field.js +1 -1
  103. package/development/form-field/hint/hint.component.js +1 -1
  104. package/development/form-field.component-BU3Sv2mD.js +707 -0
  105. package/development/form-field.js +3 -3
  106. package/development/form-field.pure.js +3 -3
  107. package/development/header/header/header.component.js +1 -1
  108. package/development/header/header.js +1 -1
  109. package/development/header.component-CWJ36jF0.js +340 -0
  110. package/development/header.js +1 -1
  111. package/development/header.pure.js +1 -1
  112. package/development/hint.component-DUtL0RS3.js +38 -0
  113. package/development/link/common/block-link-common.js +1 -1
  114. package/development/link/common.js +1 -1
  115. package/development/link.js +1 -1
  116. package/development/link.pure.js +1 -1
  117. package/development/message/message.component.js +1 -1
  118. package/development/message.component-Dlf5V5ba.js +44 -0
  119. package/development/message.js +1 -1
  120. package/development/message.pure.js +1 -1
  121. package/development/navigation/common/navigation-action-common.js +1 -1
  122. package/development/navigation/common.js +1 -1
  123. package/development/navigation/navigation-marker/navigation-marker.component.js +1 -1
  124. package/development/navigation/navigation-marker.js +1 -1
  125. package/development/navigation/navigation-section/navigation-section.component.js +1 -1
  126. package/development/navigation/navigation-section.js +1 -1
  127. package/development/{navigation-action-common-DpBp7-eZ.js → navigation-action-common-Hjr4dI9J.js} +2 -2
  128. package/development/{navigation-marker.component-BpZdT4xz.js → navigation-marker.component-GOv42emC.js} +2 -2
  129. package/development/{navigation-section.component-CtZtuacK.js → navigation-section.component-CnVrRETN.js} +2 -2
  130. package/development/navigation.js +3 -3
  131. package/development/navigation.pure.js +3 -3
  132. package/development/notification/notification.component.js +1 -1
  133. package/development/notification.component-Cvq_uViC.js +274 -0
  134. package/development/notification.js +1 -1
  135. package/development/notification.pure.js +1 -1
  136. package/development/paginator/compact-paginator/compact-paginator.component.js +1 -1
  137. package/development/paginator/compact-paginator.js +1 -1
  138. package/development/paginator/paginator/paginator.component.js +1 -1
  139. package/development/paginator/paginator.js +1 -1
  140. package/development/paginator.component-Bn5tK0FK.js +259 -0
  141. package/development/paginator.js +2 -2
  142. package/development/paginator.pure.js +2 -2
  143. package/development/radio-button/common/radio-button-common.js +1 -1
  144. package/development/radio-button/common.js +1 -1
  145. package/development/radio-button/radio-button.component.js +1 -1
  146. package/development/radio-button/radio-button.js +1 -1
  147. package/development/radio-button-common--d3WX-ZM.js +126 -0
  148. package/development/{radio-button.component-BrQF2FfA.js → radio-button.component-BauLEeCV.js} +2 -2
  149. package/development/radio-button.js +2 -2
  150. package/development/radio-button.pure.js +2 -2
  151. package/development/select/select.component.js +1 -1
  152. package/development/select.component-CkwuT_xi.js +812 -0
  153. package/development/select.js +1 -1
  154. package/development/select.pure.js +1 -1
  155. package/development/status/status.component.js +1 -1
  156. package/development/status.component-CPi1cPN0.js +111 -0
  157. package/development/status.js +1 -1
  158. package/development/status.pure.js +1 -1
  159. package/development/step-label.component-BJ9eainz.js +131 -0
  160. package/development/stepper/step-label/step-label.component.js +1 -1
  161. package/development/stepper/step-label.js +1 -1
  162. package/development/stepper.js +1 -1
  163. package/development/stepper.pure.js +1 -1
  164. package/development/styles-Jlhoev1S.js +14 -0
  165. package/development/{tab-label.component-14j2eh4Z.js → tab-label.component-B9e9kgVf.js} +2 -2
  166. package/development/tabs/common/styles.js +1 -1
  167. package/development/tabs/common.js +1 -1
  168. package/development/tabs/tab-label/tab-label.component.js +1 -1
  169. package/development/tabs/tab-label.js +1 -1
  170. package/development/tabs.js +2 -2
  171. package/development/tabs.pure.js +2 -2
  172. package/development/tag/tag/tag.component.js +1 -1
  173. package/development/tag/tag.js +1 -1
  174. package/development/tag.component-Bl1nlIXQ.js +245 -0
  175. package/development/tag.js +1 -1
  176. package/development/tag.pure.js +1 -1
  177. package/development/timetable-occupancy/timetable-occupancy.component.js +1 -1
  178. package/development/{timetable-occupancy.component-dhpPJEaI.js → timetable-occupancy.component-BBcznUh0.js} +2 -2
  179. package/development/timetable-occupancy.js +1 -1
  180. package/development/timetable-occupancy.pure.js +1 -1
  181. package/development/title/title-base.js +1 -1
  182. package/development/title/title.component.js +1 -1
  183. package/development/{title-base-CBE_2Hkb.js → title-base-BdYKwj3-.js} +2 -2
  184. package/development/{title.component-Dk23JVct.js → title.component-DSXVkddh.js} +2 -2
  185. package/development/title.js +2 -2
  186. package/development/title.pure.js +2 -2
  187. package/development/toast/toast.component.js +1 -1
  188. package/development/{toast.component-Cuvs3VnH.js → toast.component-Cgr5ZGOr.js} +2 -2
  189. package/development/toast.js +1 -1
  190. package/development/toast.pure.js +1 -1
  191. package/development/toggle/toggle/toggle.component.js +1 -1
  192. package/development/toggle/toggle.js +1 -1
  193. package/development/toggle.component-BJpD1b9H.js +249 -0
  194. package/development/toggle.js +1 -1
  195. package/development/toggle.pure.js +1 -1
  196. package/development/tooltip/tooltip.component.js +1 -1
  197. package/development/tooltip.component-YaUQA-Id.js +378 -0
  198. package/development/tooltip.js +1 -1
  199. package/development/tooltip.pure.js +1 -1
  200. package/development/train/train-wagon/train-wagon.component.js +1 -1
  201. package/development/train/train-wagon.js +1 -1
  202. package/development/{train-wagon.component-BzA8-S_6.js → train-wagon.component-CNxkffOO.js} +2 -2
  203. package/development/train.js +1 -1
  204. package/development/train.pure.js +1 -1
  205. package/{error.component-B_D8WUP5.js → error.component-DH9Obd7a.js} +1 -1
  206. package/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +1 -1
  207. package/expansion-panel/expansion-panel-header.js +1 -1
  208. package/{expansion-panel-header.component-B_dQ3ZWT.js → expansion-panel-header.component-FPoEEoZR.js} +1 -1
  209. package/expansion-panel.js +1 -1
  210. package/expansion-panel.pure.js +1 -1
  211. package/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
  212. package/file-selector/file-selector-dropzone.js +1 -1
  213. package/{file-selector-dropzone.component-CBKsZsC2.js → file-selector-dropzone.component-DSmBp7xN.js} +1 -1
  214. package/file-selector.js +1 -1
  215. package/file-selector.pure.js +1 -1
  216. package/footer/footer.component.js +1 -1
  217. package/{footer.component-BM91Utiz.js → footer.component-b2docCY_.js} +1 -1
  218. package/footer.js +1 -1
  219. package/footer.pure.js +1 -1
  220. package/form-field/error/error.component.js +1 -1
  221. package/form-field/error.js +1 -1
  222. package/form-field/form-field/form-field.component.js +1 -1
  223. package/form-field/form-field.js +1 -1
  224. package/form-field/hint/hint.component.js +1 -1
  225. package/{form-field.component-Cc_siKrq.js → form-field.component-BwZDRKbQ.js} +1 -1
  226. package/form-field.js +3 -3
  227. package/form-field.pure.js +3 -3
  228. package/header/header/header.component.js +1 -1
  229. package/header/header.js +1 -1
  230. package/{header.component-hZqs06Yh.js → header.component-UQUFcMOD.js} +1 -1
  231. package/header.js +1 -1
  232. package/header.pure.js +1 -1
  233. package/{hint.component-BVUUrSSu.js → hint.component-CE2D2TLU.js} +1 -1
  234. package/link/common/block-link-common.js +1 -1
  235. package/link/common.js +1 -1
  236. package/link.js +1 -1
  237. package/link.pure.js +1 -1
  238. package/message/message.component.js +1 -1
  239. package/message.component-DhN-aFms.js +27 -0
  240. package/message.js +1 -1
  241. package/message.pure.js +1 -1
  242. package/navigation/common/navigation-action-common.js +1 -1
  243. package/navigation/common.js +1 -1
  244. package/navigation/navigation-marker/navigation-marker.component.js +1 -1
  245. package/navigation/navigation-marker.js +1 -1
  246. package/navigation/navigation-section/navigation-section.component.js +1 -1
  247. package/navigation/navigation-section.js +1 -1
  248. package/{navigation-action-common-2ix0xrBs.js → navigation-action-common-AzRltwrb.js} +1 -1
  249. package/{navigation-marker.component-DKxK16IU.js → navigation-marker.component-BzbbKlfT.js} +1 -1
  250. package/{navigation-section.component-CvjXVn5r.js → navigation-section.component-DQxCi3O_.js} +1 -1
  251. package/navigation.js +3 -3
  252. package/navigation.pure.js +3 -3
  253. package/notification/notification.component.js +1 -1
  254. package/{notification.component-DjXJFh1G.js → notification.component-D80Wl5xM.js} +1 -1
  255. package/notification.js +1 -1
  256. package/notification.pure.js +1 -1
  257. package/off-brand-theme.css +67 -65
  258. package/package.json +2 -2
  259. package/paginator/compact-paginator/compact-paginator.component.js +1 -1
  260. package/paginator/compact-paginator.js +1 -1
  261. package/paginator/paginator/paginator.component.js +1 -1
  262. package/paginator/paginator.js +1 -1
  263. package/{paginator.component-CZt7Epaf.js → paginator.component-BEr0qU0m.js} +1 -1
  264. package/paginator.js +2 -2
  265. package/paginator.pure.js +2 -2
  266. package/radio-button/common/radio-button-common.js +1 -1
  267. package/radio-button/common.js +1 -1
  268. package/radio-button/radio-button.component.js +1 -1
  269. package/radio-button/radio-button.js +1 -1
  270. package/{radio-button-common-DP4Izwwf.js → radio-button-common-C1mIf9KY.js} +1 -1
  271. package/{radio-button.component-BiGeOI5L.js → radio-button.component-Bae-yK_U.js} +1 -1
  272. package/radio-button.js +2 -2
  273. package/radio-button.pure.js +2 -2
  274. package/safety-theme.css +67 -65
  275. package/select/select.component.js +1 -1
  276. package/{select.component-DWLdApt_.js → select.component-ByO4itj5.js} +1 -1
  277. package/select.js +1 -1
  278. package/select.pure.js +1 -1
  279. package/standard-theme.css +67 -65
  280. package/status/status.component.js +1 -1
  281. package/{status.component-BFyXTFXH.js → status.component-lw_WDs7W.js} +1 -1
  282. package/status.js +1 -1
  283. package/status.pure.js +1 -1
  284. package/{step-label.component-dzcNc12A.js → step-label.component-Dqis4FAN.js} +1 -1
  285. package/stepper/step-label/step-label.component.js +1 -1
  286. package/stepper/step-label.js +1 -1
  287. package/stepper.js +1 -1
  288. package/stepper.pure.js +1 -1
  289. package/styles-BNu0Fjw5.js +5 -0
  290. package/{tab-label.component-CD56RH1Z.js → tab-label.component-CpdUyfiq.js} +1 -1
  291. package/tabs/common/styles.js +1 -1
  292. package/tabs/common.js +1 -1
  293. package/tabs/tab-label/tab-label.component.js +1 -1
  294. package/tabs/tab-label.js +1 -1
  295. package/tabs.js +2 -2
  296. package/tabs.pure.js +2 -2
  297. package/tag/tag/tag.component.js +1 -1
  298. package/tag/tag.js +1 -1
  299. package/{tag.component-CzYJZuFT.js → tag.component-CsNszQvB.js} +1 -1
  300. package/tag.js +1 -1
  301. package/tag.pure.js +1 -1
  302. package/timetable-occupancy/timetable-occupancy.component.js +1 -1
  303. package/{timetable-occupancy.component-BDmxFVKK.js → timetable-occupancy.component-BCXPxz68.js} +1 -1
  304. package/timetable-occupancy.js +1 -1
  305. package/timetable-occupancy.pure.js +1 -1
  306. package/title/title-base.js +1 -1
  307. package/title/title.component.js +1 -1
  308. package/{title-base-D72Xo2SW.js → title-base-DV0qhfG9.js} +1 -1
  309. package/{title.component-CoMa84Sz.js → title.component-DAGyXwDm.js} +1 -1
  310. package/title.js +2 -2
  311. package/title.pure.js +2 -2
  312. package/toast/toast.component.js +1 -1
  313. package/{toast.component-CkNywQOZ.js → toast.component-CGVqkd0_.js} +1 -1
  314. package/toast.js +1 -1
  315. package/toast.pure.js +1 -1
  316. package/toggle/toggle/toggle.component.js +1 -1
  317. package/toggle/toggle.js +1 -1
  318. package/{toggle.component-Cwc-TJ-a.js → toggle.component-B20xAw1V.js} +1 -1
  319. package/toggle.js +1 -1
  320. package/toggle.pure.js +1 -1
  321. package/tooltip/tooltip.component.js +1 -1
  322. package/{tooltip.component-B3XLLpLg.js → tooltip.component-ocVpJogs.js} +1 -1
  323. package/tooltip.js +1 -1
  324. package/tooltip.pure.js +1 -1
  325. package/train/train-wagon/train-wagon.component.js +1 -1
  326. package/train/train-wagon.js +1 -1
  327. package/{train-wagon.component-BwCcF4GD.js → train-wagon.component-BT4Xnzxr.js} +1 -1
  328. package/train.js +1 -1
  329. package/train.pure.js +1 -1
  330. package/button-common-yFVzAoGy.js +0 -87
  331. package/development/autocomplete-base-element-BNfirRyP.js +0 -692
  332. package/development/breadcrumb-group.component-HBWRdDpS.js +0 -195
  333. package/development/calendar.component-Dto81mQ8.js +0 -1453
  334. package/development/card-badge.component-D4Mes-Gw.js +0 -84
  335. package/development/checkbox-common-DiTlHvFJ.js +0 -86
  336. package/development/chip-group.component-CvpUdzu1.js +0 -409
  337. package/development/compact-paginator.component-TfDVt_ST.js +0 -51
  338. package/development/error.component-xD_c9IBA.js +0 -55
  339. package/development/expansion-panel-header.component-Bw4uROTe.js +0 -85
  340. package/development/footer.component-BblB5218.js +0 -172
  341. package/development/form-field.component-CWVzymTX.js +0 -707
  342. package/development/header.component-Cg0ZcA1s.js +0 -340
  343. package/development/hint.component-BsIzdUOV.js +0 -38
  344. package/development/message.component-CeJhYXSC.js +0 -44
  345. package/development/notification.component-Co9QChXc.js +0 -274
  346. package/development/paginator.component-DAdS2mMm.js +0 -259
  347. package/development/radio-button-common-C3-xuY78.js +0 -126
  348. package/development/select.component-CGNEhqzl.js +0 -812
  349. package/development/status.component-CHC2pBa-.js +0 -111
  350. package/development/step-label.component-DjA-3IGs.js +0 -131
  351. package/development/styles-DCQBzC2C.js +0 -14
  352. package/development/tag.component-CnNPL6aI.js +0 -245
  353. package/development/toggle.component-CKug5pF7.js +0 -249
  354. package/development/tooltip.component-epXOY5vO.js +0 -378
  355. package/message.component-BQjnZ5Z3.js +0 -27
  356. package/styles-BUpK1iP2.js +0 -5
@@ -1,195 +0,0 @@
1
- import { __esDecorate, __runInitializers } from "tslib";
2
- import { html, nothing, unsafeCSS } from "lit";
3
- import { state } from "lit/decorators.js";
4
- import { SbbElement } from "./core/base-elements.js";
5
- import { SbbNamedSlotListMixin } from "./core/mixins.js";
6
- import { boxSizingStyles } from "./core/styles.js";
7
- import { SbbLanguageController } from "./core/controllers.js";
8
- import { i18nBreadcrumbEllipsisButtonLabel } from "./core/i18n.js";
9
- import "./icon.js";
10
- import { ResizeController } from "@lit-labs/observers/resize-controller.js";
11
- import { getNextElementIndex, isArrowKeyPressed, sbbInputModalityDetector } from "./core/a11y.js";
12
- //#region src/elements/breadcrumb/breadcrumb-group/breadcrumb-group.scss?inline
13
- var breadcrumb_group_default = ":host {\n display: block;\n min-width: 0;\n}\n\n:host(:is(:state(loaded),[state--loaded])) {\n --sbb-breadcrumb-group-visibility: visible;\n}\n\n:host(:is(:is(:state(state-collapsed),[state--state-collapsed]), :is(:state(state-manually-expanded),[state--state-manually-expanded]))) {\n --sbb-breadcrumb-group-wrap: wrap;\n}\n\n.sbb-breadcrumb-group {\n list-style: none;\n margin: 0;\n padding: 0;\n font-size: inherit;\n display: flex;\n flex-wrap: var(--sbb-breadcrumb-group-wrap);\n column-gap: var(--sbb-spacing-fixed-1x);\n visibility: var(--sbb-breadcrumb-group-visibility);\n}\n\n.sbb-breadcrumb-group__item {\n flex: 0 0 auto;\n display: flex;\n column-gap: var(--sbb-spacing-fixed-1x);\n}\n\n.sbb-breadcrumb-group__divider-icon {\n color: var(--sbb-breadcrumb-group-ellipsis-color);\n}\n\n#sbb-breadcrumb-ellipsis {\n appearance: none;\n box-sizing: border-box;\n margin: 0;\n outline: none;\n border: none;\n border-radius: 0;\n padding: 0;\n background: none;\n -webkit-tap-highlight-color: transparent;\n color: inherit;\n --sbb-text-font-size: var(--sbb-text-font-size-xxs);\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 line-height: 0;\n letter-spacing: 0.01em;\n width: var(--sbb-size-icon-ui-small);\n height: var(--sbb-size-icon-ui-small);\n border: var(--sbb-breadcrumb-group-ellipsis-border-width) solid var(--sbb-breadcrumb-group-ellipsis-border-color);\n border-radius: 50%;\n padding-block-end: 0.5em;\n cursor: var(--sbb-cursor-pointer);\n color: var(--sbb-breadcrumb-group-ellipsis-color);\n background-color: var(--sbb-breadcrumb-group-ellipsis-background-color);\n overflow: hidden;\n}\n@media (forced-colors: active) {\n #sbb-breadcrumb-ellipsis {\n --sbb-breadcrumb-group-ellipsis-border-width: var(--sbb-border-width-2x);\n --sbb-breadcrumb-group-ellipsis-border-color: CanvasText;\n }\n}\n@media (any-hover: hover) {\n #sbb-breadcrumb-ellipsis:hover {\n --sbb-breadcrumb-group-ellipsis-color: var(--sbb-color-2);\n --sbb-breadcrumb-group-ellipsis-background-color: var(--sbb-background-color-3);\n }\n}\n@media (any-hover: hover) and (forced-colors: active) {\n #sbb-breadcrumb-ellipsis:hover {\n --sbb-breadcrumb-group-ellipsis-border-color: Highlight;\n }\n}\n#sbb-breadcrumb-ellipsis:focus-visible {\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}";
14
- //#endregion
15
- //#region src/elements/breadcrumb/breadcrumb-group/breadcrumb-group.component.ts
16
- var MIN_BREADCRUMBS_TO_COLLAPSE = 3;
17
- /**
18
- * It can be used as a container for one or more `sbb-breadcrumb` component.
19
- *
20
- * @slot - Use the unnamed slot to add `sbb-breadcrumb` elements.
21
- */
22
- var SbbBreadcrumbGroupElement = (() => {
23
- let _classSuper = SbbNamedSlotListMixin(SbbElement);
24
- let _instanceExtraInitializers = [];
25
- let _set__state_decorators;
26
- return class SbbBreadcrumbGroupElement extends _classSuper {
27
- static {
28
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
29
- _set__state_decorators = [state()];
30
- __esDecorate(this, null, _set__state_decorators, {
31
- kind: "setter",
32
- name: "_state",
33
- static: false,
34
- private: false,
35
- access: {
36
- has: (obj) => "_state" in obj,
37
- set: (obj, value) => {
38
- obj._state = value;
39
- }
40
- },
41
- metadata: _metadata
42
- }, null, _instanceExtraInitializers);
43
- if (_metadata) Object.defineProperty(this, Symbol.metadata, {
44
- enumerable: true,
45
- configurable: true,
46
- writable: true,
47
- value: _metadata
48
- });
49
- }
50
- static {
51
- this.elementName = "sbb-breadcrumb-group";
52
- }
53
- static {
54
- this.role = "navigation";
55
- }
56
- static {
57
- this.styles = [boxSizingStyles, unsafeCSS(breadcrumb_group_default)];
58
- }
59
- /** The state of the breadcrumb group. */
60
- set _state(state) {
61
- if (this._stateInternal) this.internals.states.delete(`state-${this._stateInternal}`);
62
- this._stateInternal = state;
63
- if (this._stateInternal) this.internals.states.add(`state-${this._stateInternal}`);
64
- }
65
- get _state() {
66
- return this._stateInternal;
67
- }
68
- constructor() {
69
- super();
70
- this.listChildLocalNames = (__runInitializers(this, _instanceExtraInitializers), ["sbb-breadcrumb"]);
71
- this._stateInternal = null;
72
- this._resizeObserver = new ResizeController(this, {
73
- target: null,
74
- skipInitial: true,
75
- callback: () => this._evaluateCollapsedState()
76
- });
77
- this._language = new SbbLanguageController(this);
78
- this._markForFocus = false;
79
- this.addEventListener?.("keydown", (e) => this._handleKeyDown(e));
80
- }
81
- _handleKeyDown(evt) {
82
- if (!this.listChildren.length || evt.target !== this && evt.target.parentElement !== this) return;
83
- if (isArrowKeyPressed(evt)) {
84
- if (this._state === "collapsed") return this._focusNextCollapsed(evt);
85
- this._focusNext(evt);
86
- }
87
- }
88
- firstUpdated(changedProperties) {
89
- super.firstUpdated(changedProperties);
90
- this._resizeObserver.observe(this);
91
- this.internals.states.add("loaded");
92
- }
93
- willUpdate(changedProperties) {
94
- super.willUpdate(changedProperties);
95
- if (changedProperties.has("listChildren")) this._syncBreadcrumbs();
96
- }
97
- updated(changedProperties) {
98
- super.updated(changedProperties);
99
- if (changedProperties.has("listChildren")) Promise.resolve().then(() => this._evaluateCollapsedState());
100
- if (this._markForFocus && sbbInputModalityDetector.mostRecentModality === "keyboard") {
101
- this.listChildren[1]?.focus();
102
- this._markForFocus = false;
103
- }
104
- }
105
- /** Apply the aria-current attribute to the last sbb-breadcrumb element. */
106
- _syncBreadcrumbs() {
107
- this.listChildren.slice(0, -1).filter((c) => c.hasAttribute("accessibility-current")).forEach((c) => c.removeAttribute("accessibility-current"));
108
- this.listChildren[this.listChildren.length - 1]?.setAttribute("accessibility-current", "page");
109
- if (this.listChildren.length < MIN_BREADCRUMBS_TO_COLLAPSE) this._state = null;
110
- }
111
- /**
112
- * Sets the focus on the correct element when the ellipsis breadcrumb is displayed and the user is navigating with keyboard's arrows.
113
- */
114
- _focusNextCollapsed(evt) {
115
- const arrayCollapsed = [
116
- this.listChildren[0],
117
- this.shadowRoot.querySelector("#sbb-breadcrumb-ellipsis"),
118
- this.listChildren[this.listChildren.length - 1]
119
- ];
120
- this._focusNext(evt, arrayCollapsed);
121
- }
122
- _focusNext(evt, breadcrumbs = this.listChildren) {
123
- breadcrumbs[getNextElementIndex(evt, breadcrumbs.findIndex((e) => e === document.activeElement || e === this.shadowRoot.activeElement), breadcrumbs.length)]?.focus();
124
- evt.preventDefault();
125
- }
126
- /**
127
- * Note: due to @State annotation on _state, this method triggers a new render; as a consequence, the focus is moved
128
- * to the `body`, so if the ellipsis element has focus, it's asynchronously forced to the first element.
129
- */
130
- _expandBreadcrumbs() {
131
- this._state = "manually-expanded";
132
- this._markForFocus = true;
133
- }
134
- /** Evaluate if the expanded breadcrumb element fits in page width, otherwise it needs ellipsis */
135
- _evaluateCollapsedState() {
136
- if (!this._state && this.scrollWidth > this.offsetWidth && this.listChildren.length >= MIN_BREADCRUMBS_TO_COLLAPSE) {
137
- this._state = "collapsed";
138
- this._resizeObserver.hostDisconnected();
139
- this.removeController(this._resizeObserver);
140
- }
141
- }
142
- _renderCollapsed() {
143
- return html`
144
- <li class="sbb-breadcrumb-group__item">
145
- <slot name="li-0"></slot>
146
- </li>
147
- <li class="sbb-breadcrumb-group__item" id="sbb-breadcrumb-group-ellipsis">
148
- <sbb-icon
149
- name="chevron-small-right-small"
150
- class="sbb-breadcrumb-group__divider-icon"
151
- ></sbb-icon>
152
- <button
153
- type="button"
154
- id="sbb-breadcrumb-ellipsis"
155
- aria-label=${i18nBreadcrumbEllipsisButtonLabel[this._language.current]}
156
- aria-expanded="false"
157
- @click=${() => this._expandBreadcrumbs()}
158
- >
159
- ...
160
- </button>
161
- </li>
162
- <li class="sbb-breadcrumb-group__item">
163
- <sbb-icon
164
- name="chevron-small-right-small"
165
- class="sbb-breadcrumb-group__divider-icon"
166
- ></sbb-icon>
167
- <slot name=${`li-${this.listChildren.length - 1}`}></slot>
168
- </li>
169
- `;
170
- }
171
- _renderExpanded() {
172
- return this.listSlotEntries().map((slot, index, array) => html`
173
- <li class="sbb-breadcrumb-group__item">
174
- <slot name=${slot.name}></slot>
175
- ${index !== array.length - 1 ? html`<sbb-icon
176
- name="chevron-small-right-small"
177
- class="sbb-breadcrumb-group__divider-icon"
178
- ></sbb-icon>` : nothing}
179
- </li>
180
- `);
181
- }
182
- render() {
183
- return html`
184
- <ol class="sbb-breadcrumb-group">
185
- ${this._state === "collapsed" ? this._renderCollapsed() : this._renderExpanded()}
186
- </ol>
187
- ${this.renderHiddenSlot()}
188
- `;
189
- }
190
- };
191
- })();
192
- //#endregion
193
- export { SbbBreadcrumbGroupElement as t };
194
-
195
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1ncm91cC5jb21wb25lbnQtSEJXUmREcFMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi1ncm91cC9icmVhZGNydW1iLWdyb3VwLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi1ncm91cC9icmVhZGNydW1iLWdyb3VwLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuXG4gIC8vIEFsbG93cyBzaXplIGNhbGN1bGF0aW9uIGV2ZW4gaWYgaW4gZ3JpZCBvciBmbGV4IGNvbnRleHQuXG4gIG1pbi13aWR0aDogMDtcbn1cblxuOmhvc3QoOnN0YXRlKGxvYWRlZCkpIHtcbiAgLS1zYmItYnJlYWRjcnVtYi1ncm91cC12aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuXG46aG9zdCg6aXMoOnN0YXRlKHN0YXRlLWNvbGxhcHNlZCksIDpzdGF0ZShzdGF0ZS1tYW51YWxseS1leHBhbmRlZCkpKSB7XG4gIC0tc2JiLWJyZWFkY3J1bWItZ3JvdXAtd3JhcDogd3JhcDtcbn1cblxuLnNiYi1icmVhZGNydW1iLWdyb3VwIHtcbiAgQGluY2x1ZGUgc2JiLmxpc3QtcmVzZXQ7XG5cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB2YXIoLS1zYmItYnJlYWRjcnVtYi1ncm91cC13cmFwKTtcbiAgY29sdW1uLWdhcDogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtMXgpO1xuICB2aXNpYmlsaXR5OiB2YXIoLS1zYmItYnJlYWRjcnVtYi1ncm91cC12aXNpYmlsaXR5KTtcbn1cblxuLnNiYi1icmVhZGNydW1iLWdyb3VwX19pdGVtIHtcbiAgZmxleDogMCAwIGF1dG87XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGNvbHVtbi1nYXA6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTF4KTtcbn1cblxuLnNiYi1icmVhZGNydW1iLWdyb3VwX19kaXZpZGVyLWljb24ge1xuICBjb2xvcjogdmFyKC0tc2JiLWJyZWFkY3J1bWItZ3JvdXAtZWxsaXBzaXMtY29sb3IpO1xufVxuXG4jc2JiLWJyZWFkY3J1bWItZWxsaXBzaXMge1xuICBAaW5jbHVkZSBzYmIuYnV0dG9uLXJlc2V0O1xuICBAaW5jbHVkZSBzYmIudGV4dC14eHMtLXJlZ3VsYXI7XG5cbiAgLy8gbGluZSBoZWlnaHQgYW5kIGxldHRlci1zcGFjaW5nIG5lZWRlZCB0byBtYXRjaCBzcXVhcmVzIGRyYXduIGluIEZpZ21hLlxuICBsaW5lLWhlaWdodDogMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDFlbTtcbiAgd2lkdGg6IHZhcigtLXNiYi1zaXplLWljb24tdWktc21hbGwpO1xuICBoZWlnaHQ6IHZhcigtLXNiYi1zaXplLWljb24tdWktc21hbGwpO1xuICBib3JkZXI6IHZhcigtLXNiYi1icmVhZGNydW1iLWdyb3VwLWVsbGlwc2lzLWJvcmRlci13aWR0aCkgc29saWRcbiAgICB2YXIoLS1zYmItYnJlYWRjcnVtYi1ncm91cC1lbGxpcHNpcy1ib3JkZXItY29sb3IpO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG5cbiAgLy8gSW4gb3JkZXIgdG8gdmVydGljYWxseSBjZW50ZXIgLi4uLCB3ZSB1c2UgcGFkZGluZyB3aXRoIGhhbGYgdGhlIGZvbnQgc2l6ZS5cbiAgcGFkZGluZy1ibG9jay1lbmQ6IDAuNWVtO1xuICBjdXJzb3I6IHZhcigtLXNiYi1jdXJzb3ItcG9pbnRlcik7XG4gIGNvbG9yOiB2YXIoLS1zYmItYnJlYWRjcnVtYi1ncm91cC1lbGxpcHNpcy1jb2xvcik7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1icmVhZGNydW1iLWdyb3VwLWVsbGlwc2lzLWJhY2tncm91bmQtY29sb3IpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIEBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgICAtLXNiYi1icmVhZGNydW1iLWdyb3VwLWVsbGlwc2lzLWJvcmRlci13aWR0aDogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0yeCk7XG4gICAgLS1zYmItYnJlYWRjcnVtYi1ncm91cC1lbGxpcHNpcy1ib3JkZXItY29sb3I6IENhbnZhc1RleHQ7XG4gIH1cblxuICBAaW5jbHVkZSBzYmIuaG92ZXItbXEoJGhvdmVyOiB0cnVlKSB7XG4gICAgJjpob3ZlciB7XG4gICAgICAtLXNiYi1icmVhZGNydW1iLWdyb3VwLWVsbGlwc2lzLWNvbG9yOiB2YXIoLS1zYmItY29sb3ItMik7XG4gICAgICAtLXNiYi1icmVhZGNydW1iLWdyb3VwLWVsbGlwc2lzLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTMpO1xuXG4gICAgICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgICAgIC0tc2JiLWJyZWFkY3J1bWItZ3JvdXAtZWxsaXBzaXMtYm9yZGVyLWNvbG9yOiBIaWdobGlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICBAaW5jbHVkZSBzYmIuZm9jdXMtb3V0bGluZTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUmVzaXplQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvcmVzaXplLWNvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgbm90aGluZyxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbiAgdW5zYWZlQ1NTLFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7XG4gIGdldE5leHRFbGVtZW50SW5kZXgsXG4gIGlzQXJyb3dLZXlQcmVzc2VkLFxuICBzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IsXG59IGZyb20gJy4uLy4uL2NvcmUvYTExeS50cyc7XG5pbXBvcnQgeyBTYmJFbGVtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlLWVsZW1lbnRzLnRzJztcbmltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMudHMnO1xuaW1wb3J0IHsgaTE4bkJyZWFkY3J1bWJFbGxpcHNpc0J1dHRvbkxhYmVsIH0gZnJvbSAnLi4vLi4vY29yZS9pMThuLnRzJztcbmltcG9ydCB7IFNiYk5hbWVkU2xvdExpc3RNaXhpbiwgdHlwZSBXaXRoTGlzdENoaWxkcmVuIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMudHMnO1xuaW1wb3J0IHsgYm94U2l6aW5nU3R5bGVzIH0gZnJvbSAnLi4vLi4vY29yZS9zdHlsZXMudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJCcmVhZGNydW1iRWxlbWVudCB9IGZyb20gJy4uL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9icmVhZGNydW1iLWdyb3VwLnNjc3M/aW5saW5lJztcblxuaW1wb3J0ICcuLi8uLi9pY29uLnRzJztcblxuY29uc3QgTUlOX0JSRUFEQ1JVTUJTX1RPX0NPTExBUFNFID0gMztcblxuLyoqXG4gKiBJdCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRhaW5lciBmb3Igb25lIG9yIG1vcmUgYHNiYi1icmVhZGNydW1iYCBjb21wb25lbnQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1icmVhZGNydW1iYCBlbGVtZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkJyZWFkY3J1bWJHcm91cEVsZW1lbnQgZXh0ZW5kcyBTYmJOYW1lZFNsb3RMaXN0TWl4aW48XG4gIFNiYkJyZWFkY3J1bWJFbGVtZW50LFxuICB0eXBlb2YgU2JiRWxlbWVudFxuPihTYmJFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItYnJlYWRjcnVtYi1ncm91cCc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgcm9sZSA9ICduYXZpZ2F0aW9uJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgdW5zYWZlQ1NTKHN0eWxlKV07XG4gIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBsaXN0Q2hpbGRMb2NhbE5hbWVzID0gWydzYmItYnJlYWRjcnVtYiddO1xuXG4gIC8qKiBUaGUgc3RhdGUgb2YgdGhlIGJyZWFkY3J1bWIgZ3JvdXAuICovXG4gIEBzdGF0ZSgpXG4gIHByaXZhdGUgc2V0IF9zdGF0ZShzdGF0ZTogJ2NvbGxhcHNlZCcgfCAnbWFudWFsbHktZXhwYW5kZWQnIHwgbnVsbCkge1xuICAgIGlmICh0aGlzLl9zdGF0ZUludGVybmFsKSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKGBzdGF0ZS0ke3RoaXMuX3N0YXRlSW50ZXJuYWx9YCk7XG4gICAgfVxuICAgIHRoaXMuX3N0YXRlSW50ZXJuYWwgPSBzdGF0ZTtcbiAgICBpZiAodGhpcy5fc3RhdGVJbnRlcm5hbCkge1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmFkZChgc3RhdGUtJHt0aGlzLl9zdGF0ZUludGVybmFsfWApO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGdldCBfc3RhdGUoKTogJ2NvbGxhcHNlZCcgfCAnbWFudWFsbHktZXhwYW5kZWQnIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlSW50ZXJuYWw7XG4gIH1cbiAgcHJpdmF0ZSBfc3RhdGVJbnRlcm5hbDogJ2NvbGxhcHNlZCcgfCAnbWFudWFsbHktZXhwYW5kZWQnIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplQ29udHJvbGxlcih0aGlzLCB7XG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgIGNhbGxiYWNrOiAoKSA9PiB0aGlzLl9ldmFsdWF0ZUNvbGxhcHNlZFN0YXRlKCksXG4gIH0pO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX21hcmtGb3JGb2N1cyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdrZXlkb3duJywgKGUpID0+IHRoaXMuX2hhbmRsZUtleURvd24oZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlS2V5RG93bihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5saXN0Q2hpbGRyZW4ubGVuZ3RoIHx8XG4gICAgICAvLyBkb24ndCB0cmFwIG5lc3RlZCBoYW5kbGluZ1xuICAgICAgKChldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAhPT0gdGhpcyAmJiAoZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudCAhPT0gdGhpcylcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaXNBcnJvd0tleVByZXNzZWQoZXZ0KSkge1xuICAgICAgaWYgKHRoaXMuX3N0YXRlID09PSAnY29sbGFwc2VkJykge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9jdXNOZXh0Q29sbGFwc2VkKGV2dCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9mb2N1c05leHQoZXZ0KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMpO1xuICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQoJ2xvYWRlZCcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPFdpdGhMaXN0Q2hpbGRyZW48dGhpcz4+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdsaXN0Q2hpbGRyZW4nKSkge1xuICAgICAgdGhpcy5fc3luY0JyZWFkY3J1bWJzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPFdpdGhMaXN0Q2hpbGRyZW48dGhpcz4+KTogdm9pZCB7XG4gICAgc3VwZXIudXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbGlzdENoaWxkcmVuJykpIHtcbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gdGhpcy5fZXZhbHVhdGVDb2xsYXBzZWRTdGF0ZSgpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX21hcmtGb3JGb2N1cyAmJiBzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IubW9zdFJlY2VudE1vZGFsaXR5ID09PSAna2V5Ym9hcmQnKSB7XG4gICAgICB0aGlzLmxpc3RDaGlsZHJlblsxXT8uZm9jdXMoKTtcblxuICAgICAgLy8gUmVzZXQgbWFyayBmb3IgZm9jdXNcbiAgICAgIHRoaXMuX21hcmtGb3JGb2N1cyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBBcHBseSB0aGUgYXJpYS1jdXJyZW50IGF0dHJpYnV0ZSB0byB0aGUgbGFzdCBzYmItYnJlYWRjcnVtYiBlbGVtZW50LiAqL1xuICBwcml2YXRlIF9zeW5jQnJlYWRjcnVtYnMoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0Q2hpbGRyZW5cbiAgICAgIC5zbGljZSgwLCAtMSlcbiAgICAgIC5maWx0ZXIoKGMpID0+IGMuaGFzQXR0cmlidXRlKCdhY2Nlc3NpYmlsaXR5LWN1cnJlbnQnKSlcbiAgICAgIC5mb3JFYWNoKChjKSA9PiBjLnJlbW92ZUF0dHJpYnV0ZSgnYWNjZXNzaWJpbGl0eS1jdXJyZW50JykpO1xuICAgIHRoaXMubGlzdENoaWxkcmVuW3RoaXMubGlzdENoaWxkcmVuLmxlbmd0aCAtIDFdPy5zZXRBdHRyaWJ1dGUoJ2FjY2Vzc2liaWxpdHktY3VycmVudCcsICdwYWdlJyk7XG5cbiAgICAvLyBJZiBpdCBpcyBub3QgZXhwYW5kYWJsZSwgcmVzZXQgc3RhdGVcbiAgICBpZiAodGhpcy5saXN0Q2hpbGRyZW4ubGVuZ3RoIDwgTUlOX0JSRUFEQ1JVTUJTX1RPX0NPTExBUFNFKSB7XG4gICAgICB0aGlzLl9zdGF0ZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGZvY3VzIG9uIHRoZSBjb3JyZWN0IGVsZW1lbnQgd2hlbiB0aGUgZWxsaXBzaXMgYnJlYWRjcnVtYiBpcyBkaXNwbGF5ZWQgYW5kIHRoZSB1c2VyIGlzIG5hdmlnYXRpbmcgd2l0aCBrZXlib2FyZCdzIGFycm93cy5cbiAgICovXG4gIHByaXZhdGUgX2ZvY3VzTmV4dENvbGxhcHNlZChldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBhcnJheUNvbGxhcHNlZDogU2JiQnJlYWRjcnVtYkVsZW1lbnRbXSA9IFtcbiAgICAgIHRoaXMubGlzdENoaWxkcmVuWzBdLFxuICAgICAgdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCcjc2JiLWJyZWFkY3J1bWItZWxsaXBzaXMnKSBhcyBTYmJCcmVhZGNydW1iRWxlbWVudCxcbiAgICAgIHRoaXMubGlzdENoaWxkcmVuW3RoaXMubGlzdENoaWxkcmVuLmxlbmd0aCAtIDFdLFxuICAgIF07XG4gICAgdGhpcy5fZm9jdXNOZXh0KGV2dCwgYXJyYXlDb2xsYXBzZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZm9jdXNOZXh0KFxuICAgIGV2dDogS2V5Ym9hcmRFdmVudCxcbiAgICBicmVhZGNydW1iczogU2JiQnJlYWRjcnVtYkVsZW1lbnRbXSA9IHRoaXMubGlzdENoaWxkcmVuLFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50OiBudW1iZXIgPSBicmVhZGNydW1icy5maW5kSW5kZXgoXG4gICAgICAoZSkgPT4gZSA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCB8fCBlID09PSB0aGlzLnNoYWRvd1Jvb3QhLmFjdGl2ZUVsZW1lbnQsXG4gICAgKTtcbiAgICBjb25zdCBuZXh0SW5kZXg6IG51bWJlciA9IGdldE5leHRFbGVtZW50SW5kZXgoZXZ0LCBjdXJyZW50LCBicmVhZGNydW1icy5sZW5ndGgpO1xuICAgIGJyZWFkY3J1bWJzW25leHRJbmRleF0/LmZvY3VzKCk7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogTm90ZTogZHVlIHRvIEBTdGF0ZSBhbm5vdGF0aW9uIG9uIF9zdGF0ZSwgdGhpcyBtZXRob2QgdHJpZ2dlcnMgYSBuZXcgcmVuZGVyOyBhcyBhIGNvbnNlcXVlbmNlLCB0aGUgZm9jdXMgaXMgbW92ZWRcbiAgICogdG8gdGhlIGBib2R5YCwgc28gaWYgdGhlIGVsbGlwc2lzIGVsZW1lbnQgaGFzIGZvY3VzLCBpdCdzIGFzeW5jaHJvbm91c2x5IGZvcmNlZCB0byB0aGUgZmlyc3QgZWxlbWVudC5cbiAgICovXG4gIHByaXZhdGUgX2V4cGFuZEJyZWFkY3J1bWJzKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlID0gJ21hbnVhbGx5LWV4cGFuZGVkJztcbiAgICB0aGlzLl9tYXJrRm9yRm9jdXMgPSB0cnVlO1xuICB9XG5cbiAgLyoqIEV2YWx1YXRlIGlmIHRoZSBleHBhbmRlZCBicmVhZGNydW1iIGVsZW1lbnQgZml0cyBpbiBwYWdlIHdpZHRoLCBvdGhlcndpc2UgaXQgbmVlZHMgZWxsaXBzaXMgKi9cbiAgcHJpdmF0ZSBfZXZhbHVhdGVDb2xsYXBzZWRTdGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5fc3RhdGUgJiZcbiAgICAgIHRoaXMuc2Nyb2xsV2lkdGggPiB0aGlzLm9mZnNldFdpZHRoICYmXG4gICAgICB0aGlzLmxpc3RDaGlsZHJlbi5sZW5ndGggPj0gTUlOX0JSRUFEQ1JVTUJTX1RPX0NPTExBUFNFXG4gICAgKSB7XG4gICAgICB0aGlzLl9zdGF0ZSA9ICdjb2xsYXBzZWQnO1xuICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIuaG9zdERpc2Nvbm5lY3RlZCgpO1xuICAgICAgdGhpcy5yZW1vdmVDb250cm9sbGVyKHRoaXMuX3Jlc2l6ZU9ic2VydmVyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJDb2xsYXBzZWQoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGxpIGNsYXNzPVwic2JiLWJyZWFkY3J1bWItZ3JvdXBfX2l0ZW1cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cImxpLTBcIj48L3Nsb3Q+XG4gICAgICA8L2xpPlxuICAgICAgPGxpIGNsYXNzPVwic2JiLWJyZWFkY3J1bWItZ3JvdXBfX2l0ZW1cIiBpZD1cInNiYi1icmVhZGNydW1iLWdyb3VwLWVsbGlwc2lzXCI+XG4gICAgICAgIDxzYmItaWNvblxuICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLXNtYWxsLXJpZ2h0LXNtYWxsXCJcbiAgICAgICAgICBjbGFzcz1cInNiYi1icmVhZGNydW1iLWdyb3VwX19kaXZpZGVyLWljb25cIlxuICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGlkPVwic2JiLWJyZWFkY3J1bWItZWxsaXBzaXNcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9JHtpMThuQnJlYWRjcnVtYkVsbGlwc2lzQnV0dG9uTGFiZWxbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgICAgICBAY2xpY2s9JHsoKSA9PiB0aGlzLl9leHBhbmRCcmVhZGNydW1icygpfVxuICAgICAgICA+XG4gICAgICAgICAgLi4uXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSBjbGFzcz1cInNiYi1icmVhZGNydW1iLWdyb3VwX19pdGVtXCI+XG4gICAgICAgIDxzYmItaWNvblxuICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLXNtYWxsLXJpZ2h0LXNtYWxsXCJcbiAgICAgICAgICBjbGFzcz1cInNiYi1icmVhZGNydW1iLWdyb3VwX19kaXZpZGVyLWljb25cIlxuICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgPHNsb3QgbmFtZT0ke2BsaS0ke3RoaXMubGlzdENoaWxkcmVuLmxlbmd0aCAtIDF9YH0+PC9zbG90PlxuICAgICAgPC9saT5cbiAgICBgO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyRXhwYW5kZWQoKTogVGVtcGxhdGVSZXN1bHRbXSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdFNsb3RFbnRyaWVzKCkubWFwKFxuICAgICAgKHNsb3QsIGluZGV4LCBhcnJheSkgPT4gaHRtbGBcbiAgICAgICAgPGxpIGNsYXNzPVwic2JiLWJyZWFkY3J1bWItZ3JvdXBfX2l0ZW1cIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPSR7c2xvdC5uYW1lfT48L3Nsb3Q+XG4gICAgICAgICAgJHtpbmRleCAhPT0gYXJyYXkubGVuZ3RoIC0gMVxuICAgICAgICAgICAgPyBodG1sYDxzYmItaWNvblxuICAgICAgICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLXNtYWxsLXJpZ2h0LXNtYWxsXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi1icmVhZGNydW1iLWdyb3VwX19kaXZpZGVyLWljb25cIlxuICAgICAgICAgICAgICA+PC9zYmItaWNvbj5gXG4gICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgIDwvbGk+XG4gICAgICBgLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxvbCBjbGFzcz1cInNiYi1icmVhZGNydW1iLWdyb3VwXCI+XG4gICAgICAgICR7dGhpcy5fc3RhdGUgPT09ICdjb2xsYXBzZWQnID8gdGhpcy5fcmVuZGVyQ29sbGFwc2VkKCkgOiB0aGlzLl9yZW5kZXJFeHBhbmRlZCgpfVxuICAgICAgPC9vbD5cbiAgICAgICR7dGhpcy5yZW5kZXJIaWRkZW5TbG90KCl9XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWJyZWFkY3J1bWItZ3JvdXAnOiBTYmJCcmVhZGNydW1iR3JvdXBFbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQzJCQSxJQUFNLDhCQUE4Qjs7Ozs7O0lBT3ZCLG1DQUF5QjttQkFBUyxzQkFHN0MsV0FBVzs7O2NBSEEsa0NBQWtDLFlBR2xDOzs7NkJBT1YsT0FBTyxDQUFBO0FBQ1IsZ0JBQUEsTUFBQSxNQUFBLHdCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsWUFBQTtLQUFBLE1BQUEsS0FBQSxVQUFBO0FBQUEsVUFBWSxTQUFNOztLQUFBO0lBQUEsVUFBQTtJQUFBLEVBQUEsTUFBQSwyQkFBQTs7Ozs7Ozs7O0FBUGMsUUFBQSxjQUFzQjs7O0FBQ3RCLFFBQUEsT0FBTzs7O0FBQ2hCLFFBQUEsU0FB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