@sbb-esta/lyne-elements 4.11.0 → 4.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (541) hide show
  1. package/autocomplete/autocomplete-base-element.js +1 -1
  2. package/autocomplete/autocomplete.component.js +3 -2
  3. package/{autocomplete-base-element-DarHnnYC.js → autocomplete-base-element-De2O5Wx-.js} +14 -9
  4. package/autocomplete.js +1 -1
  5. package/autocomplete.pure.js +1 -1
  6. package/{block-link-common-DzGY49Xc.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-DjQOyRGl.js → calendar.component-C1jk_uE0.js} +3 -3
  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/controllers/overlay-position-controller.js +4 -1
  42. package/core/mixins/named-slot-list-mixin.js +4 -1
  43. package/core/styles/core.scss +62 -77
  44. package/core/styles/mixins/helpers.scss +3 -3
  45. package/core/styles/mixins/overlay.scss +2 -2
  46. package/core/styles/mixins/typo.scss +2 -2
  47. package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables-as-css.scss +8 -0
  48. package/core.css +177 -73
  49. package/custom-elements.json +327 -59
  50. package/development/autocomplete/autocomplete-base-element.d.ts +8 -1
  51. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  52. package/development/autocomplete/autocomplete-base-element.js +1 -1
  53. package/development/autocomplete/autocomplete.component.js +4 -3
  54. package/development/autocomplete-base-element-BpCpYcX9.js +692 -0
  55. package/development/autocomplete.js +1 -1
  56. package/development/autocomplete.pure.js +1 -1
  57. package/development/{block-link-common-GckvjULA.js → block-link-common-COY1RI1I.js} +2 -2
  58. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
  59. package/development/breadcrumb/breadcrumb-group.js +1 -1
  60. package/development/breadcrumb-group.component-DZslNBlB.js +195 -0
  61. package/development/breadcrumb.js +1 -1
  62. package/development/breadcrumb.pure.js +1 -1
  63. package/development/button/common/button-common.js +1 -1
  64. package/development/button/common.js +1 -1
  65. package/development/{button-common-CAu09Yim.js → button-common-7dmrUx4A.js} +3 -3
  66. package/development/button.js +1 -1
  67. package/development/button.pure.js +1 -1
  68. package/development/calendar/calendar/calendar.component.js +1 -1
  69. package/development/calendar/calendar.js +1 -1
  70. package/development/calendar-cell-base-element-BXohfDSl.js +1 -1
  71. package/development/calendar.component-Dg3D2A7k.js +1453 -0
  72. package/development/calendar.js +1 -1
  73. package/development/calendar.pure.js +1 -1
  74. package/development/card/card-badge/card-badge.component.js +1 -1
  75. package/development/card/card-badge.js +1 -1
  76. package/development/card-action-common-1FDHbfeR.js +1 -1
  77. package/development/card-badge.component-CUZIoVbL.js +84 -0
  78. package/development/card.js +1 -1
  79. package/development/card.pure.js +1 -1
  80. package/development/carousel-list.component-L-nYpHcN.js +1 -1
  81. package/development/carousel.component-Dl48ROSf.js +1 -1
  82. package/development/checkbox/checkbox.component.js +1 -1
  83. package/development/checkbox/checkbox.js +1 -1
  84. package/development/checkbox/common/checkbox-common.js +1 -1
  85. package/development/checkbox/common.js +1 -1
  86. package/development/checkbox-common-Dd5uup8K.js +86 -0
  87. package/development/checkbox-group/checkbox-group.component.js +1 -1
  88. package/development/{checkbox.component-D3_FFSys.js → checkbox.component-CFZrwUTA.js} +2 -2
  89. package/development/checkbox.js +2 -2
  90. package/development/checkbox.pure.js +2 -2
  91. package/development/chip/chip-group/chip-group.component.js +1 -1
  92. package/development/chip/chip-group.js +1 -1
  93. package/development/chip-group.component-BVfHWX2-.js +409 -0
  94. package/development/chip.js +1 -1
  95. package/development/chip.pure.js +1 -1
  96. package/development/clock.component-CVPv4mCp.js +1 -1
  97. package/development/compact-paginator.component-5_Q2Reul.js +51 -0
  98. package/development/core/a11y/input-modality-detector.js +1 -1
  99. package/development/core/base-elements/element.js +1 -1
  100. package/development/core/controllers/media-matchers-controller.js +1 -1
  101. package/development/core/controllers/overlay-position-controller.js +3 -2
  102. package/development/core/datetime/date-adapter.js +1 -1
  103. package/development/core/datetime/native-date-adapter.js +1 -1
  104. package/development/core/datetime/temporal-date-adapter.js +1 -1
  105. package/development/core/eventing/throttle.d.ts +1 -0
  106. package/development/core/eventing/throttle.d.ts.map +1 -1
  107. package/development/core/eventing/throttle.js +2 -1
  108. package/development/core/mixins/disabled-mixin.js +1 -1
  109. package/development/core/mixins/form-associated-checkbox-mixin.js +1 -1
  110. package/development/core/mixins/form-associated-input-mixin.js +1 -1
  111. package/development/core/mixins/form-associated-mixin.js +1 -1
  112. package/development/core/mixins/form-associated-radio-button-mixin.js +1 -1
  113. package/development/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  114. package/development/core/mixins/named-slot-list-mixin.js +5 -2
  115. package/development/core/mixins/negative-mixin.js +1 -1
  116. package/development/core/mixins/readonly-mixin.js +1 -1
  117. package/development/core/mixins/required-mixin.js +1 -1
  118. package/development/core/testing/event-spy.js +1 -1
  119. package/development/datepicker/common/datepicker-button.d.ts +6 -0
  120. package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
  121. package/development/datepicker/common/datepicker-button.js +1 -1
  122. package/development/datepicker/common.js +1 -1
  123. package/development/datepicker/datepicker/datepicker.component.d.ts +3 -0
  124. package/development/datepicker/datepicker/datepicker.component.d.ts.map +1 -1
  125. package/development/datepicker/datepicker/datepicker.component.js +1 -1
  126. package/development/datepicker/datepicker.js +1 -1
  127. package/development/datepicker-button-CUPeoQgH.js +169 -0
  128. package/development/datepicker.component-D2DxFng_.js +216 -0
  129. package/development/datepicker.js +2 -2
  130. package/development/datepicker.pure.js +2 -2
  131. package/development/error.component-OBpWoVRL.js +55 -0
  132. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +1 -1
  133. package/development/expansion-panel/expansion-panel-header.js +1 -1
  134. package/development/expansion-panel-header.component-BEAabEE0.js +85 -0
  135. package/development/expansion-panel.js +1 -1
  136. package/development/expansion-panel.pure.js +1 -1
  137. package/development/file-selector/common/file-selector-common.d.ts.map +1 -1
  138. package/development/file-selector/common/file-selector-common.js +1 -1
  139. package/development/file-selector/common.js +1 -1
  140. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.d.ts.map +1 -1
  141. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
  142. package/development/file-selector/file-selector-dropzone.js +1 -1
  143. package/development/file-selector-common-C7xIEiV4.js +416 -0
  144. package/development/file-selector-dropzone.component-BAWMZW4F.js +111 -0
  145. package/development/file-selector.js +2 -2
  146. package/development/file-selector.pure.js +2 -2
  147. package/development/footer/footer.component.js +1 -1
  148. package/development/footer.component-BmDkxYW9.js +172 -0
  149. package/development/footer.js +1 -1
  150. package/development/footer.pure.js +1 -1
  151. package/development/form-field/error/error.component.js +1 -1
  152. package/development/form-field/error.js +1 -1
  153. package/development/form-field/form-field/form-field.component.js +1 -1
  154. package/development/form-field/form-field-clear/form-field-clear.component.d.ts +3 -0
  155. package/development/form-field/form-field-clear/form-field-clear.component.d.ts.map +1 -1
  156. package/development/form-field/form-field-clear/form-field-clear.component.js +4 -1
  157. package/development/form-field/form-field.js +1 -1
  158. package/development/form-field/hint/hint.component.js +1 -1
  159. package/development/form-field.component-BU3Sv2mD.js +707 -0
  160. package/development/form-field.js +3 -3
  161. package/development/form-field.pure.js +3 -3
  162. package/development/header/header/header.component.js +1 -1
  163. package/development/header/header.js +1 -1
  164. package/development/header-action-common-MTYV0dqA.js +1 -1
  165. package/development/header.component-CWJ36jF0.js +340 -0
  166. package/development/header.js +1 -1
  167. package/development/header.pure.js +1 -1
  168. package/development/hint.component-DUtL0RS3.js +38 -0
  169. package/development/icon/icon-name-mixin.js +1 -1
  170. package/development/image.component-BD0jc-u-.js +1 -1
  171. package/development/link/common/block-link-common.js +1 -1
  172. package/development/link/common.js +1 -1
  173. package/development/link-common-DJ2FfG_Q.js +1 -1
  174. package/development/link-list-base-CKMNz30d.js +1 -1
  175. package/development/link.js +1 -1
  176. package/development/link.pure.js +1 -1
  177. package/development/message/message.component.js +1 -1
  178. package/development/message.component-Dlf5V5ba.js +44 -0
  179. package/development/message.js +1 -1
  180. package/development/message.pure.js +1 -1
  181. package/development/mini-calendar.component-BufzKw74.js +1 -1
  182. package/development/navigation/common/navigation-action-common.js +1 -1
  183. package/development/navigation/common.js +1 -1
  184. package/development/navigation/navigation-marker/navigation-marker.component.js +1 -1
  185. package/development/navigation/navigation-marker.js +1 -1
  186. package/development/navigation/navigation-section/navigation-section.component.js +1 -1
  187. package/development/navigation/navigation-section.js +1 -1
  188. package/development/{navigation-action-common-DpBp7-eZ.js → navigation-action-common-Hjr4dI9J.js} +2 -2
  189. package/development/{navigation-marker.component-BpZdT4xz.js → navigation-marker.component-GOv42emC.js} +2 -2
  190. package/development/{navigation-section.component-CtZtuacK.js → navigation-section.component-CnVrRETN.js} +2 -2
  191. package/development/navigation.component-CTNQ1dix.js +1 -1
  192. package/development/navigation.js +3 -3
  193. package/development/navigation.pure.js +3 -3
  194. package/development/notification/notification.component.js +1 -1
  195. package/development/notification.component-Cvq_uViC.js +274 -0
  196. package/development/notification.js +1 -1
  197. package/development/notification.pure.js +1 -1
  198. package/development/option/option/option-base-element.d.ts.map +1 -1
  199. package/development/option/option/option-base-element.js +3 -1
  200. package/development/option/option/option.component.js +1 -1
  201. package/development/option/option.js +1 -1
  202. package/development/option.component-CRVr0PfV.js +130 -0
  203. package/development/option.js +1 -1
  204. package/development/option.pure.js +1 -1
  205. package/development/paginator/common/paginator-common.js +1 -1
  206. package/development/paginator/compact-paginator/compact-paginator.component.js +1 -1
  207. package/development/paginator/compact-paginator.js +1 -1
  208. package/development/paginator/paginator/paginator.component.js +1 -1
  209. package/development/paginator/paginator.js +1 -1
  210. package/development/paginator.component-Bn5tK0FK.js +259 -0
  211. package/development/paginator.js +2 -2
  212. package/development/paginator.pure.js +2 -2
  213. package/development/panel-mixin-Dj_rsgL9.js +1 -1
  214. package/development/popover/popover.component.d.ts +1 -0
  215. package/development/popover/popover.component.d.ts.map +1 -1
  216. package/development/popover/popover.component.js +1 -1
  217. package/development/popover.component-rZb6B9uW.js +546 -0
  218. package/development/popover.js +1 -1
  219. package/development/popover.pure.js +1 -1
  220. package/development/radio-button/common/radio-button-common.js +1 -1
  221. package/development/radio-button/common.js +1 -1
  222. package/development/radio-button/radio-button.component.js +1 -1
  223. package/development/radio-button/radio-button.js +1 -1
  224. package/development/radio-button-common--d3WX-ZM.js +126 -0
  225. package/development/radio-button-panel/radio-button-panel.component.js +1 -1
  226. package/development/{radio-button.component-BrQF2FfA.js → radio-button.component-BauLEeCV.js} +2 -2
  227. package/development/radio-button.js +2 -2
  228. package/development/radio-button.pure.js +2 -2
  229. package/development/select/select.component.d.ts.map +1 -1
  230. package/development/select/select.component.js +1 -1
  231. package/development/select.component-D9SFG7Lk.js +814 -0
  232. package/development/select.js +1 -1
  233. package/development/select.pure.js +1 -1
  234. package/development/sidebar-container.component-BDSoDAym.js +1 -1
  235. package/development/sidebar.component-BLqO52nH.js +1 -1
  236. package/development/slider/slider.component.js +1 -1
  237. package/development/{slider.component-BjfLnUvP.js → slider.component-C3qZB6ar.js} +2 -2
  238. package/development/slider.js +1 -1
  239. package/development/slider.pure.js +1 -1
  240. package/development/status/status.component.js +1 -1
  241. package/development/status.component-CPi1cPN0.js +111 -0
  242. package/development/status.js +1 -1
  243. package/development/status.pure.js +1 -1
  244. package/development/step-label.component-BJ9eainz.js +131 -0
  245. package/development/stepper/step-label/step-label.component.js +1 -1
  246. package/development/stepper/step-label.js +1 -1
  247. package/development/stepper.component-CxOBayI1.js +1 -1
  248. package/development/stepper.js +1 -1
  249. package/development/stepper.pure.js +1 -1
  250. package/development/sticky-bar.component-Dzrdsnxu.js +1 -1
  251. package/development/styles-D8-q-irv.js +1 -1
  252. package/development/styles-Jlhoev1S.js +14 -0
  253. package/development/tab-group.component-DldBA45K.js +275 -0
  254. package/development/{tab-label.component-14j2eh4Z.js → tab-label.component-B9e9kgVf.js} +2 -2
  255. package/development/tabs/common/styles.js +1 -1
  256. package/development/tabs/common.js +1 -1
  257. package/development/tabs/tab-group/tab-group.component.d.ts +1 -0
  258. package/development/tabs/tab-group/tab-group.component.d.ts.map +1 -1
  259. package/development/tabs/tab-group/tab-group.component.js +1 -1
  260. package/development/tabs/tab-group.js +1 -1
  261. package/development/tabs/tab-label/tab-label.component.js +1 -1
  262. package/development/tabs/tab-label.js +1 -1
  263. package/development/tabs.js +3 -3
  264. package/development/tabs.pure.js +3 -3
  265. package/development/tag/tag/tag.component.js +1 -1
  266. package/development/tag/tag.js +1 -1
  267. package/development/tag.component-Bl1nlIXQ.js +245 -0
  268. package/development/tag.js +1 -1
  269. package/development/tag.pure.js +1 -1
  270. package/development/teaser-hero/teaser-hero.component.js +1 -1
  271. package/development/{teaser-hero.component-DNlc8Tbl.js → teaser-hero.component-BIOpoGME.js} +2 -2
  272. package/development/teaser-hero.js +1 -1
  273. package/development/teaser-hero.pure.js +1 -1
  274. package/development/teaser-product-common-DYX370pm.js +1 -1
  275. package/development/time-input.component-BtdSR8kB.js +1 -1
  276. package/development/timetable-form/timetable-form/timetable-form.component.js +1 -1
  277. package/development/timetable-form/timetable-form-details/timetable-form-details.component.js +1 -1
  278. package/development/timetable-form/timetable-form-details.js +1 -1
  279. package/development/timetable-form/timetable-form-field/timetable-form-field.component.js +1 -1
  280. package/development/timetable-form/timetable-form-field.js +1 -1
  281. package/development/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.d.ts +3 -0
  282. package/development/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.d.ts.map +1 -1
  283. package/development/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.js +1 -1
  284. package/development/timetable-form/timetable-form-swap-button.js +1 -1
  285. package/development/timetable-form/timetable-form.js +1 -1
  286. package/development/timetable-form-details.component-DJl5Qt9y.js +26 -0
  287. package/development/timetable-form-field.component-DQ_TzcF4.js +44 -0
  288. package/development/{timetable-form-swap-button.component-BUKUjrpl.js → timetable-form-swap-button.component-Bh9aPmdn.js} +4 -1
  289. package/development/timetable-form.component-N8h4JBlH.js +27 -0
  290. package/development/timetable-form.js +4 -4
  291. package/development/timetable-form.pure.js +4 -4
  292. package/development/timetable-occupancy/timetable-occupancy.component.js +1 -1
  293. package/development/timetable-occupancy.component-BBcznUh0.js +124 -0
  294. package/development/timetable-occupancy.js +1 -1
  295. package/development/timetable-occupancy.pure.js +1 -1
  296. package/development/title/title-base.js +1 -1
  297. package/development/title/title.component.js +1 -1
  298. package/development/{title-base-CBE_2Hkb.js → title-base-BdYKwj3-.js} +2 -2
  299. package/development/{title.component-Dk23JVct.js → title.component-DSXVkddh.js} +2 -2
  300. package/development/title.js +2 -2
  301. package/development/title.pure.js +2 -2
  302. package/development/toast/toast.component.js +1 -1
  303. package/development/toast.component-IhHx0Qt3.js +275 -0
  304. package/development/toast.js +1 -1
  305. package/development/toast.pure.js +1 -1
  306. package/development/toggle/toggle/toggle.component.d.ts.map +1 -1
  307. package/development/toggle/toggle/toggle.component.js +1 -1
  308. package/development/toggle/toggle-option/toggle-option.component.d.ts +1 -0
  309. package/development/toggle/toggle-option/toggle-option.component.d.ts.map +1 -1
  310. package/development/toggle/toggle-option/toggle-option.component.js +1 -1
  311. package/development/toggle/toggle-option.js +1 -1
  312. package/development/toggle/toggle.js +1 -1
  313. package/development/toggle-check/toggle-check.component.js +1 -1
  314. package/development/toggle-check.component-_fDAuLob.js +159 -0
  315. package/development/toggle-check.js +1 -1
  316. package/development/toggle-check.pure.js +1 -1
  317. package/development/toggle-option.component-DTS3a603.js +167 -0
  318. package/development/toggle.component-BJpD1b9H.js +249 -0
  319. package/development/toggle.js +2 -2
  320. package/development/toggle.pure.js +2 -2
  321. package/development/tooltip/tooltip.component.js +1 -1
  322. package/development/tooltip.component-YaUQA-Id.js +378 -0
  323. package/development/tooltip.js +1 -1
  324. package/development/tooltip.pure.js +1 -1
  325. package/development/train/train-wagon/train-wagon.component.js +1 -1
  326. package/development/train/train-wagon.js +1 -1
  327. package/development/{train-wagon.component-BzA8-S_6.js → train-wagon.component-CNxkffOO.js} +2 -2
  328. package/development/train.js +1 -1
  329. package/development/train.pure.js +1 -1
  330. package/{error.component-B_D8WUP5.js → error.component-DH9Obd7a.js} +1 -1
  331. package/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +1 -1
  332. package/expansion-panel/expansion-panel-header.js +1 -1
  333. package/{expansion-panel-header.component-B_dQ3ZWT.js → expansion-panel-header.component-FPoEEoZR.js} +1 -1
  334. package/expansion-panel.js +1 -1
  335. package/expansion-panel.pure.js +1 -1
  336. package/file-selector/common/file-selector-common.js +1 -1
  337. package/file-selector/common.js +1 -1
  338. package/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
  339. package/file-selector/file-selector-dropzone.js +1 -1
  340. package/{file-selector-common-DN4vHMpP.js → file-selector-common-BL9mM4SZ.js} +38 -40
  341. package/{file-selector-dropzone.component-CBKsZsC2.js → file-selector-dropzone.component-Ctar2kEw.js} +3 -4
  342. package/file-selector.js +2 -2
  343. package/file-selector.pure.js +2 -2
  344. package/footer/footer.component.js +1 -1
  345. package/{footer.component-BM91Utiz.js → footer.component-b2docCY_.js} +1 -1
  346. package/footer.js +1 -1
  347. package/footer.pure.js +1 -1
  348. package/form-field/error/error.component.js +1 -1
  349. package/form-field/error.js +1 -1
  350. package/form-field/form-field/form-field.component.js +1 -1
  351. package/form-field/form-field.js +1 -1
  352. package/form-field/hint/hint.component.js +1 -1
  353. package/{form-field.component-Cx5Keg_p.js → form-field.component-BwZDRKbQ.js} +3 -2
  354. package/form-field.js +3 -3
  355. package/form-field.pure.js +3 -3
  356. package/header/header/header.component.js +1 -1
  357. package/header/header.js +1 -1
  358. package/{header.component-hZqs06Yh.js → header.component-UQUFcMOD.js} +1 -1
  359. package/header.js +1 -1
  360. package/header.pure.js +1 -1
  361. package/{hint.component-BVUUrSSu.js → hint.component-CE2D2TLU.js} +1 -1
  362. package/link/common/block-link-common.js +1 -1
  363. package/link/common.js +1 -1
  364. package/link.js +1 -1
  365. package/link.pure.js +1 -1
  366. package/message/message.component.js +1 -1
  367. package/message.component-DhN-aFms.js +27 -0
  368. package/message.js +1 -1
  369. package/message.pure.js +1 -1
  370. package/navigation/common/navigation-action-common.js +1 -1
  371. package/navigation/common.js +1 -1
  372. package/navigation/navigation-marker/navigation-marker.component.js +1 -1
  373. package/navigation/navigation-marker.js +1 -1
  374. package/navigation/navigation-section/navigation-section.component.js +1 -1
  375. package/navigation/navigation-section.js +1 -1
  376. package/{navigation-action-common-2ix0xrBs.js → navigation-action-common-AzRltwrb.js} +1 -1
  377. package/{navigation-marker.component-DKxK16IU.js → navigation-marker.component-BzbbKlfT.js} +1 -1
  378. package/{navigation-section.component-CvjXVn5r.js → navigation-section.component-DQxCi3O_.js} +1 -1
  379. package/navigation.js +3 -3
  380. package/navigation.pure.js +3 -3
  381. package/notification/notification.component.js +1 -1
  382. package/{notification.component-DjXJFh1G.js → notification.component-D80Wl5xM.js} +1 -1
  383. package/notification.js +1 -1
  384. package/notification.pure.js +1 -1
  385. package/off-brand-theme.css +177 -73
  386. package/option/option/option-base-element.js +1 -1
  387. package/option/option/option.component.js +1 -1
  388. package/option/option.js +1 -1
  389. package/{option.component-M-V_tdSC.js → option.component-2Xf1hz7y.js} +1 -1
  390. package/option.js +1 -1
  391. package/option.pure.js +1 -1
  392. package/package.json +1 -1
  393. package/paginator/compact-paginator/compact-paginator.component.js +1 -1
  394. package/paginator/compact-paginator.js +1 -1
  395. package/paginator/paginator/paginator.component.js +1 -1
  396. package/paginator/paginator.js +1 -1
  397. package/{paginator.component-CZt7Epaf.js → paginator.component-BEr0qU0m.js} +1 -1
  398. package/paginator.js +2 -2
  399. package/paginator.pure.js +2 -2
  400. package/popover/popover.component.js +1 -1
  401. package/{popover.component-DWNuW4wM.js → popover.component-DAgwBcBW.js} +32 -28
  402. package/popover.js +1 -1
  403. package/popover.pure.js +1 -1
  404. package/radio-button/common/radio-button-common.js +1 -1
  405. package/radio-button/common.js +1 -1
  406. package/radio-button/radio-button.component.js +1 -1
  407. package/radio-button/radio-button.js +1 -1
  408. package/{radio-button-common-DP4Izwwf.js → radio-button-common-C1mIf9KY.js} +1 -1
  409. package/{radio-button.component-BiGeOI5L.js → radio-button.component-Bae-yK_U.js} +1 -1
  410. package/radio-button.js +2 -2
  411. package/radio-button.pure.js +2 -2
  412. package/safety-theme.css +177 -73
  413. package/select/select.component.js +1 -1
  414. package/{select.component-DWLdApt_.js → select.component-BT6RbERH.js} +3 -3
  415. package/select.js +1 -1
  416. package/select.pure.js +1 -1
  417. package/slider/slider.component.js +1 -1
  418. package/{slider.component-CoqCppCq.js → slider.component-BlRVR6iU.js} +1 -1
  419. package/slider.js +1 -1
  420. package/slider.pure.js +1 -1
  421. package/standard-theme.css +177 -73
  422. package/status/status.component.js +1 -1
  423. package/{status.component-BFyXTFXH.js → status.component-lw_WDs7W.js} +1 -1
  424. package/status.js +1 -1
  425. package/status.pure.js +1 -1
  426. package/step-label.component-Dqis4FAN.js +80 -0
  427. package/stepper/step-label/step-label.component.js +1 -1
  428. package/stepper/step-label.js +1 -1
  429. package/stepper.js +1 -1
  430. package/stepper.pure.js +1 -1
  431. package/styles-BNu0Fjw5.js +5 -0
  432. package/{tab-group.component-Doy39cEh.js → tab-group.component-CHQlrhUy.js} +36 -33
  433. package/{tab-label.component-CD56RH1Z.js → tab-label.component-CpdUyfiq.js} +1 -1
  434. package/tabs/common/styles.js +1 -1
  435. package/tabs/common.js +1 -1
  436. package/tabs/tab-group/tab-group.component.js +1 -1
  437. package/tabs/tab-group.js +1 -1
  438. package/tabs/tab-label/tab-label.component.js +1 -1
  439. package/tabs/tab-label.js +1 -1
  440. package/tabs.js +3 -3
  441. package/tabs.pure.js +3 -3
  442. package/tag/tag/tag.component.js +1 -1
  443. package/tag/tag.js +1 -1
  444. package/{tag.component-CzYJZuFT.js → tag.component-CsNszQvB.js} +1 -1
  445. package/tag.js +1 -1
  446. package/tag.pure.js +1 -1
  447. package/teaser-hero/teaser-hero.component.js +1 -1
  448. package/{teaser-hero.component-CHy82SKQ.js → teaser-hero.component-D8yj-N5n.js} +1 -1
  449. package/teaser-hero.js +1 -1
  450. package/teaser-hero.pure.js +1 -1
  451. package/timetable-form/timetable-form/timetable-form.component.js +1 -1
  452. package/timetable-form/timetable-form-details/timetable-form-details.component.js +1 -1
  453. package/timetable-form/timetable-form-details.js +1 -1
  454. package/timetable-form/timetable-form-field/timetable-form-field.component.js +1 -1
  455. package/timetable-form/timetable-form-field.js +1 -1
  456. package/timetable-form/timetable-form.js +1 -1
  457. package/timetable-form-details.component-mWKaBW_9.js +16 -0
  458. package/timetable-form-field.component-Cv_lv8vf.js +32 -0
  459. package/{timetable-form.component-CU1FXAZH.js → timetable-form.component-YcvKAlfz.js} +1 -1
  460. package/timetable-form.js +3 -3
  461. package/timetable-form.pure.js +3 -3
  462. package/timetable-occupancy/timetable-occupancy.component.js +1 -1
  463. package/{timetable-occupancy.component-Db9SfiyD.js → timetable-occupancy.component-BCXPxz68.js} +1 -1
  464. package/timetable-occupancy.js +1 -1
  465. package/timetable-occupancy.pure.js +1 -1
  466. package/title/title-base.js +1 -1
  467. package/title/title.component.js +1 -1
  468. package/{title-base-D72Xo2SW.js → title-base-DV0qhfG9.js} +1 -1
  469. package/{title.component-CoMa84Sz.js → title.component-DAGyXwDm.js} +1 -1
  470. package/title.js +2 -2
  471. package/title.pure.js +2 -2
  472. package/toast/toast.component.js +1 -1
  473. package/{toast.component-BDE1vYLS.js → toast.component-CORnf2Tl.js} +3 -3
  474. package/toast.js +1 -1
  475. package/toast.pure.js +1 -1
  476. package/toggle/toggle/toggle.component.js +1 -1
  477. package/toggle/toggle-option/toggle-option.component.js +1 -1
  478. package/toggle/toggle-option.js +1 -1
  479. package/toggle/toggle.js +1 -1
  480. package/toggle-check/toggle-check.component.js +1 -1
  481. package/toggle-check.component-DvoslSRr.js +119 -0
  482. package/toggle-check.js +1 -1
  483. package/toggle-check.pure.js +1 -1
  484. package/{toggle-option.component-Bw-GXUQK.js → toggle-option.component-pX3tNwjE.js} +5 -7
  485. package/{toggle.component-BPpsMMPG.js → toggle.component-B20xAw1V.js} +6 -10
  486. package/toggle.js +2 -2
  487. package/toggle.pure.js +2 -2
  488. package/tooltip/tooltip.component.js +1 -1
  489. package/{tooltip.component-BY9mV5Sw.js → tooltip.component-ocVpJogs.js} +1 -1
  490. package/tooltip.js +1 -1
  491. package/tooltip.pure.js +1 -1
  492. package/train/train-wagon/train-wagon.component.js +1 -1
  493. package/train/train-wagon.js +1 -1
  494. package/{train-wagon.component-BwCcF4GD.js → train-wagon.component-BT4Xnzxr.js} +1 -1
  495. package/train.js +1 -1
  496. package/train.pure.js +1 -1
  497. package/button-common-yFVzAoGy.js +0 -87
  498. package/development/autocomplete-base-element-YwfObJzm.js +0 -678
  499. package/development/breadcrumb-group.component-HBWRdDpS.js +0 -195
  500. package/development/calendar.component-6p9vsp-V.js +0 -1452
  501. package/development/card-badge.component-D4Mes-Gw.js +0 -84
  502. package/development/checkbox-common-DiTlHvFJ.js +0 -86
  503. package/development/chip-group.component-CvpUdzu1.js +0 -409
  504. package/development/compact-paginator.component-TfDVt_ST.js +0 -51
  505. package/development/datepicker-button-CANzGO5m.js +0 -163
  506. package/development/datepicker.component-C8XQVo45.js +0 -213
  507. package/development/error.component-xD_c9IBA.js +0 -55
  508. package/development/expansion-panel-header.component-Bw4uROTe.js +0 -85
  509. package/development/file-selector-common-C82QR3zb.js +0 -418
  510. package/development/file-selector-dropzone.component-B-cBO4bf.js +0 -112
  511. package/development/footer.component-BblB5218.js +0 -172
  512. package/development/form-field.component-DfMO_ihX.js +0 -706
  513. package/development/header.component-Cg0ZcA1s.js +0 -340
  514. package/development/hint.component-BsIzdUOV.js +0 -38
  515. package/development/message.component-CeJhYXSC.js +0 -44
  516. package/development/notification.component-Co9QChXc.js +0 -274
  517. package/development/option.component-CdL7fdzZ.js +0 -130
  518. package/development/paginator.component-DAdS2mMm.js +0 -259
  519. package/development/popover.component-BCMdJBUR.js +0 -537
  520. package/development/radio-button-common-C3-xuY78.js +0 -126
  521. package/development/select.component-CGNEhqzl.js +0 -812
  522. package/development/status.component-CHC2pBa-.js +0 -111
  523. package/development/step-label.component-CJFPHIZa.js +0 -131
  524. package/development/styles-DCQBzC2C.js +0 -14
  525. package/development/tab-group.component-DRipdAyc.js +0 -272
  526. package/development/tag.component-CnNPL6aI.js +0 -245
  527. package/development/timetable-form-details.component-C8awcdP5.js +0 -26
  528. package/development/timetable-form-field.component-BI24VjkC.js +0 -44
  529. package/development/timetable-form.component-CUG86CSN.js +0 -27
  530. package/development/timetable-occupancy.component-D_PXXvI9.js +0 -124
  531. package/development/toast.component-BnbpuU9L.js +0 -274
  532. package/development/toggle-check.component-BG4w_sE8.js +0 -159
  533. package/development/toggle-option.component-D-F7Fh7i.js +0 -168
  534. package/development/toggle.component-BFYLRN8o.js +0 -254
  535. package/development/tooltip.component-DzSd9VjW.js +0 -378
  536. package/message.component-BQjnZ5Z3.js +0 -27
  537. package/step-label.component-DnQBwnL8.js +0 -80
  538. package/styles-BUpK1iP2.js +0 -5
  539. package/timetable-form-details.component-CBZ7QSAx.js +0 -16
  540. package/timetable-form-field.component-BKxQQqt7.js +0 -32
  541. package/toggle-check.component-B6Ww5pLD.js +0 -119
