@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,418 +0,0 @@
1
- import { __esDecorate, __runInitializers } from "tslib";
2
- import { nothing, unsafeCSS } from "lit";
3
- import { property } from "lit/decorators.js";
4
- import "./core/base-elements.js";
5
- import { forceType } from "./core/decorators.js";
6
- import { isLean } from "./core/dom.js";
7
- import { forwardEvent } from "./core/eventing.js";
8
- import { SbbDisabledMixin, SbbFormAssociatedMixin, ɵstateController } from "./core/mixins.js";
9
- import { html as html$1, unsafeStatic } from "lit/static-html.js";
10
- import { SbbSecondaryButtonElement } from "./button.pure.js";
11
- import { SbbLanguageController } from "./core/controllers.js";
12
- import { i18nFileSelectorButtonLabel, i18nFileSelectorButtonLabelMultiple, i18nFileSelectorCurrentlySelected, i18nFileSelectorDeleteFile } from "./core/i18n.js";
13
- import { ref } from "lit/directives/ref.js";
14
- import { sbbInputModalityDetector } from "./core/a11y.js";
15
- //#region src/elements/file-selector/common/file-selector-common.scss?inline
16
- var file_selector_common_default = ":host {\n --sbb-file-selector-color: var(--sbb-color-2);\n --sbb-file-selector-subtitle-color: var(--sbb-color-granite);\n --sbb-file-selector-subtitle-color: light-dark(var(--sbb-color-granite), var(--sbb-color-smoke));\n --sbb-file-selector-background-color: var(--sbb-background-color-1);\n --sbb-file-selector-border-color: var(--sbb-border-color-4-inverted);\n --sbb-file-selector-transition-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-2x)\n );\n --sbb-file-selector-transition-easing-function: var(--sbb-animation-easing);\n display: block;\n width: 20rem;\n}\n\n@media (forced-colors: active) {\n :host(:disabled) {\n --sbb-file-selector-color: GrayText;\n --sbb-file-selector-subtitle-color: GrayText;\n --sbb-file-selector-border-color: GrayText;\n }\n}\n\n:host(:is(:state(active),[state--active])) {\n --sbb-file-selector-background-color: var(--sbb-background-color-3);\n --sbb-file-selector-border-color: var(--sbb-color-storm);\n --sbb-file-selector-border-color: light-dark(var(--sbb-color-storm), var(--sbb-color-anthracite));\n}\n@media (forced-colors: active) {\n :host(:is(:state(active),[state--active])) {\n --sbb-file-selector-border-color: Highlight;\n }\n}\n\n.sbb-file-selector__input-container {\n -webkit-tap-highlight-color: transparent;\n display: flex;\n flex-direction: column;\n}\n\n.sbb-file-selector__visually-hidden {\n border: 0;\n clip-path: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n\n.sbb-file-selector__file-list {\n display: flex;\n flex-direction: column;\n row-gap: var(--sbb-spacing-fixed-3x);\n margin-block: 0;\n padding-inline: 0;\n padding-block: var(--sbb-spacing-fixed-6x) var(--sbb-spacing-fixed-1x);\n}\n\n.sbb-file-selector__file {\n --sbb-text-font-size: var(--sbb-text-font-size-s);\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 display: flex;\n gap: var(--sbb-spacing-fixed-4x);\n align-items: center;\n justify-content: space-between;\n}\n\n.sbb-file-selector__file-details {\n display: flex;\n flex: 1;\n justify-content: space-between;\n gap: var(--sbb-spacing-fixed-4x);\n overflow: auto;\n}\n\n.sbb-file-selector__file-name {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.sbb-file-selector__file-size {\n white-space: nowrap;\n color: var(--sbb-color-metal);\n color: light-dark(var(--sbb-color-metal), var(--sbb-color-smoke));\n}\n\n:host(:not(:is(:state(slotted-error),[state--slotted-error]))) .sbb-file-selector__error {\n display: none;\n}";
17
- //#endregion
18
- //#region src/elements/file-selector/common/file-selector-common.ts
19
- SbbSecondaryButtonElement.define();
20
- var fileSelectorCommonStyle = unsafeCSS(file_selector_common_default);
21
- var SbbFileSelectorCommonElementMixin = (superclass) => {
22
- return (() => {
23
- let _classSuper = SbbDisabledMixin(SbbFormAssociatedMixin(superclass));
24
- let _instanceExtraInitializers = [];
25
- let _size_decorators;
26
- let _size_initializers = [];
27
- let _size_extraInitializers = [];
28
- let _multiple_decorators;
29
- let _multiple_initializers = [];
30
- let _multiple_extraInitializers = [];
31
- let _multipleMode_decorators;
32
- let _multipleMode_initializers = [];
33
- let _multipleMode_extraInitializers = [];
34
- let _accept_decorators;
35
- let _accept_initializers = [];
36
- let _accept_extraInitializers = [];
37
- let _accessibilityLabel_decorators;
38
- let _accessibilityLabel_initializers = [];
39
- let _accessibilityLabel_extraInitializers = [];
40
- let _set_value_decorators;
41
- let _set_files_decorators;
42
- return class SbbFileSelectorCommonElement extends _classSuper {
43
- constructor() {
44
- super(...arguments);
45
- this.#size_accessor_storage = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _size_initializers, isLean() ? "s" : "m"));
46
- this.#multiple_accessor_storage = (__runInitializers(this, _size_extraInitializers), __runInitializers(this, _multiple_initializers, false));
47
- this.#multipleMode_accessor_storage = (__runInitializers(this, _multiple_extraInitializers), __runInitializers(this, _multipleMode_initializers, "default"));
48
- this.#accept_accessor_storage = (__runInitializers(this, _multipleMode_extraInitializers), __runInitializers(this, _accept_initializers, ""));
49
- this.#accessibilityLabel_accessor_storage = (__runInitializers(this, _accept_extraInitializers), __runInitializers(this, _accessibilityLabel_initializers, ""));
50
- this._files = (__runInitializers(this, _accessibilityLabel_extraInitializers), []);
51
- this._suffixes = [
52
- "B",
53
- "kB",
54
- "MB",
55
- "GB",
56
- "TB"
57
- ];
58
- this.language = new SbbLanguageController(this);
59
- this._counter = 0;
60
- }
61
- static {
62
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
63
- _size_decorators = [property({ reflect: true })];
64
- _multiple_decorators = [forceType(), property({ type: Boolean })];
65
- _multipleMode_decorators = [property({ attribute: "multiple-mode" })];
66
- _accept_decorators = [forceType(), property()];
67
- _accessibilityLabel_decorators = [forceType(), property({ attribute: "accessibility-label" })];
68
- _set_value_decorators = [property({ attribute: false })];
69
- _set_files_decorators = [property({ attribute: false })];
70
- __esDecorate(this, null, _size_decorators, {
71
- kind: "accessor",
72
- name: "size",
73
- static: false,
74
- private: false,
75
- access: {
76
- has: (obj) => "size" in obj,
77
- get: (obj) => obj.size,
78
- set: (obj, value) => {
79
- obj.size = value;
80
- }
81
- },
82
- metadata: _metadata
83
- }, _size_initializers, _size_extraInitializers);
84
- __esDecorate(this, null, _multiple_decorators, {
85
- kind: "accessor",
86
- name: "multiple",
87
- static: false,
88
- private: false,
89
- access: {
90
- has: (obj) => "multiple" in obj,
91
- get: (obj) => obj.multiple,
92
- set: (obj, value) => {
93
- obj.multiple = value;
94
- }
95
- },
96
- metadata: _metadata
97
- }, _multiple_initializers, _multiple_extraInitializers);
98
- __esDecorate(this, null, _multipleMode_decorators, {
99
- kind: "accessor",
100
- name: "multipleMode",
101
- static: false,
102
- private: false,
103
- access: {
104
- has: (obj) => "multipleMode" in obj,
105
- get: (obj) => obj.multipleMode,
106
- set: (obj, value) => {
107
- obj.multipleMode = value;
108
- }
109
- },
110
- metadata: _metadata
111
- }, _multipleMode_initializers, _multipleMode_extraInitializers);
112
- __esDecorate(this, null, _accept_decorators, {
113
- kind: "accessor",
114
- name: "accept",
115
- static: false,
116
- private: false,
117
- access: {
118
- has: (obj) => "accept" in obj,
119
- get: (obj) => obj.accept,
120
- set: (obj, value) => {
121
- obj.accept = value;
122
- }
123
- },
124
- metadata: _metadata
125
- }, _accept_initializers, _accept_extraInitializers);
126
- __esDecorate(this, null, _accessibilityLabel_decorators, {
127
- kind: "accessor",
128
- name: "accessibilityLabel",
129
- static: false,
130
- private: false,
131
- access: {
132
- has: (obj) => "accessibilityLabel" in obj,
133
- get: (obj) => obj.accessibilityLabel,
134
- set: (obj, value) => {
135
- obj.accessibilityLabel = value;
136
- }
137
- },
138
- metadata: _metadata
139
- }, _accessibilityLabel_initializers, _accessibilityLabel_extraInitializers);
140
- __esDecorate(this, null, _set_value_decorators, {
141
- kind: "setter",
142
- name: "value",
143
- static: false,
144
- private: false,
145
- access: {
146
- has: (obj) => "value" in obj,
147
- set: (obj, value) => {
148
- obj.value = value;
149
- }
150
- },
151
- metadata: _metadata
152
- }, null, _instanceExtraInitializers);
153
- __esDecorate(this, null, _set_files_decorators, {
154
- kind: "setter",
155
- name: "files",
156
- static: false,
157
- private: false,
158
- access: {
159
- has: (obj) => "files" in obj,
160
- set: (obj, value) => {
161
- obj.files = value;
162
- }
163
- },
164
- metadata: _metadata
165
- }, null, _instanceExtraInitializers);
166
- if (_metadata) Object.defineProperty(this, Symbol.metadata, {
167
- enumerable: true,
168
- configurable: true,
169
- writable: true,
170
- value: _metadata
171
- });
172
- }
173
- static {
174
- this.events = { filechanged: "filechanged" };
175
- }
176
- #size_accessor_storage;
177
- /**
178
- * Size variant, either s or m.
179
- * @default 'm' / 's' (lean)
180
- */
181
- get size() {
182
- return this.#size_accessor_storage;
183
- }
184
- set size(value) {
185
- this.#size_accessor_storage = value;
186
- }
187
- #multiple_accessor_storage;
188
- /** Whether more than one file can be selected. */
189
- get multiple() {
190
- return this.#multiple_accessor_storage;
191
- }
192
- set multiple(value) {
193
- this.#multiple_accessor_storage = value;
194
- }
195
- #multipleMode_accessor_storage;
196
- /** Whether the newly added files should override the previously added ones. */
197
- get multipleMode() {
198
- return this.#multipleMode_accessor_storage;
199
- }
200
- set multipleMode(value) {
201
- this.#multipleMode_accessor_storage = value;
202
- }
203
- #accept_accessor_storage;
204
- /** A comma-separated list of allowed unique file type specifiers. */
205
- get accept() {
206
- return this.#accept_accessor_storage;
207
- }
208
- set accept(value) {
209
- this.#accept_accessor_storage = value;
210
- }
211
- #accessibilityLabel_accessor_storage;
212
- /** This will be forwarded as aria-label to the native input element. */
213
- get accessibilityLabel() {
214
- return this.#accessibilityLabel_accessor_storage;
215
- }
216
- set accessibilityLabel(value) {
217
- this.#accessibilityLabel_accessor_storage = value;
218
- }
219
- /** The path of the first selected file. Empty string ('') if no file is selected */
220
- set value(value) {
221
- this._hiddenInput.value = value ?? "";
222
- if (!value) this.files = [];
223
- }
224
- get value() {
225
- return this._hiddenInput?.value;
226
- }
227
- /** The list of selected files. */
228
- set files(value) {
229
- this._files = value ?? [];
230
- const dt = new DataTransfer();
231
- this.files.forEach((e) => dt.items.add(e));
232
- this._hiddenInput.files = dt.files;
233
- this.updateFormValue();
234
- }
235
- get files() {
236
- return this._files;
237
- }
238
- /**
239
- * Form type of element.
240
- * @default 'file'
241
- */
242
- get type() {
243
- return "file";
244
- }
245
- formResetCallback() {
246
- this.files = [];
247
- }
248
- formStateRestoreCallback(state, _reason) {
249
- if (!state) return;
250
- this.files = state.getAll(this.name);
251
- }
252
- updateFormValue() {
253
- const formValue = new FormData();
254
- this.files.forEach((file) => formValue.append(this.name, file));
255
- this.internals.setFormValue(formValue);
256
- }
257
- _checkFileEquality(file1, file2) {
258
- return file1.name === file2.name && file1.size === file2.size && file1.lastModified === file2.lastModified;
259
- }
260
- _onFocus() {
261
- if (sbbInputModalityDetector.mostRecentModality === "keyboard") ɵstateController(this.loadButton).add("focus-visible");
262
- }
263
- _onBlur() {
264
- ɵstateController(this.loadButton).delete("focus-visible");
265
- }
266
- _readFiles(event) {
267
- const fileInput = event.target;
268
- if (fileInput.files) this.createFileList(fileInput.files);
269
- forwardEvent(event, this);
270
- }
271
- createFileList(files) {
272
- const fileArray = Array.from(files);
273
- if (!this.multiple && files.length > 1 || this.accept && fileArray.some((file) => !this.accept.split(",").some((a) => file.name.endsWith(a.trim())))) return;
274
- if (!this.multiple || this.multipleMode !== "persistent" || this.files.length === 0) this.files = fileArray;
275
- else this.files = fileArray.filter((newFile) => this.files.findIndex((oldFile) => this._checkFileEquality(newFile, oldFile)) === -1).concat(this.files);
276
- this._updateA11yLiveRegion();
277
- this._dispatchFileChangedEvent();
278
- }
279
- getButtonLabel() {
280
- return this.multiple ? i18nFileSelectorButtonLabelMultiple[this.language.current] : i18nFileSelectorButtonLabel[this.language.current];
281
- }
282
- _removeFile(file) {
283
- this.files = this.files.filter((f) => !this._checkFileEquality(file, f));
284
- this._updateA11yLiveRegion();
285
- /** The input event fires when the value has been changed as a direct result of a user action. */
286
- this.dispatchEvent(new InputEvent("input", {
287
- bubbles: true,
288
- composed: true
289
- }));
290
- /**
291
- * The change event is fired when the user modifies the element's value.
292
- * Unlike the input event, the change event is not necessarily fired
293
- * for each alteration to an element's value.
294
- */
295
- this.dispatchEvent(new Event("change", { bubbles: true }));
296
- this._dispatchFileChangedEvent();
297
- }
298
- _dispatchFileChangedEvent() {
299
- /**
300
- * @type {CustomEvent<Readonly<File>[]>}
301
- * An event which is emitted each time the file list changes.
302
- */
303
- this.dispatchEvent(new CustomEvent("filechanged", {
304
- bubbles: true,
305
- composed: true,
306
- detail: this.files
307
- }));
308
- }
309
- /** Calculates the correct unit for the file's size. */
310
- _formatFileSize(size) {
311
- const i = Math.floor(Math.log(size) / Math.log(1024));
312
- return `${(size / Math.pow(1024, i)).toFixed(0)} ${this._suffixes[i]}`;
313
- }
314
- _updateA11yLiveRegion() {
315
- this._liveRegion.innerText = i18nFileSelectorCurrentlySelected(this.files.map((e) => e.name))[this.language.current];
316
- }
317
- _renderFileList() {
318
- const TAG_NAME = this.files.length > 1 ? {
319
- WRAPPER: "ul",
320
- ELEMENT: "li"
321
- } : {
322
- WRAPPER: "div",
323
- ELEMENT: "span"
324
- };
325
- return html$1`
326
- <${unsafeStatic(TAG_NAME.WRAPPER)} class='sbb-file-selector__file-list'>
327
- ${this.files.map((file) => html$1`
328
- <${unsafeStatic(TAG_NAME.ELEMENT)} class='sbb-file-selector__file'>
329
- <span class='sbb-file-selector__file-details'>
330
- <span class='sbb-file-selector__file-name'>${file.name}</span>
331
- <span class='sbb-file-selector__file-size'>${this._formatFileSize(file.size)}</span>
332
- </span>
333
- <sbb-secondary-button
334
- size='${this.size}'
335
- icon-name='trash-small'
336
- @click='${() => this._removeFile(file)}'
337
- aria-label='${`${i18nFileSelectorDeleteFile[this.language.current]} - ${file.name}`}'
338
- ></sbb-secondary-button>
339
- </${unsafeStatic(TAG_NAME.ELEMENT)}>`)}
340
- </${unsafeStatic(TAG_NAME.WRAPPER)}>
341
- `;
342
- }
343
- _onDragEnter(event) {
344
- this._counter++;
345
- if (!this.disabled && !this.formDisabled) {
346
- this._setDragState(event.target, true);
347
- this._blockEvent(event);
348
- }
349
- }
350
- _onDragLeave(event) {
351
- this._counter--;
352
- if (!this.disabled && !this.formDisabled && event.target === this._dragTarget && this._counter === 0) {
353
- this._setDragState();
354
- this._blockEvent(event);
355
- }
356
- }
357
- _onFileDrop(event) {
358
- this._counter = 0;
359
- if (!this.disabled && !this.formDisabled) {
360
- this._setDragState();
361
- this._blockEvent(event);
362
- this.createFileList(event.dataTransfer.files);
363
- }
364
- }
365
- _blockEvent(event) {
366
- event.stopPropagation();
367
- event.preventDefault();
368
- }
369
- _setDragState(dragTarget = void 0, isDragEnter = false) {
370
- this._dragTarget = dragTarget;
371
- this.toggleState("active", isDragEnter);
372
- ɵstateController(this.loadButton).toggle("active", isDragEnter);
373
- }
374
- render() {
375
- const ariaLabel = this.accessibilityLabel ? `${this.getButtonLabel()} - ${this.accessibilityLabel}` : void 0;
376
- return html$1`
377
- <div class="sbb-file-selector">
378
- <div
379
- class="sbb-file-selector__input-container"
380
- @dragenter=${this._onDragEnter}
381
- @dragover=${this._blockEvent}
382
- @dragleave=${this._onDragLeave}
383
- @drop=${this._onFileDrop}
384
- >
385
- ${this.renderTemplate(html$1`<input
386
- class="sbb-file-selector__visually-hidden"
387
- type="file"
388
- ?disabled="${this.disabled || this.formDisabled}"
389
- ?multiple="${this.multiple}"
390
- accept="${this.accept || nothing}"
391
- aria-label="${ariaLabel || nothing}"
392
- @change="${this._readFiles}"
393
- @focus="${this._onFocus}"
394
- @blur="${this._onBlur}"
395
- ${ref((el) => {
396
- this._hiddenInput = el;
397
- })}
398
- />`)}
399
- </div>
400
- <p
401
- role="status"
402
- class="sbb-file-selector__visually-hidden"
403
- ${ref((p) => this._liveRegion = p)}
404
- ></p>
405
- ${this.files.length > 0 ? this._renderFileList() : nothing}
406
- <div class="sbb-file-selector__error">
407
- <slot name="error"></slot>
408
- </div>
409
- </div>
410
- `;
411
- }
412
- };
413
- })();
414
- };
415
- //#endregion
416
- export { fileSelectorCommonStyle as n, SbbFileSelectorCommonElementMixin as t };
417
-
418
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zZWxlY3Rvci1jb21tb24tQzgyUVIzemIuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2ZpbGUtc2VsZWN0b3IvY29tbW9uL2ZpbGUtc2VsZWN0b3ItY29tbW9uLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2ZpbGUtc2VsZWN0b3IvY29tbW9uL2ZpbGUtc2VsZWN0b3ItY29tbW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgLS1zYmItZmlsZS1zZWxlY3Rvci1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTIpO1xuICAtLXNiYi1maWxlLXNlbGVjdG9yLXN1YnRpdGxlLWNvbG9yOiBsaWdodC1kYXJrKHZhcigtLXNiYi1jb2xvci1ncmFuaXRlKSwgdmFyKC0tc2JiLWNvbG9yLXNtb2tlKSk7XG4gIC0tc2JiLWZpbGUtc2VsZWN0b3ItYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMSk7XG4gIC0tc2JiLWZpbGUtc2VsZWN0b3ItYm9yZGVyLWNvbG9yOiB2YXIoLS1zYmItYm9yZGVyLWNvbG9yLTQtaW52ZXJ0ZWQpO1xuICAtLXNiYi1maWxlLXNlbGVjdG9yLXRyYW5zaXRpb24tZHVyYXRpb246IHZhcihcbiAgICAtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbixcbiAgICB2YXIoLS1zYmItYW5pbWF0aW9uLWR1cmF0aW9uLTJ4KVxuICApO1xuICAtLXNiYi1maWxlLXNlbGVjdG9yLXRyYW5zaXRpb24tZWFzaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItYW5pbWF0aW9uLWVhc2luZyk7XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAje3NiYi5weC10by1yZW0tYnVpbGQoMzIwKX07XG59XG5cbjpob3N0KDpkaXNhYmxlZCkge1xuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgLS1zYmItZmlsZS1zZWxlY3Rvci1jb2xvcjogR3JheVRleHQ7XG4gICAgLS1zYmItZmlsZS1zZWxlY3Rvci1zdWJ0aXRsZS1jb2xvcjogR3JheVRleHQ7XG4gICAgLS1zYmItZmlsZS1zZWxlY3Rvci1ib3JkZXItY29sb3I6IEdyYXlUZXh0O1xuICB9XG59XG5cbjpob3N0KDpzdGF0ZShhY3RpdmUpKSB7XG4gIC0tc2JiLWZpbGUtc2VsZWN0b3ItYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMyk7XG4gIC0tc2JiLWZpbGUtc2VsZWN0b3ItYm9yZGVyLWNvbG9yOiBsaWdodC1kYXJrKHZhcigtLXNiYi1jb2xvci1zdG9ybSksIHZhcigtLXNiYi1jb2xvci1hbnRocmFjaXRlKSk7XG5cbiAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgIC0tc2JiLWZpbGUtc2VsZWN0b3ItYm9yZGVyLWNvbG9yOiBIaWdobGlnaHQ7XG4gIH1cbn1cblxuLnNiYi1maWxlLXNlbGVjdG9yX19pbnB1dC1jb250YWluZXIge1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4uc2JiLWZpbGUtc2VsZWN0b3JfX3Zpc3VhbGx5LWhpZGRlbiB7XG4gIEBpbmNsdWRlIHNiYi5zY3JlZW4tcmVhZGVyLW9ubHk7XG59XG5cbi5zYmItZmlsZS1zZWxlY3Rvcl9fZmlsZS1saXN0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgcm93LWdhcDogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtM3gpO1xuICBtYXJnaW4tYmxvY2s6IDA7XG4gIHBhZGRpbmctaW5saW5lOiAwO1xuICBwYWRkaW5nLWJsb2NrOiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC02eCkgdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtMXgpO1xufVxuXG4uc2JiLWZpbGUtc2VsZWN0b3JfX2ZpbGUge1xuICBAaW5jbHVkZSBzYmIudGV4dC1zLS1yZWd1bGFyO1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtNHgpO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbi5zYmItZmlsZS1zZWxlY3Rvcl9fZmlsZS1kZXRhaWxzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleDogMTtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBnYXA6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTR4KTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi5zYmItZmlsZS1zZWxlY3Rvcl9fZmlsZS1uYW1lIHtcbiAgQGluY2x1ZGUgc2JiLmVsbGlwc2lzO1xufVxuXG4uc2JiLWZpbGUtc2VsZWN0b3JfX2ZpbGUtc2l6ZSB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGNvbG9yOiBsaWdodC1kYXJrKHZhcigtLXNiYi1jb2xvci1tZXRhbCksIHZhcigtLXNiYi1jb2xvci1zbW9rZSkpO1xufVxuXG4uc2JiLWZpbGUtc2VsZWN0b3JfX2Vycm9yIHtcbiAgOmhvc3QoOm5vdCg6c3RhdGUoc2xvdHRlZC1lcnJvcikpKSAmIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4iLCJpbXBvcnQgeyBub3RoaW5nLCB1bnNhZmVDU1MsIHR5cGUgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZWYgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZWYuanMnO1xuaW1wb3J0IHsgaHRtbCwgdW5zYWZlU3RhdGljIH0gZnJvbSAnbGl0L3N0YXRpYy1odG1sLmpzJztcblxuaW1wb3J0IHtcbiAgU2JiU2Vjb25kYXJ5QnV0dG9uRWxlbWVudCxcbiAgdHlwZSBTYmJTZWNvbmRhcnlCdXR0b25TdGF0aWNFbGVtZW50LFxufSBmcm9tICcuLi8uLi9idXR0b24ucHVyZS50cyc7XG5pbXBvcnQgeyBzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IgfSBmcm9tICcuLi8uLi9jb3JlL2ExMXkudHMnO1xuaW1wb3J0IHsgU2JiRWxlbWVudCB9IGZyb20gJy4uLy4uL2NvcmUvYmFzZS1lbGVtZW50cy50cyc7XG5pbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jb3JlL2NvbnRyb2xsZXJzLnRzJztcbmltcG9ydCB7IGZvcmNlVHlwZSB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy50cyc7XG5pbXBvcnQgeyBpc0xlYW4gfSBmcm9tICcuLi8uLi9jb3JlL2RvbS50cyc7XG5pbXBvcnQgeyBmb3J3YXJkRXZlbnQgfSBmcm9tICcuLi8uLi9jb3JlL2V2ZW50aW5nLnRzJztcbmltcG9ydCB7XG4gIGkxOG5GaWxlU2VsZWN0b3JCdXR0b25MYWJlbCxcbiAgaTE4bkZpbGVTZWxlY3RvckJ1dHRvbkxhYmVsTXVsdGlwbGUsXG4gIGkxOG5GaWxlU2VsZWN0b3JDdXJyZW50bHlTZWxlY3RlZCxcbiAgaTE4bkZpbGVTZWxlY3RvckRlbGV0ZUZpbGUsXG59IGZyb20gJy4uLy4uL2NvcmUvaTE4bi50cyc7XG5pbXBvcnQge1xuICB0eXBlIENvbnN0cnVjdG9yLFxuICB0eXBlIEZvcm1SZXN0b3JlUmVhc29uLFxuICB0eXBlIEZvcm1SZXN0b3JlU3RhdGUsXG4gIFNiYkRpc2FibGVkTWl4aW4sXG4gIFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4sXG4gIMm1c3RhdGVDb250cm9sbGVyLFxufSBmcm9tICcuLi8uLi9jb3JlL21peGlucy50cyc7XG5cbmltcG9ydCBmaWxlU2VsZWN0b3JDb21tb25TdHlsZVN0cmluZyBmcm9tICcuL2ZpbGUtc2VsZWN0b3ItY29tbW9uLnNjc3M/aW5saW5lJztcblxuLy8gVE9ETyhicmVha2luZy1jaGFuZ2UpOiBSZW1vdmUgY2FsbCB0byBkZWZpbmUuXG5TYmJTZWNvbmRhcnlCdXR0b25FbGVtZW50LmRlZmluZSgpO1xuXG5leHBvcnQgY29uc3QgZmlsZVNlbGVjdG9yQ29tbW9uU3R5bGUgPSB1bnNhZmVDU1MoZmlsZVNlbGVjdG9yQ29tbW9uU3R5bGVTdHJpbmcpO1xuXG5leHBvcnQgZGVjbGFyZSBhYnN0cmFjdCBjbGFzcyBTYmJGaWxlU2VsZWN0b3JDb21tb25FbGVtZW50TWl4aW5UeXBlIGV4dGVuZHMgU2JiRGlzYWJsZWRNaXhpbihcbiAgU2JiRm9ybUFzc29jaWF0ZWRNaXhpbihTYmJFbGVtZW50KSxcbikge1xuICBwdWJsaWMgYWNjZXNzb3Igc2l6ZTogJ3MnIHwgJ20nO1xuICBwdWJsaWMgYWNjZXNzb3IgbXVsdGlwbGU6IGJvb2xlYW47XG4gIHB1YmxpYyBhY2Nlc3NvciBtdWx0aXBsZU1vZGU6ICdkZWZhdWx0JyB8ICdwZXJzaXN0ZW50JztcbiAgcHVibGljIGFjY2Vzc29yIGFjY2VwdDogc3RyaW5nO1xuICBwdWJsaWMgYWNjZXNzb3IgYWNjZXNzaWJpbGl0eUxhYmVsOiBzdHJpbmc7XG4gIHB1YmxpYyBhY2Nlc3NvciBmaWxlczogUmVhZG9ubHk8RmlsZT5bXTtcbiAgcHVibGljIG92ZXJyaWRlIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCBudWxsO1xuICBwdWJsaWMgb3ZlcnJpZGUgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKTtcbiAgcHJvdGVjdGVkIGxvYWRCdXR0b246IFNiYlNlY29uZGFyeUJ1dHRvblN0YXRpY0VsZW1lbnQ7XG4gIHByb3RlY3RlZCBsYW5ndWFnZTogU2JiTGFuZ3VhZ2VDb250cm9sbGVyO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVuZGVyVGVtcGxhdGUoaW5wdXQ6IFRlbXBsYXRlUmVzdWx0KTogVGVtcGxhdGVSZXN1bHQ7XG4gIHByb3RlY3RlZCBjcmVhdGVGaWxlTGlzdChmaWxlczogRmlsZUxpc3QpOiB2b2lkO1xuICBwcm90ZWN0ZWQgZ2V0QnV0dG9uTGFiZWwoKTogc3RyaW5nO1xuICBwdWJsaWMgZm9ybVJlc2V0Q2FsbGJhY2soKTogdm9pZDtcbiAgcHVibGljIGZvcm1TdGF0ZVJlc3RvcmVDYWxsYmFjayhzdGF0ZTogRm9ybVJlc3RvcmVTdGF0ZSB8IG51bGwsIHJlYXNvbjogRm9ybVJlc3RvcmVSZWFzb24pOiB2b2lkO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiRmlsZVNlbGVjdG9yQ29tbW9uRWxlbWVudE1peGluID0gPFQgZXh0ZW5kcyBDb25zdHJ1Y3RvcjxTYmJFbGVtZW50Pj4oXG4gIHN1cGVyY2xhc3M6IFQsXG4pOiBDb25zdHJ1Y3RvcjxTYmJGaWxlU2VsZWN0b3JDb21tb25FbGVtZW50TWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJGaWxlU2VsZWN0b3JDb21tb25FbGVtZW50XG4gICAgZXh0ZW5kcyBTYmJEaXNhYmxlZE1peGluKFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4oc3VwZXJjbGFzcykpXG4gICAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkZpbGVTZWxlY3RvckNvbW1vbkVsZW1lbnRNaXhpblR5cGU+XG4gIHtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICAgIGZpbGVjaGFuZ2VkOiAnZmlsZWNoYW5nZWQnLFxuICAgIH0gYXMgY29uc3Q7XG5cbiAgICAvKipcbiAgICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBzIG9yIG0uXG4gICAgICogQGRlZmF1bHQgJ20nIC8gJ3MnIChsZWFuKVxuICAgICAqL1xuICAgIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdzJyB8ICdtJyA9IGlzTGVhbigpID8gJ3MnIDogJ20nO1xuXG4gICAgLyoqIFdoZXRoZXIgbW9yZSB0aGFuIG9uZSBmaWxlIGNhbiBiZSBzZWxlY3RlZC4gKi9cbiAgICBAZm9yY2VUeXBlKClcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gICAgcHVibGljIGFjY2Vzc29yIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGUgbmV3bHkgYWRkZWQgZmlsZXMgc2hvdWxkIG92ZXJyaWRlIHRoZSBwcmV2aW91c2x5IGFkZGVkIG9uZXMuICovXG4gICAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnbXVsdGlwbGUtbW9kZScgfSlcbiAgICBwdWJsaWMgYWNjZXNzb3IgbXVsdGlwbGVNb2RlOiAnZGVmYXVsdCcgfCAncGVyc2lzdGVudCcgPSAnZGVmYXVsdCc7XG5cbiAgICAvKiogQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBhbGxvd2VkIHVuaXF1ZSBmaWxlIHR5cGUgc3BlY2lmaWVycy4gKi9cbiAgICBAZm9yY2VUeXBlKClcbiAgICBAcHJvcGVydHkoKVxuICAgIHB1YmxpYyBhY2Nlc3NvciBhY2NlcHQ6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgbmF0aXZlIGlucHV0IGVsZW1lbnQuICovXG4gICAgQGZvcmNlVHlwZSgpXG4gICAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWNjZXNzaWJpbGl0eS1sYWJlbCcgfSlcbiAgICBwdWJsaWMgYWNjZXNzb3IgYWNjZXNzaWJpbGl0eUxhYmVsOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBUaGUgcGF0aCBvZiB0aGUgZmlyc3Qgc2VsZWN0ZWQgZmlsZS4gRW1wdHkgc3RyaW5nICgnJykgaWYgbm8gZmlsZSBpcyBzZWxlY3RlZCAqL1xuICAgIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogZmFsc2UgfSlcbiAgICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgICB0aGlzLl9oaWRkZW5JbnB1dC52YWx1ZSA9IHZhbHVlID8/ICcnO1xuXG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHRoaXMuZmlsZXMgPSBbXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgIHJldHVybiB0aGlzLl9oaWRkZW5JbnB1dD8udmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBsaXN0IG9mIHNlbGVjdGVkIGZpbGVzLiAqL1xuICAgIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogZmFsc2UgfSlcbiAgICBwdWJsaWMgc2V0IGZpbGVzKHZhbHVlOiBSZWFkb25seTxGaWxlPltdKSB7XG4gICAgICB0aGlzLl9maWxlcyA9IHZhbHVlID8/IFtdO1xuXG4gICAgICAvLyB1cGRhdGUgdGhlIGlubmVyIGlucHV0XG4gICAgICBjb25zdCBkdDogRGF0YVRyYW5zZmVyID0gbmV3IERhdGFUcmFuc2ZlcigpO1xuICAgICAgdGhpcy5maWxlcy5mb3JFYWNoKChlOiBSZWFkb25seTxGaWxlPikgPT4gZHQuaXRlbXMuYWRkKGUpKTtcbiAgICAgIHRoaXMuX2hpZGRlbklucHV0LmZpbGVzID0gZHQuZmlsZXM7XG5cbiAgICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlKCk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgZmlsZXMoKTogUmVhZG9ubHk8RmlsZT5bXSB7XG4gICAgICByZXR1cm4gdGhpcy5fZmlsZXM7XG4gICAgfVxuICAgIHByaXZhdGUgX2ZpbGVzOiBSZWFkb25seTxGaWxlPltdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBGb3JtIHR5cGUgb2YgZWxlbWVudC5cbiAgICAgKiBAZGVmYXVsdCAnZmlsZSdcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHR5cGUoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiAnZmlsZSc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaGlkZGVuSW5wdXQhOiBIVE1MSW5wdXRFbGVtZW50O1xuICAgIHByaXZhdGUgX3N1ZmZpeGVzOiBzdHJpbmdbXSA9IFsnQicsICdrQicsICdNQicsICdHQicsICdUQiddO1xuICAgIHByaXZhdGUgX2xpdmVSZWdpb24hOiBIVE1MUGFyYWdyYXBoRWxlbWVudDtcbiAgICBwcm90ZWN0ZWQgbG9hZEJ1dHRvbiE6IFNiYlNlY29uZGFyeUJ1dHRvblN0YXRpY0VsZW1lbnQ7XG4gICAgcHJvdGVjdGVkIGxhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICAgIC8vIFNhZmFyaSBoYXMgYSBwZWN1bGlhciBiZWhhdmlvciB3aGVuIGRyYWdnaW5nIGZpbGVzIG9uIHRoZSBpbm5lciBidXR0b24gaW4gJ2Ryb3B6b25lJyB2YXJpYW50O1xuICAgIC8vIHRoaXMgd2lsbCByZXF1aXJlIGEgY291bnRlciB0byBjb3JyZWN0bHkgaGFuZGxlIHRoZSBkcmFnRW50ZXIvZHJhZ0xlYXZlLlxuICAgIHByaXZhdGUgX2NvdW50ZXI6IG51bWJlciA9IDA7XG4gICAgcHJpdmF0ZSBfZHJhZ1RhcmdldD86IEhUTUxFbGVtZW50O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHJlbmRlclRlbXBsYXRlKGlucHV0OiBUZW1wbGF0ZVJlc3VsdCk6IFRlbXBsYXRlUmVzdWx0O1xuXG4gICAgcHVibGljIG92ZXJyaWRlIGZvcm1SZXNldENhbGxiYWNrKCk6IHZvaWQge1xuICAgICAgdGhpcy5maWxlcyA9IFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBmb3JtU3RhdGVSZXN0b3JlQ2FsbGJhY2soXG4gICAgICBzdGF0ZTogRm9ybVJlc3RvcmVTdGF0ZSB8IG51bGwsXG4gICAgICBfcmVhc29uPzogRm9ybVJlc3RvcmVSZWFzb24sXG4gICAgKTogdm9pZCB7XG4gICAgICBpZiAoIXN0YXRlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZmlsZXMgPSAoc3RhdGUgYXMgRm9ybURhdGEpLmdldEFsbCh0aGlzLm5hbWUpIGFzIFJlYWRvbmx5PEZpbGU+W107XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHVwZGF0ZUZvcm1WYWx1ZSgpOiB2b2lkIHtcbiAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgdGhpcy5maWxlcy5mb3JFYWNoKChmaWxlKSA9PiBmb3JtVmFsdWUuYXBwZW5kKHRoaXMubmFtZSwgZmlsZSkpO1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc2V0Rm9ybVZhbHVlKGZvcm1WYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2hlY2tGaWxlRXF1YWxpdHkoZmlsZTE6IFJlYWRvbmx5PEZpbGU+LCBmaWxlMjogUmVhZG9ubHk8RmlsZT4pOiBib29sZWFuIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGZpbGUxLm5hbWUgPT09IGZpbGUyLm5hbWUgJiZcbiAgICAgICAgZmlsZTEuc2l6ZSA9PT0gZmlsZTIuc2l6ZSAmJlxuICAgICAgICBmaWxlMS5sYXN0TW9kaWZpZWQgPT09IGZpbGUyLmxhc3RNb2RpZmllZFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9vbkZvY3VzKCk6IHZvaWQge1xuICAgICAgaWYgKHNiYklucHV0TW9kYWxpdHlEZXRlY3Rvci5tb3N0UmVjZW50TW9kYWxpdHkgPT09ICdrZXlib2FyZCcpIHtcbiAgICAgICAgybVzdGF0ZUNvbnRyb2xsZXIodGhpcy5sb2FkQnV0dG9uKS5hZGQoJ2ZvY3VzLXZpc2libGUnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9vbkJsdXIoKTogdm9pZCB7XG4gICAgICDJtXN0YXRlQ29udHJvbGxlcih0aGlzLmxvYWRCdXR0b24pLmRlbGV0ZSgnZm9jdXMtdmlzaWJsZScpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlYWRGaWxlcyhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgIGNvbnN0IGZpbGVJbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgaWYgKGZpbGVJbnB1dC5maWxlcykge1xuICAgICAgICB0aGlzLmNyZWF0ZUZpbGVMaXN0KGZpbGVJbnB1dC5maWxlcyk7XG4gICAgICB9XG4gICAgICBmb3J3YXJkRXZlbnQoZXZlbnQsIHRoaXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVGaWxlTGlzdChmaWxlczogRmlsZUxpc3QpOiB2b2lkIHtcbiAgICAgIGNvbnN0IGZpbGVBcnJheSA9IEFycmF5LmZyb20oZmlsZXMpO1xuICAgICAgaWYgKFxuICAgICAgICAoIXRoaXMubXVsdGlwbGUgJiYgZmlsZXMubGVuZ3RoID4gMSkgfHxcbiAgICAgICAgKHRoaXMuYWNjZXB0ICYmXG4gICAgICAgICAgZmlsZUFycmF5LnNvbWUoXG4gICAgICAgICAgICAoZmlsZSkgPT4gIXRoaXMuYWNjZXB0LnNwbGl0KCcsJykuc29tZSgoYSkgPT4gZmlsZS5uYW1lLmVuZHNXaXRoKGEudHJpbSgpKSksXG4gICAgICAgICAgKSlcbiAgICAgICkge1xuICAgICAgICAvLyBJZiBtdWx0aXBsZSBmaWxlcyBhcmUgc2VsZWN0ZWQgYnV0IHRoZSBzZWxlY3RvciBpcyBub3QgaW4gbXVsdGlwbGUgbW9kZSxcbiAgICAgICAgLy8gaWdub3JlIHRoZSBzZWxlY3Rpb24gKGxpa2UgbmF0aXZlIGJlaGF2aW9yKS5cbiAgICAgICAgLy8gSWYgdGhlIGFjY2VwdCBhdHRyaWJ1dGUgaXMgc2V0LCBjaGVjayBpZiB0aGUgc2VsZWN0ZWQgZmlsZXMgbWF0Y2ggdGhlIGFsbG93ZWQgdHlwZXMuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLm11bHRpcGxlIHx8IHRoaXMubXVsdGlwbGVNb2RlICE9PSAncGVyc2lzdGVudCcgfHwgdGhpcy5maWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5maWxlcyA9IGZpbGVBcnJheTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmlsZXMgPSBmaWxlQXJyYXlcbiAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgLy8gUmVtb3ZlIGR1cGxpY2F0ZXNcbiAgICAgICAgICAgIChuZXdGaWxlOiBSZWFkb25seTxGaWxlPik6IGJvb2xlYW4gPT5cbiAgICAgICAgICAgICAgdGhpcy5maWxlcyEuZmluZEluZGV4KChvbGRGaWxlOiBSZWFkb25seTxGaWxlPikgPT5cbiAgICAgICAgICAgICAgICB0aGlzLl9jaGVja0ZpbGVFcXVhbGl0eShuZXdGaWxlLCBvbGRGaWxlKSxcbiAgICAgICAgICAgICAgKSA9PT0gLTEsXG4gICAgICAgICAgKVxuICAgICAgICAgIC5jb25jYXQodGhpcy5maWxlcyk7XG4gICAgICB9XG4gICAgICB0aGlzLl91cGRhdGVBMTF5TGl2ZVJlZ2lvbigpO1xuICAgICAgdGhpcy5fZGlzcGF0Y2hGaWxlQ2hhbmdlZEV2ZW50KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEJ1dHRvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdGhpcy5tdWx0aXBsZVxuICAgICAgICA/IGkxOG5GaWxlU2VsZWN0b3JCdXR0b25MYWJlbE11bHRpcGxlW3RoaXMubGFuZ3VhZ2UuY3VycmVudF1cbiAgICAgICAgOiBpMThuRmlsZVNlbGVjdG9yQnV0dG9uTGFiZWxbdGhpcy5sYW5ndWFnZS5jdXJyZW50XTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZW1vdmVGaWxlKGZpbGU6IFJlYWRvbmx5PEZpbGU+KTogdm9pZCB7XG4gICAgICB0aGlzLmZpbGVzID0gdGhpcy5maWxlcy5maWx0ZXIoKGY6IFJlYWRvbmx5PEZpbGU+KSA9PiAhdGhpcy5fY2hlY2tGaWxlRXF1YWxpdHkoZmlsZSwgZikpO1xuICAgICAgdGhpcy5fdXBkYXRlQTExeUxpdmVSZWdpb24oKTtcblxuICAgICAgLy8gRGlzcGF0Y2ggbmF0aXZlIGV2ZW50cyBhcyBpZiB0aGUgcmVzZXQgaXMgZG9uZSB2aWEgdGhlIGZpbGUgc2VsZWN0aW9uIHdpbmRvdy5cbiAgICAgIC8qKiBUaGUgaW5wdXQgZXZlbnQgZmlyZXMgd2hlbiB0aGUgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZCBhcyBhIGRpcmVjdCByZXN1bHQgb2YgYSB1c2VyIGFjdGlvbi4gKi9cbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgbmV3IElucHV0RXZlbnQoJ2lucHV0Jywge1xuICAgICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgICAgY29tcG9zZWQ6IHRydWUsXG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgICAgLyoqXG4gICAgICAgKiBUaGUgY2hhbmdlIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIHVzZXIgbW9kaWZpZXMgdGhlIGVsZW1lbnQncyB2YWx1ZS5cbiAgICAgICAqIFVubGlrZSB0aGUgaW5wdXQgZXZlbnQsIHRoZSBjaGFuZ2UgZXZlbnQgaXMgbm90IG5lY2Vzc2FyaWx5IGZpcmVkXG4gICAgICAgKiBmb3IgZWFjaCBhbHRlcmF0aW9uIHRvIGFuIGVsZW1lbnQncyB2YWx1ZS5cbiAgICAgICAqL1xuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgIHRoaXMuX2Rpc3BhdGNoRmlsZUNoYW5nZWRFdmVudCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Rpc3BhdGNoRmlsZUNoYW5nZWRFdmVudCgpOiB2b2lkIHtcbiAgICAgIC8qKlxuICAgICAgICogQHR5cGUge0N1c3RvbUV2ZW50PFJlYWRvbmx5PEZpbGU+W10+fVxuICAgICAgICogQW4gZXZlbnQgd2hpY2ggaXMgZW1pdHRlZCBlYWNoIHRpbWUgdGhlIGZpbGUgbGlzdCBjaGFuZ2VzLlxuICAgICAgICovXG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoXG4gICAgICAgIG5ldyBDdXN0b21FdmVudDxSZWFkb25seTxGaWxlPltdPignZmlsZWNoYW5nZWQnLCB7XG4gICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICBjb21wb3NlZDogdHJ1ZSxcbiAgICAgICAgICBkZXRhaWw6IHRoaXMuZmlsZXMsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQ2FsY3VsYXRlcyB0aGUgY29ycmVjdCB1bml0IGZvciB0aGUgZmlsZSdzIHNpemUuICovXG4gICAgcHJpdmF0ZSBfZm9ybWF0RmlsZVNpemUoc2l6ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgIGNvbnN0IGk6IG51bWJlciA9IE1hdGguZmxvb3IoTWF0aC5sb2coc2l6ZSkgLyBNYXRoLmxvZygxMDI0KSk7XG4gICAgICByZXR1cm4gYCR7KHNpemUgLyBNYXRoLnBvdygxMDI0LCBpKSkudG9GaXhlZCgwKX0gJHt0aGlzLl9zdWZmaXhlc1tpXX1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3VwZGF0ZUExMXlMaXZlUmVnaW9uKCk6IHZvaWQge1xuICAgICAgdGhpcy5fbGl2ZVJlZ2lvbi5pbm5lclRleHQgPSBpMThuRmlsZVNlbGVjdG9yQ3VycmVudGx5U2VsZWN0ZWQodGhpcy5maWxlcy5tYXAoKGUpID0+IGUubmFtZSkpW1xuICAgICAgICB0aGlzLmxhbmd1YWdlLmN1cnJlbnRcbiAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVuZGVyRmlsZUxpc3QoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgICAgY29uc3QgVEFHX05BTUU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPVxuICAgICAgICB0aGlzLmZpbGVzLmxlbmd0aCA+IDFcbiAgICAgICAgICA/IHsgV1JBUFBFUjogJ3VsJywgRUxFTUVOVDogJ2xpJyB9XG4gICAgICAgICAgOiB7IFdSQVBQRVI6ICdkaXYnLCBFTEVNRU5UOiAnc3BhbicgfTtcblxuICAgICAgLyogZXNsaW50LWRpc2FibGUgbGl0L2JpbmRpbmctcG9zaXRpb25zICovXG4gICAgICByZXR1cm4gaHRtbGBcbiAgICAgIDwke3Vuc2FmZVN0YXRpYyhUQUdfTkFNRS5XUkFQUEVSKX0gY2xhc3M9J3NiYi1maWxlLXNlbGVjdG9yX19maWxlLWxpc3QnPlxuICAgICAgICAke3RoaXMuZmlsZXMubWFwKFxuICAgICAgICAgIChmaWxlOiBSZWFkb25seTxGaWxlPikgPT4gaHRtbGBcbiAgICAgICAgICAgIDwke3Vuc2FmZVN0YXRpYyhUQUdfTkFNRS5FTEVNRU5UKX0gY2xhc3M9J3NiYi1maWxlLXNlbGVjdG9yX19maWxlJz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0nc2JiLWZpbGUtc2VsZWN0b3JfX2ZpbGUtZGV0YWlscyc+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0nc2JiLWZpbGUtc2VsZWN0b3JfX2ZpbGUtbmFtZSc+JHtmaWxlLm5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9J3NiYi1maWxlLXNlbGVjdG9yX19maWxlLXNpemUnPiR7dGhpcy5fZm9ybWF0RmlsZVNpemUoZmlsZS5zaXplKX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c2JiLXNlY29uZGFyeS1idXR0b25cbiAgICAgICAgICAgICAgICBzaXplPScke3RoaXMuc2l6ZX0nXG4gICAgICAgICAgICAgICAgaWNvbi1uYW1lPSd0cmFzaC1zbWFsbCdcbiAgICAgICAgICAgICAgICBAY2xpY2s9JyR7KCkgPT4gdGhpcy5fcmVtb3ZlRmlsZShmaWxlKX0nXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD0nJHtgJHtpMThuRmlsZVNlbGVjdG9yRGVsZXRlRmlsZVt0aGlzLmxhbmd1YWdlLmN1cnJlbnRdfSAtICR7ZmlsZS5uYW1lfWB9J1xuICAgICAgICAgICAgICA+PC9zYmItc2Vjb25kYXJ5LWJ1dHRvbj5cbiAgICAgICAgICAgIDwvJHt1bnNhZmVTdGF0aWMoVEFHX05BTUUuRUxFTUVOVCl9PmAsXG4gICAgICAgICl9XG4gICAgICA8LyR7dW5zYWZlU3RhdGljKFRBR19OQU1FLldSQVBQRVIpfT5cbiAgICBgO1xuICAgICAgLyogZXNsaW50LWVuYWJsZSBsaXQvYmluZGluZy1wb3NpdGlvbnMgKi9cbiAgICB9XG5cbiAgICBwcml2YXRlIF9vbkRyYWdFbnRlcihldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICB0aGlzLl9jb3VudGVyKys7XG4gICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuZm9ybURpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuX3NldERyYWdTdGF0ZShldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQsIHRydWUpO1xuICAgICAgICB0aGlzLl9ibG9ja0V2ZW50KGV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9vbkRyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICB0aGlzLl9jb3VudGVyLS07XG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLmRpc2FibGVkICYmXG4gICAgICAgICF0aGlzLmZvcm1EaXNhYmxlZCAmJlxuICAgICAgICBldmVudC50YXJnZXQgPT09IHRoaXMuX2RyYWdUYXJnZXQgJiZcbiAgICAgICAgdGhpcy5fY291bnRlciA9PT0gMFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuX3NldERyYWdTdGF0ZSgpO1xuICAgICAgICB0aGlzLl9ibG9ja0V2ZW50KGV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9vbkZpbGVEcm9wKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgIHRoaXMuX2NvdW50ZXIgPSAwO1xuICAgICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLmZvcm1EaXNhYmxlZCkge1xuICAgICAgICB0aGlzLl9zZXREcmFnU3RhdGUoKTtcbiAgICAgICAgdGhpcy5fYmxvY2tFdmVudChldmVudCk7XG4gICAgICAgIHRoaXMuY3JlYXRlRmlsZUxpc3QoZXZlbnQuZGF0YVRyYW5zZmVyIS5maWxlcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYmxvY2tFdmVudChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0RHJhZ1N0YXRlKFxuICAgICAgZHJhZ1RhcmdldDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4gICAgICBpc0RyYWdFbnRlcjogYm9vbGVhbiA9IGZhbHNlLFxuICAgICk6IHZvaWQge1xuICAgICAgdGhpcy5fZHJhZ1RhcmdldCA9IGRyYWdUYXJnZXQ7XG4gICAgICB0aGlzLnRvZ2dsZVN0YXRlKCdhY3RpdmUnLCBpc0RyYWdFbnRlcik7XG4gICAgICDJtXN0YXRlQ29udHJvbGxlcih0aGlzLmxvYWRCdXR0b24pLnRvZ2dsZSgnYWN0aXZlJywgaXNEcmFnRW50ZXIpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgICAgY29uc3QgYXJpYUxhYmVsID0gdGhpcy5hY2Nlc3NpYmlsaXR5TGFiZWxcbiAgICAgICAgPyBgJHt0aGlzLmdldEJ1dHRvbkxhYmVsKCl9IC0gJHt0aGlzLmFjY2Vzc2liaWxpdHlMYWJlbH1gXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGh0bWxgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItZmlsZS1zZWxlY3RvclwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic2JiLWZpbGUtc2VsZWN0b3JfX2lucHV0LWNvbnRhaW5lclwiXG4gICAgICAgICAgICBAZHJhZ2VudGVyPSR7dGhpcy5fb25EcmFnRW50ZXJ9XG4gICAgICAgICAgICBAZHJhZ292ZXI9JHt0aGlzLl9ibG9ja0V2ZW50fVxuICAgICAgICAgICAgQGRyYWdsZWF2ZT0ke3RoaXMuX29uRHJhZ0xlYXZlfVxuICAgICAgICAgICAgQGRyb3A9JHt0aGlzLl9vbkZpbGVEcm9wfVxuICAgICAgICAgID5cbiAgICAgICAgICAgICR7dGhpcy5yZW5kZXJUZW1wbGF0ZShcbiAgICAgICAgICAgICAgaHRtbGA8aW5wdXRcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi1maWxlLXNlbGVjdG9yX192aXN1YWxseS1oaWRkZW5cIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgICAgICA/ZGlzYWJsZWQ9XCIke3RoaXMuZGlzYWJsZWQgfHwgdGhpcy5mb3JtRGlzYWJsZWR9XCJcbiAgICAgICAgICAgICAgICA/bXVsdGlwbGU9XCIke3RoaXMubXVsdGlwbGV9XCJcbiAgICAgICAgICAgICAgICBhY2NlcHQ9XCIke3RoaXMuYWNjZXB0IHx8IG5vdGhpbmd9XCJcbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiJHthcmlhTGFiZWwgfHwgbm90aGluZ31cIlxuICAgICAgICAgICAgICAgIEBjaGFuZ2U9XCIke3RoaXMuX3JlYWRGaWxlc31cIlxuICAgICAgICAgICAgICAgIEBmb2N1cz1cIiR7dGhpcy5fb25Gb2N1c31cIlxuICAgICAgICAgICAgICAgIEBibHVyPVwiJHt0aGlzLl9vbkJsdXJ9XCJcbiAgICAgICAgICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9oaWRkZW5JbnB1dCA9IGVsIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIC8+YCxcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHBcbiAgICAgICAgICAgIHJvbGU9XCJzdGF0dXNcIlxuICAgICAgICAgICAgY2xhc3M9XCJzYmItZmlsZS1zZWxlY3Rvcl9fdmlzdWFsbHktaGlkZGVuXCJcbiAgICAgICAgICAgICR7cmVmKChwPzogRWxlbWVudCkgPT4gKHRoaXMuX2xpdmVSZWdpb24gPSBwIGFzIEhUTUxQYXJhZ3JhcGhFbGVtZW50KSl9XG4gICAgICAgICAgPjwvcD5cbiAgICAgICAgICAke3RoaXMuZmlsZXMubGVuZ3RoID4gMCA/IHRoaXMuX3JlbmRlckZpbGVMaXN0KCkgOiBub3RoaW5nfVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItZmlsZS1zZWxlY3Rvcl9fZXJyb3JcIj5cbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJlcnJvclwiPjwvc2xvdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICBgO1xuICAgIH1cbiAgfVxuICByZXR1cm4gU2JiRmlsZVNlbGVjdG9yQ29tbW9uRWxlbWVudCBhcyB1bmtub3duIGFzIENvbnN0cnVjdG9yPFNiYkZpbGVTZWxlY3RvckNvbW1vbkVsZW1lbnRNaXhpblR5cGU+ICZcbiAgICBUO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaUNBLDBCQUEwQixRQUFRO0FBRWxDLElBQWEsMEJBQTBCLFVBQVUsNkJBQThCO0FBdUIvRSxJQUFhLHFDQUNYLGVBQzBEO0FBNlUxRCxlQTVVMkM7b0JBQ2pDLGlCQUFpQix1QkFBdUIsV0FBVyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O2VBRC9DLHFDQUNMLFlBQW9EOzs7QUFXZixVQUFBLHlCQVpoQyxrQkFBQSxNQUFBLDJCQUE0QixFQUFBLGtCQUFBLE1BQUEsb0JBWXNCLFFBQVEsR0FBRyxNQUFNLElBQUc7QUFLbkUsVUFBQSw2QkFBQSxrQkFBQSxNQUFBLHdCQUFBLEVBQUEsa0JBQUEsTUFBQSx3QkFBb0IsTUFBSztBQUl6QixVQUFBLGlDQUFBLGtCQUFBLE1BQUEsNEJBQUEsRUFBQSxrQkFBQSxNQUFBLDRCQUF5QyxVQUFTO0FBS2xELFVBQUEsMkJBQUEsa0JBQUEsTUFBQSxnQ0FBQSxFQUFBLGtCQUFBLE1BQUEsc0JBQWlCLEdBQUU7QUFLbkIsVUFBQSx1Q0FBQSxrQkFBQSxNQUFBLDBCQUFBLEVBQUEsa0JBQUEsTUFBQSxrQ0FBNkIsR0FBRTtBQThCdkMsU0FBQSxVQUFNLGtCQUFBLE1BQUEsc0NBQUEsRUFBcUIsRUFBRTtBQVc3QixTQUFBLFlBQXNCO0tB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
@@ -1,112 +0,0 @@
1
- import { __esDecorate, __runInitializers } from "tslib";
2
- import { 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 { boxSizingStyles } from "./core/styles.js";
7
- import { html as html$1 } from "lit/static-html.js";
8
- import { SbbSecondaryButtonStaticElement } from "./button.pure.js";
9
- import { i18nFileSelectorSubtitleLabel, i18nFileSelectorSubtitleLabelMultiple } from "./core/i18n.js";
10
- import "./icon.js";
11
- import { ref } from "lit/directives/ref.js";
12
- import { SbbFileSelectorCommonElementMixin, fileSelectorCommonStyle } from "./file-selector/common/file-selector-common.js";
13
- //#region src/elements/file-selector/file-selector-dropzone/file-selector-dropzone.scss?inline
14
- var file_selector_dropzone_default = ".sbb-file-selector__dropzone-area {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: var(--sbb-spacing-responsive-s);\n background-color: var(--sbb-file-selector-background-color);\n border: var(--sbb-border-width-1x) dashed var(--sbb-file-selector-border-color);\n border-radius: var(--sbb-border-radius-4x);\n transition-duration: var(--sbb-file-selector-transition-duration);\n transition-timing-function: var(--sbb-file-selector-transition-easing-function);\n transition-property: background-color, border-color;\n}\n\n.sbb-file-selector__dropzone-area--icon {\n color: var(--sbb-file-selector-color);\n line-height: 0;\n}\n\n.sbb-file-selector__dropzone-area--title {\n font-weight: bold;\n --sbb-title-font-size: var(--sbb-title-font-size-level-6-lean, var(--sbb-heading-font-size-6));\n --sbb-title-line-height: var(--sbb-typo-line-height-text);\n margin-block: var(--sbb-title-margin-block, 0);\n margin-inline: 0;\n font-family: var(--sbb-typo-font-family);\n font-weight: bold;\n line-height: var(--sbb-title-line-height, var(--sbb-typo-line-height-heading));\n letter-spacing: var(--sbb-typo-letter-spacing-heading);\n font-size: var(--sbb-title-font-size);\n text-align: center;\n color: var(--sbb-file-selector-color);\n}\n\n.sbb-file-selector__dropzone-area--subtitle {\n --sbb-text-font-size: var(--sbb-text-font-size-xs);\n font-family: var(--sbb-typo-font-family);\n font-weight: normal;\n line-height: var(--sbb-typo-line-height-text);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n font-size: var(--sbb-text-font-size);\n text-align: center;\n color: var(--sbb-file-selector-subtitle-color);\n margin-block-end: var(--sbb-spacing-fixed-4x);\n}";
15
- //#endregion
16
- //#region src/elements/file-selector/file-selector-dropzone/file-selector-dropzone.component.ts
17
- SbbSecondaryButtonStaticElement.define();
18
- /**
19
- * It allows to select one or more file from storage devices via button click or drag and drop, and display them.
20
- *
21
- * @slot error - Use this to provide a `sbb-error` to show an error message.
22
- */
23
- var SbbFileSelectorDropzoneElement = (() => {
24
- let _classSuper = SbbFileSelectorCommonElementMixin(SbbElement);
25
- let _titleContent_decorators;
26
- let _titleContent_initializers = [];
27
- let _titleContent_extraInitializers = [];
28
- return class SbbFileSelectorDropzoneElement extends _classSuper {
29
- static {
30
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
31
- _titleContent_decorators = [forceType(), property({ attribute: "title-content" })];
32
- __esDecorate(this, null, _titleContent_decorators, {
33
- kind: "accessor",
34
- name: "titleContent",
35
- static: false,
36
- private: false,
37
- access: {
38
- has: (obj) => "titleContent" in obj,
39
- get: (obj) => obj.titleContent,
40
- set: (obj, value) => {
41
- obj.titleContent = value;
42
- }
43
- },
44
- metadata: _metadata
45
- }, _titleContent_initializers, _titleContent_extraInitializers);
46
- if (_metadata) Object.defineProperty(this, Symbol.metadata, {
47
- enumerable: true,
48
- configurable: true,
49
- writable: true,
50
- value: _metadata
51
- });
52
- }
53
- static {
54
- this.elementName = "sbb-file-selector-dropzone";
55
- }
56
- static {
57
- this.styles = [
58
- boxSizingStyles,
59
- fileSelectorCommonStyle,
60
- unsafeCSS(file_selector_dropzone_default)
61
- ];
62
- }
63
- static {
64
- this.events = { filechanged: "filechanged" };
65
- }
66
- #titleContent_accessor_storage = __runInitializers(this, _titleContent_initializers, "");
67
- /** The title displayed in `dropzone` variant. */
68
- get titleContent() {
69
- return this.#titleContent_accessor_storage;
70
- }
71
- set titleContent(value) {
72
- this.#titleContent_accessor_storage = value;
73
- }
74
- renderTemplate(input) {
75
- return html$1`
76
- <label>
77
- <span class="sbb-file-selector__dropzone-area">
78
- <span class="sbb-file-selector__dropzone-area--icon">
79
- <sbb-icon
80
- name=${this.size === "m" ? "folder-open-medium" : "folder-open-small"}
81
- ></sbb-icon>
82
- </span>
83
- <span class="sbb-file-selector__dropzone-area--title">${this.titleContent}</span>
84
- <span class="sbb-file-selector__dropzone-area--subtitle">
85
- ${this.multiple ? i18nFileSelectorSubtitleLabelMultiple[this.language.current] : i18nFileSelectorSubtitleLabel[this.language.current]}
86
- </span>
87
- <span class="sbb-file-selector__dropzone-area--button">
88
- <sbb-secondary-button-static
89
- size=${this.size}
90
- ?disabled=${this.disabled || this.formDisabled}
91
- ${ref((el) => {
92
- this.loadButton = el;
93
- })}
94
- >
95
- ${this.getButtonLabel()}
96
- </sbb-secondary-button-static>
97
- </span>
98
- </span>
99
- ${input}
100
- </label>
101
- `;
102
- }
103
- constructor() {
104
- super(...arguments);
105
- __runInitializers(this, _titleContent_extraInitializers);
106
- }
107
- };
108
- })();
109
- //#endregion
110
- export { SbbFileSelectorDropzoneElement as t };
111
-
112
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zZWxlY3Rvci1kcm9wem9uZS5jb21wb25lbnQtQi1jQk80YmYuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2ZpbGUtc2VsZWN0b3IvZmlsZS1zZWxlY3Rvci1kcm9wem9uZS9maWxlLXNlbGVjdG9yLWRyb3B6b25lLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2ZpbGUtc2VsZWN0b3IvZmlsZS1zZWxlY3Rvci1kcm9wem9uZS9maWxlLXNlbGVjdG9yLWRyb3B6b25lLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG4uc2JiLWZpbGUtc2VsZWN0b3JfX2Ryb3B6b25lLWFyZWEge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLXMpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItZmlsZS1zZWxlY3Rvci1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgYm9yZGVyOiB2YXIoLS1zYmItYm9yZGVyLXdpZHRoLTF4KSBkYXNoZWQgdmFyKC0tc2JiLWZpbGUtc2VsZWN0b3ItYm9yZGVyLWNvbG9yKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2JiLWJvcmRlci1yYWRpdXMtNHgpO1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1zYmItZmlsZS1zZWxlY3Rvci10cmFuc2l0aW9uLWR1cmF0aW9uKTtcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLXNiYi1maWxlLXNlbGVjdG9yLXRyYW5zaXRpb24tZWFzaW5nLWZ1bmN0aW9uKTtcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvciwgYm9yZGVyLWNvbG9yO1xufVxuXG4uc2JiLWZpbGUtc2VsZWN0b3JfX2Ryb3B6b25lLWFyZWEtLWljb24ge1xuICBjb2xvcjogdmFyKC0tc2JiLWZpbGUtc2VsZWN0b3ItY29sb3IpO1xuICBsaW5lLWhlaWdodDogMDtcbn1cblxuLnNiYi1maWxlLXNlbGVjdG9yX19kcm9wem9uZS1hcmVhLS10aXRsZSB7XG4gIEBpbmNsdWRlIHNiYi50ZXh0LS1ib2xkO1xuICBAaW5jbHVkZSBzYmIudGl0bGUtNigkZXhjbHVkZS1zcGFjaW5nOiB0cnVlKTtcblxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiB2YXIoLS1zYmItZmlsZS1zZWxlY3Rvci1jb2xvcik7XG59XG5cbi5zYmItZmlsZS1zZWxlY3Rvcl9fZHJvcHpvbmUtYXJlYS0tc3VidGl0bGUge1xuICBAaW5jbHVkZSBzYmIudGV4dC14cy0tcmVndWxhcjtcblxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiB2YXIoLS1zYmItZmlsZS1zZWxlY3Rvci1zdWJ0aXRsZS1jb2xvcik7XG4gIG1hcmdpbi1ibG9jay1lbmQ6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTR4KTtcbn1cbiIsImltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIHR5cGUgVGVtcGxhdGVSZXN1bHQsIHVuc2FmZUNTUyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5pbXBvcnQgeyBodG1sIH0gZnJvbSAnbGl0L3N0YXRpYy1odG1sLmpzJztcblxuaW1wb3J0IHsgU2JiU2Vjb25kYXJ5QnV0dG9uU3RhdGljRWxlbWVudCB9IGZyb20gJy4uLy4uL2J1dHRvbi5wdXJlLnRzJztcbmltcG9ydCB7IFNiYkVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UtZWxlbWVudHMudHMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLnRzJztcbmltcG9ydCB7XG4gIGkxOG5GaWxlU2VsZWN0b3JTdWJ0aXRsZUxhYmVsLFxuICBpMThuRmlsZVNlbGVjdG9yU3VidGl0bGVMYWJlbE11bHRpcGxlLFxufSBmcm9tICcuLi8uLi9jb3JlL2kxOG4udHMnO1xuaW1wb3J0IHsgYm94U2l6aW5nU3R5bGVzIH0gZnJvbSAnLi4vLi4vY29yZS9zdHlsZXMudHMnO1xuaW1wb3J0IHtcbiAgZmlsZVNlbGVjdG9yQ29tbW9uU3R5bGUsXG4gIFNiYkZpbGVTZWxlY3RvckNvbW1vbkVsZW1lbnRNaXhpbixcbn0gZnJvbSAnLi4vY29tbW9uL2ZpbGUtc2VsZWN0b3ItY29tbW9uLnRzJztcblxuaW1wb3J0ICcuLi8uLi9pY29uLnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZmlsZS1zZWxlY3Rvci1kcm9wem9uZS5zY3NzP2lubGluZSc7XG5cbi8vIFRPRE8oYnJlYWtpbmctY2hhbmdlKTogUmVtb3ZlIGNhbGwgdG8gZGVmaW5lLlxuU2JiU2Vjb25kYXJ5QnV0dG9uU3RhdGljRWxlbWVudC5kZWZpbmUoKTtcblxuLyoqXG4gKiBJdCBhbGxvd3MgdG8gc2VsZWN0IG9uZSBvciBtb3JlIGZpbGUgZnJvbSBzdG9yYWdlIGRldmljZXMgdmlhIGJ1dHRvbiBjbGljayBvciBkcmFnIGFuZCBkcm9wLCBhbmQgZGlzcGxheSB0aGVtLlxuICpcbiAqIEBzbG90IGVycm9yIC0gVXNlIHRoaXMgdG8gcHJvdmlkZSBhIGBzYmItZXJyb3JgIHRvIHNob3cgYW4gZXJyb3IgbWVzc2FnZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkZpbGVTZWxlY3RvckRyb3B6b25lRWxlbWVudCBleHRlbmRzIFNiYkZpbGVTZWxlY3RvckNvbW1vbkVsZW1lbnRNaXhpbihTYmJFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItZmlsZS1zZWxlY3Rvci1kcm9wem9uZSc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtcbiAgICBib3hTaXppbmdTdHlsZXMsXG4gICAgZmlsZVNlbGVjdG9yQ29tbW9uU3R5bGUsXG4gICAgdW5zYWZlQ1NTKHN0eWxlKSxcbiAgXTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgZmlsZWNoYW5nZWQ6ICdmaWxlY2hhbmdlZCcsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqIFRoZSB0aXRsZSBkaXNwbGF5ZWQgaW4gYGRyb3B6b25lYCB2YXJpYW50LiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAndGl0bGUtY29udGVudCcgfSlcbiAgcHVibGljIGFjY2Vzc29yIHRpdGxlQ29udGVudDogc3RyaW5nID0gJyc7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlclRlbXBsYXRlKGlucHV0OiBUZW1wbGF0ZVJlc3VsdCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxsYWJlbD5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItZmlsZS1zZWxlY3Rvcl9fZHJvcHpvbmUtYXJlYVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLWZpbGUtc2VsZWN0b3JfX2Ryb3B6b25lLWFyZWEtLWljb25cIj5cbiAgICAgICAgICAgIDxzYmItaWNvblxuICAgICAgICAgICAgICBuYW1lPSR7dGhpcy5zaXplID09PSAnbScgPyAnZm9sZGVyLW9wZW4tbWVkaXVtJyA6ICdmb2xkZXItb3Blbi1zbWFsbCd9XG4gICAgICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItZmlsZS1zZWxlY3Rvcl9fZHJvcHpvbmUtYXJlYS0tdGl0bGVcIj4ke3RoaXMudGl0bGVDb250ZW50fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1maWxlLXNlbGVjdG9yX19kcm9wem9uZS1hcmVhLS1zdWJ0aXRsZVwiPlxuICAgICAgICAgICAgJHt0aGlzLm11bHRpcGxlXG4gICAgICAgICAgICAgID8gaTE4bkZpbGVTZWxlY3RvclN1YnRpdGxlTGFiZWxNdWx0aXBsZVt0aGlzLmxhbmd1YWdlLmN1cnJlbnRdXG4gICAgICAgICAgICAgIDogaTE4bkZpbGVTZWxlY3RvclN1YnRpdGxlTGFiZWxbdGhpcy5sYW5ndWFnZS5jdXJyZW50XX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItZmlsZS1zZWxlY3Rvcl9fZHJvcHpvbmUtYXJlYS0tYnV0dG9uXCI+XG4gICAgICAgICAgICA8c2JiLXNlY29uZGFyeS1idXR0b24tc3RhdGljXG4gICAgICAgICAgICAgIHNpemU9JHt0aGlzLnNpemV9XG4gICAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMuZGlzYWJsZWQgfHwgdGhpcy5mb3JtRGlzYWJsZWR9XG4gICAgICAgICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRCdXR0b24gPSBlbCBhcyBTYmJTZWNvbmRhcnlCdXR0b25TdGF0aWNFbGVtZW50O1xuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgJHt0aGlzLmdldEJ1dHRvbkxhYmVsKCl9XG4gICAgICAgICAgICA8L3NiYi1zZWNvbmRhcnktYnV0dG9uLXN0YXRpYz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgJHtpbnB1dH1cbiAgICAgIDwvbGFiZWw+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWZpbGUtc2VsZWN0b3ItZHJvcHpvbmUnOiBTYmJGaWxlU2VsZWN0b3JEcm9wem9uZUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQ3VCQSxnQ0FBZ0MsUUFBUTs7Ozs7O0lBTzNCLHdDQUE4QjttQkFBUyxrQ0FBa0MsV0FBVzs7OztjQUFwRix1Q0FBdUMsWUFBNkM7OzsrQkFZOUYsV0FBVyxFQUNYLFNBQVMsRUFBRSxXQUFXLGlCQUFpQixDQUFDLENBQUE7QUFDekMsZ0JBQUEsTUFBQSxNQUFBLDBCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsa0JBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBWSxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVosZUFBWTs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLDRCQUFBLGdDQUFBOzs7Ozs7Ozs7QUFiSSxRQUFBLGNBQXNCOzs7QUFDL0IsUUFBQSxTQUF5QjtJQUM5QztJQUNBO0lBQ0EsVUFBVSwrQkFBQTtJQUNYOzs7QUFDc0IsUUFBQSxTQUFTLEVBQzlCLGFBQWEsZUFDTDs7RUFLVixpQ0FBQSxrQkFBQSxNQUFBLDRCQUF1QyxHQUFFOztFQUF6QyxJQUFnQixlQUFZO0FBQUEsVUFBQSxNQUFBOztFQUE1QixJQUFnQixhQUFZLE9BQUE7QUFBQSxTQUFBLGdDQUFBOztFQUVULGVBQWUsT0FBcUI7QUFDckQsVUFBTyxNQUFJOzs7OztxQkFLTSxLQUFLLFNBQVMsTUFBTSx1QkFBdUIsb0JBQUE7OztrRUFHRSxLQUFLLGFBQVk7O2NBRXJFLEtBQUssV0FDSCxzQ0FBc0MsS0FBSyxTQUFTLFdBQ3BELDhCQUE4QixLQUFLLFNBQVMsU0FBQTs7OztxQkFJdkMsS0FBSyxLQUFBOzBCQUNBLEtBQUssWUFBWSxLQUFLLGFBQUE7Z0JBQ2hDLEtBQUssT0FBc0I7QUFDM0IsU0FBSyxhQUFhO0tBQ2xCLENBQUE7O2dCQUVBLEtBQUssZ0JBQWdCLENBQUE7Ozs7VUFJM0IsTUFBQSJ9