@sbb-esta/lyne-elements 1.15.1 → 2.0.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 (680) hide show
  1. package/README.md +6 -6
  2. package/accordion/accordion.d.ts +4 -1
  3. package/accordion/accordion.d.ts.map +1 -1
  4. package/accordion.js +31 -22
  5. package/action-group/action-group.d.ts +6 -4
  6. package/action-group/action-group.d.ts.map +1 -1
  7. package/action-group.js +20 -17
  8. package/alert/alert/alert.d.ts +7 -23
  9. package/alert/alert/alert.d.ts.map +1 -1
  10. package/alert/alert-group/alert-group.d.ts +0 -4
  11. package/alert/alert-group/alert-group.d.ts.map +1 -1
  12. package/alert/alert-group.js +46 -47
  13. package/alert/alert.js +74 -132
  14. package/animation.css +4 -8
  15. package/autocomplete/autocomplete-base-element.d.ts +7 -6
  16. package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  17. package/autocomplete/autocomplete.d.ts +0 -1
  18. package/autocomplete/autocomplete.d.ts.map +1 -1
  19. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +0 -1
  20. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  21. package/autocomplete-grid/autocomplete-grid-button.js +11 -11
  22. package/autocomplete-grid/autocomplete-grid.js +0 -3
  23. package/autocomplete.js +68 -67
  24. package/button/accent-button/accent-button.d.ts +19 -0
  25. package/button/accent-button/accent-button.d.ts.map +1 -0
  26. package/button/accent-button-link/accent-button-link.d.ts +19 -0
  27. package/button/accent-button-link/accent-button-link.d.ts.map +1 -0
  28. package/button/accent-button-link.d.ts +2 -0
  29. package/button/accent-button-link.d.ts.map +1 -0
  30. package/button/accent-button-link.js +17 -0
  31. package/button/accent-button-static/accent-button-static.d.ts +19 -0
  32. package/button/accent-button-static/accent-button-static.d.ts.map +1 -0
  33. package/button/accent-button-static.d.ts +2 -0
  34. package/button/accent-button-static.d.ts.map +1 -0
  35. package/button/accent-button-static.js +17 -0
  36. package/button/accent-button.d.ts +2 -0
  37. package/button/accent-button.d.ts.map +1 -0
  38. package/button/accent-button.js +17 -0
  39. package/button/common/button-common.d.ts.map +1 -1
  40. package/button/common.d.ts.map +1 -1
  41. package/button/common.js +20 -16
  42. package/button/mini-button/mini-button.d.ts +4 -3
  43. package/button/mini-button/mini-button.d.ts.map +1 -1
  44. package/button/mini-button-group/mini-button-group.d.ts +4 -1
  45. package/button/mini-button-group/mini-button-group.d.ts.map +1 -1
  46. package/button/mini-button-group.js +12 -8
  47. package/button/mini-button.d.ts +0 -1
  48. package/button/mini-button.d.ts.map +1 -1
  49. package/button/mini-button.js +10 -20
  50. package/button.d.ts +3 -3
  51. package/button.d.ts.map +1 -1
  52. package/button.js +3 -3
  53. package/calendar.js +25 -25
  54. package/card/card/card.d.ts +4 -1
  55. package/card/card/card.d.ts.map +1 -1
  56. package/card/card.js +10 -6
  57. package/checkbox/checkbox/checkbox.d.ts +4 -6
  58. package/checkbox/checkbox/checkbox.d.ts.map +1 -1
  59. package/checkbox/checkbox-group/checkbox-group.d.ts +4 -1
  60. package/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  61. package/checkbox/checkbox-group.js +14 -10
  62. package/checkbox/checkbox-panel/checkbox-panel.d.ts +4 -4
  63. package/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
  64. package/checkbox/checkbox-panel.js +21 -18
  65. package/checkbox/checkbox.js +28 -26
  66. package/{chip/chip.d.ts → chip-label/chip-label.d.ts} +4 -4
  67. package/chip-label/chip-label.d.ts.map +1 -0
  68. package/chip-label.d.ts +2 -0
  69. package/chip-label.d.ts.map +1 -0
  70. package/chip-label.js +54 -0
  71. package/clock.js +1 -1
  72. package/container/container.js +21 -21
  73. package/container/sticky-bar/sticky-bar.d.ts +1 -0
  74. package/container/sticky-bar/sticky-bar.d.ts.map +1 -1
  75. package/container/sticky-bar.js +20 -12
  76. package/core/base-elements/button-base-element.d.ts +27 -18
  77. package/core/base-elements/button-base-element.d.ts.map +1 -1
  78. package/core/base-elements/open-close-base-element.d.ts.map +1 -1
  79. package/core/base-elements.js +135 -138
  80. package/core/datetime/date-adapter.d.ts +2 -1
  81. package/core/datetime/date-adapter.d.ts.map +1 -1
  82. package/core/datetime/native-date-adapter.d.ts +1 -1
  83. package/core/datetime/native-date-adapter.d.ts.map +1 -1
  84. package/core/datetime.js +29 -28
  85. package/core/dom/animation.d.ts +2 -0
  86. package/core/dom/animation.d.ts.map +1 -0
  87. package/core/dom/lean-context.d.ts +5 -0
  88. package/core/dom/lean-context.d.ts.map +1 -0
  89. package/core/dom.d.ts +2 -2
  90. package/core/dom.d.ts.map +1 -1
  91. package/core/dom.js +50 -55
  92. package/core/eventing/form-element-handlers.d.ts +0 -7
  93. package/core/eventing/form-element-handlers.d.ts.map +1 -1
  94. package/core/eventing.d.ts +0 -1
  95. package/core/eventing.d.ts.map +1 -1
  96. package/core/eventing.js +28 -49
  97. package/core/i18n/i18n.d.ts +4 -2
  98. package/core/i18n/i18n.d.ts.map +1 -1
  99. package/core/i18n.js +147 -140
  100. package/core/mixins/disabled-mixin.d.ts +2 -7
  101. package/core/mixins/disabled-mixin.d.ts.map +1 -1
  102. package/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  103. package/core/mixins/form-associated-mixin.d.ts +1 -1
  104. package/core/mixins/form-associated-mixin.d.ts.map +1 -1
  105. package/core/mixins/form-associated-radio-button-mixin.d.ts +35 -0
  106. package/core/mixins/form-associated-radio-button-mixin.d.ts.map +1 -0
  107. package/core/mixins.d.ts +1 -0
  108. package/core/mixins.d.ts.map +1 -1
  109. package/core/mixins.js +347 -220
  110. package/core/styles/_index.scss +1 -0
  111. package/core/styles/core.scss +148 -0
  112. package/core/styles/image.scss +66 -0
  113. package/core/styles/mixins/animation.scss +2 -4
  114. package/core/styles/mixins/buttons.scss +7 -4
  115. package/core/styles/mixins/card.scss +1 -1
  116. package/core/styles/mixins/chip.scss +35 -35
  117. package/core/styles/mixins/image.scss +34 -0
  118. package/core/styles/mixins/overlay.scss +1 -1
  119. package/core/styles/mixins/panel.scss +1 -1
  120. package/core/styles/scrollbar.scss +44 -0
  121. package/core/styles/standard-theme.scss +2 -0
  122. package/core/styles/table.scss +4 -0
  123. package/core/testing/event-spy.d.ts +2 -1
  124. package/core/testing/event-spy.d.ts.map +1 -1
  125. package/core/testing.d.ts +0 -1
  126. package/core/testing.d.ts.map +1 -1
  127. package/core/testing.js +48 -57
  128. package/core.css +112 -0
  129. package/custom-elements.json +25961 -21672
  130. package/datepicker/common/datepicker-button.d.ts +3 -5
  131. package/datepicker/common/datepicker-button.d.ts.map +1 -1
  132. package/datepicker/common.js +30 -29
  133. package/datepicker/datepicker/datepicker.d.ts +25 -72
  134. package/datepicker/datepicker/datepicker.d.ts.map +1 -1
  135. package/datepicker/datepicker-next-day/datepicker-next-day.d.ts +1 -3
  136. package/datepicker/datepicker-next-day/datepicker-next-day.d.ts.map +1 -1
  137. package/datepicker/datepicker-next-day.js +10 -12
  138. package/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts +1 -3
  139. package/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts.map +1 -1
  140. package/datepicker/datepicker-previous-day.js +11 -13
  141. package/datepicker/datepicker.js +129 -157
  142. package/development/accordion/accordion.d.ts +4 -1
  143. package/development/accordion/accordion.d.ts.map +1 -1
  144. package/development/accordion.js +16 -5
  145. package/development/action-group/action-group.d.ts +6 -4
  146. package/development/action-group/action-group.d.ts.map +1 -1
  147. package/development/action-group.js +10 -7
  148. package/development/alert/alert/alert.d.ts +7 -23
  149. package/development/alert/alert/alert.d.ts.map +1 -1
  150. package/development/alert/alert-group/alert-group.d.ts +0 -4
  151. package/development/alert/alert-group/alert-group.d.ts.map +1 -1
  152. package/development/alert/alert-group.js +10 -12
  153. package/development/alert/alert.js +38 -122
  154. package/development/autocomplete/autocomplete-base-element.d.ts +7 -6
  155. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  156. package/development/autocomplete/autocomplete.d.ts +0 -1
  157. package/development/autocomplete/autocomplete.d.ts.map +1 -1
  158. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +0 -1
  159. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  160. package/development/autocomplete-grid/autocomplete-grid-button.js +6 -6
  161. package/development/autocomplete-grid/autocomplete-grid.js +1 -7
  162. package/development/autocomplete.js +23 -19
  163. package/development/button/accent-button/accent-button.d.ts +19 -0
  164. package/development/button/accent-button/accent-button.d.ts.map +1 -0
  165. package/development/button/accent-button-link/accent-button-link.d.ts +19 -0
  166. package/development/button/accent-button-link/accent-button-link.d.ts.map +1 -0
  167. package/development/button/accent-button-link.d.ts +2 -0
  168. package/development/button/accent-button-link.d.ts.map +1 -0
  169. package/development/button/accent-button-link.js +25 -0
  170. package/development/button/accent-button-static/accent-button-static.d.ts +19 -0
  171. package/development/button/accent-button-static/accent-button-static.d.ts.map +1 -0
  172. package/development/button/accent-button-static.d.ts +2 -0
  173. package/development/button/accent-button-static.d.ts.map +1 -0
  174. package/development/button/accent-button-static.js +25 -0
  175. package/development/button/accent-button.d.ts +2 -0
  176. package/development/button/accent-button.d.ts.map +1 -0
  177. package/development/button/accent-button.js +25 -0
  178. package/development/button/common/button-common.d.ts.map +1 -1
  179. package/development/button/common.d.ts.map +1 -1
  180. package/development/button/common.js +20 -16
  181. package/development/button/mini-button/mini-button.d.ts +4 -3
  182. package/development/button/mini-button/mini-button.d.ts.map +1 -1
  183. package/development/button/mini-button-group/mini-button-group.d.ts +4 -1
  184. package/development/button/mini-button-group/mini-button-group.d.ts.map +1 -1
  185. package/development/button/mini-button-group.js +7 -3
  186. package/development/button/mini-button.d.ts +0 -1
  187. package/development/button/mini-button.d.ts.map +1 -1
  188. package/development/button/mini-button.js +14 -32
  189. package/development/button.d.ts +3 -3
  190. package/development/button.d.ts.map +1 -1
  191. package/development/button.js +3 -3
  192. package/development/calendar.js +1 -1
  193. package/development/card/card/card.d.ts +4 -1
  194. package/development/card/card/card.d.ts.map +1 -1
  195. package/development/card/card.js +8 -4
  196. package/development/checkbox/checkbox/checkbox.d.ts +4 -6
  197. package/development/checkbox/checkbox/checkbox.d.ts.map +1 -1
  198. package/development/checkbox/checkbox-group/checkbox-group.d.ts +4 -1
  199. package/development/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  200. package/development/checkbox/checkbox-group.js +7 -3
  201. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts +4 -4
  202. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
  203. package/development/checkbox/checkbox-panel.js +7 -4
  204. package/development/checkbox/checkbox.js +8 -6
  205. package/development/{chip/chip.d.ts → chip-label/chip-label.d.ts} +4 -4
  206. package/development/chip-label/chip-label.d.ts.map +1 -0
  207. package/development/chip-label.d.ts +2 -0
  208. package/development/chip-label.d.ts.map +1 -0
  209. package/development/{chip.js → chip-label.js} +26 -26
  210. package/development/clock.js +1 -1
  211. package/development/container/container.js +8 -12
  212. package/development/container/sticky-bar/sticky-bar.d.ts +1 -0
  213. package/development/container/sticky-bar/sticky-bar.d.ts.map +1 -1
  214. package/development/container/sticky-bar.js +18 -10
  215. package/development/core/base-elements/button-base-element.d.ts +27 -18
  216. package/development/core/base-elements/button-base-element.d.ts.map +1 -1
  217. package/development/core/base-elements/open-close-base-element.d.ts.map +1 -1
  218. package/development/core/base-elements.js +66 -74
  219. package/development/core/datetime/date-adapter.d.ts +2 -1
  220. package/development/core/datetime/date-adapter.d.ts.map +1 -1
  221. package/development/core/datetime/native-date-adapter.d.ts +1 -1
  222. package/development/core/datetime/native-date-adapter.d.ts.map +1 -1
  223. package/development/core/datetime.js +4 -3
  224. package/development/core/dom/animation.d.ts +2 -0
  225. package/development/core/dom/animation.d.ts.map +1 -0
  226. package/development/core/dom/lean-context.d.ts +5 -0
  227. package/development/core/dom/lean-context.d.ts.map +1 -0
  228. package/development/core/dom.d.ts +2 -2
  229. package/development/core/dom.d.ts.map +1 -1
  230. package/development/core/dom.js +13 -21
  231. package/development/core/eventing/form-element-handlers.d.ts +0 -7
  232. package/development/core/eventing/form-element-handlers.d.ts.map +1 -1
  233. package/development/core/eventing.d.ts +0 -1
  234. package/development/core/eventing.d.ts.map +1 -1
  235. package/development/core/eventing.js +1 -25
  236. package/development/core/i18n/i18n.d.ts +4 -2
  237. package/development/core/i18n/i18n.d.ts.map +1 -1
  238. package/development/core/i18n.js +27 -23
  239. package/development/core/mixins/disabled-mixin.d.ts +2 -7
  240. package/development/core/mixins/disabled-mixin.d.ts.map +1 -1
  241. package/development/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  242. package/development/core/mixins/form-associated-mixin.d.ts +1 -1
  243. package/development/core/mixins/form-associated-mixin.d.ts.map +1 -1
  244. package/development/core/mixins/form-associated-radio-button-mixin.d.ts +35 -0
  245. package/development/core/mixins/form-associated-radio-button-mixin.d.ts.map +1 -0
  246. package/development/core/mixins.d.ts +1 -0
  247. package/development/core/mixins.d.ts.map +1 -1
  248. package/development/core/mixins.js +221 -30
  249. package/development/core/testing/event-spy.d.ts +2 -1
  250. package/development/core/testing/event-spy.d.ts.map +1 -1
  251. package/development/core/testing.d.ts +0 -1
  252. package/development/core/testing.d.ts.map +1 -1
  253. package/development/core/testing.js +4 -15
  254. package/development/datepicker/common/datepicker-button.d.ts +3 -5
  255. package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
  256. package/development/datepicker/common.js +13 -12
  257. package/development/datepicker/datepicker/datepicker.d.ts +25 -72
  258. package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
  259. package/development/datepicker/datepicker-next-day/datepicker-next-day.d.ts +1 -3
  260. package/development/datepicker/datepicker-next-day/datepicker-next-day.d.ts.map +1 -1
  261. package/development/datepicker/datepicker-next-day.js +9 -15
  262. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts +1 -3
  263. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts.map +1 -1
  264. package/development/datepicker/datepicker-previous-day.js +9 -15
  265. package/development/datepicker/datepicker.js +74 -115
  266. package/development/dialog/dialog/dialog.d.ts +3 -0
  267. package/development/dialog/dialog/dialog.d.ts.map +1 -1
  268. package/development/dialog/dialog-title.js +2 -1
  269. package/development/dialog/dialog.js +46 -39
  270. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts +7 -1
  271. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
  272. package/development/expansion-panel/expansion-panel-header.js +3 -3
  273. package/development/expansion-panel/expansion-panel.js +32 -17
  274. package/development/file-selector/common/file-selector-common.d.ts +23 -0
  275. package/development/file-selector/common/file-selector-common.d.ts.map +1 -0
  276. package/development/file-selector/common.d.ts +2 -0
  277. package/development/file-selector/common.d.ts.map +1 -0
  278. package/development/file-selector/common.js +382 -0
  279. package/development/file-selector/file-selector/file-selector.d.ts +24 -0
  280. package/development/file-selector/file-selector/file-selector.d.ts.map +1 -0
  281. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.d.ts +33 -0
  282. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.d.ts.map +1 -0
  283. package/development/file-selector/file-selector-dropzone.d.ts +2 -0
  284. package/development/file-selector/file-selector-dropzone.d.ts.map +1 -0
  285. package/development/file-selector/file-selector-dropzone.js +181 -0
  286. package/development/file-selector/file-selector.d.ts +1 -87
  287. package/development/file-selector/file-selector.d.ts.map +1 -1
  288. package/development/file-selector/file-selector.js +52 -0
  289. package/development/file-selector.d.ts +2 -0
  290. package/development/file-selector.d.ts.map +1 -1
  291. package/development/file-selector.js +4 -552
  292. package/development/flip-card/flip-card-details.js +1 -1
  293. package/development/flip-card/flip-card-summary.js +3 -11
  294. package/development/flip-card/flip-card.js +6 -6
  295. package/development/form-field/form-field/form-field.d.ts +7 -10
  296. package/development/form-field/form-field/form-field.d.ts.map +1 -1
  297. package/development/form-field/form-field-clear.js +6 -6
  298. package/development/form-field/form-field.js +74 -42
  299. package/development/header/common.js +2 -2
  300. package/development/header/header/header.d.ts +5 -3
  301. package/development/header/header/header.d.ts.map +1 -1
  302. package/development/header/header.js +15 -20
  303. package/development/image/image.d.ts +0 -30
  304. package/development/image/image.d.ts.map +1 -1
  305. package/development/image.js +62 -273
  306. package/development/journey-header/journey-header.d.ts +4 -1
  307. package/development/journey-header/journey-header.d.ts.map +1 -1
  308. package/development/journey-header.js +7 -3
  309. package/development/lead-container.js +2 -10
  310. package/development/link/common/link-common.d.ts.map +1 -1
  311. package/development/link/common.js +9 -8
  312. package/development/link-list/common/link-list-base.d.ts +1 -0
  313. package/development/link-list/common/link-list-base.d.ts.map +1 -1
  314. package/development/link-list/common.js +4 -2
  315. package/development/link-list/link-list-anchor.js +4 -4
  316. package/development/loading-indicator/loading-indicator.d.ts +1 -3
  317. package/development/loading-indicator/loading-indicator.d.ts.map +1 -1
  318. package/development/loading-indicator-circle/loading-indicator-circle.d.ts +16 -0
  319. package/development/loading-indicator-circle/loading-indicator-circle.d.ts.map +1 -0
  320. package/development/loading-indicator-circle.d.ts +2 -0
  321. package/development/loading-indicator-circle.d.ts.map +1 -0
  322. package/development/loading-indicator-circle.js +146 -0
  323. package/development/loading-indicator.js +81 -182
  324. package/development/map-container/map-container.d.ts.map +1 -1
  325. package/development/map-container.js +5 -5
  326. package/development/menu/common.js +5 -5
  327. package/development/menu/menu/menu.d.ts +3 -0
  328. package/development/menu/menu/menu.d.ts.map +1 -1
  329. package/development/menu/menu.js +39 -24
  330. package/development/navigation/common/navigation-action-common.d.ts.map +1 -1
  331. package/development/navigation/common.js +9 -5
  332. package/development/navigation/navigation/navigation.d.ts +3 -0
  333. package/development/navigation/navigation/navigation.d.ts.map +1 -1
  334. package/development/navigation/navigation-list/navigation-list.d.ts.map +1 -1
  335. package/development/navigation/navigation-list.js +3 -2
  336. package/development/navigation/navigation-marker/navigation-marker.d.ts +2 -1
  337. package/development/navigation/navigation-marker/navigation-marker.d.ts.map +1 -1
  338. package/development/navigation/navigation-marker.js +6 -4
  339. package/development/navigation/navigation-section/navigation-section.d.ts +3 -0
  340. package/development/navigation/navigation-section/navigation-section.d.ts.map +1 -1
  341. package/development/navigation/navigation-section.js +38 -22
  342. package/development/navigation/navigation.js +42 -27
  343. package/development/notification/notification.d.ts +6 -2
  344. package/development/notification/notification.d.ts.map +1 -1
  345. package/development/notification.js +27 -21
  346. package/development/option/option/option-base-element.d.ts +0 -7
  347. package/development/option/option/option-base-element.d.ts.map +1 -1
  348. package/development/option/option.js +5 -26
  349. package/development/overlay/overlay-base-element.d.ts +2 -0
  350. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  351. package/development/overlay/overlay.d.ts +3 -0
  352. package/development/overlay/overlay.d.ts.map +1 -1
  353. package/development/overlay.js +43 -31
  354. package/development/paginator/common/paginator-common.d.ts.map +1 -1
  355. package/development/paginator/common.js +7 -3
  356. package/development/paginator/paginator.js +1 -1
  357. package/development/popover/popover/popover.d.ts +3 -0
  358. package/development/popover/popover/popover.d.ts.map +1 -1
  359. package/development/popover/popover-trigger.js +9 -9
  360. package/development/popover/popover.js +41 -26
  361. package/development/radio-button/common/radio-button-common.d.ts +3 -10
  362. package/development/radio-button/common/radio-button-common.d.ts.map +1 -1
  363. package/development/radio-button/common.js +44 -121
  364. package/development/radio-button/radio-button/radio-button.d.ts +9 -1
  365. package/development/radio-button/radio-button/radio-button.d.ts.map +1 -1
  366. package/development/radio-button/radio-button-group/radio-button-group.d.ts +19 -26
  367. package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  368. package/development/radio-button/radio-button-group.js +87 -123
  369. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts +20 -2
  370. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  371. package/development/radio-button/radio-button-panel.js +35 -15
  372. package/development/radio-button/radio-button.js +11 -15
  373. package/development/select/select.d.ts +3 -9
  374. package/development/select/select.d.ts.map +1 -1
  375. package/development/select.js +27 -25
  376. package/development/selection-expansion-panel/selection-expansion-panel.d.ts +4 -1
  377. package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  378. package/development/selection-expansion-panel.js +28 -16
  379. package/development/skiplink-list/skiplink-list.d.ts.map +1 -1
  380. package/development/skiplink-list.js +3 -2
  381. package/development/slider/slider.d.ts +0 -1
  382. package/development/slider/slider.d.ts.map +1 -1
  383. package/development/slider.js +2 -2
  384. package/development/stepper/step-label/step-label.d.ts +0 -2
  385. package/development/stepper/step-label/step-label.d.ts.map +1 -1
  386. package/development/stepper/step-label.js +10 -11
  387. package/development/stepper/step.js +1 -1
  388. package/development/stepper/stepper/stepper.d.ts +4 -1
  389. package/development/stepper/stepper/stepper.d.ts.map +1 -1
  390. package/development/stepper/stepper.js +9 -7
  391. package/development/tabs/tab-group/tab-group.d.ts +4 -1
  392. package/development/tabs/tab-group/tab-group.d.ts.map +1 -1
  393. package/development/tabs/tab-group.js +14 -5
  394. package/development/tabs/tab-label.js +1 -1
  395. package/development/tag/tag/tag.d.ts +4 -1
  396. package/development/tag/tag/tag.d.ts.map +1 -1
  397. package/development/tag/tag-group/tag-group.d.ts +5 -2
  398. package/development/tag/tag-group/tag-group.d.ts.map +1 -1
  399. package/development/tag/tag-group.js +7 -4
  400. package/development/tag/tag.js +16 -12
  401. package/development/teaser/teaser.d.ts +2 -2
  402. package/development/teaser/teaser.d.ts.map +1 -1
  403. package/development/teaser-hero/teaser-hero.d.ts +2 -6
  404. package/development/teaser-hero/teaser-hero.d.ts.map +1 -1
  405. package/development/teaser-hero.js +9 -60
  406. package/development/teaser-product/common.js +7 -14
  407. package/development/teaser-product/teaser-product.js +1 -21
  408. package/development/teaser.js +12 -31
  409. package/development/time-input/time-input.d.ts +3 -6
  410. package/development/time-input/time-input.d.ts.map +1 -1
  411. package/development/time-input.js +33 -27
  412. package/development/toast/toast.d.ts +3 -0
  413. package/development/toast/toast.d.ts.map +1 -1
  414. package/development/toast.js +27 -13
  415. package/development/toggle/toggle/toggle.d.ts +4 -8
  416. package/development/toggle/toggle/toggle.d.ts.map +1 -1
  417. package/development/toggle/toggle.js +9 -12
  418. package/development/toggle-check/toggle-check.d.ts +4 -6
  419. package/development/toggle-check/toggle-check.d.ts.map +1 -1
  420. package/development/toggle-check.js +9 -7
  421. package/development/train/train/train.d.ts.map +1 -1
  422. package/development/train/train-blocked-passage.js +2 -2
  423. package/development/train/train-formation/train-formation.d.ts +3 -11
  424. package/development/train/train-formation/train-formation.d.ts.map +1 -1
  425. package/development/train/train-formation.js +43 -74
  426. package/development/train/train-wagon/train-wagon.d.ts +11 -8
  427. package/development/train/train-wagon/train-wagon.d.ts.map +1 -1
  428. package/development/train/train-wagon.js +149 -124
  429. package/development/train/train.js +35 -112
  430. package/development/visual-checkbox/visual-checkbox.d.ts +4 -1
  431. package/development/visual-checkbox/visual-checkbox.d.ts.map +1 -1
  432. package/development/visual-checkbox.js +7 -3
  433. package/dialog/dialog/dialog.d.ts +3 -0
  434. package/dialog/dialog/dialog.d.ts.map +1 -1
  435. package/dialog/dialog-title.js +9 -9
  436. package/dialog/dialog.js +56 -51
  437. package/expansion-panel/expansion-panel/expansion-panel.d.ts +7 -1
  438. package/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
  439. package/expansion-panel/expansion-panel-header.js +1 -1
  440. package/expansion-panel/expansion-panel.js +41 -28
  441. package/file-selector/common/file-selector-common.d.ts +23 -0
  442. package/file-selector/common/file-selector-common.d.ts.map +1 -0
  443. package/file-selector/common.d.ts +2 -0
  444. package/file-selector/common.d.ts.map +1 -0
  445. package/file-selector/common.js +210 -0
  446. package/file-selector/file-selector/file-selector.d.ts +24 -0
  447. package/file-selector/file-selector/file-selector.d.ts.map +1 -0
  448. package/file-selector/file-selector-dropzone/file-selector-dropzone.d.ts +33 -0
  449. package/file-selector/file-selector-dropzone/file-selector-dropzone.d.ts.map +1 -0
  450. package/file-selector/file-selector-dropzone.d.ts +2 -0
  451. package/file-selector/file-selector-dropzone.d.ts.map +1 -0
  452. package/file-selector/file-selector-dropzone.js +97 -0
  453. package/file-selector/file-selector.d.ts +1 -87
  454. package/file-selector/file-selector.d.ts.map +1 -1
  455. package/file-selector/file-selector.js +44 -0
  456. package/file-selector.d.ts +2 -0
  457. package/file-selector.d.ts.map +1 -1
  458. package/file-selector.js +3 -301
  459. package/flip-card/flip-card-details.js +5 -5
  460. package/flip-card/flip-card-summary.js +7 -7
  461. package/flip-card/flip-card.js +9 -9
  462. package/form-field/form-field/form-field.d.ts +7 -10
  463. package/form-field/form-field/form-field.d.ts.map +1 -1
  464. package/form-field/form-field-clear.js +12 -12
  465. package/form-field/form-field.js +118 -93
  466. package/header/common.js +10 -10
  467. package/header/header/header.d.ts +5 -3
  468. package/header/header/header.d.ts.map +1 -1
  469. package/header/header.js +28 -31
  470. package/image/image.d.ts +0 -30
  471. package/image/image.d.ts.map +1 -1
  472. package/image.js +187 -281
  473. package/index.d.ts +13 -9
  474. package/index.js +13 -9
  475. package/journey-header/journey-header.d.ts +4 -1
  476. package/journey-header/journey-header.d.ts.map +1 -1
  477. package/journey-header.js +29 -25
  478. package/lead-container.js +5 -5
  479. package/link/common/link-common.d.ts.map +1 -1
  480. package/link/common.js +18 -16
  481. package/link-list/common/link-list-base.d.ts +1 -0
  482. package/link-list/common/link-list-base.d.ts.map +1 -1
  483. package/link-list/common.js +11 -9
  484. package/link-list/link-list-anchor.js +8 -8
  485. package/loading-indicator/loading-indicator.d.ts +1 -3
  486. package/loading-indicator/loading-indicator.d.ts.map +1 -1
  487. package/loading-indicator-circle/loading-indicator-circle.d.ts +16 -0
  488. package/loading-indicator-circle/loading-indicator-circle.d.ts.map +1 -0
  489. package/loading-indicator-circle.d.ts +2 -0
  490. package/loading-indicator-circle.d.ts.map +1 -0
  491. package/loading-indicator-circle.js +46 -0
  492. package/loading-indicator.js +41 -51
  493. package/map-container/map-container.d.ts.map +1 -1
  494. package/map-container.js +7 -7
  495. package/menu/common.js +8 -8
  496. package/menu/menu/menu.d.ts +3 -0
  497. package/menu/menu/menu.d.ts.map +1 -1
  498. package/menu/menu.js +52 -43
  499. package/navigation/common/navigation-action-common.d.ts.map +1 -1
  500. package/navigation/common.js +10 -6
  501. package/navigation/navigation/navigation.d.ts +3 -0
  502. package/navigation/navigation/navigation.d.ts.map +1 -1
  503. package/navigation/navigation-list/navigation-list.d.ts.map +1 -1
  504. package/navigation/navigation-list.js +17 -16
  505. package/navigation/navigation-marker/navigation-marker.d.ts +2 -1
  506. package/navigation/navigation-marker/navigation-marker.d.ts.map +1 -1
  507. package/navigation/navigation-marker.js +12 -10
  508. package/navigation/navigation-section/navigation-section.d.ts +3 -0
  509. package/navigation/navigation-section/navigation-section.d.ts.map +1 -1
  510. package/navigation/navigation-section.js +46 -37
  511. package/navigation/navigation.js +30 -21
  512. package/notification/notification.d.ts +6 -2
  513. package/notification/notification.d.ts.map +1 -1
  514. package/notification.js +55 -51
  515. package/option/option/option-base-element.d.ts +0 -7
  516. package/option/option/option-base-element.d.ts.map +1 -1
  517. package/option/option.js +110 -125
  518. package/overlay/overlay-base-element.d.ts +2 -0
  519. package/overlay/overlay-base-element.d.ts.map +1 -1
  520. package/overlay/overlay.d.ts +3 -0
  521. package/overlay/overlay.d.ts.map +1 -1
  522. package/overlay.js +83 -77
  523. package/package.json +52 -29
  524. package/paginator/common/paginator-common.d.ts.map +1 -1
  525. package/paginator/common.js +21 -17
  526. package/paginator/paginator.js +1 -1
  527. package/popover/popover/popover.d.ts +3 -0
  528. package/popover/popover/popover.d.ts.map +1 -1
  529. package/popover/popover-trigger.js +6 -6
  530. package/popover/popover.js +114 -109
  531. package/radio-button/common/radio-button-common.d.ts +3 -10
  532. package/radio-button/common/radio-button-common.d.ts.map +1 -1
  533. package/radio-button/common.js +43 -90
  534. package/radio-button/radio-button/radio-button.d.ts +9 -1
  535. package/radio-button/radio-button/radio-button.d.ts.map +1 -1
  536. package/radio-button/radio-button-group/radio-button-group.d.ts +19 -26
  537. package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  538. package/radio-button/radio-button-group.js +112 -131
  539. package/radio-button/radio-button-panel/radio-button-panel.d.ts +20 -2
  540. package/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  541. package/radio-button/radio-button-panel.js +56 -44
  542. package/radio-button/radio-button.js +34 -38
  543. package/scrollbar.css +158 -0
  544. package/select/select.d.ts +3 -9
  545. package/select/select.d.ts.map +1 -1
  546. package/select.js +65 -66
  547. package/selection-expansion-panel/selection-expansion-panel.d.ts +4 -1
  548. package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  549. package/selection-expansion-panel.js +41 -31
  550. package/skiplink-list/skiplink-list.d.ts.map +1 -1
  551. package/skiplink-list.js +14 -13
  552. package/slider/slider.d.ts +0 -1
  553. package/slider/slider.d.ts.map +1 -1
  554. package/slider.js +1 -1
  555. package/standard-theme.css +396 -8
  556. package/stepper/step-label/step-label.d.ts +0 -2
  557. package/stepper/step-label/step-label.d.ts.map +1 -1
  558. package/stepper/step-label.js +6 -6
  559. package/stepper/step.js +4 -4
  560. package/stepper/stepper/stepper.d.ts +4 -1
  561. package/stepper/stepper/stepper.d.ts.map +1 -1
  562. package/stepper/stepper.js +22 -19
  563. package/table.css +232 -0
  564. package/tabs/tab-group/tab-group.d.ts +4 -1
  565. package/tabs/tab-group/tab-group.d.ts.map +1 -1
  566. package/tabs/tab-group.js +80 -74
  567. package/tabs/tab-label.js +1 -1
  568. package/tag/tag/tag.d.ts +4 -1
  569. package/tag/tag/tag.d.ts.map +1 -1
  570. package/tag/tag-group/tag-group.d.ts +5 -2
  571. package/tag/tag-group/tag-group.d.ts.map +1 -1
  572. package/tag/tag-group.js +13 -10
  573. package/tag/tag.js +25 -21
  574. package/teaser/teaser.d.ts +2 -2
  575. package/teaser/teaser.d.ts.map +1 -1
  576. package/teaser-hero/teaser-hero.d.ts +2 -6
  577. package/teaser-hero/teaser-hero.d.ts.map +1 -1
  578. package/teaser-hero.js +32 -57
  579. package/teaser-product/common.js +1 -1
  580. package/teaser-product/teaser-product.js +13 -13
  581. package/teaser.js +28 -28
  582. package/time-input/time-input.d.ts +3 -6
  583. package/time-input/time-input.d.ts.map +1 -1
  584. package/time-input.js +56 -55
  585. package/toast/toast.d.ts +3 -0
  586. package/toast/toast.d.ts.map +1 -1
  587. package/toast.js +51 -42
  588. package/toggle/toggle/toggle.d.ts +4 -8
  589. package/toggle/toggle/toggle.d.ts.map +1 -1
  590. package/toggle/toggle.js +48 -48
  591. package/toggle-check/toggle-check.d.ts +4 -6
  592. package/toggle-check/toggle-check.d.ts.map +1 -1
  593. package/toggle-check.js +23 -21
  594. package/train/train/train.d.ts.map +1 -1
  595. package/train/train-blocked-passage.js +1 -1
  596. package/train/train-formation/train-formation.d.ts +3 -11
  597. package/train/train-formation/train-formation.d.ts.map +1 -1
  598. package/train/train-formation.js +47 -65
  599. package/train/train-wagon/train-wagon.d.ts +11 -8
  600. package/train/train-wagon/train-wagon.d.ts.map +1 -1
  601. package/train/train-wagon.js +123 -134
  602. package/train/train.js +74 -78
  603. package/visual-checkbox/visual-checkbox.d.ts +4 -1
  604. package/visual-checkbox/visual-checkbox.d.ts.map +1 -1
  605. package/visual-checkbox.js +21 -17
  606. package/button/mini-button/mini-button-base-element.d.ts +0 -8
  607. package/button/mini-button/mini-button-base-element.d.ts.map +0 -1
  608. package/button/tertiary-button/tertiary-button.d.ts +0 -19
  609. package/button/tertiary-button/tertiary-button.d.ts.map +0 -1
  610. package/button/tertiary-button-link/tertiary-button-link.d.ts +0 -19
  611. package/button/tertiary-button-link/tertiary-button-link.d.ts.map +0 -1
  612. package/button/tertiary-button-link.d.ts +0 -2
  613. package/button/tertiary-button-link.d.ts.map +0 -1
  614. package/button/tertiary-button-link.js +0 -17
  615. package/button/tertiary-button-static/tertiary-button-static.d.ts +0 -19
  616. package/button/tertiary-button-static/tertiary-button-static.d.ts.map +0 -1
  617. package/button/tertiary-button-static.d.ts +0 -2
  618. package/button/tertiary-button-static.d.ts.map +0 -1
  619. package/button/tertiary-button-static.js +0 -17
  620. package/button/tertiary-button.d.ts +0 -2
  621. package/button/tertiary-button.d.ts.map +0 -1
  622. package/button/tertiary-button.js +0 -17
  623. package/chip/chip.d.ts.map +0 -1
  624. package/chip.d.ts +0 -2
  625. package/chip.d.ts.map +0 -1
  626. package/chip.js +0 -54
  627. package/core/dom/get-document-writing-mode.d.ts +0 -5
  628. package/core/dom/get-document-writing-mode.d.ts.map +0 -1
  629. package/core/dom/ssr.d.ts +0 -13
  630. package/core/dom/ssr.d.ts.map +0 -1
  631. package/core/eventing/handler-repository.d.ts +0 -28
  632. package/core/eventing/handler-repository.d.ts.map +0 -1
  633. package/core/observers/intersection-observer.d.ts +0 -20
  634. package/core/observers/intersection-observer.d.ts.map +0 -1
  635. package/core/observers/mutation-observer.d.ts +0 -13
  636. package/core/observers/mutation-observer.d.ts.map +0 -1
  637. package/core/observers/resize-observer.d.ts +0 -16
  638. package/core/observers/resize-observer.d.ts.map +0 -1
  639. package/core/observers.d.ts +0 -4
  640. package/core/observers.d.ts.map +0 -1
  641. package/core/observers.js +0 -38
  642. package/core/testing/wait-for-event.d.ts +0 -2
  643. package/core/testing/wait-for-event.d.ts.map +0 -1
  644. package/development/button/mini-button/mini-button-base-element.d.ts +0 -8
  645. package/development/button/mini-button/mini-button-base-element.d.ts.map +0 -1
  646. package/development/button/tertiary-button/tertiary-button.d.ts +0 -19
  647. package/development/button/tertiary-button/tertiary-button.d.ts.map +0 -1
  648. package/development/button/tertiary-button-link/tertiary-button-link.d.ts +0 -19
  649. package/development/button/tertiary-button-link/tertiary-button-link.d.ts.map +0 -1
  650. package/development/button/tertiary-button-link.d.ts +0 -2
  651. package/development/button/tertiary-button-link.d.ts.map +0 -1
  652. package/development/button/tertiary-button-link.js +0 -25
  653. package/development/button/tertiary-button-static/tertiary-button-static.d.ts +0 -19
  654. package/development/button/tertiary-button-static/tertiary-button-static.d.ts.map +0 -1
  655. package/development/button/tertiary-button-static.d.ts +0 -2
  656. package/development/button/tertiary-button-static.d.ts.map +0 -1
  657. package/development/button/tertiary-button-static.js +0 -25
  658. package/development/button/tertiary-button.d.ts +0 -2
  659. package/development/button/tertiary-button.d.ts.map +0 -1
  660. package/development/button/tertiary-button.js +0 -25
  661. package/development/chip/chip.d.ts.map +0 -1
  662. package/development/chip.d.ts +0 -2
  663. package/development/chip.d.ts.map +0 -1
  664. package/development/core/dom/get-document-writing-mode.d.ts +0 -5
  665. package/development/core/dom/get-document-writing-mode.d.ts.map +0 -1
  666. package/development/core/dom/ssr.d.ts +0 -13
  667. package/development/core/dom/ssr.d.ts.map +0 -1
  668. package/development/core/eventing/handler-repository.d.ts +0 -28
  669. package/development/core/eventing/handler-repository.d.ts.map +0 -1
  670. package/development/core/observers/intersection-observer.d.ts +0 -20
  671. package/development/core/observers/intersection-observer.d.ts.map +0 -1
  672. package/development/core/observers/mutation-observer.d.ts +0 -13
  673. package/development/core/observers/mutation-observer.d.ts.map +0 -1
  674. package/development/core/observers/resize-observer.d.ts +0 -16
  675. package/development/core/observers/resize-observer.d.ts.map +0 -1
  676. package/development/core/observers.d.ts +0 -4
  677. package/development/core/observers.d.ts.map +0 -1
  678. package/development/core/observers.js +0 -39
  679. package/development/core/testing/wait-for-event.d.ts +0 -2
  680. package/development/core/testing/wait-for-event.d.ts.map +0 -1