@@ -1,409 +0,0 @@
1
- import { __esDecorate, __runInitializers } from "tslib";
2
- import { html, isServer, unsafeCSS } from "lit";
3
- import { property } from "lit/decorators.js";
4
- import { SbbElement } from "./core/base-elements.js";
5
- import { forceType } from "./core/decorators.js";
6
- import { SbbDisabledMixin, SbbFormAssociatedMixin, SbbNegativeMixin, SbbRequiredMixin } from "./core/mixins.js";
7
- import { boxSizingStyles } from "./core/styles.js";
8
- import { SbbLanguageController, SbbPropertyWatcherController } from "./core/controllers.js";
9
- import { i18nChipGroupInputDescription, i18nSelectionRequired } from "./core/i18n.js";
10
- import { getNextElementIndex, isArrowKeyPressed } from "./core/a11y.js";
11
- import { isLean } from "./core/dom/lean-context.js";
12
- import { SbbChipElement } from "./chip/chip/chip.component.js";
13
- //#region src/elements/chip/chip-group/chip-group.scss?inline
14
- var chip_group_default = ":host {\n width: 100%;\n display: flex;\n flex-wrap: wrap;\n gap: var(--sbb-chip-group-gap);\n align-items: center;\n margin-block: var(--sbb-chip-group-margin-block);\n}\n\n:host(:is(:is(:state(size-s),[state--size-s]), :is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: 0;\n}\n\n:host(:is(:state(size-s),[state--size-s]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: 0.375rem 0.3125rem;\n}\n@media (min-width: calc(64rem)) {\n :host(:is(:state(size-s),[state--size-s]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: 0.3125rem 0.1875rem;\n }\n}\n\n:host(:is(:state(without-label),[state--without-label]):is(:state(size-s),[state--size-s]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: 0 0.4375rem;\n}\n@media (min-width: calc(64rem)) {\n :host(:is(:state(without-label),[state--without-label]):is(:state(size-s),[state--size-s]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: 0 0.3125rem;\n }\n}\n\n:host(:is(:is(:state(size-l),[state--size-l]), :is(:state(size-m),[state--size-m]))) {\n --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default) 0;\n}\n@media (min-width: calc(64rem)) {\n :host(:is(:is(:state(size-l),[state--size-l]), :is(:state(size-m),[state--size-m]))) {\n --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default-large) 0;\n }\n}\n\n:host(:is(:state(without-label),[state--without-label]):is(:state(size-m),[state--size-m]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: 0.1875rem 0.6875rem;\n}\n@media (min-width: calc(64rem)) {\n :host(:is(:state(without-label),[state--without-label]):is(:state(size-m),[state--size-m]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: 0.1875rem 0.875rem;\n }\n}\n\n:host(:is(:state(without-label),[state--without-label]):not(:is(:state(empty),[state--empty]), :is(:state(size-s),[state--size-s]), :is(:state(size-m),[state--size-m]), :is(:state(size-l),[state--size-l]))) {\n --sbb-chip-group-margin-block: var(--sbb-chip-group-margin-block-no-label-not-empty);\n}\n\n:host(:not(:is(:state(without-label),[state--without-label])):is(:state(size-m),[state--size-m]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default)\n var(--_sbb-chip-group-margin-block-start-default-large);\n}\n@media (min-width: calc(64rem)) {\n :host(:not(:is(:state(without-label),[state--without-label])):is(:state(size-m),[state--size-m]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default-large)\n var(--_sbb-chip-group-margin-block-start-default-large);\n }\n}\n\n:host(:not(:is(:state(without-label),[state--without-label]), :is(:state(empty),[state--empty]), :is(:state(size-s),[state--size-s]), :is(:state(size-m),[state--size-m]), :is(:state(size-l),[state--size-l]))) {\n --sbb-chip-group-margin-block: var(--sbb-chip-group-margin-block-with-label-not-empty);\n}\n\n:host(:is(:state(without-label),[state--without-label]):is(:state(size-l),[state--size-l]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default)\n 1rem;\n}\n@media (min-width: calc(64rem)) {\n :host(:is(:state(without-label),[state--without-label]):is(:state(size-l),[state--size-l]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default-large)\n 1.25rem;\n }\n}\n\n:host(:not(:is(:state(without-label),[state--without-label])):is(:state(size-l),[state--size-l]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default)\n 0.46875rem;\n}\n@media (min-width: calc(64rem)) {\n :host(:not(:is(:state(without-label),[state--without-label])):is(:state(size-l),[state--size-l]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default-large)\n 0.46875rem;\n }\n}\n\n::slotted(input) {\n flex: 1 1 var(--sbb-chip-group-input-min-width);\n max-height: 1.5rem;\n}\n\n::slotted(sbb-chip) {\n max-width: 100%;\n}";
15
- //#endregion
16
- //#region src/elements/chip/chip-group/chip-group.component.ts
17
- var SbbChipInputTokenEndEvent = class extends CustomEvent {
18
- /**
19
- * @deprecated Use event properties directly.
20
- */
21
- get detail() {
22
- return this;
23
- }
24
- constructor(options) {
25
- super("chipinputtokenend", {
26
- cancelable: true,
27
- bubbles: true,
28
- composed: true
29
- });
30
- this.origin = options.origin;
31
- this.value = options.value;
32
- this.label = options.label;
33
- }
34
- /** Set a new value for the chip that will be created */
35
- setValue(value) {
36
- this.value = value;
37
- }
38
- /** Set a label for the chip that will be created */
39
- setLabel(label) {
40
- this.label = label;
41
- }
42
- };
43
- /**
44
- * The `sbb-chip-group` component is used as a container for one or multiple `sbb-chip`.
45
- *
46
- * @slot - Use the unnamed slot to add `sbb-chip` elements.
47
- * @event {SbbChipInputTokenEndEvent<T>} chipinputtokenend - Notifies that a chip is about to be created. Can be prevented.
48
- * @overrideType value - (T = string[]) | null
49
- */
50
- var SbbChipGroupElement = (() => {
51
- let _classSuper = SbbRequiredMixin(SbbDisabledMixin(SbbNegativeMixin(SbbFormAssociatedMixin(SbbElement))));
52
- let _instanceExtraInitializers = [];
53
- let _set_value_decorators;
54
- let _displayWith_decorators;
55
- let _displayWith_initializers = [];
56
- let _displayWith_extraInitializers = [];
57
- let _separatorKeys_decorators;
58
- let _separatorKeys_initializers = [];
59
- let _separatorKeys_extraInitializers = [];
60
- let _addOnBlur_decorators;
61
- let _addOnBlur_initializers = [];
62
- let _addOnBlur_extraInitializers = [];
63
- return class SbbChipGroupElement extends _classSuper {
64
- static {
65
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
66
- _set_value_decorators = [property({ type: Array })];
67
- _displayWith_decorators = [property({ attribute: false })];
68
- _separatorKeys_decorators = [property({
69
- attribute: "separator-keys",
70
- type: Array
71
- })];
72
- _addOnBlur_decorators = [forceType(), property({
73
- attribute: "add-on-blur",
74
- type: Boolean
75
- })];
76
- __esDecorate(this, null, _set_value_decorators, {
77
- kind: "setter",
78
- name: "value",
79
- static: false,
80
- private: false,
81
- access: {
82
- has: (obj) => "value" in obj,
83
- set: (obj, value) => {
84
- obj.value = value;
85
- }
86
- },
87
- metadata: _metadata
88
- }, null, _instanceExtraInitializers);
89
- __esDecorate(this, null, _displayWith_decorators, {
90
- kind: "accessor",
91
- name: "displayWith",
92
- static: false,
93
- private: false,
94
- access: {
95
- has: (obj) => "displayWith" in obj,
96
- get: (obj) => obj.displayWith,
97
- set: (obj, value) => {
98
- obj.displayWith = value;
99
- }
100
- },
101
- metadata: _metadata
102
- }, _displayWith_initializers, _displayWith_extraInitializers);
103
- __esDecorate(this, null, _separatorKeys_decorators, {
104
- kind: "accessor",
105
- name: "separatorKeys",
106
- static: false,
107
- private: false,
108
- access: {
109
- has: (obj) => "separatorKeys" in obj,
110
- get: (obj) => obj.separatorKeys,
111
- set: (obj, value) => {
112
- obj.separatorKeys = value;
113
- }
114
- },
115
- metadata: _metadata
116
- }, _separatorKeys_initializers, _separatorKeys_extraInitializers);
117
- __esDecorate(this, null, _addOnBlur_decorators, {
118
- kind: "accessor",
119
- name: "addOnBlur",
120
- static: false,
121
- private: false,
122
- access: {
123
- has: (obj) => "addOnBlur" in obj,
124
- get: (obj) => obj.addOnBlur,
125
- set: (obj, value) => {
126
- obj.addOnBlur = value;
127
- }
128
- },
129
- metadata: _metadata
130
- }, _addOnBlur_initializers, _addOnBlur_extraInitializers);
131
- if (_metadata) Object.defineProperty(this, Symbol.metadata, {
132
- enumerable: true,
133
- configurable: true,
134
- writable: true,
135
- value: _metadata
136
- });
137
- }
138
- static {
139
- this.elementName = "sbb-chip-group";
140
- }
141
- static {
142
- this.role = "listbox";
143
- }
144
- static {
145
- this.styles = [boxSizingStyles, unsafeCSS(chip_group_default)];
146
- }
147
- static {
148
- this.events = {
149
- input: "input",
150
- change: "change",
151
- chipinputtokenend: "chipinputtokenend"
152
- };
153
- }
154
- /** Value of the form element. */
155
- set value(value) {
156
- value = value ?? [];
157
- const oldValue = this.value;
158
- const toRemove = [...oldValue];
159
- for (const c of value) if (toRemove.includes(c)) toRemove.splice(toRemove.indexOf(c), 1);
160
- toRemove.forEach((value) => this._chipElements().find((c) => c.value === value)?.remove());
161
- const toAdd = [...value];
162
- for (const c of oldValue) if (toAdd.includes(c)) toAdd.splice(toAdd.indexOf(c), 1);
163
- toAdd.forEach((c) => this._createChipElement(c));
164
- }
165
- get value() {
166
- return this._chipElements().map((c) => c.value);
167
- }
168
- #displayWith_accessor_storage;
169
- /** Function that maps a chip's value to its display value. */
170
- get displayWith() {
171
- return this.#displayWith_accessor_storage;
172
- }
173
- set displayWith(value) {
174
- this.#displayWith_accessor_storage = value;
175
- }
176
- #separatorKeys_accessor_storage;
177
- /** The array of keys that will trigger a `chipinputtokenend` event. Default `['Enter']` */
178
- get separatorKeys() {
179
- return this.#separatorKeys_accessor_storage;
180
- }
181
- set separatorKeys(value) {
182
- this.#separatorKeys_accessor_storage = value;
183
- }
184
- #addOnBlur_accessor_storage;
185
- /** Whether to automatically add a chip when the input loses focus if there's a value. */
186
- get addOnBlur() {
187
- return this.#addOnBlur_accessor_storage;
188
- }
189
- set addOnBlur(value) {
190
- this.#addOnBlur_accessor_storage = value;
191
- }
192
- constructor() {
193
- super();
194
- this.#displayWith_accessor_storage = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _displayWith_initializers, null));
195
- this.#separatorKeys_accessor_storage = (__runInitializers(this, _displayWith_extraInitializers), __runInitializers(this, _separatorKeys_initializers, ["Enter"]));
196
- this.#addOnBlur_accessor_storage = (__runInitializers(this, _separatorKeys_extraInitializers), __runInitializers(this, _addOnBlur_initializers, false));
197
- /**
198
- * Listens to the changes on `readonly` and `disabled` attributes of `<input>`.
199
- */
200
- this._inputAttributeObserver = (__runInitializers(this, _addOnBlur_extraInitializers), !isServer ? new MutationObserver(() => this._reactToInputChanges()) : null);
201
- this._language = new SbbLanguageController(this);
202
- this.addEventListener?.(SbbChipElement.events.requestdelete, (ev) => this._deleteChip(ev.target));
203
- this.addEventListener?.("keydown", (ev) => this._onChipKeyDown(ev));
204
- this.addController(new SbbPropertyWatcherController(this, () => this.closest("sbb-form-field"), {
205
- size: (formField) => this._updateSize(formField.size),
206
- label: (formField) => this._updateLabelState(formField),
207
- hiddenLabel: (formField) => this._updateLabelState(formField)
208
- }));
209
- }
210
- _updateLabelState(formField) {
211
- this.toggleState("without-label", !formField.label || formField.hiddenLabel);
212
- }
213
- connectedCallback() {
214
- super.connectedCallback();
215
- this._setupComponent();
216
- }
217
- willUpdate(changedProperties) {
218
- super.willUpdate(changedProperties);
219
- if (changedProperties.has("disabled") || changedProperties.has("formDisabled") || changedProperties.has("negative")) this._proxyStateToChips();
220
- }
221
- /** @internal */
222
- formResetCallback() {
223
- this.value = null;
224
- }
225
- /** @internal */
226
- formStateRestoreCallback(state, _reason) {
227
- if (!state) {
228
- this.value = null;
229
- return;
230
- }
231
- this._readFormData(state).then((array) => this.value = array);
232
- }
233
- async _readFormData(formData) {
234
- return Promise.all(formData.getAll(this.name).map(async (entry) => entry instanceof Blob ? JSON.parse(await entry.text()) : entry));
235
- }
236
- shouldValidate(name) {
237
- return super.shouldValidate(name) || name === "required" || name === "value";
238
- }
239
- validate() {
240
- super.validate();
241
- if (this.required && this.value.length === 0) this.setValidityFlag("valueMissing", i18nSelectionRequired[this._language.current]);
242
- else this.removeValidityFlag("valueMissing");
243
- }
244
- /** Return the list of chip elements **/
245
- _chipElements() {
246
- return Array.from(this.querySelectorAll?.("sbb-chip") ?? []);
247
- }
248
- /** Return the list of enabled chip elements **/
249
- _enabledChipElements() {
250
- return Array.from(this.querySelectorAll?.("sbb-chip:not([disabled])") ?? []);
251
- }
252
- _setupComponent() {
253
- const input = this.querySelector("input");
254
- if (input && input !== this._inputElement) {
255
- this._inputAbortController?.abort();
256
- this._inputAttributeObserver?.disconnect();
257
- this._inputElement = input;
258
- this._inputAbortController = new AbortController();
259
- this._inputElement.addEventListener("keydown", (ev) => this._onInputKeyDown(ev), { signal: this._inputAbortController.signal });
260
- this._inputElement.addEventListener("blur", () => this._onInputBlur(), {
261
- signal: this._inputAbortController.signal,
262
- capture: true
263
- });
264
- this._inputElement.addEventListener("inputAutocomplete", (event) => {
265
- this._createChipFromInput("autocomplete", event.detail?.option.value);
266
- }, { signal: this._inputAbortController.signal });
267
- this._inputAttributeObserver?.observe(this._inputElement, {
268
- attributes: true,
269
- attributeFilter: ["readonly", "disabled"]
270
- });
271
- }
272
- if (!this._previousSize || !this.closest("sbb-form-field")) this._updateSize(isLean() ? "s" : "m");
273
- this.toggleState("empty", this.value.length === 0);
274
- this._reactToInputChanges();
275
- this._updateInputDescription();
276
- this.updateFormValue();
277
- }
278
- /**
279
- * Listen for keyboard events on the chip elements
280
- **/
281
- _onChipKeyDown(event) {
282
- const eventTarget = event.target;
283
- if (eventTarget.localName !== "sbb-chip") return;
284
- if (isArrowKeyPressed(event)) {
285
- const focusSteps = this._enabledChipElements();
286
- focusSteps[getNextElementIndex(event, focusSteps.indexOf(eventTarget), focusSteps.length)].focus();
287
- return;
288
- }
289
- switch (event.key) {
290
- case "Backspace":
291
- case "Delete":
292
- if (!eventTarget.readOnly && !eventTarget.disabled) {
293
- event.preventDefault();
294
- this._deleteChip(eventTarget);
295
- }
296
- break;
297
- }
298
- }
299
- /**
300
- * Listen for keyboard events on the input
301
- **/
302
- _onInputKeyDown(event) {
303
- switch (event.key) {
304
- case "Backspace":
305
- case "ArrowLeft":
306
- if (!this._inputElement.value) this._focusChip();
307
- break;
308
- case "Enter":
309
- event.preventDefault();
310
- break;
311
- }
312
- if (this.separatorKeys.includes(event.key)) {
313
- event.preventDefault();
314
- this._createChipFromInput("input");
315
- }
316
- }
317
- /**
318
- * Handle blur event on the input
319
- **/
320
- _onInputBlur() {
321
- if (this.addOnBlur) this._createChipFromInput("input");
322
- }
323
- /**
324
- * If the input is not empty, create a chip with its value
325
- */
326
- _createChipFromInput(origin = "input", value) {
327
- const inputValue = value ?? this._inputElement.value.trim();
328
- if (!inputValue) return;
329
- const event = new SbbChipInputTokenEndEvent({
330
- origin,
331
- value: inputValue,
332
- label: (value ? this.displayWith?.(value) : null) ?? void 0
333
- });
334
- if (!this.dispatchEvent(event)) return;
335
- this._createChipElement(event.value, event.label);
336
- this._inputElement.value = "";
337
- this._emitInputEvents();
338
- }
339
- _deleteChip(chip) {
340
- const chips = this._enabledChipElements();
341
- chip.remove();
342
- this._emitInputEvents();
343
- this._focusChip(chips.indexOf(chip));
344
- }
345
- /**
346
- * Focus an enabled chip. If none are present, focus the input
347
- * @param index The index of the enabled chip. If null, focus the last one.
348
- */
349
- _focusChip(index) {
350
- const enabledChips = this._enabledChipElements();
351
- if (index !== void 0 && enabledChips[index]) {
352
- enabledChips[index].focus();
353
- return;
354
- }
355
- if (enabledChips.length > 0) {
356
- enabledChips[enabledChips.length - 1].focus();
357
- return;
358
- }
359
- this._inputElement?.focus();
360
- }
361
- _emitInputEvents() {
362
- /** The input event fires when the value has been changed as a direct result of a user action. */
363
- this.dispatchEvent(new InputEvent("input", {
364
- bubbles: true,
365
- composed: true
366
- }));
367
- /**
368
- * The change event is fired when the user modifies the element's value.
369
- * Unlike the input event, the change event is not necessarily fired
370
- * for each alteration to an element's value.
371
- */
372
- this.dispatchEvent(new Event("change", { bubbles: true }));
373
- }
374
- _createChipElement(value, label) {
375
- if (isServer) return;
376
- const newChip = document.createElement("sbb-chip");
377
- newChip.value = value;
378
- newChip.innerText = label ?? (value ? this.displayWith?.(value) : null) ?? "";
379
- this.insertBefore(newChip, this._inputElement ?? this.querySelector("input"));
380
- }
381
- _reactToInputChanges() {
382
- this.disabled = this._inputElement?.disabled ?? false;
383
- this._proxyStateToChips();
384
- }
385
- _proxyStateToChips() {
386
- this._chipElements().forEach((c) => {
387
- c.disabled = this.disabled || this.formDisabled;
388
- c.readOnly = this._inputElement?.hasAttribute("readonly") ?? false;
389
- c.negative = this.negative;
390
- });
391
- }
392
- _updateSize(size) {
393
- if (this._previousSize) this.internals.states.delete(`size-${this._previousSize}`);
394
- this._previousSize = size;
395
- if (this._previousSize) this.internals.states.add(`size-${this._previousSize}`);
396
- }
397
- _updateInputDescription() {
398
- if (!this._inputElement) return;
399
- this._inputElement.setAttribute("aria-description", `${i18nChipGroupInputDescription[this._language.current]} ${this.value.length}`);
400
- }
401
- render() {
402
- return html`<slot @slotchange=${this._setupComponent}></slot>`;
403
- }
404
- };
405
- })();
406
- //#endregion
407
- export { SbbChipInputTokenEndEvent as n, SbbChipGroupElement as t };
408
-
409
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1ncm91cC5jb21wb25lbnQtQ3ZwVWR6dTEuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NoaXAvY2hpcC1ncm91cC9jaGlwLWdyb3VwLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NoaXAvY2hpcC1ncm91cC9jaGlwLWdyb3VwLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdCB7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGdhcDogdmFyKC0tc2JiLWNoaXAtZ3JvdXAtZ2FwKTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luLWJsb2NrOiB2YXIoLS1zYmItY2hpcC1ncm91cC1tYXJnaW4tYmxvY2spO1xufVxuXG46aG9zdCg6aXMoOnN0YXRlKHNpemUtcyksIDpzdGF0ZShlbXB0eSkpKSB7XG4gIC0tc2JiLWNoaXAtZ3JvdXAtbWFyZ2luLWJsb2NrOiAwO1xufVxuXG46aG9zdCg6c3RhdGUoc2l6ZS1zKTpub3QoOnN0YXRlKGVtcHR5KSkpIHtcbiAgLS1zYmItY2hpcC1ncm91cC1tYXJnaW4tYmxvY2s6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCg2KX0gI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDUpfTtcblxuICBAaW5jbHVkZSBzYmIubXEoJGZyb206IGxhcmdlKSB7XG4gICAgLS1zYmItY2hpcC1ncm91cC1tYXJnaW4tYmxvY2s6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCg1KX0gI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDMpfTtcbiAgfVxufVxuXG46aG9zdCg6c3RhdGUod2l0aG91dC1sYWJlbCk6c3RhdGUoc2l6ZS1zKTpub3QoOnN0YXRlKGVtcHR5KSkpIHtcbiAgLS1zYmItY2hpcC1ncm91cC1tYXJnaW4tYmxvY2s6IDAgI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDcpfTtcblxuICBAaW5jbHVkZSBzYmIubXEoJGZyb206IGxhcmdlKSB7XG4gICAgLS1zYmItY2hpcC1ncm91cC1tYXJnaW4tYmxvY2s6IDAgI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDUpfTtcbiAgfVxufVxuXG46aG9zdCg6aXMoOnN0YXRlKHNpemUtbCksIDpzdGF0ZShzaXplLW0pKSkge1xuICAtLXNiYi1jaGlwLWdyb3VwLW1hcmdpbi1ibG9jazogdmFyKC0tX3NiYi1jaGlwLWdyb3VwLW1hcmdpbi1ibG9jay1zdGFydC1kZWZhdWx0KSAwO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogbGFyZ2UpIHtcbiAgICAtLXNiYi1jaGlwLWdyb3VwLW1hcmdpbi1ibG9jazogdmFyKC0tX3NiYi1jaGlwLWdyb3VwLW1hcmdpbi1ibG9jay1zdGFydC1kZWZhdWx0LWxhcmdlKSAwO1xuICB9XG59XG5cbjpob3N0KDpzdGF0ZSh3aXRob3V0LWxhYmVsKTpzdGF0ZShzaXplLW0pOm5vdCg6c3RhdGUoZW1wdHkpKSkge1xuICAtLXNiYi1jaGlwLWdyb3VwLW1hcmdpbi1ibG9jazogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDMpfSAje3NiYi5weC10by1yZW0tYnVpbGQoMTEpfTtcblxuICBAaW5jbHVkZSBzYmIubXEoJGZyb206IGxhcmdlKSB7XG4gICAgLS1zYmItY2hpcC1ncm91cC1tYXJnaW4tYmxvY2s6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgzKX0gI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDE0KX07XG4gIH1cbn1cblxuOmhvc3QoOnN0YXRlKHdpdGhvdXQtbGFiZWwpOm5vdCg6c3RhdGUoZW1wdHkpLCA6c3RhdGUoc2l6ZS1zKSwgOnN0YXRlKHNpemUtbSksIDpzdGF0ZShzaXplLWwpKSkge1xuICAtLXNiYi1jaGlwLWdyb3VwLW1hcmdpbi1ibG9jazogdmFyKC0tc2JiLWNoaXAtZ3JvdXAtbWFyZ2luLWJsb2NrLW5vLWxhYmVsLW5vdC1lbXB0eSk7XG59XG5cbjpob3N0KDpub3QoOnN0YXRlKHdpdGhvdXQtbGFiZWwpKTpzdGF0ZShzaXplLW0pOm5vdCg6c3RhdGUoZW1wdHkpKSkge1xuICAtLXNiYi1jaGlwLWdyb3VwLW1hcmdpbi1ibG9jazogdmFyKC0tX3NiYi1jaGlwLWdyb3VwLW1hcmdpbi1ibG9jay1zdGFydC1kZWZhdWx0KVxuICAgIHZhcigtLV9zYmItY2hpcC1ncm91cC1tYXJnaW4tYmxvY2stc3RhcnQtZGVmYXVsdC1sYXJnZSk7XG5cbiAgQGluY2x1ZGUgc2JiLm1xKCRmcm9tOiBsYXJnZSkge1xuICAgIC0tc2JiLWNoaXAtZ3JvdXAtbWFyZ2luLWJsb2NrOiB2YXIoLS1fc2JiLWNoaXAtZ3JvdXAtbWFyZ2luLWJsb2NrLXN0YXJ0LWRlZmF1bHQtbGFyZ2UpXG4gICAgICB2YXIoLS1fc2JiLWNoaXAtZ3JvdXAtbWFyZ2luLWJsb2NrLXN0YXJ0LWRlZmF1bHQtbGFyZ2UpO1xuICB9XG59XG5cbjpob3N0KDpub3QoOnN0YXRlKHdpdGhvdXQtbGFiZWwpLCA6c3RhdGUoZW1wdHkpLCA6c3RhdGUoc2l6ZS1zKSwgOnN0YXRlKHNpemUtbSksIDpzdGF0ZShzaXplLWwpKSkge1xuICAtLXNiYi1jaGlwLWdyb3VwLW1hcmdpbi1ibG9jazogdmFyKC0tc2JiLWNoaXAtZ3JvdXAtbWFyZ2luLWJsb2NrLXdpdGgtbGFiZWwtbm90LWVtcHR5KTtcbn1cblxuOmhvc3QoOnN0YXRlKHdpdGhvdXQtbGFiZWwpOnN0YXRlKHNpemUtbCk6bm90KDpzdGF0ZShlbXB0eSkpKSB7XG4gIC0tc2JiLWNoaXAtZ3JvdXAtbWFyZ2luLWJsb2NrOiB2YXIoLS1fc2JiLWNoaXAtZ3JvdXAtbWFyZ2luLWJsb2NrLXN0YXJ0LWRlZmF1bHQpXG4gICAgI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDE2KX07XG5cbiAgQGluY2x1ZGUgc2JiLm1xKCRmcm9tOiBsYXJnZSkge1xuICAgIC0tc2JiLWNoaXAtZ3JvdXAtbWFyZ2luLWJsb2NrOiB2YXIoLS1fc2JiLWNoaXAtZ3JvdXAtbWFyZ2luLWJsb2NrLXN0YXJ0LWRlZmF1bHQtbGFyZ2UpXG4gICAgICAje3NiYi5weC10by1yZW0tYnVpbGQoMjApfTtcbiAgfVxufVxuXG46aG9zdCg6bm90KDpzdGF0ZSh3aXRob3V0LWxhYmVsKSk6c3RhdGUoc2l6ZS1sKTpub3QoOnN0YXRlKGVtcHR5KSkpIHtcbiAgLS1zYmItY2hpcC1ncm91cC1tYXJnaW4tYmxvY2s6IHZhcigtLV9zYmItY2hpcC1ncm91cC1tYXJnaW4tYmxvY2stc3RhcnQtZGVmYXVsdClcbiAgICAje3NiYi5weC10by1yZW0tYnVpbGQoNy41KX07XG5cbiAgQGluY2x1ZGUgc2JiLm1xKCRmcm9tOiBsYXJnZSkge1xuICAgIC0tc2JiLWNoaXAtZ3JvdXAtbWFyZ2luLWJsb2NrOiB2YXIoLS1fc2JiLWNoaXAtZ3JvdXAtbWFyZ2luLWJsb2NrLXN0YXJ0LWRlZmF1bHQtbGFyZ2UpXG4gICAgICAje3NiYi5weC10by1yZW0tYnVpbGQoNy41KX07XG4gIH1cbn1cblxuOjpzbG90dGVkKGlucHV0KSB7XG4gIGZsZXg6IDEgMSB2YXIoLS1zYmItY2hpcC1ncm91cC1pbnB1dC1taW4td2lkdGgpO1xuICBtYXgtaGVpZ2h0OiAje3NiYi5weC10by1yZW0tYnVpbGQoMjQpfTtcbn1cblxuOjpzbG90dGVkKHNiYi1jaGlwKSB7XG4gIG1heC13aWR0aDogMTAwJTtcbn1cbiIsImltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxuICB1bnNhZmVDU1MsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZ2V0TmV4dEVsZW1lbnRJbmRleCwgaXNBcnJvd0tleVByZXNzZWQgfSBmcm9tICcuLi8uLi9jb3JlL2ExMXkudHMnO1xuaW1wb3J0IHsgU2JiRWxlbWVudCB9IGZyb20gJy4uLy4uL2NvcmUvYmFzZS1lbGVtZW50cy50cyc7XG5pbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIsIFNiYlByb3BlcnR5V2F0Y2hlckNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jb3JlL2NvbnRyb2xsZXJzLnRzJztcbmltcG9ydCB7IGZvcmNlVHlwZSB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy50cyc7XG5pbXBvcnQgeyBpc0xlYW4gfSBmcm9tICcuLi8uLi9jb3JlL2RvbS9sZWFuLWNvbnRleHQudHMnO1xuaW1wb3J0IHsgaTE4bkNoaXBHcm91cElucHV0RGVzY3JpcHRpb24sIGkxOG5TZWxlY3Rpb25SZXF1aXJlZCB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi50cyc7XG5pbXBvcnQge1xuICB0eXBlIEZvcm1SZXN0b3JlUmVhc29uLFxuICB0eXBlIEZvcm1SZXN0b3JlU3RhdGUsXG4gIFNiYkRpc2FibGVkTWl4aW4sXG4gIFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4sXG4gIFNiYk5lZ2F0aXZlTWl4aW4sXG4gIFNiYlJlcXVpcmVkTWl4aW4sXG59IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLnRzJztcbmltcG9ydCB7IGJveFNpemluZ1N0eWxlcyB9IGZyb20gJy4uLy4uL2NvcmUvc3R5bGVzLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiRm9ybUZpZWxkRWxlbWVudCB9IGZyb20gJy4uLy4uL2Zvcm0tZmllbGQvZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYk9wdGlvbkJhc2VFbGVtZW50IH0gZnJvbSAnLi4vLi4vb3B0aW9uL29wdGlvbi9vcHRpb24tYmFzZS1lbGVtZW50LnRzJztcbmltcG9ydCB7IFNiYkNoaXBFbGVtZW50IH0gZnJvbSAnLi4vY2hpcC9jaGlwLmNvbXBvbmVudC50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2NoaXAtZ3JvdXAuc2Nzcz9pbmxpbmUnO1xuXG5sZXQgZGlzcGxheVdpdGhXYXJuaW5nTG9nZ2VkID0gZmFsc2U7XG5cbi8vIFRPRE8oYnJlYWtpbmctY2hhbmdlKTogUmVwbGFjZSBiYXNlIGNsYXNzIHdpdGggRXZlbnRcbmV4cG9ydCBjbGFzcyBTYmJDaGlwSW5wdXRUb2tlbkVuZEV2ZW50PFQgPSBzdHJpbmc+IGV4dGVuZHMgQ3VzdG9tRXZlbnQ8XG4gIFNiYkNoaXBJbnB1dFRva2VuRW5kRXZlbnREZXRhaWxzPFQ+XG4+IHtcbiAgLyoqIFRoZSBlbGVtZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBjaGlwIGNyZWF0aW9uICovXG4gIHB1YmxpYyBvcmlnaW46ICdpbnB1dCcgfCAnYXV0b2NvbXBsZXRlJztcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgbmV3IGNoaXAuIEVpdGhlciB0aGUgaW5wdXQgb3IgdGhlIG9wdGlvbiB2YWx1ZSBkZXBlbmRpbmcgb24gdGhlIG9yaWdpbi5cbiAgICogRWl0aGVyIHRoZSB2YWx1ZSBmcm9tIHRoZSBpbnB1dCB3aGljaCBpcyBhbHdheXMgYHN0cmluZ2Agb3IgdGhlIHZhbHVlIGZyb20gdGhlIHNlbGVjdGVkIG9wdGlvblxuICAgKiBmcm9tIGFuIGF1dG9jb21wbGV0ZSwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHN0cmluZyBvciBhbnkgb3RoZXIgdHlwZS5cbiAgICovXG4gIHB1YmxpYyB2YWx1ZTogVCB8IHN0cmluZztcbiAgcHVibGljIGxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZXZlbnQgcHJvcGVydGllcyBkaXJlY3RseS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgZGV0YWlsKCk6IFNiYkNoaXBJbnB1dFRva2VuRW5kRXZlbnREZXRhaWxzPFQ+IHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zOiBQaWNrPFNiYkNoaXBJbnB1dFRva2VuRW5kRXZlbnQsICdvcmlnaW4nIHwgJ3ZhbHVlJyB8ICdsYWJlbCc+KSB7XG4gICAgc3VwZXIoJ2NoaXBpbnB1dHRva2VuZW5kJywge1xuICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICBjb21wb3NlZDogdHJ1ZSxcbiAgICB9KTtcbiAgICB0aGlzLm9yaWdpbiA9IG9wdGlvbnMub3JpZ2luO1xuICAgIHRoaXMudmFsdWUgPSBvcHRpb25zLnZhbHVlO1xuICAgIHRoaXMubGFiZWwgPSBvcHRpb25zLmxhYmVsO1xuICB9XG5cbiAgLyoqIFNldCBhIG5ldyB2YWx1ZSBmb3IgdGhlIGNoaXAgdGhhdCB3aWxsIGJlIGNyZWF0ZWQgKi9cbiAgcHVibGljIHNldFZhbHVlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG4gIC8qKiBTZXQgYSBsYWJlbCBmb3IgdGhlIGNoaXAgdGhhdCB3aWxsIGJlIGNyZWF0ZWQgKi9cbiAgcHVibGljIHNldExhYmVsKGxhYmVsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmxhYmVsID0gbGFiZWw7XG4gIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYFNiYkNoaXBJbnB1dFRva2VuRW5kRXZlbnRgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudERldGFpbHM8VCA9IHN0cmluZz4ge1xuICAvKiogVGhlIGVsZW1lbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGNoaXAgY3JlYXRpb24gKi9cbiAgb3JpZ2luOiAnaW5wdXQnIHwgJ2F1dG9jb21wbGV0ZSc7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIG5ldyBjaGlwLiBFaXRoZXIgdGhlIGlucHV0IG9yIHRoZSBvcHRpb24gdmFsdWUgZGVwZW5kaW5nIG9uIHRoZSBvcmlnaW4uXG4gICAqIEVpdGhlciB0aGUgdmFsdWUgZnJvbSB0aGUgaW5wdXQgd2hpY2ggaXMgYWx3YXlzIGBzdHJpbmdgIG9yIHRoZSB2YWx1ZSBmcm9tIHRoZSBzZWxlY3RlZCBvcHRpb25cbiAgICogZnJvbSBhbiBhdXRvY29tcGxldGUsIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW55IG90aGVyIHR5cGUuXG4gICAqL1xuICB2YWx1ZTogVCB8IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIC8qKiBTZXQgYSBuZXcgdmFsdWUgZm9yIHRoZSBjaGlwIHRoYXQgd2lsbCBiZSBjcmVhdGVkICovXG4gIHNldFZhbHVlKHZhbHVlOiBUKTogdm9pZDtcbiAgLyoqIFNldCBhIGxhYmVsIGZvciB0aGUgY2hpcCB0aGF0IHdpbGwgYmUgY3JlYXRlZCAqL1xuICBzZXRMYWJlbCh2YWx1ZTogc3RyaW5nKTogdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgYHNiYi1jaGlwLWdyb3VwYCBjb21wb25lbnQgaXMgdXNlZCBhcyBhIGNvbnRhaW5lciBmb3Igb25lIG9yIG11bHRpcGxlIGBzYmItY2hpcGAuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1jaGlwYCBlbGVtZW50cy5cbiAqIEBldmVudCB7U2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudDxUPn0gY2hpcGlucHV0dG9rZW5lbmQgLSBOb3RpZmllcyB0aGF0IGEgY2hpcCBpcyBhYm91dCB0byBiZSBjcmVhdGVkLiBDYW4gYmUgcHJldmVudGVkLlxuICogQG92ZXJyaWRlVHlwZSB2YWx1ZSAtIChUID0gc3RyaW5nW10pIHwgbnVsbFxuICovXG5leHBvcnQgY2xhc3MgU2JiQ2hpcEdyb3VwRWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYlJlcXVpcmVkTWl4aW4oXG4gIFNiYkRpc2FibGVkTWl4aW4oU2JiTmVnYXRpdmVNaXhpbihTYmJGb3JtQXNzb2NpYXRlZE1peGluKFNiYkVsZW1lbnQpKSksXG4pIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBlbGVtZW50TmFtZTogc3RyaW5nID0gJ3NiYi1jaGlwLWdyb3VwJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSByb2xlID0gJ2xpc3Rib3gnO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbYm94U2l6aW5nU3R5bGVzLCB1bnNhZmVDU1Moc3R5bGUpXTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgaW5wdXQ6ICdpbnB1dCcsXG4gICAgY2hhbmdlOiAnY2hhbmdlJyxcbiAgICBjaGlwaW5wdXR0b2tlbmVuZDogJ2NoaXBpbnB1dHRva2VuZW5kJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKiogVmFsdWUgb2YgdGhlIGZvcm0gZWxlbWVudC4gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogQXJyYXkgfSlcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogKFQgfCBudWxsKVtdIHwgbnVsbCkge1xuICAgIHZhbHVlID0gdmFsdWUgPz8gW107XG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLnZhbHVlO1xuXG4gICAgLy8gU3VidHJhY3QgZnJvbSAnb2xkVmFsdWUnIHRoZSBuZXcgJ3ZhbHVlJ1xuICAgIC8vIFRoZSByZXN1bHQgYXJlIHRoZSBjaGlwcyB0byByZW1vdmUgKGhhbmRsZSBkdXBsaWNhdGVzKVxuICAgIGNvbnN0IHRvUmVtb3ZlID0gWy4uLm9sZFZhbHVlXTtcbiAgICBmb3IgKGNvbnN0IGMgb2YgdmFsdWUpIHtcbiAgICAgIGlmICh0b1JlbW92ZS5pbmNsdWRlcyhjKSkge1xuICAgICAgICB0b1JlbW92ZS5zcGxpY2UodG9SZW1vdmUuaW5kZXhPZihjKSwgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRvUmVtb3ZlLmZvckVhY2goKHZhbHVlKSA9PlxuICAgICAgdGhpcy5fY2hpcEVsZW1lbnRzKClcbiAgICAgICAgLmZpbmQoKGMpID0+IGMudmFsdWUgPT09IHZhbHVlKVxuICAgICAgICA/LnJlbW92ZSgpLFxuICAgICk7XG5cbiAgICAvLyBTdWJ0cmFjdCBmcm9tIHRoZSBuZXcgJ3ZhbHVlJyB3aGF0IHdhcyBhbHJlYWR5IHByZXNlbnRcbiAgICAvLyBUaGUgcmVzdWx0IGFyZSB0aGUgbmV3IGNoaXBzIHRvIGFkZCAoaGFuZGxlIGR1cGxpY2F0ZXMpXG4gICAgY29uc3QgdG9BZGQgPSBbLi4udmFsdWVdO1xuICAgIGZvciAoY29uc3QgYyBvZiBvbGRWYWx1ZSkge1xuICAgICAgaWYgKHRvQWRkLmluY2x1ZGVzKGMpKSB7XG4gICAgICAgIHRvQWRkLnNwbGljZSh0b0FkZC5pbmRleE9mKGMpLCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdG9BZGQuZm9yRWFjaCgoYykgPT4gdGhpcy5fY3JlYXRlQ2hpcEVsZW1lbnQoYykpO1xuICB9XG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogKFQgfCBudWxsKVtdIHtcbiAgICByZXR1cm4gdGhpcy5fY2hpcEVsZW1lbnRzKCkubWFwKChjKSA9PiBjLnZhbHVlKTtcbiAgfVxuXG4gIC8qKiBGdW5jdGlvbiB0aGF0IG1hcHMgYSBjaGlwJ3MgdmFsdWUgdG8gaXRzIGRpc3BsYXkgdmFsdWUuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogZmFsc2UgfSlcbiAgcHVibGljIGFjY2Vzc29yIGRpc3BsYXlXaXRoOiAoKHZhbHVlOiBUKSA9PiBzdHJpbmcpIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFRoZSBhcnJheSBvZiBrZXlzIHRoYXQgd2lsbCB0cmlnZ2VyIGEgYGNoaXBpbnB1dHRva2VuZW5kYCBldmVudC4gRGVmYXVsdCBgWydFbnRlciddYCAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdzZXBhcmF0b3Ita2V5cycsIHR5cGU6IEFycmF5IH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBzZXBhcmF0b3JLZXlzOiBzdHJpbmdbXSA9IFsnRW50ZXInXTtcblxuICAvKiogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IGFkZCBhIGNoaXAgd2hlbiB0aGUgaW5wdXQgbG9zZXMgZm9jdXMgaWYgdGhlcmUncyBhIHZhbHVlLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWRkLW9uLWJsdXInLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBhZGRPbkJsdXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogTGlzdGVucyB0byB0aGUgY2hhbmdlcyBvbiBgcmVhZG9ubHlgIGFuZCBgZGlzYWJsZWRgIGF0dHJpYnV0ZXMgb2YgYDxpbnB1dD5gLlxuICAgKi9cbiAgcHJpdmF0ZSBfaW5wdXRBdHRyaWJ1dGVPYnNlcnZlciA9ICFpc1NlcnZlclxuICAgID8gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4gdGhpcy5fcmVhY3RUb0lucHV0Q2hhbmdlcygpKVxuICAgIDogbnVsbDtcblxuICBwcml2YXRlIF9pbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX2lucHV0QWJvcnRDb250cm9sbGVyOiBBYm9ydENvbnRyb2xsZXIgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfcHJldmlvdXNTaXplPzogU2JiRm9ybUZpZWxkRWxlbWVudFsnc2l6ZSddO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oU2JiQ2hpcEVsZW1lbnQuZXZlbnRzLnJlcXVlc3RkZWxldGUsIChldikgPT5cbiAgICAgIHRoaXMuX2RlbGV0ZUNoaXAoZXYudGFyZ2V0IGFzIFNiYkNoaXBFbGVtZW50PFQ+KSxcbiAgICApO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2tleWRvd24nLCAoZXYpID0+IHRoaXMuX29uQ2hpcEtleURvd24oZXYpKTtcblxuICAgIHRoaXMuYWRkQ29udHJvbGxlcihcbiAgICAgIG5ldyBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyKHRoaXMsICgpID0+IHRoaXMuY2xvc2VzdCgnc2JiLWZvcm0tZmllbGQnKSwge1xuICAgICAgICBzaXplOiAoZm9ybUZpZWxkKSA9PiB0aGlzLl91cGRhdGVTaXplKGZvcm1GaWVsZC5zaXplKSxcbiAgICAgICAgbGFiZWw6IChmb3JtRmllbGQpID0+IHRoaXMuX3VwZGF0ZUxhYmVsU3RhdGUoZm9ybUZpZWxkKSxcbiAgICAgICAgaGlkZGVuTGFiZWw6IChmb3JtRmllbGQpID0+IHRoaXMuX3VwZGF0ZUxhYmVsU3RhdGUoZm9ybUZpZWxkKSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVMYWJlbFN0YXRlKGZvcm1GaWVsZDogU2JiRm9ybUZpZWxkRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ3dpdGhvdXQtbGFiZWwnLCAhZm9ybUZpZWxkLmxhYmVsIHx8IGZvcm1GaWVsZC5oaWRkZW5MYWJlbCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9zZXR1cENvbXBvbmVudCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzKTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoXG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Rpc2FibGVkJykgfHxcbiAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZm9ybURpc2FibGVkJykgfHxcbiAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbmVnYXRpdmUnKVxuICAgICkge1xuICAgICAgdGhpcy5fcHJveHlTdGF0ZVRvQ2hpcHMoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyBmb3JtUmVzZXRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIGZvcm1TdGF0ZVJlc3RvcmVDYWxsYmFjayhcbiAgICBzdGF0ZTogRm9ybVJlc3RvcmVTdGF0ZSB8IG51bGwsXG4gICAgX3JlYXNvbjogRm9ybVJlc3RvcmVSZWFzb24sXG4gICk6IHZvaWQge1xuICAgIGlmICghc3RhdGUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3JlYWRGb3JtRGF0YShzdGF0ZSBhcyBGb3JtRGF0YSkudGhlbigoYXJyYXkpID0+ICh0aGlzLnZhbHVlID0gYXJyYXkpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3JlYWRGb3JtRGF0YShmb3JtRGF0YTogRm9ybURhdGEpOiBQcm9taXNlPFRbXT4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgIGZvcm1EYXRhXG4gICAgICAgIC5nZXRBbGwodGhpcy5uYW1lKVxuICAgICAgICAubWFwKGFzeW5jIChlbnRyeSkgPT5cbiAgICAgICAgICBlbnRyeSBpbnN0YW5jZW9mIEJsb2IgPyBKU09OLnBhcnNlKGF3YWl0IGVudHJ5LnRleHQoKSkgOiAoZW50cnkgYXMgVCksXG4gICAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBzaG91bGRWYWxpZGF0ZShuYW1lOiBQcm9wZXJ0eUtleSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdXBlci5zaG91bGRWYWxpZGF0ZShuYW1lKSB8fCBuYW1lID09PSAncmVxdWlyZWQnIHx8IG5hbWUgPT09ICd2YWx1ZSc7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdmFsaWRhdGUoKTogdm9pZCB7XG4gICAgc3VwZXIudmFsaWRhdGUoKTtcbiAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiB0aGlzLnZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5zZXRWYWxpZGl0eUZsYWcoJ3ZhbHVlTWlzc2luZycsIGkxOG5TZWxlY3Rpb25SZXF1aXJlZFt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVtb3ZlVmFsaWRpdHlGbGFnKCd2YWx1ZU1pc3NpbmcnKTtcbiAgICB9XG4gIH1cblxuICAvKiogUmV0dXJuIHRoZSBsaXN0IG9mIGNoaXAgZWxlbWVudHMgKiovXG4gIHByaXZhdGUgX2NoaXBFbGVtZW50cygpOiBTYmJDaGlwRWxlbWVudDxUPltdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJDaGlwRWxlbWVudDxUPj4oJ3NiYi1jaGlwJykgPz8gW10pO1xuICB9XG5cbiAgLyoqIFJldHVybiB0aGUgbGlzdCBvZiBlbmFibGVkIGNoaXAgZWxlbWVudHMgKiovXG4gIHByaXZhdGUgX2VuYWJsZWRDaGlwRWxlbWVudHMoKTogU2JiQ2hpcEVsZW1lbnQ8VD5bXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsPy4oJ3NiYi1jaGlwOm5vdChbZGlzYWJsZWRdKScpID8/IFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwQ29tcG9uZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuXG4gICAgLy8gQ29ubmVjdCB0byB0aGUgaW5wdXRcbiAgICBpZiAoaW5wdXQgJiYgaW5wdXQgIT09IHRoaXMuX2lucHV0RWxlbWVudCkge1xuICAgICAgdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgICB0aGlzLl9pbnB1dEF0dHJpYnV0ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQgPSBpbnB1dDtcblxuICAgICAgdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldikgPT4gdGhpcy5fb25JbnB1dEtleURvd24oZXYpLCB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSk7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHRoaXMuX29uSW5wdXRCbHVyKCksIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnaW5wdXRBdXRvY29tcGxldGUnLFxuICAgICAgICAoZXZlbnQ6IEN1c3RvbUV2ZW50PHsgb3B0aW9uOiBTYmJPcHRpb25CYXNlRWxlbWVudDxUPiB9PikgPT4ge1xuICAgICAgICAgIHRoaXMuX2NyZWF0ZUNoaXBGcm9tSW5wdXQoJ2F1dG9jb21wbGV0ZScsIGV2ZW50LmRldGFpbD8ub3B0aW9uLnZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHNpZ25hbDogdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgdGhpcy5faW5wdXRBdHRyaWJ1dGVPYnNlcnZlcj8ub2JzZXJ2ZSh0aGlzLl9pbnB1dEVsZW1lbnQsIHtcbiAgICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ3JlYWRvbmx5JywgJ2Rpc2FibGVkJ10sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBJbmhlcml0IHNpemUgZnJvbSB0aGUgZm9ybS1maWVsZCBhbmQgb2JzZXJ2ZSBmb3IgY2hhbmdlc1xuICAgIGlmICghdGhpcy5fcHJldmlvdXNTaXplIHx8ICF0aGlzLmNsb3Nlc3QoJ3NiYi1mb3JtLWZpZWxkJykpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVNpemUoaXNMZWFuKCkgPyAncycgOiAnbScpO1xuICAgIH1cblxuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ2VtcHR5JywgdGhpcy52YWx1ZS5sZW5ndGggPT09IDApO1xuICAgIHRoaXMuX3JlYWN0VG9JbnB1dENoYW5nZXMoKTtcbiAgICB0aGlzLl91cGRhdGVJbnB1dERlc2NyaXB0aW9uKCk7XG4gICAgdGhpcy51cGRhdGVGb3JtVmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gZm9yIGtleWJvYXJkIGV2ZW50cyBvbiB0aGUgY2hpcCBlbGVtZW50c1xuICAgKiovXG4gIHByaXZhdGUgX29uQ2hpcEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBldmVudFRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBTYmJDaGlwRWxlbWVudDxUPjtcbiAgICBpZiAoZXZlbnRUYXJnZXQubG9jYWxOYW1lICE9PSAnc2JiLWNoaXAnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQXJyb3cga2V5cyBhbGxvdyBuYXZpZ2F0aW9uIGJldHdlZW4gY2hpcHMgZm9jdXMgc3RlcHNcbiAgICBpZiAoaXNBcnJvd0tleVByZXNzZWQoZXZlbnQpKSB7XG4gICAgICBjb25zdCBmb2N1c1N0ZXBzID0gdGhpcy5fZW5hYmxlZENoaXBFbGVtZW50cygpO1xuICAgICAgY29uc3QgbmV4dCA9IGdldE5leHRFbGVtZW50SW5kZXgoZXZlbnQsIGZvY3VzU3RlcHMuaW5kZXhPZihldmVudFRhcmdldCksIGZvY3VzU3RlcHMubGVuZ3RoKTtcbiAgICAgIGZvY3VzU3RlcHNbbmV4dF0uZm9jdXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgIGNhc2UgJ0RlbGV0ZSc6XG4gICAgICAgIGlmICghZXZlbnRUYXJnZXQucmVhZE9ubHkgJiYgIWV2ZW50VGFyZ2V0LmRpc2FibGVkKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB0aGlzLl9kZWxldGVDaGlwKGV2ZW50VGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIGZvciBrZXlib2FyZCBldmVudHMgb24gdGhlIGlucHV0XG4gICAqKi9cbiAgcHJpdmF0ZSBfb25JbnB1dEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIGlmICghdGhpcy5faW5wdXRFbGVtZW50IS52YWx1ZSkge1xuICAgICAgICAgIHRoaXMuX2ZvY3VzQ2hpcCgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBQcmV2ZW50cyB0aGUgZm9ybSBzdWJtaXRcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIHVzZXIgdHlwZWQgb25lIG9mIHRoZSBzZXBhcmF0b3Iga2V5cywgdHJpZ2dlciBhICdjaGlwaW5wdXR0b2tlbmVuZCcgZXZlbnRcbiAgICBpZiAodGhpcy5zZXBhcmF0b3JLZXlzLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIHByZXZlbnQgdHlwaW5nIHRoZSBzZXBhcmF0b3Iga2V5IGludG8gdGhlIGlucHV0XG4gICAgICB0aGlzLl9jcmVhdGVDaGlwRnJvbUlucHV0KCdpbnB1dCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgYmx1ciBldmVudCBvbiB0aGUgaW5wdXRcbiAgICoqL1xuICBwcml2YXRlIF9vbklucHV0Qmx1cigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hZGRPbkJsdXIpIHtcbiAgICAgIHRoaXMuX2NyZWF0ZUNoaXBGcm9tSW5wdXQoJ2lucHV0Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBpbnB1dCBpcyBub3QgZW1wdHksIGNyZWF0ZSBhIGNoaXAgd2l0aCBpdHMgdmFsdWVcbiAgICovXG4gIHByaXZhdGUgX2NyZWF0ZUNoaXBGcm9tSW5wdXQob3JpZ2luOiAnaW5wdXQnIHwgJ2F1dG9jb21wbGV0ZScgPSAnaW5wdXQnLCB2YWx1ZT86IFQpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dFZhbHVlID0gdmFsdWUgPz8gdGhpcy5faW5wdXRFbGVtZW50IS52YWx1ZS50cmltKCk7XG4gICAgaWYgKCFpbnB1dFZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXZlbnQgPSBuZXcgU2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudDxUPih7XG4gICAgICBvcmlnaW4sXG4gICAgICB2YWx1ZTogaW5wdXRWYWx1ZSBhcyBzdHJpbmcsXG4gICAgICBsYWJlbDogKHZhbHVlID8gdGhpcy5kaXNwbGF5V2l0aD8uKHZhbHVlKSA6IG51bGwpID8/IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgICBpZiAoIXRoaXMuZGlzcGF0Y2hFdmVudChldmVudCkpIHtcbiAgICAgIHJldHVybjsgLy8gZXZlbnQgcHJldmVudGVkOyBkbyBub3RoaW5nICh0aGUgY29uc3VtZXIgaGFzIHRvIGNyZWF0ZSB0aGUgY2hpcClcbiAgICB9XG5cbiAgICB0aGlzLl9jcmVhdGVDaGlwRWxlbWVudChldmVudC52YWx1ZSBhcyBULCBldmVudC5sYWJlbCk7XG4gICAgdGhpcy5faW5wdXRFbGVtZW50IS52YWx1ZSA9ICcnOyAvLyBFbXB0eSB0aGUgaW5wdXRcbiAgICB0aGlzLl9lbWl0SW5wdXRFdmVudHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2RlbGV0ZUNoaXAoY2hpcDogU2JiQ2hpcEVsZW1lbnQ8VD4pOiB2b2lkIHtcbiAgICBjb25zdCBjaGlwcyA9IHRoaXMuX2VuYWJsZWRDaGlwRWxlbWVudHMoKTtcbiAgICBjaGlwLnJlbW92ZSgpO1xuICAgIHRoaXMuX2VtaXRJbnB1dEV2ZW50cygpO1xuICAgIHRoaXMuX2ZvY3VzQ2hpcChjaGlwcy5pbmRleE9mKGNoaXApKTsgLy8gRm9jdXMgdGhlIG5leHQgY2hpcFxuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzIGFuIGVuYWJsZWQgY2hpcC4gSWYgbm9uZSBhcmUgcHJlc2VudCwgZm9jdXMgdGhlIGlucHV0XG4gICAqIEBwYXJhbSBpbmRleCBUaGUgaW5kZXggb2YgdGhlIGVuYWJsZWQgY2hpcC4gSWYgbnVsbCwgZm9jdXMgdGhlIGxhc3Qgb25lLlxuICAgKi9cbiAgcHJpdmF0ZSBfZm9jdXNDaGlwKGluZGV4PzogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgZW5hYmxlZENoaXBzID0gdGhpcy5fZW5hYmxlZENoaXBFbGVtZW50cygpO1xuXG4gICAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQgJiYgZW5hYmxlZENoaXBzW2luZGV4XSkge1xuICAgICAgZW5hYmxlZENoaXBzW2luZGV4XS5mb2N1cygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChlbmFibGVkQ2hpcHMubGVuZ3RoID4gMCkge1xuICAgICAgZW5hYmxlZENoaXBzW2VuYWJsZWRDaGlwcy5sZW5ndGggLSAxXS5mb2N1cygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lucHV0RWxlbWVudD8uZm9jdXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2VtaXRJbnB1dEV2ZW50cygpOiB2b2lkIHtcbiAgICAvKiogVGhlIGlucHV0IGV2ZW50IGZpcmVzIHdoZW4gdGhlIHZhbHVlIGhhcyBiZWVuIGNoYW5nZWQgYXMgYSBkaXJlY3QgcmVzdWx0IG9mIGEgdXNlciBhY3Rpb24uICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGNoYW5nZSBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIG1vZGlmaWVzIHRoZSBlbGVtZW50J3MgdmFsdWUuXG4gICAgICogVW5saWtlIHRoZSBpbnB1dCBldmVudCwgdGhlIGNoYW5nZSBldmVudCBpcyBub3QgbmVjZXNzYXJpbHkgZmlyZWRcbiAgICAgKiBmb3IgZWFjaCBhbHRlcmF0aW9uIHRvIGFuIGVsZW1lbnQncyB2YWx1ZS5cbiAgICAgKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlQ2hpcEVsZW1lbnQodmFsdWU6IFQgfCBudWxsLCBsYWJlbD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBuZXdDaGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2JiLWNoaXAnKSBhcyBTYmJDaGlwRWxlbWVudDxUPjtcbiAgICBuZXdDaGlwLnZhbHVlID0gdmFsdWU7XG4gICAgbmV3Q2hpcC5pbm5lclRleHQgPSBsYWJlbCA/PyAodmFsdWUgPyB0aGlzLmRpc3BsYXlXaXRoPy4odmFsdWUpIDogbnVsbCkgPz8gJyc7XG4gICAgaWYgKFxuICAgICAgaW1wb3J0Lm1ldGEuZW52LkRFViAmJlxuICAgICAgIWRpc3BsYXlXaXRoV2FybmluZ0xvZ2dlZCAmJlxuICAgICAgIWxhYmVsICYmXG4gICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAhdGhpcy5kaXNwbGF5V2l0aFxuICAgICkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgZGlzcGxheVdpdGggaGFzIG5vdCBiZWVuIHNldCB5ZXQgZm9yIHNiYi1jaGlwLWdyb3VwIGFuZCB2YWx1ZSBpcyBhbiBvYmplY3QuXG4gICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIG9iamVjdCB2YWx1ZXMsIHlvdSBuZWVkIHRvIHByb3ZpZGUgZGlzcGxheVdpZHRoIGJlZm9yZVxuICAgICAgICAgc2V0dGluZyBvciBzZWxlY3RpbmcgYW55IHZhbHVlLmAsXG4gICAgICApO1xuICAgICAgZGlzcGxheVdpdGhXYXJuaW5nTG9nZ2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5pbnNlcnRCZWZvcmUobmV3Q2hpcCwgdGhpcy5faW5wdXRFbGVtZW50ID8/IHRoaXMucXVlcnlTZWxlY3RvcignaW5wdXQnKSk7XG4gIH1cblxuICBwcml2YXRlIF9yZWFjdFRvSW5wdXRDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSB0aGlzLl9pbnB1dEVsZW1lbnQ/LmRpc2FibGVkID8/IGZhbHNlO1xuICAgIHRoaXMuX3Byb3h5U3RhdGVUb0NoaXBzKCk7XG4gIH1cblxuICBwcml2YXRlIF9wcm94eVN0YXRlVG9DaGlwcygpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGlwRWxlbWVudHMoKS5mb3JFYWNoKChjKSA9PiB7XG4gICAgICBjLmRpc2FibGVkID0gdGhpcy5kaXNhYmxlZCB8fCB0aGlzLmZvcm1EaXNhYmxlZDtcbiAgICAgIGMucmVhZE9ubHkgPSB0aGlzLl9pbnB1dEVsZW1lbnQ/Lmhhc0F0dHJpYnV0ZSgncmVhZG9ubHknKSA/PyBmYWxzZTtcbiAgICAgIGMubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlU2l6ZShzaXplOiBTYmJGb3JtRmllbGRFbGVtZW50WydzaXplJ10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fcHJldmlvdXNTaXplKSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKGBzaXplLSR7dGhpcy5fcHJldmlvdXNTaXplfWApO1xuICAgIH1cbiAgICB0aGlzLl9wcmV2aW91c1NpemUgPSBzaXplO1xuICAgIGlmICh0aGlzLl9wcmV2aW91c1NpemUpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQoYHNpemUtJHt0aGlzLl9wcmV2aW91c1NpemV9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlSW5wdXREZXNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lucHV0RWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9pbnB1dEVsZW1lbnQuc2V0QXR0cmlidXRlKFxuICAgICAgJ2FyaWEtZGVzY3JpcHRpb24nLFxuICAgICAgYCR7aTE4bkNoaXBHcm91cElucHV0RGVzY3JpcHRpb25bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7dGhpcy52YWx1ZS5sZW5ndGh9YCxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgPHNsb3QgQHNsb3RjaGFuZ2U9JHt0aGlzLl9zZXR1cENvbXBvbmVudH0+PC9zbG90PmA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1jaGlwLWdyb3VwJzogU2JiQ2hpcEdyb3VwRWxlbWVudDtcbiAgfVxuXG4gIGludGVyZmFjZSBIVE1MRWxlbWVudEV2ZW50TWFwIHtcbiAgICBjaGlwaW5wdXR0b2tlbmVuZDogU2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudDxhbnk+O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUNrQ0EsSUFBYSw0QkFBYixjQUEyRCxZQUUxRDs7OztDQWNDLElBQW9CLFNBQU07QUFDeEIsU0FBTzs7Q0FHVCxZQUFtQixTQUFzRTtB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
@@ -1,51 +0,0 @@
1
- import { html, unsafeCSS } from "lit";
2
- import { SbbElement } from "./core/base-elements.js";
3
- import { boxSizingStyles } from "./core/styles.js";
4
- import { i18nPage, i18nPaginatorOf } from "./core/i18n.js";
5
- import "./divider.js";
6
- import "./screen-reader-only.js";
7
- import { styleMap } from "lit/directives/style-map.js";
8
- import { SbbPaginatorCommonElementMixin } from "./paginator/common/paginator-common.js";
9
- //#region src/elements/paginator/compact-paginator/compact-paginator.scss?inline
10
- var compact_paginator_default = ":host {\n display: flex;\n gap: var(--sbb-compact-paginator-gap);\n justify-content: var(--sbb-paginator-compact-justify-content, start);\n min-height: var(--sbb-compact-paginator-height);\n}\n\n:host([size=s]) {\n --sbb-compact-paginator-height: var(--sbb-size-element-xs);\n}\n\n:host([size=m]) {\n --sbb-compact-paginator-height: var(--sbb-size-element-m);\n}\n\n:host([negative]) {\n --sbb-compact-paginator-color: var(--sbb-color-5);\n}\n\n:host([pager-position=end]) {\n --sbb-paginator-compact-justify-content: end;\n}\n\n.sbb-paginator__pages {\n font-size: var(--sbb-compact-paginator-font-size);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--sbb-compact-paginator-pages-gap);\n color: var(--sbb-compact-paginator-color);\n}\n\n.sbb-compact-paginator__divider {\n height: 1rem;\n}";
11
- //#endregion
12
- //#region src/elements/paginator/compact-paginator/compact-paginator.component.ts
13
- /**
14
- * It displays a paginator component in compact mode.
15
- */
16
- var SbbCompactPaginatorElement = class extends SbbPaginatorCommonElementMixin(SbbElement) {
17
- static {
18
- this.elementName = "sbb-compact-paginator";
19
- }
20
- static {
21
- this.styles = [boxSizingStyles, unsafeCSS(compact_paginator_default)];
22
- }
23
- static {
24
- this.events = { page: "page" };
25
- }
26
- _renderPageNumbers() {
27
- return html`
28
- <span class="sbb-paginator__pages" aria-hidden="true"
29
- >${this.pageIndex + 1}<sbb-divider
30
- orientation="vertical"
31
- class="sbb-compact-paginator__divider"
32
- style=${styleMap({ "--sbb-divider-color": "currentcolor" })}
33
- ?negative=${this.negative}
34
- ></sbb-divider
35
- >${this.numberOfPages()}</span
36
- >
37
- <sbb-screen-reader-only>
38
- ${`${this.accessibilityPageLabel ? this.accessibilityPageLabel : i18nPage[this.language.current]} ${this.pageIndex + 1} ${i18nPaginatorOf[this.language.current]} ${this.numberOfPages()}`}
39
- </sbb-screen-reader-only>
40
- `;
41
- }
42
- renderPaginator() {
43
- return html`
44
- ${this.pagerPosition === "start" ? html`${this.renderPrevNextButtons()} ${this._renderPageNumbers()}` : html`${this._renderPageNumbers()} ${this.renderPrevNextButtons()}`}
45
- `;
46
- }
47
- };
48
- //#endregion
49
- export { SbbCompactPaginatorElement as t };
50
-
51
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFjdC1wYWdpbmF0b3IuY29tcG9uZW50LVRmRFZ0X1NULmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9wYWdpbmF0b3IvY29tcGFjdC1wYWdpbmF0b3IvY29tcGFjdC1wYWdpbmF0b3Iuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvcGFnaW5hdG9yL2NvbXBhY3QtcGFnaW5hdG9yL2NvbXBhY3QtcGFnaW5hdG9yLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogdmFyKC0tc2JiLWNvbXBhY3QtcGFnaW5hdG9yLWdhcCk7XG4gIGp1c3RpZnktY29udGVudDogdmFyKC0tc2JiLXBhZ2luYXRvci1jb21wYWN0LWp1c3RpZnktY29udGVudCwgc3RhcnQpO1xuICBtaW4taGVpZ2h0OiB2YXIoLS1zYmItY29tcGFjdC1wYWdpbmF0b3ItaGVpZ2h0KTtcbn1cblxuOmhvc3QoW3NpemU9J3MnXSkge1xuICAtLXNiYi1jb21wYWN0LXBhZ2luYXRvci1oZWlnaHQ6IHZhcigtLXNiYi1zaXplLWVsZW1lbnQteHMpO1xufVxuXG46aG9zdChbc2l6ZT0nbSddKSB7XG4gIC0tc2JiLWNvbXBhY3QtcGFnaW5hdG9yLWhlaWdodDogdmFyKC0tc2JiLXNpemUtZWxlbWVudC1tKTtcbn1cblxuOmhvc3QoW25lZ2F0aXZlXSkge1xuICAtLXNiYi1jb21wYWN0LXBhZ2luYXRvci1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTUpO1xufVxuXG46aG9zdChbcGFnZXItcG9zaXRpb249J2VuZCddKSB7XG4gIC0tc2JiLXBhZ2luYXRvci1jb21wYWN0LWp1c3RpZnktY29udGVudDogZW5kO1xufVxuXG4uc2JiLXBhZ2luYXRvcl9fcGFnZXMge1xuICBmb250LXNpemU6IHZhcigtLXNiYi1jb21wYWN0LXBhZ2luYXRvci1mb250LXNpemUpO1xuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc2JiLXR5cG8tbGV0dGVyLXNwYWNpbmctdGV4dCk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IHZhcigtLXNiYi1jb21wYWN0LXBhZ2luYXRvci1wYWdlcy1nYXApO1xuICBjb2xvcjogdmFyKC0tc2JiLWNvbXBhY3QtcGFnaW5hdG9yLWNvbG9yKTtcbn1cblxuLnNiYi1jb21wYWN0LXBhZ2luYXRvcl9fZGl2aWRlciB7XG4gIGhlaWdodDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDE2KX07XG59XG4iLCJpbXBvcnQgeyBodG1sLCB1bnNhZmVDU1MsIHR5cGUgQ1NTUmVzdWx0R3JvdXAsIHR5cGUgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgc3R5bGVNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9zdHlsZS1tYXAuanMnO1xuXG5pbXBvcnQgeyBTYmJFbGVtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlLWVsZW1lbnRzLnRzJztcbmltcG9ydCB7IGkxOG5QYWdlLCBpMThuUGFnaW5hdG9yT2YgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4udHMnO1xuaW1wb3J0IHsgYm94U2l6aW5nU3R5bGVzIH0gZnJvbSAnLi4vLi4vY29yZS9zdHlsZXMudHMnO1xuaW1wb3J0IHsgU2JiUGFnaW5hdG9yQ29tbW9uRWxlbWVudE1peGluIH0gZnJvbSAnLi4vY29tbW9uL3BhZ2luYXRvci1jb21tb24udHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9jb21wYWN0LXBhZ2luYXRvci5zY3NzP2lubGluZSc7XG5cbmltcG9ydCAnLi4vLi4vZGl2aWRlci50cyc7XG5pbXBvcnQgJy4uLy4uL3NjcmVlbi1yZWFkZXItb25seS50cyc7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYSBwYWdpbmF0b3IgY29tcG9uZW50IGluIGNvbXBhY3QgbW9kZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkNvbXBhY3RQYWdpbmF0b3JFbGVtZW50IGV4dGVuZHMgU2JiUGFnaW5hdG9yQ29tbW9uRWxlbWVudE1peGluKFNiYkVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBlbGVtZW50TmFtZTogc3RyaW5nID0gJ3NiYi1jb21wYWN0LXBhZ2luYXRvcic7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtib3hTaXppbmdTdHlsZXMsIHVuc2FmZUNTUyhzdHlsZSldO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50czogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICBwYWdlOiAncGFnZScsXG4gIH0gYXMgY29uc3Q7XG5cbiAgcHJpdmF0ZSBfcmVuZGVyUGFnZU51bWJlcnMoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPHNwYW4gY2xhc3M9XCJzYmItcGFnaW5hdG9yX19wYWdlc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgID4ke3RoaXMucGFnZUluZGV4ICsgMX08c2JiLWRpdmlkZXJcbiAgICAgICAgICBvcmllbnRhdGlvbj1cInZlcnRpY2FsXCJcbiAgICAgICAgICBjbGFzcz1cInNiYi1jb21wYWN0LXBhZ2luYXRvcl9fZGl2aWRlclwiXG4gICAgICAgICAgc3R5bGU9JHtzdHlsZU1hcCh7ICctLXNiYi1kaXZpZGVyLWNvbG9yJzogJ2N1cnJlbnRjb2xvcicgfSl9XG4gICAgICAgICAgP25lZ2F0aXZlPSR7dGhpcy5uZWdhdGl2ZX1cbiAgICAgICAgPjwvc2JiLWRpdmlkZXJcbiAgICAgICAgPiR7dGhpcy5udW1iZXJPZlBhZ2VzKCl9PC9zcGFuXG4gICAgICA+XG4gICAgICA8c2JiLXNjcmVlbi1yZWFkZXItb25seT5cbiAgICAgICAgJHtgJHt0aGlzLmFjY2Vzc2liaWxpdHlQYWdlTGFiZWwgPyB0aGlzLmFjY2Vzc2liaWxpdHlQYWdlTGFiZWwgOiBpMThuUGFnZVt0aGlzLmxhbmd1YWdlLmN1cnJlbnRdfSAke3RoaXMucGFnZUluZGV4ICsgMX0gJHtpMThuUGFnaW5hdG9yT2ZbdGhpcy5sYW5ndWFnZS5jdXJyZW50XX0gJHt0aGlzLm51bWJlck9mUGFnZXMoKX1gfVxuICAgICAgPC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgIGA7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyUGFnaW5hdG9yKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgICR7dGhpcy5wYWdlclBvc2l0aW9uID09PSAnc3RhcnQnXG4gICAgICAgID8gaHRtbGAke3RoaXMucmVuZGVyUHJldk5leHRCdXR0b25zKCl9ICR7dGhpcy5fcmVuZGVyUGFnZU51bWJlcnMoKX1gXG4gICAgICAgIDogaHRtbGAke3RoaXMuX3JlbmRlclBhZ2VOdW1iZXJzKCl9ICR7dGhpcy5yZW5kZXJQcmV2TmV4dEJ1dHRvbnMoKX1gfVxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1jb21wYWN0LXBhZ2luYXRvcic6IFNiYkNvbXBhY3RQYWdpbmF0b3JFbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQ2dCQSxJQUFhLDZCQUFiLGNBQWdELCtCQUErQixXQUFXLENBQUE7O0FBQ3hELE9BQUEsY0FBc0I7OztBQUMvQixPQUFBLFNBQXlCLENBQUMsaUJBQWlCLFVBQVUsMEJBQU0sQ0FBQzs7O0FBQzVELE9BQUEsU0FBaUMsRUFDdEQsTUFBTSxRQUNFOztDQUVGLHFCQUFrQjtBQUN4QixTQUFPLElBQUk7O1dBRUosS0FBSyxZQUFZLEVBQUM7OztrQkFHWCxTQUFTLEVBQUUsdUJBQXVCLGdCQUFnQixDQUFDLENBQUE7c0JBQy9DLEtBQUssU0FBQTs7V0FFaEIsS0FBSyxlQUFlLENBQUE7OztVQUdyQixHQUFHLEtBQUsseUJBQXlCLEtBQUsseUJBQXlCLFNBQVMsS0FBSyxTQUFTLFNBQVEsR0FBSSxLQUFLLFlBQVksRUFBQyxHQUFJLGdCQUFnQixLQUFLLFNBQVMsU0FBUSxHQUFJLEtBQUssZUFBZSxHQUFBOzs7O0NBSzNLLGtCQUFlO0FBQ2hDLFNBQU8sSUFBSTtRQUNQLEtBQUssa0JBQWtCLFVBQ3JCLElBQUksR0FBRyxLQUFLLHVCQUF1QixDQUFBLEdBQUksS0FBSyxvQkFBb0IsS0FDaEUsSUFBSSxHQUFHLEtBQUssb0JBQW9CLENBQUEsR0FBSSxLQUFLLHVCQUF1QixHQUFBIn0=