@@ -8,11 +8,12 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
8
8
  import { __runInitializers, __esDecorate } from "tslib";
9
9
  import { css, LitElement, nothing } from "lit";
10
10
  import { customElement, property } from "lit/decorators.js";
11
- import { html, unsafeStatic } from "lit/static-html.js";
11
+ import { when } from "lit/directives/when.js";
12
+ import { html } from "lit/static-html.js";
12
13
  import { SbbLanguageController } from "../core/controllers.js";
13
14
  import { forceType, handleDistinctChange, omitEmptyConverter } from "../core/decorators.js";
14
15
  import { EventEmitter } from "../core/eventing.js";
15
- import { i18nSector, i18nWagonLabel, i18nClass, i18nBlockedPassage, i18nClosedCompartmentLabel, i18nLocomotiveLabel, i18nAdditionalWagonInformationHeading, i18nWagonLabelNumber } from "../core/i18n.js";
16
+ import { i18nClosedCompartmentLabel, i18nLocomotiveLabel, i18nCouchetteWagonLabel, i18nSleepingWagonLabel, i18nRestaurantWagonLabel, i18nWagonLabel, i18nSector, i18nWagonLabelNumber, i18nClass, i18nBlockedPassage, i18nAdditionalWagonInformationHeading } from "../core/i18n.js";
16
17
  import { SbbNamedSlotListMixin } from "../core/mixins.js";
17
18
  import "../icon.js";
18
19
  import "../timetable-occupancy-icon.js";
@@ -26,27 +27,65 @@ const style = css`*,
26
27
  display: block;
27
28
  --sbb-train-wagon-width: var(--sbb-train-formation-wagon-width);
28
29
  --sbb-train-wagon-height: var(--sbb-train-formation-wagon-height);
29
- --sbb-train-wagon-inner-padding: var(--sbb-spacing-fixed-3x);
30
- --sbb-train-wagon-shape-border-radius: var(--sbb-train-formation-wagon-border-radius);
31
30
  --sbb-train-wagon-shape-color: var(--sbb-color-charcoal);
32
- --sbb-train-wagon-shape-color-closed: var(--sbb-color-metal);
33
- --sbb-train-wagon-shape-width: var(--sbb-border-width-1x);
34
- --sbb-train-wagon-gap: var(--sbb-spacing-fixed-2x);
35
- --sbb-train-wagon-icons-gap: var(--sbb-spacing-fixed-1x);
36
- --sbb-train-wagon-icons-height: 0.875rem;
31
+ --sbb-train-wagon-main-icon-height: 1.25rem;
32
+ --sbb-train-wagon-main-icon-margin-block-start: 0.625rem;
33
+ --sbb-train-wagon-attribute-icon-gap: var(--sbb-spacing-fixed-1x);
34
+ --sbb-train-wagon-attribute-icon-height: 0.875rem;
35
+ --sbb-train-wagon-attribute-icon-color: var(--sbb-color-granite);
36
+ --sbb-train-wagon-occupancy-height: 0.75rem;
37
37
  }
38
38
  @media (forced-colors: active) {
39
39
  :host {
40
- --sbb-train-wagon-shape-color-closed: CanvasText;
40
+ --sbb-train-wagon-shape-color: CanvasText;
41
41
  }
42
42
  }
43
43
 
44
+ :host(:is([type=closed], [type=locomotive])) {
45
+ --sbb-train-wagon-shape-color: var(--sbb-color-metal);
46
+ }
47
+ @media (forced-colors: active) {
48
+ :host(:is([type=closed], [type=locomotive])) {
49
+ --sbb-train-wagon-shape-color: CanvasText;
50
+ }
51
+ }
52
+
53
+ @media (forced-colors: active) {
54
+ :host([type=closed]) {
55
+ --sbb-train-wagon-shape-color: GrayText;
56
+ }
57
+ }
58
+
59
+ :host(:is([type=sleeping], [type=couchette])) {
60
+ --sbb-train-wagon-main-icon-margin-block-start: 0.390625rem;
61
+ }
62
+
63
+ :host(:is([type=wagon], [type=restaurant], [type=sleeping], [type=couchette])) {
64
+ --sbb-train-wagon-shape: var(--sbb-train-wagon-wagon-shape);
65
+ }
66
+
67
+ :host([type=closed]) {
68
+ --sbb-train-wagon-shape: var(--sbb-train-wagon-wagon-closed-shape);
69
+ }
70
+
71
+ :host([type=locomotive]) {
72
+ --sbb-train-wagon-shape: var(--sbb-train-wagon-locomotive-shape);
73
+ }
74
+
75
+ :host([type=wagon-end-left]) {
76
+ --sbb-train-wagon-shape: var(--sbb-train-wagon-wagon-end-left-shape);
77
+ }
78
+
79
+ :host([type=wagon-end-right]) {
80
+ --sbb-train-wagon-shape: var(--sbb-train-wagon-wagon-end-right-shape);
81
+ }
82
+
44
83
  .sbb-train-wagon {
45
84
  display: flex;
46
85
  flex-direction: column;
47
86
  align-items: center;
48
87
  width: var(--sbb-train-wagon-width);
49
- gap: var(--sbb-train-wagon-gap);
88
+ gap: var(--sbb-train-formation-vertical-gap);
50
89
  }
51
90
 
52
91
  .sbb-train-wagon__compartment {
@@ -56,40 +95,28 @@ const style = css`*,
56
95
  font-size: inherit;
57
96
  display: grid;
58
97
  grid-template: "label label" auto "occupancy class" 1fr/1fr 1fr;
59
- position: relative;
60
- width: 100%;
61
- }
62
- :host([type=closed]) .sbb-train-wagon__compartment::before, :host(:not([data-has-visible-wagon-content])) .sbb-train-wagon__compartment::before {
63
- content: "";
64
- grid-area: occupancy/span 2;
65
- height: var(--sbb-train-wagon-height);
66
98
  }
67
- .sbb-train-wagon__compartment::after {
99
+ .sbb-train-wagon__compartment::before {
68
100
  content: "";
69
- display: block;
70
- position: absolute;
71
- inset-inline: 0;
72
- inset-block: auto 0;
101
+ grid-column: occupancy/class;
102
+ grid-row: occupancy;
103
+ pointer-events: none;
73
104
  width: var(--sbb-train-wagon-width);
74
105
  height: var(--sbb-train-wagon-height);
75
- border-radius: var(--sbb-train-wagon-shape-border-radius);
76
- }
77
- :host([type=wagon]) .sbb-train-wagon__compartment::after {
78
- border: var(--sbb-train-wagon-shape-width) solid var(--sbb-train-wagon-shape-color);
79
- }
80
- :host([type=closed]) .sbb-train-wagon__compartment::after {
81
- border: var(--sbb-train-wagon-shape-width) solid var(--sbb-train-wagon-shape-color-closed);
106
+ background-color: var(--sbb-train-wagon-shape-color);
107
+ mask-image: var(--sbb-train-wagon-shape);
82
108
  }
83
109
 
84
- .sbb-train-wagon__occupancy,
85
- .sbb-train-wagon__class {
86
- height: var(--sbb-train-wagon-height);
87
- display: flex;
88
- align-items: center;
110
+ .sbb-train-wagon__main-icon {
111
+ --sbb-icon-svg-height: var(--sbb-train-wagon-main-icon-height);
112
+ grid-column: occupancy/class;
113
+ grid-row: occupancy;
114
+ margin-block-start: var(--sbb-train-wagon-main-icon-margin-block-start);
115
+ justify-self: center;
89
116
  }
90
117
 
91
118
  .sbb-train-wagon__label {
92
- --sbb-text-font-size: var(--sbb-font-size-text-s);
119
+ --sbb-text-font-size: var(--sbb-font-size-text-xxs);
93
120
  font-family: var(--sbb-typo-font-family);
94
121
  font-weight: normal;
95
122
  line-height: var(--sbb-typo-line-height-body-text);
@@ -101,9 +128,17 @@ const style = css`*,
101
128
  min-height: calc(1em * var(--sbb-typo-line-height-body-text));
102
129
  }
103
130
 
131
+ .sbb-train-wagon__occupancy,
132
+ .sbb-train-wagon__class {
133
+ height: var(--sbb-train-wagon-height);
134
+ display: flex;
135
+ align-items: center;
136
+ justify-content: center;
137
+ }
138
+
104
139
  .sbb-train-wagon__occupancy {
140
+ --sbb-icon-svg-height: var(--sbb-train-wagon-occupancy-height);
105
141
  grid-area: occupancy;
106
- padding-inline-start: var(--sbb-train-wagon-inner-padding);
107
142
  }
108
143
 
109
144
  .sbb-train-wagon__class {
@@ -120,34 +155,22 @@ const style = css`*,
120
155
  --sbb-title-font-size: var(--sbb-font-size-title-6);
121
156
  --sbb-title-line-height: var(--sbb-typo-line-height-body-text);
122
157
  grid-area: class;
123
- padding-inline-end: var(--sbb-train-wagon-inner-padding);
124
- margin-inline-start: auto;
125
158
  }
126
159
 
127
- .sbb-train-wagon__locomotive {
128
- grid-area: occupancy/span 2;
129
- }
130
-
131
- .sbb-train-wagon__icons {
132
- --sbb-icon-svg-height: var(--sbb-train-wagon-icons-height);
133
- display: flex;
134
- }
135
- .sbb-train-wagon__icons[hidden] {
136
- position: absolute;
137
- }
138
-
139
- .sbb-train-wagon__icons-list {
160
+ .sbb-train-wagon__attribute-icon-list {
140
161
  list-style: none;
141
162
  margin: 0;
142
163
  padding: 0;
143
164
  font-size: inherit;
165
+ --sbb-icon-svg-height: var(--sbb-train-wagon-attribute-icon-height);
144
166
  display: flex;
145
167
  flex-wrap: wrap;
146
- gap: var(--sbb-train-wagon-icons-gap);
147
168
  justify-content: center;
169
+ gap: var(--sbb-train-wagon-attribute-icon-gap);
170
+ color: var(--sbb-train-wagon-attribute-icon-color);
148
171
  }
149
172
 
150
- .sbb-train-wagon__icons-list > :is(li, span) {
173
+ .sbb-train-wagon__attribute-icon-list > :is(li, span) {
151
174
  display: inline-flex;
152
175
  }
153
176
 
@@ -162,6 +185,11 @@ const style = css`*,
162
185
  white-space: nowrap;
163
186
  width: 1px;
164
187
  }`;
188
+ const typeToIconMap = {
189
+ couchette: "sa-cc",
190
+ sleeping: "sa-wl",
191
+ restaurant: "sa-wr"
192
+ };
165
193
  let SbbTrainWagonElement = (() => {
166
194
  var _type_accessor_storage, _occupancy_accessor_storage, _sector_accessor_storage, _blockedPassage_accessor_storage, _wagonClass_accessor_storage, _label_accessor_storage, _additionalAccessibilityText_accessor_storage, _a;
167
195
  let _classDecorators = [customElement("sbb-train-wagon")];
@@ -200,9 +228,9 @@ let SbbTrainWagonElement = (() => {
200
228
  __privateAdd(this, _wagonClass_accessor_storage);
201
229
  __privateAdd(this, _label_accessor_storage);
202
230
  __privateAdd(this, _additionalAccessibilityText_accessor_storage);
203
- this.listChildLocalNames = ["sbb-icon"];
204
231
  __privateSet(this, _type_accessor_storage, __runInitializers(this, _type_initializers, "wagon"));
205
- __privateSet(this, _occupancy_accessor_storage, (__runInitializers(this, _type_extraInitializers), __runInitializers(this, _occupancy_initializers, "none")));
232
+ this.listChildLocalNames = (__runInitializers(this, _type_extraInitializers), ["sbb-icon"]);
233
+ __privateSet(this, _occupancy_accessor_storage, __runInitializers(this, _occupancy_initializers, null));
206
234
  __privateSet(this, _sector_accessor_storage, (__runInitializers(this, _occupancy_extraInitializers), __runInitializers(this, _sector_initializers, "")));
207
235
  __privateSet(this, _blockedPassage_accessor_storage, (__runInitializers(this, _sector_extraInitializers), __runInitializers(this, _blockedPassage_initializers, "none")));
208
236
  __privateSet(this, _wagonClass_accessor_storage, (__runInitializers(this, _blockedPassage_extraInitializers), __runInitializers(this, _wagonClass_initializers, null)));
@@ -214,7 +242,10 @@ let SbbTrainWagonElement = (() => {
214
242
  cancelable: true
215
243
  });
216
244
  }
217
- /** Wagon type. */
245
+ /**
246
+ * Wagon type.
247
+ * For `wagon-end-left` and `wagon-end-right`, please set the corresponding value of the `blockedPassage` property.
248
+ */
218
249
  get type() {
219
250
  return __privateGet(this, _type_accessor_storage);
220
251
  }
@@ -228,7 +259,7 @@ let SbbTrainWagonElement = (() => {
228
259
  set occupancy(value) {
229
260
  __privateSet(this, _occupancy_accessor_storage, value);
230
261
  }
231
- /** Sector in which to wagon stops. */
262
+ /** Sector in which the wagon stops. */
232
263
  get sector() {
233
264
  return __privateGet(this, _sector_accessor_storage);
234
265
  }
@@ -242,14 +273,14 @@ let SbbTrainWagonElement = (() => {
242
273
  set blockedPassage(value) {
243
274
  __privateSet(this, _blockedPassage_accessor_storage, value);
244
275
  }
245
- /** Visible class label of a wagon. */
276
+ /** Class label */
246
277
  get wagonClass() {
247
278
  return __privateGet(this, _wagonClass_accessor_storage);
248
279
  }
249
280
  set wagonClass(value) {
250
281
  __privateSet(this, _wagonClass_accessor_storage, value);
251
282
  }
252
- /** Visible label for the wagon number. Not used by type locomotive or closed. */
283
+ /** Wagon number */
253
284
  get label() {
254
285
  return __privateGet(this, _label_accessor_storage);
255
286
  }
@@ -263,86 +294,80 @@ let SbbTrainWagonElement = (() => {
263
294
  set additionalAccessibilityText(value) {
264
295
  __privateSet(this, _additionalAccessibilityText_accessor_storage, value);
265
296
  }
266
- willUpdate(changedProperties) {
267
- super.willUpdate(changedProperties);
268
- if (changedProperties.has("type") || changedProperties.has("occupancy") || changedProperties.has("wagonClass")) {
269
- this.toggleAttribute("data-has-visible-wagon-content", Boolean(this.type === "wagon" && this.occupancy || this.wagonClass));
270
- }
271
- }
272
297
  _sectorChanged() {
273
298
  this._sectorChange.emit();
274
299
  }
300
+ _typeLabel() {
301
+ if (this.type === "closed") {
302
+ return i18nClosedCompartmentLabel[this._language.current];
303
+ } else if (this.type === "locomotive") {
304
+ return i18nLocomotiveLabel[this._language.current];
305
+ } else if (this.type === "couchette") {
306
+ return i18nCouchetteWagonLabel[this._language.current];
307
+ } else if (this.type === "sleeping") {
308
+ return i18nSleepingWagonLabel[this._language.current];
309
+ } else if (this.type === "restaurant") {
310
+ return i18nRestaurantWagonLabel[this._language.current];
311
+ }
312
+ return i18nWagonLabel[this._language.current];
313
+ }
275
314
  render() {
276
- const label = (tagName) => {
277
- const TAG_NAME = tagName;
278
- return html`
279
- <${unsafeStatic(TAG_NAME)} class="sbb-train-wagon__label" aria-hidden=${(!this.label).toString()}>
280
- ${this.label ? html` <span class="sbb-screen-reader-only">
281
- ${`${i18nWagonLabelNumber[this._language.current]},`}&nbsp;
282
- </span>
283
- ${this.label}` : nothing}
284
- </${unsafeStatic(TAG_NAME)}>
285
- `;
286
- };
315
+ const blockedPassage = this.type === "wagon-end-left" && this.blockedPassage === "none" ? "previous" : this.type === "wagon-end-right" && this.blockedPassage === "none" ? "next" : this.blockedPassage ?? "none";
316
+ const hasBlockedPassageEntry = blockedPassage !== "none";
317
+ const listEntriesCount = +!!this.sector + +!!this.label + +(!!this.wagonClass && this.type !== "closed") + +(!!this.occupancy && this.type !== "closed") + +hasBlockedPassageEntry;
287
318
  const sectorString = `${i18nSector[this._language.current]}, ${this.sector}`;
319
+ const labelContent = this.label ? html`<span class="sbb-screen-reader-only">
320
+ ${`${i18nWagonLabelNumber[this._language.current]}, ${this.label}`}
321
+ </span>
322
+ <span aria-hidden="true">${this.label}</span>` : nothing;
323
+ const wagonClassContent = html`<span class="sbb-screen-reader-only">
324
+ ${this.wagonClass === "1" ? i18nClass["first"][this._language.current] : i18nClass["second"][this._language.current]}
325
+ </span>
326
+ <span aria-hidden="true">${this.wagonClass}</span>`;
327
+ const mainIcon = typeToIconMap[this.type] ? html`<sbb-icon
328
+ name=${typeToIconMap[this.type]}
329
+ class="sbb-train-wagon__main-icon"
330
+ ></sbb-icon>` : nothing;
288
331
  return html`
289
332
  <div class="sbb-train-wagon">
290
- ${this.type === "wagon" ? html`<ul
291
- aria-label=${i18nWagonLabel[this._language.current]}
292
- class="sbb-train-wagon__compartment"
293
- >
333
+ ${when(listEntriesCount > 1, () => html`<ul aria-label=${this._typeLabel()} class="sbb-train-wagon__compartment">
294
334
  ${this.sector ? html`<li class="sbb-screen-reader-only">${sectorString}</li>` : nothing}
295
- ${label("li")}
296
- ${this.wagonClass ? html`<li class="sbb-train-wagon__class">
297
- <span class="sbb-screen-reader-only">
298
- ${this.wagonClass === "1" ? i18nClass["first"][this._language.current] : i18nClass["second"][this._language.current]}
299
- </span>
300
- <span aria-hidden="true">${this.wagonClass}</span>
301
- </li>` : nothing}
302
- ${this.occupancy ? html`<sbb-timetable-occupancy-icon
335
+ <li class="sbb-train-wagon__label" aria-hidden=${`${!this.label}`}>
336
+ ${labelContent}
337
+ </li>
338
+ ${this.wagonClass && this.type !== "closed" ? html`<li class="sbb-train-wagon__class">${wagonClassContent}</li>` : nothing}
339
+ ${this.occupancy && this.type !== "closed" ? html`<sbb-timetable-occupancy-icon
303
340
  class="sbb-train-wagon__occupancy"
304
341
  role="listitem"
305
- .occupancy=${this.occupancy}
342
+ occupancy=${this.occupancy}
306
343
  ></sbb-timetable-occupancy-icon>` : nothing}
307
- ${this.blockedPassage && this.blockedPassage !== "none" ? html`<li class="sbb-screen-reader-only">
308
- ${i18nBlockedPassage[this.blockedPassage][this._language.current]}
344
+ ${hasBlockedPassageEntry ? html`<li class="sbb-screen-reader-only">
345
+ ${i18nBlockedPassage[blockedPassage][this._language.current]}
309
346
  </li>` : nothing}
310
- </ul>` : nothing}
311
- ${this.type === "closed" ? html`<span class="sbb-train-wagon__compartment">
347
+ ${mainIcon}
348
+ </ul>`, () => html`<div class="sbb-train-wagon__compartment">
312
349
  <span class="sbb-screen-reader-only">
313
- ${i18nClosedCompartmentLabel(this.label ? parseInt(this.label) : void 0)[this._language.current]}
314
- ${this.sector ? `, ${sectorString}` : nothing}
350
+ ${`${this._typeLabel()}${this.sector ? `, ${sectorString}` : ""}`}
315
351
  </span>
316
- ${label("span")}
317
- </span>` : nothing}
318
- ${this.type === "locomotive" ? html`<span class="sbb-train-wagon__compartment">
319
- <span class="sbb-screen-reader-only">
320
- ${i18nLocomotiveLabel[this._language.current]}
321
- ${this.sector ? `, ${sectorString}` : nothing}
352
+ <span class="sbb-train-wagon__label" aria-hidden=${`${!this.label}`}>
353
+ ${labelContent}
322
354
  </span>
323
- ${label("span")}
324
- <svg
325
- class="sbb-train-wagon__locomotive"
326
- aria-hidden="true"
327
- width="80"
328
- height="40"
329
- viewBox="0 0 80 40"
330
- fill="none"
331
- xmlns="http://www.w3.org/2000/svg"
332
- >
333
- <path
334
- d="M17.7906 4.42719C19.9743 1.93152 23.129 0.5 26.4452 0.5H53.5548C56.871 0.5 60.0257 1.93152 62.2094 4.4272L76.2094 20.4272C82.7157 27.8629 77.4351 39.5 67.5548 39.5H12.4452C2.56489 39.5 -2.71566 27.8629 3.79058 20.4272L17.7906 4.42719Z"
335
- stroke="var(--sbb-train-wagon-shape-color-closed)"
336
- />
337
- </svg>
338
- </span>` : nothing}
355
+
356
+ ${this.wagonClass && this.type !== "closed" ? html`<span class="sbb-train-wagon__class">${wagonClassContent}</span>` : nothing}
357
+ ${this.occupancy && this.type !== "closed" ? html`<sbb-timetable-occupancy-icon
358
+ class="sbb-train-wagon__occupancy"
359
+ occupancy=${this.occupancy}
360
+ ></sbb-timetable-occupancy-icon>` : nothing}
361
+ ${hasBlockedPassageEntry ? html`<span class="sbb-screen-reader-only">
362
+ ${i18nBlockedPassage[blockedPassage][this._language.current]}
363
+ </span>` : nothing}
364
+ ${mainIcon}
365
+ </div> `)}
339
366
  ${this.additionalAccessibilityText ? html`<span class="sbb-screen-reader-only">, ${this.additionalAccessibilityText}</span>` : nothing}
340
- ${this.type === "wagon" ? html`<span class="sbb-train-wagon__icons" ?hidden=${this.listChildren.length === 0}>
341
- ${this.renderList({
342
- class: "sbb-train-wagon__icons-list",
367
+ ${this.renderList({
368
+ class: "sbb-train-wagon__attribute-icon-list",
343
369
  ariaLabel: i18nAdditionalWagonInformationHeading[this._language.current]
344
370
  })}
345
- </span>` : nothing}
346
371
  </div>
347
372
  `;
348
373
  }
@@ -353,7 +378,7 @@ let SbbTrainWagonElement = (() => {
353
378
  _sector_decorators = [forceType(), handleDistinctChange((e) => e._sectorChanged()), property({ reflect: true, converter: omitEmptyConverter })];
354
379
  _blockedPassage_decorators = [property({ attribute: "blocked-passage" })];
355
380
  _wagonClass_decorators = [property({ attribute: "wagon-class" })];
356
- _label_decorators = [forceType(), property()];
381
+ _label_decorators = [forceType(), property({ reflect: true, converter: omitEmptyConverter })];
357
382
  _additionalAccessibilityText_decorators = [forceType(), property({ attribute: "additional-accessibility-text" })];
358
383
  __esDecorate(_a, null, _type_decorators, { kind: "accessor", name: "type", static: false, private: false, access: { has: (obj) => "type" in obj, get: (obj) => obj.type, set: (obj, value) => {
359
384
  obj.type = value;
@@ -387,4 +412,4 @@ let SbbTrainWagonElement = (() => {
387
412
  export {
388
413
  SbbTrainWagonElement
389
414
  };
390
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaW4td2Fnb24uanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy90cmFpbi90cmFpbi13YWdvbi90cmFpbi13YWdvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBMaXRFbGVtZW50LFxuICBub3RoaW5nLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBodG1sLCB1bnNhZmVTdGF0aWMgfSBmcm9tICdsaXQvc3RhdGljLWh0bWwuanMnO1xuXG5pbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGZvcmNlVHlwZSwgaGFuZGxlRGlzdGluY3RDaGFuZ2UsIG9taXRFbXB0eUNvbnZlcnRlciB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2V2ZW50aW5nLmpzJztcbmltcG9ydCB7XG4gIGkxOG5BZGRpdGlvbmFsV2Fnb25JbmZvcm1hdGlvbkhlYWRpbmcsXG4gIGkxOG5CbG9ja2VkUGFzc2FnZSxcbiAgaTE4bkNsYXNzLFxuICBpMThuQ2xvc2VkQ29tcGFydG1lbnRMYWJlbCxcbiAgaTE4bkxvY29tb3RpdmVMYWJlbCxcbiAgaTE4blNlY3RvcixcbiAgaTE4bldhZ29uTGFiZWwsXG4gIGkxOG5XYWdvbkxhYmVsTnVtYmVyLFxufSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPY2N1cGFuY3kgfSBmcm9tICcuLi8uLi9jb3JlL2ludGVyZmFjZXMuanMnO1xuaW1wb3J0IHsgU2JiTmFtZWRTbG90TGlzdE1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJJY29uRWxlbWVudCB9IGZyb20gJy4uLy4uL2ljb24uanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi90cmFpbi13YWdvbi5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJy4uLy4uL2ljb24uanMnO1xuaW1wb3J0ICcuLi8uLi90aW1ldGFibGUtb2NjdXBhbmN5LWljb24uanMnO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGEgdHJhaW4gY29tcGFydG1lbnQgd2l0aGluIGEgYHNiYi10cmFpbmAgY29tcG9uZW50LlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIG9uZSBvciBtb3JlIGBzYmItaWNvbmAgZm9yIG1ldGEtaW5mb3JtYXRpb24gb2YgdGhlIGBzYmItdHJhaW4td2Fnb25gLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItdHJhaW4td2Fnb24nKVxuY2xhc3MgU2JiVHJhaW5XYWdvbkVsZW1lbnQgZXh0ZW5kcyBTYmJOYW1lZFNsb3RMaXN0TWl4aW48U2JiSWNvbkVsZW1lbnQsIHR5cGVvZiBMaXRFbGVtZW50PihcbiAgTGl0RWxlbWVudCxcbikge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgc2VjdG9yQ2hhbmdlOiAnc2VjdG9yQ2hhbmdlJyxcbiAgfSBhcyBjb25zdDtcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IGxpc3RDaGlsZExvY2FsTmFtZXMgPSBbJ3NiYi1pY29uJ107XG5cbiAgLyoqIFdhZ29uIHR5cGUuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHR5cGU6ICdsb2NvbW90aXZlJyB8ICdjbG9zZWQnIHwgJ3dhZ29uJyA9ICd3YWdvbic7XG5cbiAgLyoqIE9jY3VwYW5jeSBvZiBhIHdhZ29uLiAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgYWNjZXNzb3Igb2NjdXBhbmN5OiBTYmJPY2N1cGFuY3kgPSAnbm9uZSc7XG5cbiAgLyoqIFNlY3RvciBpbiB3aGljaCB0byB3YWdvbiBzdG9wcy4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBoYW5kbGVEaXN0aW5jdENoYW5nZSgoZSkgPT4gZS5fc2VjdG9yQ2hhbmdlZCgpKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCBjb252ZXJ0ZXI6IG9taXRFbXB0eUNvbnZlcnRlciB9KVxuICBwdWJsaWMgYWNjZXNzb3Igc2VjdG9yOiBzdHJpbmcgPSAnJztcblxuICAvKiogQWNjZXNzaWJpbGl0eSB0ZXh0IGZvciBibG9ja2VkIHBhc3NhZ2VzIG9mIHRoZSB3YWdvbi4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYmxvY2tlZC1wYXNzYWdlJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYmxvY2tlZFBhc3NhZ2U6ICdwcmV2aW91cycgfCAnbmV4dCcgfCAnYm90aCcgfCAnbm9uZScgPSAnbm9uZSc7XG5cbiAgLyoqIFZpc2libGUgY2xhc3MgbGFiZWwgb2YgYSB3YWdvbi4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnd2Fnb24tY2xhc3MnIH0pIHB1YmxpYyBhY2Nlc3NvciB3YWdvbkNsYXNzOiAnMScgfCAnMicgfCBudWxsID0gbnVsbDtcblxuICAvKiogVmlzaWJsZSBsYWJlbCBmb3IgdGhlIHdhZ29uIG51bWJlci4gTm90IHVzZWQgYnkgdHlwZSBsb2NvbW90aXZlIG9yIGNsb3NlZC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBhY2Nlc3NvciBsYWJlbDogc3RyaW5nID0gJyc7XG5cbiAgLyoqIEFkZGl0aW9uYWwgYWNjZXNzaWJpbGl0eSB0ZXh0IHdoaWNoIHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIGVuZC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FkZGl0aW9uYWwtYWNjZXNzaWJpbGl0eS10ZXh0JyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYWRkaXRpb25hbEFjY2Vzc2liaWxpdHlUZXh0OiBzdHJpbmcgPSAnJztcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBFbWl0cyB3aGVuZXZlciB0aGUgc2VjdG9yIHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICBwcml2YXRlIF9zZWN0b3JDaGFuZ2U6IEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJUcmFpbldhZ29uRWxlbWVudC5ldmVudHMuc2VjdG9yQ2hhbmdlLFxuICAgIHtcbiAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgIH0sXG4gICk7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoXG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3R5cGUnKSB8fFxuICAgICAgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdvY2N1cGFuY3knKSB8fFxuICAgICAgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCd3YWdvbkNsYXNzJylcbiAgICApIHtcbiAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKFxuICAgICAgICAnZGF0YS1oYXMtdmlzaWJsZS13YWdvbi1jb250ZW50JyxcbiAgICAgICAgQm9vbGVhbigodGhpcy50eXBlID09PSAnd2Fnb24nICYmIHRoaXMub2NjdXBhbmN5KSB8fCB0aGlzLndhZ29uQ2xhc3MpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZWN0b3JDaGFuZ2VkKCk6IHZvaWQge1xuICAgIHRoaXMuX3NlY3RvckNoYW5nZS5lbWl0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICBjb25zdCBsYWJlbCA9ICh0YWdOYW1lOiBzdHJpbmcpOiBUZW1wbGF0ZVJlc3VsdCA9PiB7XG4gICAgICBjb25zdCBUQUdfTkFNRSA9IHRhZ05hbWU7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBsaXQvYmluZGluZy1wb3NpdGlvbnMgKi9cbiAgICAgIHJldHVybiBodG1sYFxuICAgICAgICA8JHt1bnNhZmVTdGF0aWMoVEFHX05BTUUpfSBjbGFzcz1cInNiYi10cmFpbi13YWdvbl9fbGFiZWxcIiBhcmlhLWhpZGRlbj0keyghdGhpc1xuICAgICAgICAgIC5sYWJlbCkudG9TdHJpbmcoKX0+XG4gICAgICAgICAgJHtcbiAgICAgICAgICAgIHRoaXMubGFiZWxcbiAgICAgICAgICAgICAgPyBodG1sYCA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgJHtgJHtpMThuV2Fnb25MYWJlbE51bWJlclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0sYH0mbmJzcDtcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICR7dGhpcy5sYWJlbH1gXG4gICAgICAgICAgICAgIDogbm90aGluZ1xuICAgICAgICAgIH1cbiAgICAgICAgPC8ke3Vuc2FmZVN0YXRpYyhUQUdfTkFNRSl9PlxuICAgICAgYDtcbiAgICB9O1xuXG4gICAgY29uc3Qgc2VjdG9yU3RyaW5nID0gYCR7aTE4blNlY3Rvclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0sICR7dGhpcy5zZWN0b3J9YDtcblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi10cmFpbi13YWdvblwiPlxuICAgICAgICAke3RoaXMudHlwZSA9PT0gJ3dhZ29uJ1xuICAgICAgICAgID8gaHRtbGA8dWxcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD0ke2kxOG5XYWdvbkxhYmVsW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICAgICAgICBjbGFzcz1cInNiYi10cmFpbi13YWdvbl9fY29tcGFydG1lbnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAke3RoaXMuc2VjdG9yXG4gICAgICAgICAgICAgICAgPyBodG1sYDxsaSBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj4ke3NlY3RvclN0cmluZ308L2xpPmBcbiAgICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgICR7bGFiZWwoJ2xpJyl9XG4gICAgICAgICAgICAgICR7dGhpcy53YWdvbkNsYXNzXG4gICAgICAgICAgICAgICAgPyBodG1sYDxsaSBjbGFzcz1cInNiYi10cmFpbi13YWdvbl9fY2xhc3NcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgJHt0aGlzLndhZ29uQ2xhc3MgPT09ICcxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBpMThuQ2xhc3NbJ2ZpcnN0J11bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogaTE4bkNsYXNzWydzZWNvbmQnXVt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4ke3RoaXMud2Fnb25DbGFzc308L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xpPmBcbiAgICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgICR7dGhpcy5vY2N1cGFuY3lcbiAgICAgICAgICAgICAgICA/IGh0bWxgPHNiYi10aW1ldGFibGUtb2NjdXBhbmN5LWljb25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItdHJhaW4td2Fnb25fX29jY3VwYW5jeVwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJsaXN0aXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIC5vY2N1cGFuY3k9JHt0aGlzLm9jY3VwYW5jeX1cbiAgICAgICAgICAgICAgICAgID48L3NiYi10aW1ldGFibGUtb2NjdXBhbmN5LWljb24+YFxuICAgICAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgICAgICAgJHt0aGlzLmJsb2NrZWRQYXNzYWdlICYmIHRoaXMuYmxvY2tlZFBhc3NhZ2UgIT09ICdub25lJ1xuICAgICAgICAgICAgICAgID8gaHRtbGA8bGkgY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+XG4gICAgICAgICAgICAgICAgICAgICR7aTE4bkJsb2NrZWRQYXNzYWdlW3RoaXMuYmxvY2tlZFBhc3NhZ2VdW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICAgICAgICAgICAgPC9saT5gXG4gICAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgPC91bD5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAke3RoaXMudHlwZSA9PT0gJ2Nsb3NlZCdcbiAgICAgICAgICA/IGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItdHJhaW4td2Fnb25fX2NvbXBhcnRtZW50XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiPlxuICAgICAgICAgICAgICAgICR7aTE4bkNsb3NlZENvbXBhcnRtZW50TGFiZWwodGhpcy5sYWJlbCA/IHBhcnNlSW50KHRoaXMubGFiZWwpIDogdW5kZWZpbmVkKVtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnRcbiAgICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgICAgICR7dGhpcy5zZWN0b3IgPyBgLCAke3NlY3RvclN0cmluZ31gIDogbm90aGluZ31cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAke2xhYmVsKCdzcGFuJyl9XG4gICAgICAgICAgICA8L3NwYW4+YFxuICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgJHt0aGlzLnR5cGUgPT09ICdsb2NvbW90aXZlJ1xuICAgICAgICAgID8gaHRtbGA8c3BhbiBjbGFzcz1cInNiYi10cmFpbi13YWdvbl9fY29tcGFydG1lbnRcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+XG4gICAgICAgICAgICAgICAgJHtpMThuTG9jb21vdGl2ZUxhYmVsW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICAgICAgICAgICR7dGhpcy5zZWN0b3IgPyBgLCAke3NlY3RvclN0cmluZ31gIDogbm90aGluZ31cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAke2xhYmVsKCdzcGFuJyl9XG4gICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi10cmFpbi13YWdvbl9fbG9jb21vdGl2ZVwiXG4gICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjgwXCJcbiAgICAgICAgICAgICAgICBoZWlnaHQ9XCI0MFwiXG4gICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA4MCA0MFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNzkwNiA0LjQyNzE5QzE5Ljk3NDMgMS45MzE1MiAyMy4xMjkgMC41IDI2LjQ0NTIgMC41SDUzLjU1NDhDNTYuODcxIDAuNSA2MC4wMjU3IDEuOTMxNTIgNjIuMjA5NCA0LjQyNzJMNzYuMjA5NCAyMC40MjcyQzgyLjcxNTcgMjcuODYyOSA3Ny40MzUxIDM5LjUgNjcuNTU0OCAzOS41SDEyLjQ0NTJDMi41NjQ4OSAzOS41IC0yLjcxNTY2IDI3Ljg2MjkgMy43OTA1OCAyMC40MjcyTDE3Ljc5MDYgNC40MjcxOVpcIlxuICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwidmFyKC0tc2JiLXRyYWluLXdhZ29uLXNoYXBlLWNvbG9yLWNsb3NlZClcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9zcGFuPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICR7dGhpcy5hZGRpdGlvbmFsQWNjZXNzaWJpbGl0eVRleHRcbiAgICAgICAgICA/IGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+LCAke3RoaXMuYWRkaXRpb25hbEFjY2Vzc2liaWxpdHlUZXh0fTwvc3Bhbj5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAke3RoaXMudHlwZSA9PT0gJ3dhZ29uJ1xuICAgICAgICAgID8gaHRtbGA8c3BhbiBjbGFzcz1cInNiYi10cmFpbi13YWdvbl9faWNvbnNcIiA/aGlkZGVuPSR7dGhpcy5saXN0Q2hpbGRyZW4ubGVuZ3RoID09PSAwfT5cbiAgICAgICAgICAgICAgJHt0aGlzLnJlbmRlckxpc3Qoe1xuICAgICAgICAgICAgICAgIGNsYXNzOiAnc2JiLXRyYWluLXdhZ29uX19pY29ucy1saXN0JyxcbiAgICAgICAgICAgICAgICBhcmlhTGFiZWw6IGkxOG5BZGRpdGlvbmFsV2Fnb25JbmZvcm1hdGlvbkhlYWRpbmdbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF0sXG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPC9zcGFuPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItdHJhaW4td2Fnb24nOiBTYmJUcmFpbldhZ29uRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlNiYlRyYWluV2Fnb25FbGVtZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQXVDTSx3QkFBb0IsTUFBQTs7MEJBRHpCLGNBQWMsaUJBQWlCLENBQUM7Ozs7b0JBQ0Usc0JBQ2pDLFVBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFEZUEsTUFBQUEseUJBQUEsbUJBQVEsWUFFbEM7QUFBQTs7QUFROEI7QUFHakI7QUFNWjtBQUlBO0FBR3dDO0FBS3hDO0FBS0E7QUE3QjRCLFdBQUEsc0JBQXNCLENBQUMsVUFBVTtBQUdoQix5QkFBQSx3QkFBQSxrQkFBQSxNQUFBLG9CQUEwQyxPQUFPO0FBR2xFLHlCQUFBLDhCQUFBLGtCQUFBLE1BQUEsdUJBQUEsR0FBQSxrQkFBQSxNQUFBLHlCQUEwQixNQUFNO0FBTTVDLHlCQUFBLDJCQUFBLGtCQUFBLE1BQUEsNEJBQUEsR0FBQSxrQkFBQSxNQUFBLHNCQUFpQixFQUFFO0FBSW5CLHlCQUFBLG1DQUFBLGtCQUFBLE1BQUEseUJBQUEsR0FBQSxrQkFBQSxNQUFBLDhCQUF3RCxNQUFNO0FBR3RCLHlCQUFBLCtCQUFBLGtCQUFBLE1BQUEsaUNBQUEsR0FBQSxrQkFB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
415
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaW4td2Fnb24uanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy90cmFpbi90cmFpbi13YWdvbi90cmFpbi13YWdvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIENTU1Jlc3VsdEdyb3VwLCBMaXRFbGVtZW50LCBub3RoaW5nLCB0eXBlIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgd2hlbiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3doZW4uanMnO1xuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdC9zdGF0aWMtaHRtbC5qcyc7XG5cbmltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlLCBoYW5kbGVEaXN0aW5jdENoYW5nZSwgb21pdEVtcHR5Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJy4uLy4uL2NvcmUvZXZlbnRpbmcuanMnO1xuaW1wb3J0IHtcbiAgaTE4bkFkZGl0aW9uYWxXYWdvbkluZm9ybWF0aW9uSGVhZGluZyxcbiAgaTE4bkJsb2NrZWRQYXNzYWdlLFxuICBpMThuQ2xhc3MsXG4gIGkxOG5DbG9zZWRDb21wYXJ0bWVudExhYmVsLFxuICBpMThuQ291Y2hldHRlV2Fnb25MYWJlbCxcbiAgaTE4bkxvY29tb3RpdmVMYWJlbCxcbiAgaTE4blJlc3RhdXJhbnRXYWdvbkxhYmVsLFxuICBpMThuU2VjdG9yLFxuICBpMThuU2xlZXBpbmdXYWdvbkxhYmVsLFxuICBpMThuV2Fnb25MYWJlbCxcbiAgaTE4bldhZ29uTGFiZWxOdW1iZXIsXG59IGZyb20gJy4uLy4uL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYk9jY3VwYW5jeSB9IGZyb20gJy4uLy4uL2NvcmUvaW50ZXJmYWNlcy5qcyc7XG5pbXBvcnQgeyBTYmJOYW1lZFNsb3RMaXN0TWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkljb25FbGVtZW50IH0gZnJvbSAnLi4vLi4vaWNvbi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3RyYWluLXdhZ29uLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnLi4vLi4vaWNvbi5qcyc7XG5pbXBvcnQgJy4uLy4uL3RpbWV0YWJsZS1vY2N1cGFuY3ktaWNvbi5qcyc7XG5cbmNvbnN0IHR5cGVUb0ljb25NYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGNvdWNoZXR0ZTogJ3NhLWNjJyxcbiAgc2xlZXBpbmc6ICdzYS13bCcsXG4gIHJlc3RhdXJhbnQ6ICdzYS13cicsXG59O1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGEgdHJhaW4gY29tcGFydG1lbnQgd2l0aGluIGEgYHNiYi10cmFpbmAgY29tcG9uZW50LlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIG9uZSBvciBtb3JlIGBzYmItaWNvbmAgZm9yIG1ldGEtaW5mb3JtYXRpb24gb2YgdGhlIGBzYmItdHJhaW4td2Fnb25gLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItdHJhaW4td2Fnb24nKVxuY2xhc3MgU2JiVHJhaW5XYWdvbkVsZW1lbnQgZXh0ZW5kcyBTYmJOYW1lZFNsb3RMaXN0TWl4aW48U2JiSWNvbkVsZW1lbnQsIHR5cGVvZiBMaXRFbGVtZW50PihcbiAgTGl0RWxlbWVudCxcbikge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgc2VjdG9yQ2hhbmdlOiAnc2VjdG9yQ2hhbmdlJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKipcbiAgICogV2Fnb24gdHlwZS5cbiAgICogRm9yIGB3YWdvbi1lbmQtbGVmdGAgYW5kIGB3YWdvbi1lbmQtcmlnaHRgLCBwbGVhc2Ugc2V0IHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIG9mIHRoZSBgYmxvY2tlZFBhc3NhZ2VgIHByb3BlcnR5LlxuICAgKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgYWNjZXNzb3IgdHlwZTpcbiAgICB8ICd3YWdvbidcbiAgICB8ICd3YWdvbi1lbmQtbGVmdCdcbiAgICB8ICd3YWdvbi1lbmQtcmlnaHQnXG4gICAgfCAnY291Y2hldHRlJ1xuICAgIHwgJ3NsZWVwaW5nJ1xuICAgIHwgJ3Jlc3RhdXJhbnQnXG4gICAgfCAnbG9jb21vdGl2ZSdcbiAgICB8ICdjbG9zZWQnID0gJ3dhZ29uJztcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgbGlzdENoaWxkTG9jYWxOYW1lcyA9IFsnc2JiLWljb24nXTtcblxuICAvKiogT2NjdXBhbmN5IG9mIGEgd2Fnb24uICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBhY2Nlc3NvciBvY2N1cGFuY3k6IFNiYk9jY3VwYW5jeSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBTZWN0b3IgaW4gd2hpY2ggdGhlIHdhZ29uIHN0b3BzLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQGhhbmRsZURpc3RpbmN0Q2hhbmdlKChlKSA9PiBlLl9zZWN0b3JDaGFuZ2VkKCkpXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUsIGNvbnZlcnRlcjogb21pdEVtcHR5Q29udmVydGVyIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBzZWN0b3I6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBBY2Nlc3NpYmlsaXR5IHRleHQgZm9yIGJsb2NrZWQgcGFzc2FnZXMgb2YgdGhlIHdhZ29uLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdibG9ja2VkLXBhc3NhZ2UnIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBibG9ja2VkUGFzc2FnZTogJ3ByZXZpb3VzJyB8ICduZXh0JyB8ICdib3RoJyB8ICdub25lJyA9ICdub25lJztcblxuICAvKiogQ2xhc3MgbGFiZWwgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnd2Fnb24tY2xhc3MnIH0pIHB1YmxpYyBhY2Nlc3NvciB3YWdvbkNsYXNzOiAnMScgfCAnMicgfCBudWxsID0gbnVsbDtcblxuICAvKiogV2Fnb24gbnVtYmVyICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCBjb252ZXJ0ZXI6IG9taXRFbXB0eUNvbnZlcnRlciB9KVxuICBwdWJsaWMgYWNjZXNzb3IgbGFiZWw6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBBZGRpdGlvbmFsIGFjY2Vzc2liaWxpdHkgdGV4dCB3aGljaCB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBlbmQuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhZGRpdGlvbmFsLWFjY2Vzc2liaWxpdHktdGV4dCcgfSlcbiAgcHVibGljIGFjY2Vzc29yIGFkZGl0aW9uYWxBY2Nlc3NpYmlsaXR5VGV4dDogc3RyaW5nID0gJyc7XG5cbiAgcHJpdmF0ZSBfbGFuZ3VhZ2UgPSBuZXcgU2JiTGFuZ3VhZ2VDb250cm9sbGVyKHRoaXMpO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogRW1pdHMgd2hlbmV2ZXIgdGhlIHNlY3RvciB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgcHJpdmF0ZSBfc2VjdG9yQ2hhbmdlOiBFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2JiVHJhaW5XYWdvbkVsZW1lbnQuZXZlbnRzLnNlY3RvckNoYW5nZSxcbiAgICB7XG4gICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICB9LFxuICApO1xuXG4gIHByaXZhdGUgX3NlY3RvckNoYW5nZWQoKTogdm9pZCB7XG4gICAgdGhpcy5fc2VjdG9yQ2hhbmdlLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3R5cGVMYWJlbCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnR5cGUgPT09ICdjbG9zZWQnKSB7XG4gICAgICByZXR1cm4gaTE4bkNsb3NlZENvbXBhcnRtZW50TGFiZWxbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF07XG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdsb2NvbW90aXZlJykge1xuICAgICAgcmV0dXJuIGkxOG5Mb2NvbW90aXZlTGFiZWxbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF07XG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdjb3VjaGV0dGUnKSB7XG4gICAgICByZXR1cm4gaTE4bkNvdWNoZXR0ZVdhZ29uTGFiZWxbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF07XG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdzbGVlcGluZycpIHtcbiAgICAgIHJldHVybiBpMThuU2xlZXBpbmdXYWdvbkxhYmVsW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdO1xuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAncmVzdGF1cmFudCcpIHtcbiAgICAgIHJldHVybiBpMThuUmVzdGF1cmFudFdhZ29uTGFiZWxbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF07XG4gICAgfVxuICAgIHJldHVybiBpMThuV2Fnb25MYWJlbFt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGNvbnN0IGJsb2NrZWRQYXNzYWdlID1cbiAgICAgIHRoaXMudHlwZSA9PT0gJ3dhZ29uLWVuZC1sZWZ0JyAmJiB0aGlzLmJsb2NrZWRQYXNzYWdlID09PSAnbm9uZSdcbiAgICAgICAgPyAncHJldmlvdXMnXG4gICAgICAgIDogdGhpcy50eXBlID09PSAnd2Fnb24tZW5kLXJpZ2h0JyAmJiB0aGlzLmJsb2NrZWRQYXNzYWdlID09PSAnbm9uZSdcbiAgICAgICAgICA/ICduZXh0J1xuICAgICAgICAgIDogKHRoaXMuYmxvY2tlZFBhc3NhZ2UgPz8gJ25vbmUnKTtcblxuICAgIGNvbnN0IGhhc0Jsb2NrZWRQYXNzYWdlRW50cnkgPSBibG9ja2VkUGFzc2FnZSAhPT0gJ25vbmUnO1xuXG4gICAgLy8gRnJvbSBhY2Nlc3NpYmlsaXR5IHBlcnNwZWN0aXZlIHdlIGNhbm5vdCBjcmVhdGUgYSBsaXN0IHdpdGggb25seSBvbmUgZW50cnkuXG4gICAgLy8gV2UgbmVlZCB0byBrbm93IHdoYXQgd2lsbCBiZSBwcmVzZW50ZWQgYW5kIHN3aXRjaCBzZW1hbnRpY3MgYmFzZWQgb24gY291bnQuXG4gICAgY29uc3QgbGlzdEVudHJpZXNDb3VudCA9XG4gICAgICArISF0aGlzLnNlY3RvciArXG4gICAgICArISF0aGlzLmxhYmVsICtcbiAgICAgICsoISF0aGlzLndhZ29uQ2xhc3MgJiYgdGhpcy50eXBlICE9PSAnY2xvc2VkJykgK1xuICAgICAgKyghIXRoaXMub2NjdXBhbmN5ICYmIHRoaXMudHlwZSAhPT0gJ2Nsb3NlZCcpICtcbiAgICAgICtoYXNCbG9ja2VkUGFzc2FnZUVudHJ5O1xuXG4gICAgY29uc3Qgc2VjdG9yU3RyaW5nID0gYCR7aTE4blNlY3Rvclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0sICR7dGhpcy5zZWN0b3J9YDtcblxuICAgIGNvbnN0IGxhYmVsQ29udGVudCA9IHRoaXMubGFiZWxcbiAgICAgID8gaHRtbGA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICR7YCR7aTE4bldhZ29uTGFiZWxOdW1iZXJbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19LCAke3RoaXMubGFiZWx9YH1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JHt0aGlzLmxhYmVsfTwvc3Bhbj5gXG4gICAgICA6IG5vdGhpbmc7XG5cbiAgICBjb25zdCB3YWdvbkNsYXNzQ29udGVudCA9IGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+XG4gICAgICAgICR7dGhpcy53YWdvbkNsYXNzID09PSAnMSdcbiAgICAgICAgICA/IGkxOG5DbGFzc1snZmlyc3QnXVt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XVxuICAgICAgICAgIDogaTE4bkNsYXNzWydzZWNvbmQnXVt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiR7dGhpcy53YWdvbkNsYXNzfTwvc3Bhbj5gO1xuXG4gICAgY29uc3QgbWFpbkljb24gPSB0eXBlVG9JY29uTWFwW3RoaXMudHlwZV1cbiAgICAgID8gaHRtbGA8c2JiLWljb25cbiAgICAgICAgICBuYW1lPSR7dHlwZVRvSWNvbk1hcFt0aGlzLnR5cGVdfVxuICAgICAgICAgIGNsYXNzPVwic2JiLXRyYWluLXdhZ29uX19tYWluLWljb25cIlxuICAgICAgICA+PC9zYmItaWNvbj5gXG4gICAgICA6IG5vdGhpbmc7XG5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItdHJhaW4td2Fnb25cIj5cbiAgICAgICAgJHt3aGVuKFxuICAgICAgICAgIGxpc3RFbnRyaWVzQ291bnQgPiAxLFxuICAgICAgICAgICgpID0+XG4gICAgICAgICAgICBodG1sYDx1bCBhcmlhLWxhYmVsPSR7dGhpcy5fdHlwZUxhYmVsKCl9IGNsYXNzPVwic2JiLXRyYWluLXdhZ29uX19jb21wYXJ0bWVudFwiPlxuICAgICAgICAgICAgICAke3RoaXMuc2VjdG9yXG4gICAgICAgICAgICAgICAgPyBodG1sYDxsaSBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj4ke3NlY3RvclN0cmluZ308L2xpPmBcbiAgICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cInNiYi10cmFpbi13YWdvbl9fbGFiZWxcIiBhcmlhLWhpZGRlbj0ke2AkeyF0aGlzLmxhYmVsfWB9PlxuICAgICAgICAgICAgICAgICR7bGFiZWxDb250ZW50fVxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAke3RoaXMud2Fnb25DbGFzcyAmJiB0aGlzLnR5cGUgIT09ICdjbG9zZWQnXG4gICAgICAgICAgICAgICAgPyBodG1sYDxsaSBjbGFzcz1cInNiYi10cmFpbi13YWdvbl9fY2xhc3NcIj4ke3dhZ29uQ2xhc3NDb250ZW50fTwvbGk+YFxuICAgICAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgICAgICAgJHt0aGlzLm9jY3VwYW5jeSAmJiB0aGlzLnR5cGUgIT09ICdjbG9zZWQnXG4gICAgICAgICAgICAgICAgPyBodG1sYDxzYmItdGltZXRhYmxlLW9jY3VwYW5jeS1pY29uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2JiLXRyYWluLXdhZ29uX19vY2N1cGFuY3lcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlzdGl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBvY2N1cGFuY3k9JHt0aGlzLm9jY3VwYW5jeX1cbiAgICAgICAgICAgICAgICAgID48L3NiYi10aW1ldGFibGUtb2NjdXBhbmN5LWljb24+YFxuICAgICAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgICAgICAgJHtoYXNCbG9ja2VkUGFzc2FnZUVudHJ5XG4gICAgICAgICAgICAgICAgPyBodG1sYDxsaSBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgJHtpMThuQmxvY2tlZFBhc3NhZ2VbYmxvY2tlZFBhc3NhZ2VdW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICAgICAgICAgICAgPC9saT5gXG4gICAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICAke21haW5JY29ufVxuICAgICAgICAgICAgPC91bD5gLFxuICAgICAgICAgICgpID0+XG4gICAgICAgICAgICBodG1sYDxkaXYgY2xhc3M9XCJzYmItdHJhaW4td2Fnb25fX2NvbXBhcnRtZW50XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiPlxuICAgICAgICAgICAgICAgICR7YCR7dGhpcy5fdHlwZUxhYmVsKCl9JHt0aGlzLnNlY3RvciA/IGAsICR7c2VjdG9yU3RyaW5nfWAgOiAnJ31gfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXRyYWluLXdhZ29uX19sYWJlbFwiIGFyaWEtaGlkZGVuPSR7YCR7IXRoaXMubGFiZWx9YH0+XG4gICAgICAgICAgICAgICAgJHtsYWJlbENvbnRlbnR9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAke3RoaXMud2Fnb25DbGFzcyAmJiB0aGlzLnR5cGUgIT09ICdjbG9zZWQnXG4gICAgICAgICAgICAgICAgPyBodG1sYDxzcGFuIGNsYXNzPVwic2JiLXRyYWluLXdhZ29uX19jbGFzc1wiPiR7d2Fnb25DbGFzc0NvbnRlbnR9PC9zcGFuPmBcbiAgICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgICR7dGhpcy5vY2N1cGFuY3kgJiYgdGhpcy50eXBlICE9PSAnY2xvc2VkJ1xuICAgICAgICAgICAgICAgID8gaHRtbGA8c2JiLXRpbWV0YWJsZS1vY2N1cGFuY3ktaWNvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi10cmFpbi13YWdvbl9fb2NjdXBhbmN5XCJcbiAgICAgICAgICAgICAgICAgICAgb2NjdXBhbmN5PSR7dGhpcy5vY2N1cGFuY3l9XG4gICAgICAgICAgICAgICAgICA+PC9zYmItdGltZXRhYmxlLW9jY3VwYW5jeS1pY29uPmBcbiAgICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgICR7aGFzQmxvY2tlZFBhc3NhZ2VFbnRyeVxuICAgICAgICAgICAgICAgID8gaHRtbGA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgJHtpMThuQmxvY2tlZFBhc3NhZ2VbYmxvY2tlZFBhc3NhZ2VdW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPmBcbiAgICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgICR7bWFpbkljb259XG4gICAgICAgICAgICA8L2Rpdj4gYCxcbiAgICAgICAgKX1cbiAgICAgICAgJHt0aGlzLmFkZGl0aW9uYWxBY2Nlc3NpYmlsaXR5VGV4dFxuICAgICAgICAgID8gaHRtbGA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj4sICR7dGhpcy5hZGRpdGlvbmFsQWNjZXNzaWJpbGl0eVRleHR9PC9zcGFuPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICR7dGhpcy5yZW5kZXJMaXN0KHtcbiAgICAgICAgICBjbGFzczogJ3NiYi10cmFpbi13YWdvbl9fYXR0cmlidXRlLWljb24tbGlzdCcsXG4gICAgICAgICAgYXJpYUxhYmVsOiBpMThuQWRkaXRpb25hbFdhZ29uSW5mb3JtYXRpb25IZWFkaW5nW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdLFxuICAgICAgICB9KX1cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi10cmFpbi13YWdvbic6IFNiYlRyYWluV2Fnb25FbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiU2JiVHJhaW5XYWdvbkVs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