@sbb-esta/lyne-elements-dev 4.7.0-dev.1773349426 → 4.7.0-dev.1773388991

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 (1405) hide show
  1. package/accordion/accordion.component.js +2 -98
  2. package/accordion.component-DmaGQH3Q.js +127 -0
  3. package/accordion.js +5 -4
  4. package/accordion.pure.js +2 -4
  5. package/action-group/action-group.component.js +2 -107
  6. package/action-group.component-KWugkMGf.js +158 -0
  7. package/action-group.js +5 -4
  8. package/action-group.pure.js +2 -4
  9. package/alert/alert/alert.component.js +2 -143
  10. package/alert/alert-group/alert-group.component.js +2 -103
  11. package/alert/alert-group.js +4 -7
  12. package/alert/alert.js +4 -7
  13. package/alert-group.component-RV1M1OKy.js +141 -0
  14. package/alert.component-PPR7hfTi.js +165 -0
  15. package/alert.js +6 -8
  16. package/alert.pure.js +3 -6
  17. package/autocomplete/autocomplete-base-element.js +2 -373
  18. package/autocomplete/autocomplete.component.js +51 -50
  19. package/autocomplete-base-element-DVFCZ4lt.js +425 -0
  20. package/autocomplete.js +7 -7
  21. package/autocomplete.pure.js +3 -6
  22. package/block-link-common-D4aizuV-.js +63 -0
  23. package/breadcrumb/breadcrumb/breadcrumb.component.js +2 -20
  24. package/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +2 -135
  25. package/breadcrumb/breadcrumb-group.js +4 -7
  26. package/breadcrumb/breadcrumb.js +4 -7
  27. package/breadcrumb-group.component-BA8KK3Om.js +145 -0
  28. package/breadcrumb.component-DjkZzGJD.js +24 -0
  29. package/breadcrumb.js +6 -8
  30. package/breadcrumb.pure.js +3 -6
  31. package/button/accent-button/accent-button.component.js +18 -14
  32. package/button/accent-button-link/accent-button-link.component.js +18 -14
  33. package/button/accent-button-link.js +4 -4
  34. package/button/accent-button-static/accent-button-static.component.js +17 -13
  35. package/button/accent-button-static.js +4 -4
  36. package/button/accent-button.js +4 -4
  37. package/button/button/button.component.js +18 -14
  38. package/button/button-link/button-link.component.js +18 -14
  39. package/button/button-link.js +4 -4
  40. package/button/button-static/button-static.component.js +18 -14
  41. package/button/button-static.js +4 -4
  42. package/button/button.js +4 -4
  43. package/button/common/button-common.js +81 -67
  44. package/button/common.js +3 -12
  45. package/button/mini-button/mini-button.component.js +22 -18
  46. package/button/mini-button-group/mini-button-group.component.js +2 -68
  47. package/button/mini-button-group.js +6 -6
  48. package/button/mini-button-link/mini-button-link.component.js +2 -27
  49. package/button/mini-button-link.js +6 -6
  50. package/button/mini-button.js +4 -4
  51. package/button/secondary-button/secondary-button.component.js +18 -14
  52. package/button/secondary-button-link/secondary-button-link.component.js +18 -14
  53. package/button/secondary-button-link.js +6 -6
  54. package/button/secondary-button-static/secondary-button-static.component.js +18 -14
  55. package/button/secondary-button-static.js +4 -4
  56. package/button/secondary-button.js +6 -6
  57. package/button/transparent-button/transparent-button.component.js +18 -14
  58. package/button/transparent-button-link/transparent-button-link.component.js +18 -14
  59. package/button/transparent-button-link.js +6 -6
  60. package/button/transparent-button-static/transparent-button-static.component.js +18 -14
  61. package/button/transparent-button-static.js +4 -4
  62. package/button/transparent-button.js +4 -4
  63. package/button.js +20 -56
  64. package/button.pure.js +18 -42
  65. package/calendar/calendar/calendar.component.js +2 -1227
  66. package/calendar/calendar-day/calendar-day.component.js +2 -98
  67. package/calendar/calendar-day.js +4 -7
  68. package/calendar/calendar.js +4 -9
  69. package/calendar-day.component-DqAXvoP3.js +113 -0
  70. package/calendar.component-BgZDy-rX.js +1246 -0
  71. package/calendar.js +6 -10
  72. package/calendar.pure.js +3 -7
  73. package/card/card/card.component.js +2 -48
  74. package/card/card-badge/card-badge.component.js +2 -48
  75. package/card/card-badge.js +4 -7
  76. package/card/card-button/card-button.component.js +11 -10
  77. package/card/card-button.js +3 -6
  78. package/card/card-link/card-link.component.js +11 -10
  79. package/card/card-link.js +3 -6
  80. package/card/card.js +4 -7
  81. package/card/common/card-action-common.js +2 -63
  82. package/card/common.js +5 -6
  83. package/card-action-common-GpkaNYtV.js +88 -0
  84. package/card-badge.component-D_PI9Ega.js +65 -0
  85. package/card.component-Dt2YFmd3.js +62 -0
  86. package/card.js +9 -16
  87. package/card.pure.js +5 -11
  88. package/carousel/carousel/carousel.component.js +2 -88
  89. package/carousel/carousel-item/carousel-item.component.js +2 -18
  90. package/carousel/carousel-item.js +4 -7
  91. package/carousel/carousel-list/carousel-list.component.js +2 -90
  92. package/carousel/carousel-list.js +4 -7
  93. package/carousel/carousel.js +4 -7
  94. package/carousel-item.component-kv3rY8B-.js +25 -0
  95. package/carousel-list.component-DMMk66SP.js +91 -0
  96. package/carousel.component-Bd0iGUbf.js +97 -0
  97. package/carousel.js +7 -11
  98. package/carousel.pure.js +4 -8
  99. package/checkbox/checkbox-group.js +2 -3
  100. package/checkbox/checkbox-panel.js +2 -3
  101. package/checkbox/checkbox.component.js +3 -91
  102. package/checkbox/checkbox.js +5 -7
  103. package/checkbox/common/checkbox-common.js +2 -57
  104. package/checkbox/common.js +5 -7
  105. package/checkbox-common-D9htxWLZ.js +68 -0
  106. package/checkbox-group/checkbox-group.component.js +2 -101
  107. package/checkbox-group.component-CNAwwaS0.js +146 -0
  108. package/checkbox-group.js +5 -4
  109. package/checkbox-group.pure.js +2 -4
  110. package/checkbox-panel/checkbox-panel.component.js +63 -48
  111. package/checkbox-panel.js +4 -3
  112. package/checkbox-panel.pure.js +2 -4
  113. package/checkbox.component-CJcC5JnN.js +125 -0
  114. package/checkbox.js +10 -14
  115. package/checkbox.pure.js +3 -7
  116. package/chip/chip/chip.component.js +2 -73
  117. package/chip/chip-group/chip-group.component.js +2 -253
  118. package/chip/chip-group.js +4 -7
  119. package/chip/chip.js +4 -7
  120. package/chip-group.component-DR6GoGCB.js +283 -0
  121. package/chip-label/chip-label.component.js +2 -56
  122. package/chip-label.component-DBN4jfW7.js +80 -0
  123. package/chip-label.js +5 -4
  124. package/chip-label.pure.js +2 -4
  125. package/chip.component-BNOs8T6O.js +94 -0
  126. package/chip.js +6 -8
  127. package/chip.pure.js +3 -6
  128. package/clock/clock.component.js +2 -153
  129. package/clock.component-DDaWbXHW.js +148 -0
  130. package/clock.js +5 -4
  131. package/clock.pure.js +2 -4
  132. package/common-CI_BB6sF.js +5 -0
  133. package/compact-paginator.component-BxSy5YXY.js +45 -0
  134. package/container/container/container.component.js +2 -76
  135. package/container/container.js +4 -7
  136. package/container/sticky-bar/sticky-bar.component.js +2 -122
  137. package/container/sticky-bar.js +4 -7
  138. package/container.component-DXFIvseq.js +117 -0
  139. package/container.js +6 -8
  140. package/container.pure.js +3 -6
  141. package/core/a11y/arrow-navigation.js +45 -33
  142. package/core/a11y/fake-event-detection.js +8 -9
  143. package/core/a11y/focus-trap-controller.js +69 -91
  144. package/core/a11y/focus-visible-within-controller.js +18 -18
  145. package/core/a11y/focus.js +13 -13
  146. package/core/a11y/input-modality-detector.js +42 -47
  147. package/core/a11y/interactivity-checker.js +61 -96
  148. package/core/a11y/live-announcer.js +29 -40
  149. package/core/a11y.js +9 -26
  150. package/core/base-elements/action-base-element.js +29 -37
  151. package/core/base-elements/button-base-element.js +165 -145
  152. package/core/base-elements/element.js +28 -63
  153. package/core/base-elements/link-base-element.js +186 -119
  154. package/core/base-elements/open-close-base-element.js +40 -42
  155. package/core/base-elements.js +6 -13
  156. package/core/config/config.js +8 -9
  157. package/core/config.js +2 -5
  158. package/core/controllers/escapable-overlay-controller.js +23 -25
  159. package/core/controllers/id-reference-controller.js +50 -59
  160. package/core/controllers/inert-controller.js +55 -57
  161. package/core/controllers/language-controller.js +53 -38
  162. package/core/controllers/media-matchers-controller.js +82 -96
  163. package/core/controllers/overlay-position-controller.js +215 -222
  164. package/core/controllers/property-watcher-controller.js +55 -59
  165. package/core/controllers/slot-state-controller.js +34 -36
  166. package/core/controllers.js +7 -28
  167. package/core/datetime/date-adapter.js +61 -135
  168. package/core/datetime/native-date-adapter.js +91 -140
  169. package/core/datetime/temporal-date-adapter.js +108 -144
  170. package/core/datetime.js +4 -16
  171. package/core/decorators/base.js +0 -1
  172. package/core/decorators/force-type.js +12 -16
  173. package/core/decorators/get-override.js +10 -13
  174. package/core/decorators/handle-distinct-change.js +12 -15
  175. package/core/decorators/host-attributes.js +15 -16
  176. package/core/decorators/id-reference.js +65 -75
  177. package/core/decorators/omit-empty-converter.js +7 -9
  178. package/core/decorators/plain-date.js +21 -25
  179. package/core/decorators.js +8 -17
  180. package/core/dom/animation.js +8 -9
  181. package/core/dom/contains-pierce-shadow-dom.js +10 -11
  182. package/core/dom/lean-context.js +4 -4
  183. package/core/dom/platform.js +8 -18
  184. package/core/dom/queue-dom-content-loaded.js +6 -6
  185. package/core/dom/scroll.js +14 -16
  186. package/core/dom/set-or-remove-attribute.js +5 -5
  187. package/core/dom.js +6 -25
  188. package/core/eventing/composed-path-has-attribute.js +6 -7
  189. package/core/eventing/event-target.js +5 -5
  190. package/core/eventing/form-element-handlers.js +5 -5
  191. package/core/eventing/forward-event.js +6 -6
  192. package/core/eventing/is-event-prevented.js +5 -5
  193. package/core/eventing/throttle.js +10 -10
  194. package/core/eventing.js +7 -14
  195. package/core/i18n/i18n.js +634 -738
  196. package/core/i18n.js +2 -104
  197. package/core/images.js +14 -14
  198. package/core/interfaces.js +0 -1
  199. package/core/mixins/animation-complete-mixin.js +34 -42
  200. package/core/mixins/constructor.js +0 -1
  201. package/core/mixins/disabled-mixin.js +91 -74
  202. package/core/mixins/element-internals-mixin.js +149 -155
  203. package/core/mixins/form-associated-checkbox-mixin.js +106 -93
  204. package/core/mixins/form-associated-input-mixin.js +202 -193
  205. package/core/mixins/form-associated-mixin.js +168 -226
  206. package/core/mixins/form-associated-radio-button-mixin.js +152 -168
  207. package/core/mixins/hydration-mixin.js +27 -37
  208. package/core/mixins/named-slot-list-mixin.js +77 -95
  209. package/core/mixins/negative-mixin.js +45 -33
  210. package/core/mixins/panel-mixin.js +109 -70
  211. package/core/mixins/readonly-mixin.js +40 -34
  212. package/core/mixins/required-mixin.js +48 -35
  213. package/core/mixins/selection-panel-mixin.js +36 -39
  214. package/core/mixins/update-scheduler-mixin.js +20 -21
  215. package/core/mixins.js +21 -41
  216. package/core/overlay/overlay-option-panel.js +15 -16
  217. package/core/overlay/overlay-outside-pointer-event-listener.js +34 -37
  218. package/core/overlay/overlay-trigger-attributes.js +11 -14
  219. package/core/overlay/overlay.js +6 -6
  220. package/core/overlay/position.js +53 -49
  221. package/core/overlay.js +6 -19
  222. package/core/styles.js +5 -5
  223. package/core/testing/event-spy.js +46 -50
  224. package/core/testing/mocha-extensions.js +7 -10
  225. package/core/testing/wait-for-condition.js +10 -12
  226. package/core/testing/wait-for-image-ready.js +15 -16
  227. package/core/testing/wait-for-render.js +12 -13
  228. package/core/testing.js +6 -14
  229. package/date-input/date-input.component.js +2 -166
  230. package/date-input.component-zZtnd9Og.js +205 -0
  231. package/date-input.js +5 -4
  232. package/date-input.pure.js +2 -4
  233. package/datepicker/common/datepicker-button.js +2 -102
  234. package/datepicker/common.js +5 -8
  235. package/datepicker/datepicker/datepicker.component.js +2 -120
  236. package/datepicker/datepicker-next-day/datepicker-next-day.component.js +27 -23
  237. package/datepicker/datepicker-next-day.js +3 -6
  238. package/datepicker/datepicker-previous-day/datepicker-previous-day.component.js +27 -23
  239. package/datepicker/datepicker-previous-day.js +3 -6
  240. package/datepicker/datepicker-toggle/datepicker-toggle.component.js +66 -51
  241. package/datepicker/datepicker-toggle.js +3 -6
  242. package/datepicker/datepicker.js +4 -7
  243. package/datepicker-button-C1TrzFl-.js +109 -0
  244. package/datepicker.component-cmdnlVgf.js +156 -0
  245. package/datepicker.js +9 -18
  246. package/datepicker.pure.js +5 -13
  247. package/development/accordion/accordion.component.js +2 -132
  248. package/development/accordion.component-BIFcgIa0.js +172 -0
  249. package/development/accordion.js +8 -5
  250. package/development/accordion.pure.js +2 -5
  251. package/development/action-group/action-group.component.js +2 -305
  252. package/development/action-group.component-CuhO6yb9.js +379 -0
  253. package/development/action-group.js +8 -5
  254. package/development/action-group.pure.js +2 -5
  255. package/development/alert/alert/alert.component.js +2 -385
  256. package/development/alert/alert-group/alert-group.component.js +2 -166
  257. package/development/alert/alert-group.js +7 -5
  258. package/development/alert/alert.js +7 -5
  259. package/development/alert-group.component-BlrlsRB8.js +219 -0
  260. package/development/alert.component-CJ2yLyOY.js +411 -0
  261. package/development/alert.js +9 -7
  262. package/development/alert.pure.js +3 -7
  263. package/development/autocomplete/autocomplete-base-element.js +2 -897
  264. package/development/autocomplete/autocomplete.component.js +82 -72
  265. package/development/autocomplete-base-element-DCfmuVY6.js +960 -0
  266. package/development/autocomplete.js +8 -6
  267. package/development/autocomplete.pure.js +2 -6
  268. package/development/block-link-common-FvD8So7p.js +145 -0
  269. package/development/breadcrumb/breadcrumb/breadcrumb.component.js +2 -77
  270. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +2 -263
  271. package/development/breadcrumb/breadcrumb-group.js +7 -5
  272. package/development/breadcrumb/breadcrumb.js +7 -5
  273. package/development/breadcrumb-group.component-DjsoMTPI.js +278 -0
  274. package/development/breadcrumb.component-DvOf-PiO.js +89 -0
  275. package/development/breadcrumb.js +9 -7
  276. package/development/breadcrumb.pure.js +3 -7
  277. package/development/button/accent-button/accent-button.component.js +24 -13
  278. package/development/button/accent-button-link/accent-button-link.component.js +24 -13
  279. package/development/button/accent-button-link.js +9 -7
  280. package/development/button/accent-button-static/accent-button-static.component.js +24 -13
  281. package/development/button/accent-button-static.js +9 -7
  282. package/development/button/accent-button.js +9 -7
  283. package/development/button/button/button.component.js +23 -12
  284. package/development/button/button-link/button-link.component.js +23 -12
  285. package/development/button/button-link.js +9 -7
  286. package/development/button/button-static/button-static.component.js +23 -12
  287. package/development/button/button-static.js +9 -7
  288. package/development/button/button.js +9 -7
  289. package/development/button/common/button-common.js +104 -85
  290. package/development/button/common.js +2 -12
  291. package/development/button/mini-button/mini-button.component.js +28 -17
  292. package/development/button/mini-button-group/mini-button-group.component.js +2 -141
  293. package/development/button/mini-button-group.js +9 -7
  294. package/development/button/mini-button-link/mini-button-link.component.js +2 -34
  295. package/development/button/mini-button-link.js +9 -7
  296. package/development/button/mini-button.js +9 -7
  297. package/development/button/secondary-button/secondary-button.component.js +23 -12
  298. package/development/button/secondary-button-link/secondary-button-link.component.js +23 -12
  299. package/development/button/secondary-button-link.js +9 -7
  300. package/development/button/secondary-button-static/secondary-button-static.component.js +23 -12
  301. package/development/button/secondary-button-static.js +9 -7
  302. package/development/button/secondary-button.js +9 -7
  303. package/development/button/transparent-button/transparent-button.component.js +23 -12
  304. package/development/button/transparent-button-link/transparent-button-link.component.js +23 -12
  305. package/development/button/transparent-button-link.js +9 -7
  306. package/development/button/transparent-button-static/transparent-button-static.component.js +23 -12
  307. package/development/button/transparent-button-static.js +9 -7
  308. package/development/button/transparent-button.js +9 -7
  309. package/development/button.js +10 -29
  310. package/development/button.pure.js +4 -29
  311. package/development/calendar/calendar/calendar.component.js +2 -1984
  312. package/development/calendar/calendar-day/calendar-day.component.js +2 -248
  313. package/development/calendar/calendar-day.js +7 -5
  314. package/development/calendar/calendar.js +7 -7
  315. package/development/calendar-day.component-De9Xn3-q.js +283 -0
  316. package/development/calendar.component-PHpgLc0z.js +2458 -0
  317. package/development/calendar.js +9 -9
  318. package/development/calendar.pure.js +3 -8
  319. package/development/card/card/card.component.js +2 -233
  320. package/development/card/card-badge/card-badge.component.js +2 -119
  321. package/development/card/card-badge.js +7 -5
  322. package/development/card/card-button/card-button.component.js +19 -11
  323. package/development/card/card-button.js +6 -4
  324. package/development/card/card-link/card-link.component.js +19 -11
  325. package/development/card/card-link.js +6 -4
  326. package/development/card/card.js +7 -5
  327. package/development/card/common/card-action-common.js +2 -121
  328. package/development/card/common.js +6 -5
  329. package/development/card-action-common-DqBn3bPy.js +147 -0
  330. package/development/card-badge.component-Cs4dow18.js +146 -0
  331. package/development/card.component-CeOZXXWU.js +258 -0
  332. package/development/card.js +10 -11
  333. package/development/card.pure.js +4 -11
  334. package/development/carousel/carousel/carousel.component.js +2 -160
  335. package/development/carousel/carousel-item/carousel-item.component.js +2 -32
  336. package/development/carousel/carousel-item.js +7 -5
  337. package/development/carousel/carousel-list/carousel-list.component.js +2 -157
  338. package/development/carousel/carousel-list.js +7 -5
  339. package/development/carousel/carousel.js +7 -5
  340. package/development/carousel-item.component-DOIXA2QK.js +47 -0
  341. package/development/carousel-list.component-7Z3dYtAF.js +160 -0
  342. package/development/carousel.component-b4C-hxkj.js +169 -0
  343. package/development/carousel.js +10 -9
  344. package/development/carousel.pure.js +4 -9
  345. package/development/checkbox/checkbox-group.js +5 -1
  346. package/development/checkbox/checkbox-panel.js +5 -1
  347. package/development/checkbox/checkbox.component.js +3 -141
  348. package/development/checkbox/checkbox.js +8 -5
  349. package/development/checkbox/common/checkbox-common.js +2 -137
  350. package/development/checkbox/common.js +6 -6
  351. package/development/checkbox-common-DD7r8g0_.js +147 -0
  352. package/development/checkbox-group/checkbox-group.component.js +2 -212
  353. package/development/checkbox-group.component-CRZO7CEc.js +265 -0
  354. package/development/checkbox-group.js +8 -5
  355. package/development/checkbox-group.pure.js +2 -5
  356. package/development/checkbox-panel/checkbox-panel.component.js +81 -54
  357. package/development/checkbox-panel.js +7 -4
  358. package/development/checkbox-panel.pure.js +1 -4
  359. package/development/checkbox.component-B43Akyck.js +193 -0
  360. package/development/checkbox.js +12 -11
  361. package/development/checkbox.pure.js +3 -8
  362. package/development/chip/chip/chip.component.js +2 -164
  363. package/development/chip/chip-group/chip-group.component.js +2 -447
  364. package/development/chip/chip-group.js +7 -5
  365. package/development/chip/chip.js +7 -5
  366. package/development/chip-group.component-CeRAIWg-.js +493 -0
  367. package/development/chip-label/chip-label.component.js +2 -131
  368. package/development/chip-label.component-jN_Fulv_.js +165 -0
  369. package/development/chip-label.js +8 -5
  370. package/development/chip-label.pure.js +2 -5
  371. package/development/chip.component-Bn7ffNEr.js +191 -0
  372. package/development/chip.js +9 -7
  373. package/development/chip.pure.js +3 -7
  374. package/development/clock/clock.component.js +2 -362
  375. package/development/clock.component-btjeVAaa.js +392 -0
  376. package/development/clock.js +8 -5
  377. package/development/clock.pure.js +2 -5
  378. package/development/common-Da_cep8M.js +565 -0
  379. package/development/compact-paginator.component-CCDP0TMd.js +96 -0
  380. package/development/container/container/container.component.js +2 -182
  381. package/development/container/container.js +7 -5
  382. package/development/container/sticky-bar/sticky-bar.component.js +2 -357
  383. package/development/container/sticky-bar.js +7 -5
  384. package/development/container.component-CVm8-HZ4.js +238 -0
  385. package/development/container.js +9 -7
  386. package/development/container.pure.js +3 -7
  387. package/development/core/a11y/arrow-navigation.js +67 -28
  388. package/development/core/a11y/fake-event-detection.js +10 -8
  389. package/development/core/a11y/focus-trap-controller.js +104 -120
  390. package/development/core/a11y/focus-visible-within-controller.js +25 -24
  391. package/development/core/a11y/focus.js +14 -13
  392. package/development/core/a11y/input-modality-detector.js +128 -75
  393. package/development/core/a11y/interactivity-checker.js +115 -108
  394. package/development/core/a11y/live-announcer.js +76 -80
  395. package/development/core/a11y.js +3 -21
  396. package/development/core/base-elements/action-base-element.js +37 -42
  397. package/development/core/base-elements/button-base-element.js +247 -205
  398. package/development/core/base-elements/element.js +69 -67
  399. package/development/core/base-elements/link-base-element.js +226 -150
  400. package/development/core/base-elements/open-close-base-element.js +54 -49
  401. package/development/core/base-elements.js +2 -10
  402. package/development/core/config/config.js +9 -11
  403. package/development/core/config.js +1 -5
  404. package/development/core/controllers/escapable-overlay-controller.js +34 -36
  405. package/development/core/controllers/id-reference-controller.js +76 -81
  406. package/development/core/controllers/inert-controller.js +99 -105
  407. package/development/core/controllers/language-controller.js +76 -66
  408. package/development/core/controllers/media-matchers-controller.js +145 -138
  409. package/development/core/controllers/overlay-position-controller.js +297 -283
  410. package/development/core/controllers/property-watcher-controller.js +94 -119
  411. package/development/core/controllers/slot-state-controller.js +75 -63
  412. package/development/core/controllers.js +1 -23
  413. package/development/core/datetime/date-adapter.js +143 -166
  414. package/development/core/datetime/native-date-adapter.js +142 -148
  415. package/development/core/datetime/temporal-date-adapter.js +162 -149
  416. package/development/core/datetime.js +1 -14
  417. package/development/core/decorators/base.js +0 -2
  418. package/development/core/decorators/force-type.js +24 -27
  419. package/development/core/decorators/get-override.js +17 -17
  420. package/development/core/decorators/handle-distinct-change.js +20 -21
  421. package/development/core/decorators/host-attributes.js +37 -26
  422. package/development/core/decorators/id-reference.js +115 -114
  423. package/development/core/decorators/omit-empty-converter.js +13 -9
  424. package/development/core/decorators/plain-date.js +36 -31
  425. package/development/core/decorators.js +1 -11
  426. package/development/core/dom/animation.js +8 -9
  427. package/development/core/dom/contains-pierce-shadow-dom.js +12 -12
  428. package/development/core/dom/lean-context.js +9 -5
  429. package/development/core/dom/platform.js +35 -28
  430. package/development/core/dom/queue-dom-content-loaded.js +11 -10
  431. package/development/core/dom/scroll.js +34 -34
  432. package/development/core/dom/set-or-remove-attribute.js +13 -9
  433. package/development/core/dom.js +1 -21
  434. package/development/core/eventing/composed-path-has-attribute.js +17 -10
  435. package/development/core/eventing/event-target.js +7 -5
  436. package/development/core/eventing/form-element-handlers.js +10 -7
  437. package/development/core/eventing/forward-event.js +12 -7
  438. package/development/core/eventing/is-event-prevented.js +8 -6
  439. package/development/core/eventing/throttle.js +16 -17
  440. package/development/core/eventing.js +1 -9
  441. package/development/core/i18n/i18n.js +770 -875
  442. package/development/core/i18n.js +1 -104
  443. package/development/core/images.js +20 -15
  444. package/development/core/interfaces.js +0 -2
  445. package/development/core/mixins/animation-complete-mixin.js +55 -51
  446. package/development/core/mixins/constructor.js +0 -2
  447. package/development/core/mixins/disabled-mixin.js +124 -101
  448. package/development/core/mixins/element-internals-mixin.js +212 -225
  449. package/development/core/mixins/form-associated-checkbox-mixin.js +160 -141
  450. package/development/core/mixins/form-associated-input-mixin.js +334 -314
  451. package/development/core/mixins/form-associated-mixin.js +287 -279
  452. package/development/core/mixins/form-associated-radio-button-mixin.js +260 -247
  453. package/development/core/mixins/hydration-mixin.js +58 -55
  454. package/development/core/mixins/named-slot-list-mixin.js +116 -114
  455. package/development/core/mixins/negative-mixin.js +56 -41
  456. package/development/core/mixins/panel-mixin.js +142 -93
  457. package/development/core/mixins/readonly-mixin.js +54 -43
  458. package/development/core/mixins/required-mixin.js +65 -46
  459. package/development/core/mixins/selection-panel-mixin.js +50 -55
  460. package/development/core/mixins/update-scheduler-mixin.js +30 -25
  461. package/development/core/mixins.js +10 -29
  462. package/development/core/overlay/overlay-option-panel.js +34 -26
  463. package/development/core/overlay/overlay-outside-pointer-event-listener.js +64 -60
  464. package/development/core/overlay/overlay-trigger-attributes.js +42 -39
  465. package/development/core/overlay/overlay.js +10 -5
  466. package/development/core/overlay/position.js +143 -117
  467. package/development/core/overlay.js +2 -16
  468. package/development/core/styles.js +6 -5
  469. package/development/core/testing/event-spy.js +66 -67
  470. package/development/core/testing/mocha-extensions.js +15 -13
  471. package/development/core/testing/wait-for-condition.js +14 -17
  472. package/development/core/testing/wait-for-image-ready.js +20 -27
  473. package/development/core/testing/wait-for-render.js +30 -18
  474. package/development/core/testing.js +1 -10
  475. package/development/date-input/date-input.component.js +2 -278
  476. package/development/date-input.component-CqsEOZfb.js +338 -0
  477. package/development/date-input.js +8 -5
  478. package/development/date-input.pure.js +2 -5
  479. package/development/datepicker/common/datepicker-button.js +2 -155
  480. package/development/datepicker/common.js +6 -7
  481. package/development/datepicker/datepicker/datepicker.component.js +2 -180
  482. package/development/datepicker/datepicker-next-day/datepicker-next-day.component.js +35 -30
  483. package/development/datepicker/datepicker-next-day.js +6 -4
  484. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.component.js +35 -30
  485. package/development/datepicker/datepicker-previous-day.js +6 -4
  486. package/development/datepicker/datepicker-toggle/datepicker-toggle.component.js +79 -67
  487. package/development/datepicker/datepicker-toggle.js +6 -4
  488. package/development/datepicker/datepicker.js +7 -5
  489. package/development/datepicker-button-BORzfDaA.js +167 -0
  490. package/development/datepicker.component-CuFtPZg9.js +223 -0
  491. package/development/datepicker.js +9 -12
  492. package/development/datepicker.pure.js +3 -12
  493. package/development/dialog/dialog/dialog.component.js +2 -383
  494. package/development/dialog/dialog-actions/dialog-actions.component.js +2 -42
  495. package/development/dialog/dialog-actions.js +7 -5
  496. package/development/dialog/dialog-close-button/dialog-close-button.component.js +2 -36
  497. package/development/dialog/dialog-close-button.js +7 -5
  498. package/development/dialog/dialog-content/dialog-content.component.js +2 -31
  499. package/development/dialog/dialog-content.js +7 -5
  500. package/development/dialog/dialog-title/dialog-title.component.js +2 -39
  501. package/development/dialog/dialog-title.js +7 -5
  502. package/development/dialog/dialog.js +7 -8
  503. package/development/dialog-actions.component-Mbx-Bs3t.js +55 -0
  504. package/development/dialog-close-button.component-B1dPHPy2.js +48 -0
  505. package/development/dialog-content.component-qP09Yo_N.js +42 -0
  506. package/development/dialog-title.component-B4u2w8h5.js +50 -0
  507. package/development/dialog.component-DaM1FSHB.js +403 -0
  508. package/development/dialog.js +12 -16
  509. package/development/dialog.pure.js +6 -16
  510. package/development/divider/divider.component.js +2 -73
  511. package/development/divider.component-Ddzlu6Fw.js +95 -0
  512. package/development/divider.js +8 -5
  513. package/development/divider.pure.js +2 -5
  514. package/development/error.component-C76eZnXo.js +93 -0
  515. package/development/expansion-panel/expansion-panel/expansion-panel.component.js +2 -417
  516. package/development/expansion-panel/expansion-panel-content/expansion-panel-content.component.js +2 -70
  517. package/development/expansion-panel/expansion-panel-content.js +7 -5
  518. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +2 -170
  519. package/development/expansion-panel/expansion-panel-header.js +7 -5
  520. package/development/expansion-panel/expansion-panel.js +7 -5
  521. package/development/expansion-panel-content.component-DTZk3ZKL.js +77 -0
  522. package/development/expansion-panel-header.component-C7ymZCux.js +175 -0
  523. package/development/expansion-panel.component-xUWTKeaC.js +489 -0
  524. package/development/expansion-panel.js +10 -9
  525. package/development/expansion-panel.pure.js +4 -9
  526. package/development/file-selector/common/file-selector-common.js +2 -431
  527. package/development/file-selector/common.js +6 -6
  528. package/development/file-selector/file-selector/file-selector.component.js +27 -18
  529. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +2 -126
  530. package/development/file-selector/file-selector-dropzone.js +7 -5
  531. package/development/file-selector/file-selector.js +6 -4
  532. package/development/file-selector-common-qMfAccOd.js +512 -0
  533. package/development/file-selector-dropzone.component-HDUIUSQI.js +154 -0
  534. package/development/file-selector.js +9 -9
  535. package/development/file-selector.pure.js +3 -9
  536. package/development/flip-card/flip-card/flip-card.component.js +2 -306
  537. package/development/flip-card/flip-card-details/flip-card-details.component.js +2 -69
  538. package/development/flip-card/flip-card-details.js +7 -5
  539. package/development/flip-card/flip-card-summary/flip-card-summary.component.js +2 -124
  540. package/development/flip-card/flip-card-summary.js +7 -5
  541. package/development/flip-card/flip-card.js +7 -5
  542. package/development/flip-card-details.component-BilGh5Yb.js +85 -0
  543. package/development/flip-card-summary.component-DDDnvs_c.js +151 -0
  544. package/development/flip-card.component-CdRzb7IT.js +334 -0
  545. package/development/flip-card.js +10 -9
  546. package/development/flip-card.pure.js +4 -9
  547. package/development/footer/footer.component.js +2 -251
  548. package/development/footer.component-C057PwF1.js +310 -0
  549. package/development/footer.js +8 -5
  550. package/development/footer.pure.js +2 -5
  551. package/development/form-field/error/error.component.js +2 -83
  552. package/development/form-field/error.js +7 -5
  553. package/development/form-field/form-field/form-field.component.js +2 -892
  554. package/development/form-field/form-field-clear/form-field-clear.component.js +49 -41
  555. package/development/form-field/form-field-clear.js +6 -4
  556. package/development/form-field/form-field.js +7 -7
  557. package/development/form-field.component-D4dQ8sCh.js +1009 -0
  558. package/development/form-field.js +9 -10
  559. package/development/form-field.pure.js +3 -9
  560. package/development/header/common/header-action-common.js +2 -329
  561. package/development/header/common.js +6 -5
  562. package/development/header/header/header.component.js +2 -385
  563. package/development/header/header-button/header-button.component.js +15 -7
  564. package/development/header/header-button.js +6 -4
  565. package/development/header/header-environment/header-environment.component.js +2 -88
  566. package/development/header/header-environment.js +7 -5
  567. package/development/header/header-link/header-link.component.js +15 -7
  568. package/development/header/header-link.js +6 -4
  569. package/development/header/header.js +7 -5
  570. package/development/header-action-common-Dff8K0RB.js +346 -0
  571. package/development/header-environment.component-DYnJkxCZ.js +101 -0
  572. package/development/header.component-DYls7wGO.js +446 -0
  573. package/development/header.js +10 -11
  574. package/development/header.pure.js +4 -11
  575. package/development/icon/icon-base.js +2 -174
  576. package/development/icon/icon-name-mixin.js +75 -59
  577. package/development/icon/icon-request.js +31 -38
  578. package/development/icon/icon-validate.js +36 -45
  579. package/development/icon/icon.component.js +119 -94
  580. package/development/icon-base-CcQCgmqX.js +206 -0
  581. package/development/icon-sidebar/icon-sidebar/icon-sidebar.component.js +2 -74
  582. package/development/icon-sidebar/icon-sidebar-button/icon-sidebar-button.component.js +25 -15
  583. package/development/icon-sidebar/icon-sidebar-button.js +6 -4
  584. package/development/icon-sidebar/icon-sidebar-container/icon-sidebar-container.component.js +2 -30
  585. package/development/icon-sidebar/icon-sidebar-container.js +7 -5
  586. package/development/icon-sidebar/icon-sidebar-content/icon-sidebar-content.component.js +2 -22
  587. package/development/icon-sidebar/icon-sidebar-content.js +7 -5
  588. package/development/icon-sidebar/icon-sidebar-link/icon-sidebar-link.component.js +25 -15
  589. package/development/icon-sidebar/icon-sidebar-link.js +6 -4
  590. package/development/icon-sidebar/icon-sidebar.js +7 -5
  591. package/development/icon-sidebar-container.component-BJHjpF-Q.js +41 -0
  592. package/development/icon-sidebar-content.component-C2wreczL.js +33 -0
  593. package/development/icon-sidebar.component-PcmjRlDp.js +100 -0
  594. package/development/icon-sidebar.js +10 -11
  595. package/development/icon-sidebar.pure.js +4 -11
  596. package/development/icon.js +10 -12
  597. package/development/icon.pure.js +4 -12
  598. package/development/image/image.component.js +2 -648
  599. package/development/image.component-fvsSR3Df.js +820 -0
  600. package/development/image.js +8 -5
  601. package/development/image.pure.js +2 -5
  602. package/development/inline-link-common-CyTcO5MN.js +52 -0
  603. package/development/journey-header/journey-header.component.js +2 -158
  604. package/development/journey-header.component-BB8WYOqH.js +217 -0
  605. package/development/journey-header.js +8 -5
  606. package/development/journey-header.pure.js +2 -5
  607. package/development/lead-container/lead-container.component.js +2 -108
  608. package/development/lead-container.component-BGf8oqw7.js +122 -0
  609. package/development/lead-container.js +8 -5
  610. package/development/lead-container.pure.js +2 -5
  611. package/development/link/block-link/block-link.component.js +15 -7
  612. package/development/link/block-link-button/block-link-button.component.js +15 -7
  613. package/development/link/block-link-button.js +9 -7
  614. package/development/link/block-link-static/block-link-static.component.js +15 -7
  615. package/development/link/block-link-static.js +9 -7
  616. package/development/link/block-link.js +9 -7
  617. package/development/link/common/block-link-common.js +3 -124
  618. package/development/link/common/inline-link-common.js +3 -44
  619. package/development/link/common/link-common.js +2 -10
  620. package/development/link/common.js +4 -9
  621. package/development/link/link/link.component.js +14 -7
  622. package/development/link/link-button/link-button.component.js +14 -7
  623. package/development/link/link-button.js +9 -7
  624. package/development/link/link-static/link-static.component.js +14 -7
  625. package/development/link/link-static.js +9 -7
  626. package/development/link/link.js +9 -7
  627. package/development/link-common-5ob2nFyv.js +124 -0
  628. package/development/link-list/common/link-list-base.js +2 -131
  629. package/development/link-list/common.js +6 -6
  630. package/development/link-list/link-list-anchor.js +8 -5
  631. package/development/link-list/link-list.component.js +3 -152
  632. package/development/link-list/link-list.js +8 -5
  633. package/development/link-list-anchor/link-list-anchor.component.js +2 -61
  634. package/development/link-list-anchor.component-rAMp5_jH.js +77 -0
  635. package/development/link-list-anchor.js +8 -5
  636. package/development/link-list-anchor.pure.js +2 -5
  637. package/development/link-list-base-DxYNcAX7.js +172 -0
  638. package/development/link-list.component-DD6UjlwD.js +194 -0
  639. package/development/link-list.js +11 -9
  640. package/development/link-list.pure.js +3 -8
  641. package/development/link.js +10 -15
  642. package/development/link.pure.js +5 -15
  643. package/development/loading-indicator/loading-indicator.component.js +2 -248
  644. package/development/loading-indicator-circle/loading-indicator-circle.component.js +2 -135
  645. package/development/loading-indicator-circle.component-C0epUACB.js +159 -0
  646. package/development/loading-indicator-circle.js +8 -5
  647. package/development/loading-indicator-circle.pure.js +2 -5
  648. package/development/loading-indicator.component-CVdBjI99.js +283 -0
  649. package/development/loading-indicator.js +8 -5
  650. package/development/loading-indicator.pure.js +2 -5
  651. package/development/logo/logo.component.js +2 -129
  652. package/development/logo.component-Cp-EyVpA.js +166 -0
  653. package/development/logo.js +8 -5
  654. package/development/logo.pure.js +2 -5
  655. package/development/map-container/map-container.component.js +2 -281
  656. package/development/map-container.component-DUA7-arY.js +324 -0
  657. package/development/map-container.js +8 -5
  658. package/development/map-container.pure.js +2 -5
  659. package/development/menu/common/menu-action-common.js +2 -144
  660. package/development/menu/common.js +6 -5
  661. package/development/menu/menu/menu.component.js +2 -683
  662. package/development/menu/menu-button/menu-button.component.js +20 -8
  663. package/development/menu/menu-button.js +6 -4
  664. package/development/menu/menu-link/menu-link.component.js +21 -11
  665. package/development/menu/menu-link.js +6 -4
  666. package/development/menu/menu.js +7 -5
  667. package/development/menu-action-common-CyBv0NwR.js +148 -0
  668. package/development/menu.component-GHJHhE9D.js +638 -0
  669. package/development/menu.js +9 -9
  670. package/development/menu.pure.js +3 -9
  671. package/development/message/message.component.js +2 -67
  672. package/development/message.component-uv9eI2gl.js +82 -0
  673. package/development/message.js +8 -5
  674. package/development/message.pure.js +2 -5
  675. package/development/mini-button-group.component-ytJZBjmr.js +174 -0
  676. package/development/mini-button-link.component-DZOOdeZt.js +47 -0
  677. package/development/mini-calendar/mini-calendar/mini-calendar.component.js +2 -188
  678. package/development/mini-calendar/mini-calendar-day/mini-calendar-day.component.js +2 -166
  679. package/development/mini-calendar/mini-calendar-day.js +7 -5
  680. package/development/mini-calendar/mini-calendar-month/mini-calendar-month.component.js +2 -135
  681. package/development/mini-calendar/mini-calendar-month.js +7 -5
  682. package/development/mini-calendar/mini-calendar.js +7 -5
  683. package/development/mini-calendar-day.component-DLP7Pa6R.js +213 -0
  684. package/development/mini-calendar-month.component-C1jsGlJ2.js +150 -0
  685. package/development/mini-calendar.component-BzqjMchx.js +192 -0
  686. package/development/mini-calendar.js +10 -9
  687. package/development/mini-calendar.pure.js +4 -9
  688. package/development/navigation/common/navigation-action-common.js +2 -165
  689. package/development/navigation/common.js +6 -5
  690. package/development/navigation/navigation/navigation.component.js +2 -571
  691. package/development/navigation/navigation-button/navigation-button.component.js +14 -7
  692. package/development/navigation/navigation-button.js +6 -4
  693. package/development/navigation/navigation-link/navigation-link.component.js +14 -7
  694. package/development/navigation/navigation-link.js +6 -4
  695. package/development/navigation/navigation-list/navigation-list.component.js +2 -102
  696. package/development/navigation/navigation-list.js +7 -5
  697. package/development/navigation/navigation-marker/navigation-marker.component.js +2 -199
  698. package/development/navigation/navigation-marker.js +7 -5
  699. package/development/navigation/navigation-section/navigation-section.component.js +2 -588
  700. package/development/navigation/navigation-section.js +7 -5
  701. package/development/navigation/navigation.js +7 -5
  702. package/development/navigation-action-common-saGbvoji.js +178 -0
  703. package/development/navigation-list.component-AFM4omXQ.js +124 -0
  704. package/development/navigation-marker.component-BvC73IoI.js +207 -0
  705. package/development/navigation-section.component-B-6XU2X5.js +600 -0
  706. package/development/navigation.component-_gUhpPyO.js +585 -0
  707. package/development/navigation.js +12 -15
  708. package/development/navigation.pure.js +6 -15
  709. package/development/notification/notification.component.js +2 -496
  710. package/development/notification.component-B5EBKKf8.js +530 -0
  711. package/development/notification.js +8 -5
  712. package/development/notification.pure.js +2 -5
  713. package/development/optgroup-base-element-CjwAXrC5.js +181 -0
  714. package/development/option/optgroup/optgroup-base-element.js +2 -159
  715. package/development/option/optgroup/optgroup.component.js +40 -37
  716. package/development/option/optgroup.js +7 -6
  717. package/development/option/option/option-base-element.js +349 -276
  718. package/development/option/option/option.component.js +2 -241
  719. package/development/option/option-hint/option-hint.component.js +2 -44
  720. package/development/option/option-hint.js +7 -5
  721. package/development/option/option.js +7 -6
  722. package/development/option-hint.component-CHS5Z_sK.js +55 -0
  723. package/development/option.component-BvOsW8Gn.js +248 -0
  724. package/development/option.js +10 -11
  725. package/development/option.pure.js +4 -11
  726. package/development/overlay/overlay-base-element.js +238 -247
  727. package/development/overlay/overlay.component.js +2 -374
  728. package/development/overlay.component-RS_v3xaA.js +411 -0
  729. package/development/overlay.js +8 -9
  730. package/development/overlay.pure.js +2 -9
  731. package/development/paginator/common/paginator-common.js +376 -272
  732. package/development/paginator/common.js +5 -4
  733. package/development/paginator/compact-paginator/compact-paginator.component.js +2 -87
  734. package/development/paginator/compact-paginator.js +7 -5
  735. package/development/paginator/paginator/paginator.component.js +2 -444
  736. package/development/paginator/paginator.js +7 -5
  737. package/development/paginator.component-cRqJW9bc.js +492 -0
  738. package/development/paginator.js +9 -8
  739. package/development/paginator.pure.js +3 -8
  740. package/development/popover/popover.component.js +2 -718
  741. package/development/popover.component-BTfbUEzF.js +745 -0
  742. package/development/popover.js +8 -7
  743. package/development/popover.pure.js +2 -6
  744. package/development/radio-button/common/radio-button-common.js +2 -203
  745. package/development/radio-button/common.js +6 -6
  746. package/development/radio-button/radio-button-group.js +5 -1
  747. package/development/radio-button/radio-button-panel.js +5 -1
  748. package/development/radio-button/radio-button.component.js +3 -97
  749. package/development/radio-button/radio-button.js +8 -5
  750. package/development/radio-button-common-CjbP9yKf.js +231 -0
  751. package/development/radio-button-group/radio-button-group.component.js +2 -308
  752. package/development/radio-button-group.component-5jDkRqSJ.js +404 -0
  753. package/development/radio-button-group.js +8 -5
  754. package/development/radio-button-group.pure.js +2 -5
  755. package/development/radio-button-panel/radio-button-panel.component.js +106 -82
  756. package/development/radio-button-panel.js +7 -4
  757. package/development/radio-button-panel.pure.js +1 -4
  758. package/development/radio-button.component-CVATlwTb.js +137 -0
  759. package/development/radio-button.js +12 -11
  760. package/development/radio-button.pure.js +3 -8
  761. package/development/sbb-tokens-Dajio3u-.js +13 -0
  762. package/development/screen-reader-only/screen-reader-only.component.js +2 -25
  763. package/development/screen-reader-only.component-D-KOAjrF.js +36 -0
  764. package/development/screen-reader-only.js +8 -5
  765. package/development/screen-reader-only.pure.js +2 -5
  766. package/development/select/select.component.js +2 -1087
  767. package/development/select.component-DyF5Tw3J.js +1084 -0
  768. package/development/select.js +8 -5
  769. package/development/select.pure.js +2 -5
  770. package/development/selection-action-panel/selection-action-panel.component.js +2 -125
  771. package/development/selection-action-panel.component-elyz1Xsb.js +134 -0
  772. package/development/selection-action-panel.js +8 -5
  773. package/development/selection-action-panel.pure.js +2 -5
  774. package/development/selection-expansion-panel/selection-expansion-panel.component.js +2 -306
  775. package/development/selection-expansion-panel.component-hL2jyaAT.js +326 -0
  776. package/development/selection-expansion-panel.js +8 -5
  777. package/development/selection-expansion-panel.pure.js +2 -5
  778. package/development/sidebar/common/styles.js +2 -7
  779. package/development/sidebar/common.js +6 -7
  780. package/development/sidebar/sidebar/sidebar.component.js +2 -473
  781. package/development/sidebar/sidebar-close-button/sidebar-close-button.component.js +2 -36
  782. package/development/sidebar/sidebar-close-button.js +7 -5
  783. package/development/sidebar/sidebar-container/sidebar-container.component.js +2 -147
  784. package/development/sidebar/sidebar-container.js +7 -5
  785. package/development/sidebar/sidebar-content/sidebar-content.component.js +2 -25
  786. package/development/sidebar/sidebar-content.js +7 -5
  787. package/development/sidebar/sidebar-title/sidebar-title.component.js +2 -53
  788. package/development/sidebar/sidebar-title.js +7 -5
  789. package/development/sidebar/sidebar.js +7 -5
  790. package/development/sidebar-close-button.component-j4wY_hAt.js +48 -0
  791. package/development/sidebar-container.component-CToGMqKH.js +136 -0
  792. package/development/sidebar-content.component-s3GsQtNv.js +37 -0
  793. package/development/sidebar-title.component-Htm_hqKX.js +76 -0
  794. package/development/sidebar.component-Ct6TAsph.js +506 -0
  795. package/development/sidebar.js +12 -13
  796. package/development/sidebar.pure.js +6 -13
  797. package/development/signet/signet.component.js +2 -151
  798. package/development/signet.component-COqrcZqk.js +188 -0
  799. package/development/signet.js +8 -5
  800. package/development/signet.pure.js +2 -5
  801. package/development/skiplink-list/skiplink-list.component.js +2 -160
  802. package/development/skiplink-list.component-_SDkIoHp.js +198 -0
  803. package/development/skiplink-list.js +8 -5
  804. package/development/skiplink-list.pure.js +2 -5
  805. package/development/slider/slider.component.js +2 -399
  806. package/development/slider.component-B7EFECZk.js +479 -0
  807. package/development/slider.js +8 -5
  808. package/development/slider.pure.js +2 -5
  809. package/development/status/status.component.js +2 -144
  810. package/development/status.component-CE3e9OIO.js +171 -0
  811. package/development/status.js +8 -5
  812. package/development/status.pure.js +2 -5
  813. package/development/step-label.component-BH28AI5Z.js +298 -0
  814. package/development/step.component-WY7qdrR8.js +220 -0
  815. package/development/stepper/step/step.component.js +2 -216
  816. package/development/stepper/step-label/step-label.component.js +2 -298
  817. package/development/stepper/step-label.js +7 -5
  818. package/development/stepper/step.js +7 -5
  819. package/development/stepper/stepper/stepper.component.js +2 -465
  820. package/development/stepper/stepper.js +7 -7
  821. package/development/stepper.component-D1tAcpWs.js +508 -0
  822. package/development/stepper.js +10 -11
  823. package/development/stepper.pure.js +4 -10
  824. package/development/sticky-bar.component-BlgfxSRo.js +382 -0
  825. package/development/styles-CIZBf9Yc.js +173 -0
  826. package/development/styles-CYlzu-f2.js +96 -0
  827. package/development/tab-group.component-DZPKWjI7.js +292 -0
  828. package/development/tab-label.component-BJgr4u6Z.js +420 -0
  829. package/development/tab-nav-bar.component-rNmuMIsv.js +123 -0
  830. package/development/tab.component-C8jaB2_O.js +101 -0
  831. package/development/table/table-wrapper/table-wrapper.component.js +2 -120
  832. package/development/table/table-wrapper.js +7 -5
  833. package/development/table-wrapper.component-6WtB_fHq.js +133 -0
  834. package/development/table.js +8 -5
  835. package/development/table.pure.js +2 -5
  836. package/development/tabs/common/styles.js +2 -6
  837. package/development/tabs/common.js +6 -6
  838. package/development/tabs/tab/tab.component.js +2 -87
  839. package/development/tabs/tab-group/tab-group.component.js +2 -236
  840. package/development/tabs/tab-group.js +7 -5
  841. package/development/tabs/tab-label/tab-label.component.js +2 -369
  842. package/development/tabs/tab-label.js +7 -5
  843. package/development/tabs/tab-nav-bar/tab-nav-bar.component.js +2 -99
  844. package/development/tabs/tab-nav-bar.js +7 -5
  845. package/development/tabs/tab.js +7 -5
  846. package/development/tabs.js +12 -14
  847. package/development/tabs.pure.js +6 -14
  848. package/development/tag/tag/tag.component.js +2 -351
  849. package/development/tag/tag-group/tag-group.component.js +2 -179
  850. package/development/tag/tag-group.js +7 -5
  851. package/development/tag/tag.js +7 -5
  852. package/development/tag-group.component-C-EXr8Rq.js +219 -0
  853. package/development/tag.component-B7RY4cfx.js +419 -0
  854. package/development/tag.js +9 -7
  855. package/development/tag.pure.js +3 -7
  856. package/development/teaser/teaser.component.js +2 -224
  857. package/development/teaser-hero/teaser-hero.component.js +2 -172
  858. package/development/teaser-hero.component-5vVIZZ9L.js +202 -0
  859. package/development/teaser-hero.js +8 -5
  860. package/development/teaser-hero.pure.js +2 -5
  861. package/development/teaser-product/common/teaser-product-common.js +2 -210
  862. package/development/teaser-product/common.js +6 -6
  863. package/development/teaser-product/teaser-product/teaser-product.component.js +2 -63
  864. package/development/teaser-product/teaser-product-static/teaser-product-static.component.js +21 -8
  865. package/development/teaser-product/teaser-product-static.js +6 -4
  866. package/development/teaser-product/teaser-product.js +7 -5
  867. package/development/teaser-product-common-DgnRgO6O.js +223 -0
  868. package/development/teaser-product.component-BsdU2W2T.js +75 -0
  869. package/development/teaser-product.js +9 -9
  870. package/development/teaser-product.pure.js +3 -9
  871. package/development/teaser.component-KRkFbP9-.js +243 -0
  872. package/development/teaser.js +8 -5
  873. package/development/teaser.pure.js +2 -5
  874. package/development/time-input/time-input.component.js +2 -213
  875. package/development/time-input.component-Cf6cXrIN.js +222 -0
  876. package/development/time-input.js +8 -5
  877. package/development/time-input.pure.js +2 -5
  878. package/development/timetable-form/timetable-form/timetable-form.component.js +2 -22
  879. package/development/timetable-form/timetable-form-details/timetable-form-details.component.js +2 -39
  880. package/development/timetable-form/timetable-form-details.js +7 -5
  881. package/development/timetable-form/timetable-form-field/timetable-form-field.component.js +2 -112
  882. package/development/timetable-form/timetable-form-field.js +7 -5
  883. package/development/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.js +2 -63
  884. package/development/timetable-form/timetable-form-swap-button.js +7 -5
  885. package/development/timetable-form/timetable-form.js +7 -5
  886. package/development/timetable-form-details.component-B--aGycf.js +50 -0
  887. package/development/timetable-form-field.component-9jwIZzIm.js +119 -0
  888. package/development/timetable-form-swap-button.component-Ne1-XwSf.js +74 -0
  889. package/development/timetable-form.component-BYHhDRXE.js +34 -0
  890. package/development/timetable-form.js +11 -11
  891. package/development/timetable-form.pure.js +5 -11
  892. package/development/timetable-occupancy/timetable-occupancy.component.js +2 -140
  893. package/development/timetable-occupancy-icon/timetable-occupancy-icon.component.js +2 -89
  894. package/development/timetable-occupancy-icon.component-BbW73Fqd.js +101 -0
  895. package/development/timetable-occupancy-icon.js +8 -5
  896. package/development/timetable-occupancy-icon.pure.js +2 -5
  897. package/development/timetable-occupancy.component-C3nWG5Vg.js +172 -0
  898. package/development/timetable-occupancy.js +8 -5
  899. package/development/timetable-occupancy.pure.js +2 -5
  900. package/development/title/title-base.js +2 -109
  901. package/development/title/title.component.js +3 -89
  902. package/development/title-base-BUQgNaUI.js +142 -0
  903. package/development/title.component-DgFvxLIt.js +115 -0
  904. package/development/title.js +9 -7
  905. package/development/title.pure.js +3 -7
  906. package/development/toast/toast.component.js +2 -401
  907. package/development/toast.component-Csifrfnq.js +430 -0
  908. package/development/toast.js +8 -5
  909. package/development/toast.pure.js +2 -5
  910. package/development/toggle/toggle/toggle.component.js +2 -331
  911. package/development/toggle/toggle-option/toggle-option.component.js +2 -179
  912. package/development/toggle/toggle-option.js +7 -5
  913. package/development/toggle/toggle.js +7 -5
  914. package/development/toggle-check/toggle-check.component.js +2 -274
  915. package/development/toggle-check.component-CEYmGCDZ.js +326 -0
  916. package/development/toggle-check.js +8 -5
  917. package/development/toggle-check.pure.js +2 -5
  918. package/development/toggle-option.component--wHdeFI6.js +216 -0
  919. package/development/toggle.component-CGNDEU9B.js +367 -0
  920. package/development/toggle.js +9 -7
  921. package/development/toggle.pure.js +3 -7
  922. package/development/tooltip/tooltip.component.js +2 -440
  923. package/development/tooltip.component-bVPXm6Pu.js +480 -0
  924. package/development/tooltip.js +8 -5
  925. package/development/tooltip.pure.js +2 -5
  926. package/development/train/train/train.component.js +2 -229
  927. package/development/train/train-blocked-passage/train-blocked-passage.component.js +2 -70
  928. package/development/train/train-blocked-passage.js +7 -5
  929. package/development/train/train-formation/train-formation.component.js +2 -274
  930. package/development/train/train-formation.js +7 -5
  931. package/development/train/train-wagon/train-wagon.component.js +2 -387
  932. package/development/train/train-wagon.js +7 -5
  933. package/development/train/train.js +7 -5
  934. package/development/train-blocked-passage.component-CYnTeq7k.js +79 -0
  935. package/development/train-formation.component-QmoA0u6E.js +303 -0
  936. package/development/train-wagon.component-CWlRDq-Z.js +485 -0
  937. package/development/train.component-DcMyi7HP.js +294 -0
  938. package/development/train.js +11 -11
  939. package/development/train.pure.js +5 -11
  940. package/development/visual-checkbox/visual-checkbox.component.js +2 -164
  941. package/development/visual-checkbox.component-DtEIq9rH.js +213 -0
  942. package/development/visual-checkbox.js +8 -5
  943. package/development/visual-checkbox.pure.js +2 -5
  944. package/dialog/dialog/dialog.component.js +2 -148
  945. package/dialog/dialog-actions/dialog-actions.component.js +2 -13
  946. package/dialog/dialog-actions.js +4 -7
  947. package/dialog/dialog-close-button/dialog-close-button.component.js +2 -23
  948. package/dialog/dialog-close-button.js +4 -7
  949. package/dialog/dialog-content/dialog-content.component.js +2 -15
  950. package/dialog/dialog-content.js +4 -7
  951. package/dialog/dialog-title/dialog-title.component.js +2 -13
  952. package/dialog/dialog-title.js +4 -7
  953. package/dialog/dialog.js +4 -10
  954. package/dialog-actions.component-B4JYi2Ym.js +17 -0
  955. package/dialog-close-button.component-BtxXASCn.js +27 -0
  956. package/dialog-content.component-CNhoC-NZ.js +19 -0
  957. package/dialog-title.component-C8Jsbuqt.js +17 -0
  958. package/dialog.component-BHsekf9B.js +170 -0
  959. package/dialog.js +9 -20
  960. package/dialog.pure.js +6 -15
  961. package/divider/divider.component.js +2 -44
  962. package/divider.component-DFw-P_dA.js +61 -0
  963. package/divider.js +5 -4
  964. package/divider.pure.js +2 -4
  965. package/error.component-DL9hm4i9.js +44 -0
  966. package/expansion-panel/expansion-panel/expansion-panel.component.js +2 -156
  967. package/expansion-panel/expansion-panel-content/expansion-panel-content.component.js +2 -24
  968. package/expansion-panel/expansion-panel-content.js +4 -7
  969. package/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +2 -57
  970. package/expansion-panel/expansion-panel-header.js +4 -7
  971. package/expansion-panel/expansion-panel.js +4 -7
  972. package/expansion-panel-content.component-CbWIxgH4.js +29 -0
  973. package/expansion-panel-header.component-CxLeXeGi.js +56 -0
  974. package/expansion-panel.component-Bs4icI9T.js +226 -0
  975. package/expansion-panel.js +7 -11
  976. package/expansion-panel.pure.js +4 -8
  977. package/file-selector/common/file-selector-common.js +2 -245
  978. package/file-selector/common.js +5 -7
  979. package/file-selector/file-selector/file-selector.component.js +25 -20
  980. package/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +2 -75
  981. package/file-selector/file-selector-dropzone.js +4 -7
  982. package/file-selector/file-selector.js +3 -6
  983. package/file-selector-common-C-gZH55c.js +313 -0
  984. package/file-selector-dropzone.component-LHNtOZPr.js +94 -0
  985. package/file-selector.js +7 -11
  986. package/file-selector.pure.js +4 -9
  987. package/flip-card/flip-card/flip-card.component.js +2 -120
  988. package/flip-card/flip-card-details/flip-card-details.component.js +2 -36
  989. package/flip-card/flip-card-details.js +4 -7
  990. package/flip-card/flip-card-summary/flip-card-summary.component.js +2 -48
  991. package/flip-card/flip-card-summary.js +4 -7
  992. package/flip-card/flip-card.js +4 -7
  993. package/flip-card-details.component-CiiCNjd2.js +45 -0
  994. package/flip-card-summary.component-nO7zKRiB.js +65 -0
  995. package/flip-card.component-uSdokrC9.js +138 -0
  996. package/flip-card.js +7 -11
  997. package/flip-card.pure.js +4 -8
  998. package/footer/footer.component.js +2 -89
  999. package/footer.component-Cdsiwn4D.js +129 -0
  1000. package/footer.js +5 -4
  1001. package/footer.pure.js +2 -4
  1002. package/form-field/error/error.component.js +2 -42
  1003. package/form-field/error.js +4 -7
  1004. package/form-field/form-field/form-field.component.js +2 -344
  1005. package/form-field/form-field-clear/form-field-clear.component.js +35 -28
  1006. package/form-field/form-field-clear.js +3 -6
  1007. package/form-field/form-field.js +4 -9
  1008. package/form-field.component-CZzQYOSP.js +447 -0
  1009. package/form-field.js +7 -13
  1010. package/form-field.pure.js +4 -9
  1011. package/header/common/header-action-common.js +2 -51
  1012. package/header/common.js +5 -6
  1013. package/header/header/header.component.js +2 -154
  1014. package/header/header-button/header-button.component.js +9 -8
  1015. package/header/header-button.js +3 -6
  1016. package/header/header-environment/header-environment.component.js +2 -29
  1017. package/header/header-environment.js +4 -7
  1018. package/header/header-link/header-link.component.js +9 -8
  1019. package/header/header-link.js +3 -6
  1020. package/header/header.js +4 -7
  1021. package/header-action-common-C2YPvOxq.js +62 -0
  1022. package/header-environment.component-KqUmsOPQ.js +36 -0
  1023. package/header.component-BssLZ6b7.js +203 -0
  1024. package/header.js +9 -16
  1025. package/header.pure.js +6 -12
  1026. package/icon/icon-base.js +2 -105
  1027. package/icon/icon-name-mixin.js +59 -50
  1028. package/icon/icon-request.js +23 -29
  1029. package/icon/icon-validate.js +19 -25
  1030. package/icon/icon.component.js +88 -76
  1031. package/icon-base-BYJzaEDb.js +127 -0
  1032. package/icon-sidebar/icon-sidebar/icon-sidebar.component.js +2 -46
  1033. package/icon-sidebar/icon-sidebar-button/icon-sidebar-button.component.js +19 -15
  1034. package/icon-sidebar/icon-sidebar-button.js +3 -6
  1035. package/icon-sidebar/icon-sidebar-container/icon-sidebar-container.component.js +2 -25
  1036. package/icon-sidebar/icon-sidebar-container.js +4 -7
  1037. package/icon-sidebar/icon-sidebar-content/icon-sidebar-content.component.js +2 -16
  1038. package/icon-sidebar/icon-sidebar-content.js +4 -7
  1039. package/icon-sidebar/icon-sidebar-link/icon-sidebar-link.component.js +19 -15
  1040. package/icon-sidebar/icon-sidebar-link.js +3 -6
  1041. package/icon-sidebar/icon-sidebar.js +4 -7
  1042. package/icon-sidebar-container.component-BcoT4uhN.js +26 -0
  1043. package/icon-sidebar-content.component-toRpXgxi.js +20 -0
  1044. package/icon-sidebar.component-B5xCvDvj.js +62 -0
  1045. package/icon-sidebar.js +8 -16
  1046. package/icon-sidebar.pure.js +6 -12
  1047. package/icon.js +10 -14
  1048. package/icon.pure.js +6 -13
  1049. package/image/image.component.js +2 -455
  1050. package/image.component-Cq2t-XZu.js +413 -0
  1051. package/image.js +5 -4
  1052. package/image.pure.js +2 -4
  1053. package/inline-link-common-Dgdi7qpI.js +18 -0
  1054. package/journey-header/journey-header.component.js +2 -95
  1055. package/journey-header.component-CR8AO0b2.js +143 -0
  1056. package/journey-header.js +5 -4
  1057. package/journey-header.pure.js +2 -4
  1058. package/lead-container/lead-container.component.js +2 -23
  1059. package/lead-container.component-CXKHfBiS.js +27 -0
  1060. package/lead-container.js +5 -4
  1061. package/lead-container.pure.js +2 -4
  1062. package/link/block-link/block-link.component.js +9 -8
  1063. package/link/block-link-button/block-link-button.component.js +10 -9
  1064. package/link/block-link-button.js +6 -6
  1065. package/link/block-link-static/block-link-static.component.js +10 -9
  1066. package/link/block-link-static.js +4 -4
  1067. package/link/block-link.js +6 -6
  1068. package/link/common/block-link-common.js +3 -44
  1069. package/link/common/inline-link-common.js +3 -13
  1070. package/link/common/link-common.js +2 -9
  1071. package/link/common.js +4 -8
  1072. package/link/link/link.component.js +10 -9
  1073. package/link/link-button/link-button.component.js +10 -9
  1074. package/link/link-button.js +4 -4
  1075. package/link/link-static/link-static.component.js +10 -9
  1076. package/link/link-static.js +4 -4
  1077. package/link/link.js +6 -6
  1078. package/link-common-CYxyP4XZ.js +52 -0
  1079. package/link-list/common/link-list-base.js +2 -90
  1080. package/link-list/common.js +5 -7
  1081. package/link-list/link-list-anchor.js +6 -8
  1082. package/link-list/link-list.component.js +3 -47
  1083. package/link-list/link-list.js +5 -7
  1084. package/link-list-anchor/link-list-anchor.component.js +2 -10
  1085. package/link-list-anchor.component--u5j_aqv.js +18 -0
  1086. package/link-list-anchor.js +5 -4
  1087. package/link-list-anchor.pure.js +2 -4
  1088. package/link-list-base-CzFYpTOG.js +115 -0
  1089. package/link-list.component-9ndHNGPS.js +78 -0
  1090. package/link-list.js +8 -10
  1091. package/link-list.pure.js +3 -7
  1092. package/link.js +12 -25
  1093. package/link.pure.js +11 -20
  1094. package/loading-indicator/loading-indicator.component.js +2 -67
  1095. package/loading-indicator-circle/loading-indicator-circle.component.js +2 -47
  1096. package/loading-indicator-circle.component-CjJkIeJ0.js +64 -0
  1097. package/loading-indicator-circle.js +5 -4
  1098. package/loading-indicator-circle.pure.js +2 -4
  1099. package/loading-indicator.component-BrVz6vJo.js +94 -0
  1100. package/loading-indicator.js +5 -4
  1101. package/loading-indicator.pure.js +2 -4
  1102. package/logo/logo.component.js +2 -67
  1103. package/logo.component-nxragzaC.js +94 -0
  1104. package/logo.js +5 -4
  1105. package/logo.pure.js +2 -4
  1106. package/map-container/map-container.component.js +2 -110
  1107. package/map-container.component-BfxezELq.js +130 -0
  1108. package/map-container.js +5 -4
  1109. package/map-container.pure.js +2 -4
  1110. package/menu/common/menu-action-common.js +2 -28
  1111. package/menu/common.js +5 -6
  1112. package/menu/menu/menu.component.js +2 -274
  1113. package/menu/menu-button/menu-button.component.js +13 -9
  1114. package/menu/menu-button.js +3 -6
  1115. package/menu/menu-link/menu-link.component.js +13 -12
  1116. package/menu/menu-link.js +3 -6
  1117. package/menu/menu.js +4 -7
  1118. package/menu-action-common-BcB_Tyvl.js +29 -0
  1119. package/menu.component-BdqUbvww.js +252 -0
  1120. package/menu.js +7 -12
  1121. package/menu.pure.js +5 -10
  1122. package/message/message.component.js +2 -23
  1123. package/message.component-DbmXg6DI.js +27 -0
  1124. package/message.js +5 -4
  1125. package/message.pure.js +2 -4
  1126. package/mini-button-group.component-D5Dph1Z7.js +89 -0
  1127. package/mini-button-link.component-BYK_EUud.js +31 -0
  1128. package/mini-calendar/mini-calendar/mini-calendar.component.js +2 -131
  1129. package/mini-calendar/mini-calendar-day/mini-calendar-day.component.js +2 -66
  1130. package/mini-calendar/mini-calendar-day.js +4 -7
  1131. package/mini-calendar/mini-calendar-month/mini-calendar-month.component.js +2 -63
  1132. package/mini-calendar/mini-calendar-month.js +4 -7
  1133. package/mini-calendar/mini-calendar.js +4 -7
  1134. package/mini-calendar-day.component-cAawa9Gr.js +106 -0
  1135. package/mini-calendar-month.component-DiYSVb-Y.js +74 -0
  1136. package/mini-calendar.component-DpPMb47Y.js +144 -0
  1137. package/mini-calendar.js +7 -11
  1138. package/mini-calendar.pure.js +4 -8
  1139. package/navigation/common/navigation-action-common.js +2 -57
  1140. package/navigation/common.js +5 -6
  1141. package/navigation/navigation/navigation.component.js +2 -188
  1142. package/navigation/navigation-button/navigation-button.component.js +9 -8
  1143. package/navigation/navigation-button.js +3 -6
  1144. package/navigation/navigation-link/navigation-link.component.js +9 -8
  1145. package/navigation/navigation-link.js +3 -6
  1146. package/navigation/navigation-list/navigation-list.component.js +2 -59
  1147. package/navigation/navigation-list.js +4 -7
  1148. package/navigation/navigation-marker/navigation-marker.component.js +2 -82
  1149. package/navigation/navigation-marker.js +4 -7
  1150. package/navigation/navigation-section/navigation-section.component.js +2 -224
  1151. package/navigation/navigation-section.js +4 -7
  1152. package/navigation/navigation.js +4 -7
  1153. package/navigation-action-common-Dcb95pqU.js +64 -0
  1154. package/navigation-list.component-BhV-uAfU.js +71 -0
  1155. package/navigation-marker.component-CIUu5VVZ.js +88 -0
  1156. package/navigation-section.component-DwEXj603.js +237 -0
  1157. package/navigation.component-BYqJ9Cqt.js +208 -0
  1158. package/navigation.js +11 -22
  1159. package/navigation.pure.js +8 -16
  1160. package/notification/notification.component.js +2 -165
  1161. package/notification.component-DZS8z1oa.js +197 -0
  1162. package/notification.js +5 -4
  1163. package/notification.pure.js +2 -4
  1164. package/optgroup-base-element-DWKHCat8.js +107 -0
  1165. package/option/optgroup/optgroup-base-element.js +2 -83
  1166. package/option/optgroup/optgroup.component.js +29 -30
  1167. package/option/optgroup.js +5 -9
  1168. package/option/option/option-base-element.js +257 -201
  1169. package/option/option/option.component.js +2 -87
  1170. package/option/option-hint/option-hint.component.js +2 -19
  1171. package/option/option-hint.js +4 -7
  1172. package/option/option.js +5 -9
  1173. package/option-hint.component-Goyhv5ss.js +23 -0
  1174. package/option.component-uzmmREt4.js +98 -0
  1175. package/option.js +9 -15
  1176. package/option.pure.js +6 -12
  1177. package/overlay/overlay-base-element.js +154 -149
  1178. package/overlay/overlay.component.js +2 -138
  1179. package/overlay.component-r0Rp_b-3.js +163 -0
  1180. package/overlay.js +7 -10
  1181. package/overlay.pure.js +3 -9
  1182. package/package.json +2 -2
  1183. package/paginator/common/paginator-common.js +268 -201
  1184. package/paginator/common.js +5 -6
  1185. package/paginator/compact-paginator/compact-paginator.component.js +2 -40
  1186. package/paginator/compact-paginator.js +4 -7
  1187. package/paginator/paginator/paginator.component.js +2 -175
  1188. package/paginator/paginator.js +4 -7
  1189. package/paginator.component-D_fV260x.js +206 -0
  1190. package/paginator.js +7 -10
  1191. package/paginator.pure.js +3 -7
  1192. package/popover/popover.component.js +2 -316
  1193. package/popover.component-Dh9vbuDG.js +353 -0
  1194. package/popover.js +5 -6
  1195. package/popover.pure.js +2 -5
  1196. package/radio-button/common/radio-button-common.js +2 -63
  1197. package/radio-button/common.js +5 -7
  1198. package/radio-button/radio-button-group.js +2 -3
  1199. package/radio-button/radio-button-panel.js +2 -3
  1200. package/radio-button/radio-button.component.js +3 -71
  1201. package/radio-button/radio-button.js +5 -7
  1202. package/radio-button-common-CCQ3bJPI.js +77 -0
  1203. package/radio-button-group/radio-button-group.component.js +2 -167
  1204. package/radio-button-group.component-Cf8r6Whf.js +232 -0
  1205. package/radio-button-group.js +6 -5
  1206. package/radio-button-group.pure.js +2 -4
  1207. package/radio-button-panel/radio-button-panel.component.js +78 -68
  1208. package/radio-button-panel.js +4 -3
  1209. package/radio-button-panel.pure.js +2 -4
  1210. package/radio-button.component-B5b5OhBw.js +93 -0
  1211. package/radio-button.js +9 -13
  1212. package/radio-button.pure.js +3 -7
  1213. package/sbb-tokens-BJzKBCf8.js +4 -0
  1214. package/screen-reader-only/screen-reader-only.component.js +2 -12
  1215. package/screen-reader-only.component-B06hVxPg.js +16 -0
  1216. package/screen-reader-only.js +5 -4
  1217. package/screen-reader-only.pure.js +2 -4
  1218. package/select/select.component.js +2 -498
  1219. package/select.component-BZbDGrv8.js +522 -0
  1220. package/select.js +5 -4
  1221. package/select.pure.js +2 -4
  1222. package/selection-action-panel/selection-action-panel.component.js +2 -33
  1223. package/selection-action-panel.component-_kh6l2sj.js +35 -0
  1224. package/selection-action-panel.js +5 -4
  1225. package/selection-action-panel.pure.js +2 -4
  1226. package/selection-expansion-panel/selection-expansion-panel.component.js +2 -116
  1227. package/selection-expansion-panel.component-ChMYCw38.js +144 -0
  1228. package/selection-expansion-panel.js +5 -4
  1229. package/selection-expansion-panel.pure.js +2 -4
  1230. package/sidebar/common/styles.js +2 -6
  1231. package/sidebar/common.js +5 -8
  1232. package/sidebar/sidebar/sidebar.component.js +2 -182
  1233. package/sidebar/sidebar-close-button/sidebar-close-button.component.js +2 -26
  1234. package/sidebar/sidebar-close-button.js +4 -7
  1235. package/sidebar/sidebar-container/sidebar-container.component.js +2 -76
  1236. package/sidebar/sidebar-container.js +4 -7
  1237. package/sidebar/sidebar-content/sidebar-content.component.js +2 -16
  1238. package/sidebar/sidebar-content.js +4 -7
  1239. package/sidebar/sidebar-title/sidebar-title.component.js +2 -39
  1240. package/sidebar/sidebar-title.js +4 -7
  1241. package/sidebar/sidebar.js +4 -7
  1242. package/sidebar-close-button.component-B9QGnQLs.js +30 -0
  1243. package/sidebar-container.component-BW24Ap9F.js +63 -0
  1244. package/sidebar-content.component-DSTp9Iu6.js +20 -0
  1245. package/sidebar-title.component-COjEsAkk.js +53 -0
  1246. package/sidebar.component-C2YYQj-Q.js +238 -0
  1247. package/sidebar.js +9 -17
  1248. package/sidebar.pure.js +6 -12
  1249. package/signet/signet.component.js +2 -74
  1250. package/signet.component-CixiIpLj.js +101 -0
  1251. package/signet.js +5 -4
  1252. package/signet.pure.js +2 -4
  1253. package/skiplink-list/skiplink-list.component.js +2 -77
  1254. package/skiplink-list.component-CINJgt_l.js +102 -0
  1255. package/skiplink-list.js +5 -4
  1256. package/skiplink-list.pure.js +2 -4
  1257. package/slider/slider.component.js +2 -200
  1258. package/slider.component-BhtuB-8p.js +249 -0
  1259. package/slider.js +5 -4
  1260. package/slider.pure.js +2 -4
  1261. package/status/status.component.js +2 -69
  1262. package/status.component-BZ8zajOL.js +83 -0
  1263. package/status.js +5 -4
  1264. package/status.pure.js +2 -4
  1265. package/step-label.component-COJYo-MI.js +82 -0
  1266. package/step.component-BIOQdZVR.js +94 -0
  1267. package/stepper/step/step.component.js +2 -111
  1268. package/stepper/step-label/step-label.component.js +2 -96
  1269. package/stepper/step-label.js +4 -7
  1270. package/stepper/step.js +4 -7
  1271. package/stepper/stepper/stepper.component.js +2 -236
  1272. package/stepper/stepper.js +4 -9
  1273. package/stepper.component-D2vhtDCy.js +286 -0
  1274. package/stepper.js +7 -13
  1275. package/stepper.pure.js +4 -9
  1276. package/sticky-bar.component-CYCOEGz7.js +141 -0
  1277. package/styles-DpIXFSVm.js +5 -0
  1278. package/styles-uZGSPqgK.js +5 -0
  1279. package/tab-group.component-nprcnwFB.js +185 -0
  1280. package/tab-label.component-BeLuYRBg.js +165 -0
  1281. package/tab-nav-bar.component-Du1JyNtu.js +81 -0
  1282. package/tab.component-D8Rz05Fo.js +48 -0
  1283. package/table/table-wrapper/table-wrapper.component.js +2 -70
  1284. package/table/table-wrapper.js +4 -7
  1285. package/table-wrapper.component-DkaL4T5V.js +83 -0
  1286. package/table.js +5 -4
  1287. package/table.pure.js +2 -4
  1288. package/tabs/common/styles.js +2 -5
  1289. package/tabs/common.js +5 -7
  1290. package/tabs/tab/tab.component.js +2 -46
  1291. package/tabs/tab-group/tab-group.component.js +2 -167
  1292. package/tabs/tab-group.js +4 -7
  1293. package/tabs/tab-label/tab-label.component.js +2 -128
  1294. package/tabs/tab-label.js +4 -7
  1295. package/tabs/tab-nav-bar/tab-nav-bar.component.js +2 -67
  1296. package/tabs/tab-nav-bar.js +4 -7
  1297. package/tabs/tab.js +4 -7
  1298. package/tabs.js +9 -17
  1299. package/tabs.pure.js +6 -13
  1300. package/tag/tag/tag.component.js +2 -128
  1301. package/tag/tag-group/tag-group.component.js +2 -119
  1302. package/tag/tag-group.js +4 -7
  1303. package/tag/tag.js +4 -7
  1304. package/tag-group.component-CW6Z9-P6.js +143 -0
  1305. package/tag.component-CvZpvIuw.js +170 -0
  1306. package/tag.js +6 -8
  1307. package/tag.pure.js +3 -6
  1308. package/teaser/teaser.component.js +2 -80
  1309. package/teaser-hero/teaser-hero.component.js +2 -62
  1310. package/teaser-hero.component-Dolg4-Yz.js +80 -0
  1311. package/teaser-hero.js +5 -4
  1312. package/teaser-hero.pure.js +2 -4
  1313. package/teaser-product/common/teaser-product-common.js +2 -54
  1314. package/teaser-product/common.js +5 -7
  1315. package/teaser-product/teaser-product/teaser-product.component.js +2 -28
  1316. package/teaser-product/teaser-product-static/teaser-product-static.component.js +13 -9
  1317. package/teaser-product/teaser-product-static.js +3 -6
  1318. package/teaser-product/teaser-product.js +4 -7
  1319. package/teaser-product-common-q2IZHbkr.js +62 -0
  1320. package/teaser-product.component-DVdyKe6h.js +29 -0
  1321. package/teaser-product.js +7 -11
  1322. package/teaser-product.pure.js +4 -9
  1323. package/teaser.component-DPvDVG6b.js +91 -0
  1324. package/teaser.js +5 -4
  1325. package/teaser.pure.js +2 -4
  1326. package/time-input/time-input.component.js +2 -128
  1327. package/time-input.component-ChWhDF5l.js +141 -0
  1328. package/time-input.js +5 -4
  1329. package/time-input.pure.js +2 -4
  1330. package/timetable-form/timetable-form/timetable-form.component.js +2 -12
  1331. package/timetable-form/timetable-form-details/timetable-form-details.component.js +2 -12
  1332. package/timetable-form/timetable-form-details.js +4 -7
  1333. package/timetable-form/timetable-form-field/timetable-form-field.component.js +2 -26
  1334. package/timetable-form/timetable-form-field.js +4 -7
  1335. package/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.js +2 -33
  1336. package/timetable-form/timetable-form-swap-button.js +4 -7
  1337. package/timetable-form/timetable-form.js +4 -7
  1338. package/timetable-form-details.component-Du6WPn3y.js +16 -0
  1339. package/timetable-form-field.component-Cb3FYKL7.js +32 -0
  1340. package/timetable-form-swap-button.component-ByQDf7oy.js +37 -0
  1341. package/timetable-form.component-BqokC_4S.js +16 -0
  1342. package/timetable-form.js +8 -14
  1343. package/timetable-form.pure.js +5 -10
  1344. package/timetable-occupancy/timetable-occupancy.component.js +2 -77
  1345. package/timetable-occupancy-icon/timetable-occupancy-icon.component.js +2 -61
  1346. package/timetable-occupancy-icon.component-BhXQSFZR.js +72 -0
  1347. package/timetable-occupancy-icon.js +5 -4
  1348. package/timetable-occupancy-icon.pure.js +2 -4
  1349. package/timetable-occupancy.component-DnaQ0TIW.js +101 -0
  1350. package/timetable-occupancy.js +5 -4
  1351. package/timetable-occupancy.pure.js +2 -4
  1352. package/title/title-base.js +2 -53
  1353. package/title/title.component.js +3 -37
  1354. package/title-base-D4nE41tH.js +80 -0
  1355. package/title.component-DNBy2mIm.js +54 -0
  1356. package/title.js +7 -7
  1357. package/title.pure.js +3 -6
  1358. package/toast/toast.component.js +2 -180
  1359. package/toast.component-B9Gm8Kls.js +189 -0
  1360. package/toast.js +5 -4
  1361. package/toast.pure.js +2 -4
  1362. package/toggle/toggle/toggle.component.js +2 -147
  1363. package/toggle/toggle-option/toggle-option.component.js +2 -90
  1364. package/toggle/toggle-option.js +4 -7
  1365. package/toggle/toggle.js +4 -7
  1366. package/toggle-check/toggle-check.component.js +2 -85
  1367. package/toggle-check.component-BcxMe5Zi.js +119 -0
  1368. package/toggle-check.js +5 -4
  1369. package/toggle-check.pure.js +2 -4
  1370. package/toggle-option.component-DvdEjT2c.js +123 -0
  1371. package/toggle.component-Lnj5TugJ.js +161 -0
  1372. package/toggle.js +6 -8
  1373. package/toggle.pure.js +3 -6
  1374. package/tooltip/tooltip.component.js +2 -197
  1375. package/tooltip.component-B5fKuZdI.js +228 -0
  1376. package/tooltip.js +5 -4
  1377. package/tooltip.pure.js +2 -4
  1378. package/train/train/train.component.js +2 -123
  1379. package/train/train-blocked-passage/train-blocked-passage.component.js +2 -19
  1380. package/train/train-blocked-passage.js +4 -7
  1381. package/train/train-formation/train-formation.component.js +2 -93
  1382. package/train/train-formation.js +4 -7
  1383. package/train/train-wagon/train-wagon.component.js +2 -174
  1384. package/train/train-wagon.js +4 -7
  1385. package/train/train.js +4 -7
  1386. package/train-blocked-passage.component-Dz7lD_V1.js +23 -0
  1387. package/train-formation.component-CGTqQgp7.js +121 -0
  1388. package/train-wagon.component-BW-JxcK6.js +259 -0
  1389. package/train.component-B_Nlu8Kh.js +176 -0
  1390. package/train.js +8 -14
  1391. package/train.pure.js +5 -10
  1392. package/visual-checkbox/visual-checkbox.component.js +2 -81
  1393. package/visual-checkbox.component-bB_pG0vn.js +118 -0
  1394. package/visual-checkbox.js +5 -4
  1395. package/visual-checkbox.pure.js +2 -4
  1396. package/development/icon-sidebar-button-common-DR6eQvkq.js +0 -93
  1397. package/development/link-common-d27fHmQw.js +0 -111
  1398. package/development/mini-button-label-common-BaMSfSTe.js +0 -558
  1399. package/development/sbb-tokens-DQT_xEIZ.js +0 -19
  1400. package/development/tab-label-common-Mfl36Rsa.js +0 -171
  1401. package/icon-sidebar-button-common-ffAscVDk.js +0 -7
  1402. package/link-common-7IiqjmPD.js +0 -45
  1403. package/mini-button-label-common-Dx9JhmQ6.js +0 -11
  1404. package/sbb-tokens-HiNSQasB.js +0 -11
  1405. package/tab-label-common-D6k40yRU.js +0 -6
@@ -1,287 +1,301 @@
1
1
  import { isServer } from "lit";
2
- const cssAnchorPositionSupported = !isServer && CSS.supports("anchor-name", "--test");
3
- const logicalSupportedPositions = [
4
- "block-start",
5
- "block-end",
6
- "inline-start",
7
- "inline-end",
8
- "block-start span-inline-start",
9
- "block-start span-inline-end",
10
- "block-end span-inline-start",
11
- "block-end span-inline-end",
12
- "inline-start span-block-start",
13
- "inline-start span-block-end",
14
- "inline-end span-block-start",
15
- "inline-end span-block-end"
2
+ //#region src/elements/core/controllers/overlay-position-controller.ts
3
+ var cssAnchorPositionSupported = !isServer && CSS.supports("anchor-name", "--test");
4
+ var physicalSupportedPositions = [
5
+ "top",
6
+ "bottom",
7
+ "left",
8
+ "right",
9
+ "top span-left",
10
+ "top span-right",
11
+ "bottom span-left",
12
+ "bottom span-right",
13
+ "left span-top",
14
+ "left span-bottom",
15
+ "right span-top",
16
+ "right span-bottom"
16
17
  ];
17
- const rtlPositionMapping = {
18
- "block-start": "block-start",
19
- "block-end": "block-end",
20
- "inline-start": "inline-end",
21
- "inline-end": "inline-start",
22
- "block-start span-inline-start": "block-start span-inline-end",
23
- "block-start span-inline-end": "block-start span-inline-start",
24
- "block-end span-inline-start": "block-end span-inline-end",
25
- "block-end span-inline-end": "block-end span-inline-start",
26
- "inline-start span-block-start": "inline-end span-block-start",
27
- "inline-start span-block-end": "inline-end span-block-end",
28
- "inline-end span-block-start": "inline-start span-block-start",
29
- "inline-end span-block-end": "inline-start span-block-end"
18
+ var logicalSupportedPositions = [
19
+ "block-start",
20
+ "block-end",
21
+ "inline-start",
22
+ "inline-end",
23
+ "block-start span-inline-start",
24
+ "block-start span-inline-end",
25
+ "block-end span-inline-start",
26
+ "block-end span-inline-end",
27
+ "inline-start span-block-start",
28
+ "inline-start span-block-end",
29
+ "inline-end span-block-start",
30
+ "inline-end span-block-end"
31
+ ];
32
+ var rtlPositionMapping = {
33
+ "block-start": "block-start",
34
+ "block-end": "block-end",
35
+ "inline-start": "inline-end",
36
+ "inline-end": "inline-start",
37
+ "block-start span-inline-start": "block-start span-inline-end",
38
+ "block-start span-inline-end": "block-start span-inline-start",
39
+ "block-end span-inline-start": "block-end span-inline-end",
40
+ "block-end span-inline-end": "block-end span-inline-start",
41
+ "inline-start span-block-start": "inline-end span-block-start",
42
+ "inline-start span-block-end": "inline-end span-block-end",
43
+ "inline-end span-block-start": "inline-start span-block-start",
44
+ "inline-end span-block-end": "inline-start span-block-end"
30
45
  };
31
- let nextId = 0;
32
- class SbbOverlayPositionController {
33
- /** Get the current position. (e.g. block-end, block-start, etc.) */
34
- get currentPosition() {
35
- if (this._usePolyfill) {
36
- return this._lastPosition ?? this._positions[0] ?? "";
37
- } else {
38
- this._overlayStyles ??= getComputedStyle(this._overlay);
39
- return this._overlayStyles.getPropertyValue("position-area");
40
- }
41
- }
42
- constructor(host, _usePolyfill = !cssAnchorPositionSupported) {
43
- this._usePolyfill = _usePolyfill;
44
- this._resizeObserver = !isServer ? new ResizeObserver(() => this._requestCalculatePosition()) : null;
45
- this._anchorName = `--sbb-overlay-anchor-${++nextId}`;
46
- this._positions = [];
47
- host.addController(this);
48
- this._overlay = host;
49
- }
50
- hostConnected() {
51
- if (!this._usePolyfill) {
52
- this._overlay.style.setProperty("position-anchor", this._anchorName);
53
- } else {
54
- this._overlay.style.setProperty("position-area", "initial");
55
- }
56
- }
57
- hostUpdate() {
58
- if (isServer) {
59
- return;
60
- }
61
- this._readPositionsFromCss();
62
- }
63
- /**
64
- * Connects the overlay to the given trigger element and determines the optimal position.
65
- * Usually, this is called when the overlay is opened.
66
- * @param anchor The anchor element.
67
- */
68
- connect(anchor) {
69
- if (isServer) {
70
- return;
71
- }
72
- if (this._anchor) {
73
- this.disconnect();
74
- }
75
- this._anchor = anchor;
76
- if (!this._usePolyfill) {
77
- this._anchor.style.setProperty("anchor-name", this._anchorName);
78
- }
79
- this._readPositionsFromCss();
80
- this._calculatePosition();
81
- this._abortController?.abort();
82
- this._abortController = new AbortController();
83
- document.addEventListener("scroll", () => this._requestCalculatePosition(), {
84
- capture: true,
85
- passive: true,
86
- signal: this._abortController.signal
87
- });
88
- window.addEventListener("resize", () => this._requestCalculatePosition(), {
89
- passive: true,
90
- signal: this._abortController.signal
91
- });
92
- this._resizeObserver.observe(anchor, { box: "border-box" });
93
- this._resizeObserver.observe(this._overlay, { box: "border-box" });
94
- }
95
- disconnect() {
96
- this._anchor?.style.removeProperty("anchor-name");
97
- this._anchor = void 0;
98
- this._abortController?.abort();
99
- this._resizeObserver.disconnect();
100
- }
101
- _requestCalculatePosition() {
102
- this._frame ??= requestAnimationFrame(() => {
103
- this._calculatePosition();
104
- this._frame = void 0;
105
- });
106
- }
107
- _calculatePosition() {
108
- if (!this._anchor) {
109
- return;
110
- }
111
- if (this._usePolyfill) {
112
- const position = this._getOptimalPosition(this._positions);
113
- this._applyOverlayPosition(position.position, position.left, position.top);
114
- }
115
- this._overlay.setAttribute("data-position", this.currentPosition);
116
- }
117
- /**
118
- * Calculates the optimal position that fits the overlay.
119
- * @param positions The list of positions to check.
120
- * @private
121
- */
122
- _getOptimalPosition(positions) {
123
- const { offsetHeight: overlayHeight, offsetWidth: overlayWidth } = this._overlay;
124
- const { innerHeight: viewportHeight, innerWidth: viewportWidth } = window;
125
- const { top: triggerOffsetTop, left: triggerOffsetLeft, height: triggerHeight, width: triggerWidth } = this._anchor.getBoundingClientRect();
126
- const isRtl = this._overlay.matches(":dir(rtl)");
127
- const topSpace = triggerOffsetTop;
128
- const bottomSpace = viewportHeight - triggerHeight - triggerOffsetTop;
129
- const leftSpace = triggerOffsetLeft;
130
- const rightSpace = viewportWidth - triggerWidth - triggerOffsetLeft;
131
- const overlayWidthNet = overlayWidth - triggerWidth;
132
- const overlayHeightNet = overlayHeight - triggerHeight;
133
- const overlayWidthOverlap = overlayWidthNet / 2;
134
- const overlayHeightOverlap = overlayHeightNet / 2;
135
- this._overlay.style.setProperty("--sbb-overlay-controller-trigger-height", `${triggerHeight}px`);
136
- this._overlay.style.setProperty("--sbb-overlay-controller-trigger-width", `${triggerWidth}px`);
137
- let result = { left: 0, top: 0, position: "" };
138
- let firstPosition = void 0;
139
- for (const position of positions) {
140
- const physicalPosition = isRtl && logicalSupportedPositions.includes(position) ? rtlPositionMapping[position] : position;
141
- switch (physicalPosition) {
142
- default:
143
- case "bottom":
144
- case "block-end":
145
- result = {
146
- position,
147
- left: triggerOffsetLeft - overlayWidthOverlap,
148
- top: triggerOffsetTop + triggerHeight,
149
- fits: overlayHeight <= bottomSpace && overlayWidthOverlap <= leftSpace && overlayWidthOverlap <= rightSpace
150
- };
151
- break;
152
- case "top":
153
- case "block-start":
154
- result = {
155
- position,
156
- left: triggerOffsetLeft - overlayWidthOverlap,
157
- top: triggerOffsetTop - overlayHeight,
158
- fits: overlayHeight <= topSpace && overlayWidthOverlap <= leftSpace && overlayWidthOverlap <= rightSpace
159
- };
160
- break;
161
- case "right":
162
- case "inline-end":
163
- result = {
164
- position,
165
- left: triggerOffsetLeft + triggerWidth,
166
- top: triggerOffsetTop - overlayHeightOverlap,
167
- fits: overlayWidth <= rightSpace && overlayHeightOverlap <= topSpace && overlayHeightOverlap <= bottomSpace
168
- };
169
- break;
170
- case "left":
171
- case "inline-start":
172
- result = {
173
- position,
174
- left: triggerOffsetLeft - overlayWidth,
175
- top: triggerOffsetTop - overlayHeightOverlap,
176
- fits: overlayWidth <= leftSpace && overlayHeightOverlap <= topSpace && overlayHeightOverlap <= bottomSpace
177
- };
178
- break;
179
- case "top span-left":
180
- case "block-start span-inline-start":
181
- result = {
182
- position,
183
- left: triggerOffsetLeft - overlayWidthNet,
184
- top: triggerOffsetTop - overlayHeight,
185
- fits: overlayHeight <= topSpace && overlayWidthNet <= leftSpace
186
- };
187
- break;
188
- case "top span-right":
189
- case "block-start span-inline-end":
190
- result = {
191
- position,
192
- left: triggerOffsetLeft,
193
- top: triggerOffsetTop - overlayHeight,
194
- fits: overlayHeight <= topSpace && overlayWidthNet <= rightSpace
195
- };
196
- break;
197
- case "bottom span-left":
198
- case "block-end span-inline-start":
199
- result = {
200
- position,
201
- left: triggerOffsetLeft - overlayWidthNet,
202
- top: triggerOffsetTop + triggerHeight,
203
- fits: overlayHeight <= bottomSpace && overlayWidthNet <= leftSpace
204
- };
205
- break;
206
- case "bottom span-right":
207
- case "block-end span-inline-end":
208
- result = {
209
- position,
210
- left: triggerOffsetLeft,
211
- top: triggerOffsetTop + triggerHeight,
212
- fits: overlayHeight <= bottomSpace && overlayWidthNet <= rightSpace
213
- };
214
- break;
215
- case "left span-top":
216
- case "inline-start span-block-start":
217
- result = {
218
- position,
219
- left: triggerOffsetLeft - overlayWidth,
220
- top: triggerOffsetTop + triggerHeight - overlayHeight,
221
- fits: overlayWidth <= leftSpace && overlayHeightNet <= topSpace
222
- };
223
- break;
224
- case "left span-bottom":
225
- case "inline-start span-block-end":
226
- result = {
227
- position,
228
- left: triggerOffsetLeft - overlayWidth,
229
- top: triggerOffsetTop,
230
- fits: overlayWidth <= leftSpace && overlayHeightNet <= bottomSpace
231
- };
232
- break;
233
- case "right span-top":
234
- case "inline-end span-block-start":
235
- result = {
236
- position,
237
- left: triggerOffsetLeft + triggerWidth,
238
- top: triggerOffsetTop + triggerHeight - overlayHeight,
239
- fits: overlayWidth <= rightSpace && overlayHeightNet <= topSpace
240
- };
241
- break;
242
- case "right span-bottom":
243
- case "inline-end span-block-end":
244
- result = {
245
- position,
246
- left: triggerOffsetLeft + triggerWidth,
247
- top: triggerOffsetTop,
248
- fits: overlayWidth <= rightSpace && overlayHeightNet <= bottomSpace
249
- };
250
- break;
251
- }
252
- if (result.fits) {
253
- return result;
254
- }
255
- firstPosition ??= result;
256
- }
257
- return firstPosition;
258
- }
259
- _applyOverlayPosition(position, left, top) {
260
- this._lastPosition = position;
261
- this._overlay.style.left = `${left}px`;
262
- this._overlay.style.top = `${top}px`;
263
- }
264
- /**
265
- * Only used in polyfill mode.
266
- * Reads the list of the configured positions from the CSS variables.
267
- * @private
268
- */
269
- _readPositionsFromCss() {
270
- if (!this._usePolyfill) {
271
- return;
272
- }
273
- this._overlayStyles ??= getComputedStyle(this._overlay);
274
- const positions = [
275
- this._overlayStyles.getPropertyValue("--sbb-overlay-position-area") || "block-end",
276
- ...this._overlayStyles.getPropertyValue("--sbb-overlay-position-try-fallbacks").split(",").map((f) => f.trim()).filter((f) => !!f)
277
- ];
278
- this._positions = positions;
279
- if (this._lastPosition && !this._positions.includes(this._lastPosition)) {
280
- this._lastPosition = void 0;
281
- }
282
- }
283
- }
284
- export {
285
- SbbOverlayPositionController
46
+ [...physicalSupportedPositions, ...logicalSupportedPositions];
47
+ var nextId = 0;
48
+ /**
49
+ * Controller for managing overlays positioning. Also acts as a polyfill when native
50
+ * CSS Anchor Positioning is not supported (enough).
51
+ * Applies unique anchor names when using native CSS Anchor Positioning
52
+ * or calculates and applies correct positions in polyfill mode.
53
+ *
54
+ * Also, the controller sets the 'data-position' attribute on the overlay element.
55
+ * This can be used to apply specific styles based on the current position of the overlay.
56
+ *
57
+ * ### Implementation
58
+ * Define and apply the following CSS variables on the overlay element:
59
+ * ```scss
60
+ * --sbb-overlay-position-area: block-end; // Default
61
+ * --sbb-overlay-position-try-fallbacks: block-start, inline-end, inline-start; // Fallbacks
62
+ *
63
+ * position-area: var(--sbb-overlay-position-area);
64
+ * position-try-fallbacks: var(--sbb-overlay-position-try-fallbacks);
65
+ * ```
66
+ */
67
+ var SbbOverlayPositionController = class {
68
+ /** Get the current position. (e.g. block-end, block-start, etc.) */
69
+ get currentPosition() {
70
+ if (this._usePolyfill) return this._lastPosition ?? this._positions[0] ?? "";
71
+ else {
72
+ this._overlayStyles ??= getComputedStyle(this._overlay);
73
+ return this._overlayStyles.getPropertyValue("position-area");
74
+ }
75
+ }
76
+ constructor(host, _usePolyfill = !cssAnchorPositionSupported) {
77
+ this._usePolyfill = _usePolyfill;
78
+ this._resizeObserver = !isServer ? new ResizeObserver(() => this._requestCalculatePosition()) : null;
79
+ this._anchorName = `--sbb-overlay-anchor-${++nextId}`;
80
+ this._positions = [];
81
+ host.addController(this);
82
+ this._overlay = host;
83
+ }
84
+ hostConnected() {
85
+ if (!this._usePolyfill) this._overlay.style.setProperty("position-anchor", this._anchorName);
86
+ else this._overlay.style.setProperty("position-area", "initial");
87
+ }
88
+ hostUpdate() {
89
+ if (isServer) return;
90
+ this._readPositionsFromCss();
91
+ }
92
+ /**
93
+ * Connects the overlay to the given trigger element and determines the optimal position.
94
+ * Usually, this is called when the overlay is opened.
95
+ * @param anchor The anchor element.
96
+ */
97
+ connect(anchor) {
98
+ if (isServer) return;
99
+ if (this._anchor) this.disconnect();
100
+ this._anchor = anchor;
101
+ if (!this._usePolyfill) this._anchor.style.setProperty("anchor-name", this._anchorName);
102
+ this._readPositionsFromCss();
103
+ this._calculatePosition();
104
+ this._abortController?.abort();
105
+ this._abortController = new AbortController();
106
+ document.addEventListener("scroll", () => this._requestCalculatePosition(), {
107
+ capture: true,
108
+ passive: true,
109
+ signal: this._abortController.signal
110
+ });
111
+ window.addEventListener("resize", () => this._requestCalculatePosition(), {
112
+ passive: true,
113
+ signal: this._abortController.signal
114
+ });
115
+ this._resizeObserver.observe(anchor, { box: "border-box" });
116
+ this._resizeObserver.observe(this._overlay, { box: "border-box" });
117
+ }
118
+ disconnect() {
119
+ this._anchor?.style.removeProperty("anchor-name");
120
+ this._anchor = void 0;
121
+ this._abortController?.abort();
122
+ this._resizeObserver.disconnect();
123
+ }
124
+ _requestCalculatePosition() {
125
+ this._frame ??= requestAnimationFrame(() => {
126
+ this._calculatePosition();
127
+ this._frame = void 0;
128
+ });
129
+ }
130
+ _calculatePosition() {
131
+ if (!this._anchor) return;
132
+ if (this._usePolyfill) {
133
+ const position = this._getOptimalPosition(this._positions);
134
+ this._applyOverlayPosition(position.position, position.left, position.top);
135
+ }
136
+ this._overlay.setAttribute("data-position", this.currentPosition);
137
+ }
138
+ /**
139
+ * Calculates the optimal position that fits the overlay.
140
+ * @param positions The list of positions to check.
141
+ * @private
142
+ */
143
+ _getOptimalPosition(positions) {
144
+ const { offsetHeight: overlayHeight, offsetWidth: overlayWidth } = this._overlay;
145
+ const { innerHeight: viewportHeight, innerWidth: viewportWidth } = window;
146
+ const { top: triggerOffsetTop, left: triggerOffsetLeft, height: triggerHeight, width: triggerWidth } = this._anchor.getBoundingClientRect();
147
+ const isRtl = this._overlay.matches(":dir(rtl)");
148
+ const topSpace = triggerOffsetTop;
149
+ const bottomSpace = viewportHeight - triggerHeight - triggerOffsetTop;
150
+ const leftSpace = triggerOffsetLeft;
151
+ const rightSpace = viewportWidth - triggerWidth - triggerOffsetLeft;
152
+ const overlayWidthNet = overlayWidth - triggerWidth;
153
+ const overlayHeightNet = overlayHeight - triggerHeight;
154
+ const overlayWidthOverlap = overlayWidthNet / 2;
155
+ const overlayHeightOverlap = overlayHeightNet / 2;
156
+ this._overlay.style.setProperty("--sbb-overlay-controller-trigger-height", `${triggerHeight}px`);
157
+ this._overlay.style.setProperty("--sbb-overlay-controller-trigger-width", `${triggerWidth}px`);
158
+ let result = {
159
+ left: 0,
160
+ top: 0,
161
+ position: ""
162
+ };
163
+ let firstPosition = void 0;
164
+ for (const position of positions) {
165
+ switch (isRtl && logicalSupportedPositions.includes(position) ? rtlPositionMapping[position] : position) {
166
+ default:
167
+ case "bottom":
168
+ case "block-end":
169
+ result = {
170
+ position,
171
+ left: triggerOffsetLeft - overlayWidthOverlap,
172
+ top: triggerOffsetTop + triggerHeight,
173
+ fits: overlayHeight <= bottomSpace && overlayWidthOverlap <= leftSpace && overlayWidthOverlap <= rightSpace
174
+ };
175
+ break;
176
+ case "top":
177
+ case "block-start":
178
+ result = {
179
+ position,
180
+ left: triggerOffsetLeft - overlayWidthOverlap,
181
+ top: triggerOffsetTop - overlayHeight,
182
+ fits: overlayHeight <= topSpace && overlayWidthOverlap <= leftSpace && overlayWidthOverlap <= rightSpace
183
+ };
184
+ break;
185
+ case "right":
186
+ case "inline-end":
187
+ result = {
188
+ position,
189
+ left: triggerOffsetLeft + triggerWidth,
190
+ top: triggerOffsetTop - overlayHeightOverlap,
191
+ fits: overlayWidth <= rightSpace && overlayHeightOverlap <= topSpace && overlayHeightOverlap <= bottomSpace
192
+ };
193
+ break;
194
+ case "left":
195
+ case "inline-start":
196
+ result = {
197
+ position,
198
+ left: triggerOffsetLeft - overlayWidth,
199
+ top: triggerOffsetTop - overlayHeightOverlap,
200
+ fits: overlayWidth <= leftSpace && overlayHeightOverlap <= topSpace && overlayHeightOverlap <= bottomSpace
201
+ };
202
+ break;
203
+ case "top span-left":
204
+ case "block-start span-inline-start":
205
+ result = {
206
+ position,
207
+ left: triggerOffsetLeft - overlayWidthNet,
208
+ top: triggerOffsetTop - overlayHeight,
209
+ fits: overlayHeight <= topSpace && overlayWidthNet <= leftSpace
210
+ };
211
+ break;
212
+ case "top span-right":
213
+ case "block-start span-inline-end":
214
+ result = {
215
+ position,
216
+ left: triggerOffsetLeft,
217
+ top: triggerOffsetTop - overlayHeight,
218
+ fits: overlayHeight <= topSpace && overlayWidthNet <= rightSpace
219
+ };
220
+ break;
221
+ case "bottom span-left":
222
+ case "block-end span-inline-start":
223
+ result = {
224
+ position,
225
+ left: triggerOffsetLeft - overlayWidthNet,
226
+ top: triggerOffsetTop + triggerHeight,
227
+ fits: overlayHeight <= bottomSpace && overlayWidthNet <= leftSpace
228
+ };
229
+ break;
230
+ case "bottom span-right":
231
+ case "block-end span-inline-end":
232
+ result = {
233
+ position,
234
+ left: triggerOffsetLeft,
235
+ top: triggerOffsetTop + triggerHeight,
236
+ fits: overlayHeight <= bottomSpace && overlayWidthNet <= rightSpace
237
+ };
238
+ break;
239
+ case "left span-top":
240
+ case "inline-start span-block-start":
241
+ result = {
242
+ position,
243
+ left: triggerOffsetLeft - overlayWidth,
244
+ top: triggerOffsetTop + triggerHeight - overlayHeight,
245
+ fits: overlayWidth <= leftSpace && overlayHeightNet <= topSpace
246
+ };
247
+ break;
248
+ case "left span-bottom":
249
+ case "inline-start span-block-end":
250
+ result = {
251
+ position,
252
+ left: triggerOffsetLeft - overlayWidth,
253
+ top: triggerOffsetTop,
254
+ fits: overlayWidth <= leftSpace && overlayHeightNet <= bottomSpace
255
+ };
256
+ break;
257
+ case "right span-top":
258
+ case "inline-end span-block-start":
259
+ result = {
260
+ position,
261
+ left: triggerOffsetLeft + triggerWidth,
262
+ top: triggerOffsetTop + triggerHeight - overlayHeight,
263
+ fits: overlayWidth <= rightSpace && overlayHeightNet <= topSpace
264
+ };
265
+ break;
266
+ case "right span-bottom":
267
+ case "inline-end span-block-end":
268
+ result = {
269
+ position,
270
+ left: triggerOffsetLeft + triggerWidth,
271
+ top: triggerOffsetTop,
272
+ fits: overlayWidth <= rightSpace && overlayHeightNet <= bottomSpace
273
+ };
274
+ break;
275
+ }
276
+ if (result.fits) return result;
277
+ firstPosition ??= result;
278
+ }
279
+ return firstPosition;
280
+ }
281
+ _applyOverlayPosition(position, left, top) {
282
+ this._lastPosition = position;
283
+ this._overlay.style.left = `${left}px`;
284
+ this._overlay.style.top = `${top}px`;
285
+ }
286
+ /**
287
+ * Only used in polyfill mode.
288
+ * Reads the list of the configured positions from the CSS variables.
289
+ * @private
290
+ */
291
+ _readPositionsFromCss() {
292
+ if (!this._usePolyfill) return;
293
+ this._overlayStyles ??= getComputedStyle(this._overlay);
294
+ this._positions = [this._overlayStyles.getPropertyValue("--sbb-overlay-position-area") || "block-end", ...this._overlayStyles.getPropertyValue("--sbb-overlay-position-try-fallbacks").split(",").map((f) => f.trim()).filter((f) => !!f)];
295
+ if (this._lastPosition && !this._positions.includes(this._lastPosition)) this._lastPosition = void 0;
296
+ }
286
297
  };
287
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1wb3NpdGlvbi1jb250cm9sbGVyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9jb250cm9sbGVycy9vdmVybGF5LXBvc2l0aW9uLWNvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTZXJ2ZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVyLCB0eXBlIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpblR5cGUgfSBmcm9tICcuLi9taXhpbnMudHMnO1xuXG5jb25zdCBjc3NBbmNob3JQb3NpdGlvblN1cHBvcnRlZCA9ICFpc1NlcnZlciAmJiBDU1Muc3VwcG9ydHMoJ2FuY2hvci1uYW1lJywgJy0tdGVzdCcpO1xuXG5jb25zdCBwaHlzaWNhbFN1cHBvcnRlZFBvc2l0aW9ucyA9IFtcbiAgJ3RvcCcsXG4gICdib3R0b20nLFxuICAnbGVmdCcsXG4gICdyaWdodCcsXG4gICd0b3Agc3Bhbi1sZWZ0JyxcbiAgJ3RvcCBzcGFuLXJpZ2h0JyxcbiAgJ2JvdHRvbSBzcGFuLWxlZnQnLFxuICAnYm90dG9tIHNwYW4tcmlnaHQnLFxuICAnbGVmdCBzcGFuLXRvcCcsXG4gICdsZWZ0IHNwYW4tYm90dG9tJyxcbiAgJ3JpZ2h0IHNwYW4tdG9wJyxcbiAgJ3JpZ2h0IHNwYW4tYm90dG9tJyxcbl07XG5cbi8vIE5vdGU6IGlmIHlvdSBhZGQgbmV3IGxvZ2ljYWwgc3VwcG9ydGVkIHBvc2l0aW9ucywgdXBkYXRlIGFsc28gdGhlICdydGxQb3NpdGlvbk1hcHBpbmcnXG5jb25zdCBsb2dpY2FsU3VwcG9ydGVkUG9zaXRpb25zID0gW1xuICAnYmxvY2stc3RhcnQnLFxuICAnYmxvY2stZW5kJyxcbiAgJ2lubGluZS1zdGFydCcsXG4gICdpbmxpbmUtZW5kJyxcbiAgJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLXN0YXJ0JyxcbiAgJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLWVuZCcsXG4gICdibG9jay1lbmQgc3Bhbi1pbmxpbmUtc3RhcnQnLFxuICAnYmxvY2stZW5kIHNwYW4taW5saW5lLWVuZCcsXG4gICdpbmxpbmUtc3RhcnQgc3Bhbi1ibG9jay1zdGFydCcsXG4gICdpbmxpbmUtc3RhcnQgc3Bhbi1ibG9jay1lbmQnLFxuICAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLXN0YXJ0JyxcbiAgJ2lubGluZS1lbmQgc3Bhbi1ibG9jay1lbmQnLFxuXTtcblxuY29uc3QgcnRsUG9zaXRpb25NYXBwaW5nOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAnYmxvY2stc3RhcnQnOiAnYmxvY2stc3RhcnQnLFxuICAnYmxvY2stZW5kJzogJ2Jsb2NrLWVuZCcsXG4gICdpbmxpbmUtc3RhcnQnOiAnaW5saW5lLWVuZCcsXG4gICdpbmxpbmUtZW5kJzogJ2lubGluZS1zdGFydCcsXG4gICdibG9jay1zdGFydCBzcGFuLWlubGluZS1zdGFydCc6ICdibG9jay1zdGFydCBzcGFuLWlubGluZS1lbmQnLFxuICAnYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtZW5kJzogJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLXN0YXJ0JyxcbiAgJ2Jsb2NrLWVuZCBzcGFuLWlubGluZS1zdGFydCc6ICdibG9jay1lbmQgc3Bhbi1pbmxpbmUtZW5kJyxcbiAgJ2Jsb2NrLWVuZCBzcGFuLWlubGluZS1lbmQnOiAnYmxvY2stZW5kIHNwYW4taW5saW5lLXN0YXJ0JyxcbiAgJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLXN0YXJ0JzogJ2lubGluZS1lbmQgc3Bhbi1ibG9jay1zdGFydCcsXG4gICdpbmxpbmUtc3RhcnQgc3Bhbi1ibG9jay1lbmQnOiAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLWVuZCcsXG4gICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stc3RhcnQnOiAnaW5saW5lLXN0YXJ0IHNwYW4tYmxvY2stc3RhcnQnLFxuICAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLWVuZCc6ICdpbmxpbmUtc3RhcnQgc3Bhbi1ibG9jay1lbmQnLFxufTtcblxuY29uc3Qgc3VwcG9ydGVkUG9zaXRpb25zID0gWy4uLnBoeXNpY2FsU3VwcG9ydGVkUG9zaXRpb25zLCAuLi5sb2dpY2FsU3VwcG9ydGVkUG9zaXRpb25zXTtcbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIENvbnRyb2xsZXIgZm9yIG1hbmFnaW5nIG92ZXJsYXlzIHBvc2l0aW9uaW5nLiBBbHNvIGFjdHMgYXMgYSBwb2x5ZmlsbCB3aGVuIG5hdGl2ZVxuICogQ1NTIEFuY2hvciBQb3NpdGlvbmluZyBpcyBub3Qgc3VwcG9ydGVkIChlbm91Z2gpLlxuICogQXBwbGllcyB1bmlxdWUgYW5jaG9yIG5hbWVzIHdoZW4gdXNpbmcgbmF0aXZlIENTUyBBbmNob3IgUG9zaXRpb25pbmdcbiAqIG9yIGNhbGN1bGF0ZXMgYW5kIGFwcGxpZXMgY29ycmVjdCBwb3NpdGlvbnMgaW4gcG9seWZpbGwgbW9kZS5cbiAqXG4gKiBBbHNvLCB0aGUgY29udHJvbGxlciBzZXRzIHRoZSAnZGF0YS1wb3NpdGlvbicgYXR0cmlidXRlIG9uIHRoZSBvdmVybGF5IGVsZW1lbnQuXG4gKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGFwcGx5IHNwZWNpZmljIHN0eWxlcyBiYXNlZCBvbiB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiB0aGUgb3ZlcmxheS5cbiAqXG4gKiAjIyMgSW1wbGVtZW50YXRpb25cbiAqIERlZmluZSBhbmQgYXBwbHkgdGhlIGZvbGxvd2luZyBDU1MgdmFyaWFibGVzIG9uIHRoZSBvdmVybGF5IGVsZW1lbnQ6XG4gKiBgYGBzY3NzXG4gKiAgIC0tc2JiLW92ZXJsYXktcG9zaXRpb24tYXJlYTogYmxvY2stZW5kOyAvLyBEZWZhdWx0XG4gKiAgIC0tc2JiLW92ZXJsYXktcG9zaXRpb24tdHJ5LWZhbGxiYWNrczogYmxvY2stc3RhcnQsIGlubGluZS1lbmQsIGlubGluZS1zdGFydDsgLy8gRmFsbGJhY2tzXG4gKlxuICogICBwb3NpdGlvbi1hcmVhOiB2YXIoLS1zYmItb3ZlcmxheS1wb3NpdGlvbi1hcmVhKTtcbiAqICAgcG9zaXRpb24tdHJ5LWZhbGxiYWNrczogdmFyKC0tc2JiLW92ZXJsYXktcG9zaXRpb24tdHJ5LWZhbGxiYWNrcyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFNiYk92ZXJsYXlQb3NpdGlvbkNvbnRyb2xsZXIgaW1wbGVtZW50cyBSZWFjdGl2ZUNvbnRyb2xsZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZXNpemVPYnNlcnZlciA9ICFpc1NlcnZlclxuICAgID8gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHRoaXMuX3JlcXVlc3RDYWxjdWxhdGVQb3NpdGlvbigpKVxuICAgIDogbnVsbCE7XG4gIHByaXZhdGUgcmVhZG9ubHkgX292ZXJsYXk6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QgJiBIVE1MRWxlbWVudCAmIFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpblR5cGU7XG4gIHByaXZhdGUgX2Fib3J0Q29udHJvbGxlcj86IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfYW5jaG9yPzogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX292ZXJsYXlTdHlsZXM/OiBDU1NTdHlsZURlY2xhcmF0aW9uO1xuICBwcml2YXRlIF9mcmFtZT86IFJldHVyblR5cGU8dHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZT47XG4gIHByaXZhdGUgX2FuY2hvck5hbWUgPSBgLS1zYmItb3ZlcmxheS1hbmNob3ItJHsrK25leHRJZH1gO1xuICBwcml2YXRlIF9wb3NpdGlvbnM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgX2xhc3RQb3NpdGlvbj86IHN0cmluZztcblxuICAvKiogR2V0IHRoZSBjdXJyZW50IHBvc2l0aW9uLiAoZS5nLiBibG9jay1lbmQsIGJsb2NrLXN0YXJ0LCBldGMuKSAqL1xuICBwdWJsaWMgZ2V0IGN1cnJlbnRQb3NpdGlvbigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl91c2VQb2x5ZmlsbCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2xhc3RQb3NpdGlvbiA/PyB0aGlzLl9wb3NpdGlvbnNbMF0gPz8gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX292ZXJsYXlTdHlsZXMgPz89IGdldENvbXB1dGVkU3R5bGUodGhpcy5fb3ZlcmxheSk7XG4gICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheVN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKCdwb3NpdGlvbi1hcmVhJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIGhvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QgJiBIVE1MRWxlbWVudCAmIFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpblR5cGUsXG4gICAgcHJpdmF0ZSBfdXNlUG9seWZpbGwgPSAhY3NzQW5jaG9yUG9zaXRpb25TdXBwb3J0ZWQsXG4gICkge1xuICAgIGhvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgICB0aGlzLl9vdmVybGF5ID0gaG9zdDtcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdXNlUG9seWZpbGwpIHtcbiAgICAgIHRoaXMuX292ZXJsYXkuc3R5bGUuc2V0UHJvcGVydHkoJ3Bvc2l0aW9uLWFuY2hvcicsIHRoaXMuX2FuY2hvck5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXNldCB0aGUgJ3Bvc2l0aW9uLWFyZWEnIHZhbHVlIHRvIGF2b2lkIGFueSB1bndhbnRlZCBzaWRlIGVmZmVjdCB3aGVuIHVzaW5nIHRoZSBwb2x5ZmlsbC5cbiAgICAgIHRoaXMuX292ZXJsYXkuc3R5bGUuc2V0UHJvcGVydHkoJ3Bvc2l0aW9uLWFyZWEnLCAnaW5pdGlhbCcpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBob3N0VXBkYXRlKCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9yZWFkUG9zaXRpb25zRnJvbUNzcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbm5lY3RzIHRoZSBvdmVybGF5IHRvIHRoZSBnaXZlbiB0cmlnZ2VyIGVsZW1lbnQgYW5kIGRldGVybWluZXMgdGhlIG9wdGltYWwgcG9zaXRpb24uXG4gICAqIFVzdWFsbHksIHRoaXMgaXMgY2FsbGVkIHdoZW4gdGhlIG92ZXJsYXkgaXMgb3BlbmVkLlxuICAgKiBAcGFyYW0gYW5jaG9yIFRoZSBhbmNob3IgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBjb25uZWN0KGFuY2hvcjogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fYW5jaG9yKSB7XG4gICAgICB0aGlzLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gICAgdGhpcy5fYW5jaG9yID0gYW5jaG9yO1xuXG4gICAgaWYgKCF0aGlzLl91c2VQb2x5ZmlsbCkge1xuICAgICAgdGhpcy5fYW5jaG9yLnN0eWxlLnNldFByb3BlcnR5KCdhbmNob3ItbmFtZScsIHRoaXMuX2FuY2hvck5hbWUhKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yZWFkUG9zaXRpb25zRnJvbUNzcygpO1xuICAgIHRoaXMuX2NhbGN1bGF0ZVBvc2l0aW9uKCk7XG4gICAgdGhpcy5fYWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX2Fib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICAgIC8vIFdlIG5lZWQgdG8gdXNlIGNhcHR1cmUgaGVyZSB0byByZWFjdCB0byBhbGwgc2Nyb2xsIGV2ZW50cy5cbiAgICAvLyBJZiBjYXB0dXJlIHdhcyBub3QgdXNlZCwgdGhlbiBzY3JvbGwgZXZlbnRzIGluc2lkZSBzZXBhcmF0ZSBzY3JvbGxcbiAgICAvLyBjb250YWluZXJzIHdvdWxkIG5vdCBiZSBjYXVnaHQuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4gdGhpcy5fcmVxdWVzdENhbGN1bGF0ZVBvc2l0aW9uKCksIHtcbiAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9hYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB0aGlzLl9yZXF1ZXN0Q2FsY3VsYXRlUG9zaXRpb24oKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fYWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlci5vYnNlcnZlKGFuY2hvciwgeyBib3g6ICdib3JkZXItYm94JyB9KTtcbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX292ZXJsYXksIHsgYm94OiAnYm9yZGVyLWJveCcgfSk7XG4gIH1cblxuICBwdWJsaWMgZGlzY29ubmVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbmNob3I/LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdhbmNob3ItbmFtZScpO1xuICAgIHRoaXMuX2FuY2hvciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9hYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVxdWVzdENhbGN1bGF0ZVBvc2l0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2ZyYW1lID8/PSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5fY2FsY3VsYXRlUG9zaXRpb24oKTtcbiAgICAgIHRoaXMuX2ZyYW1lID0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2FsY3VsYXRlUG9zaXRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9hbmNob3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fdXNlUG9seWZpbGwpIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5fZ2V0T3B0aW1hbFBvc2l0aW9uKHRoaXMuX3Bvc2l0aW9ucyk7XG4gICAgICB0aGlzLl9hcHBseU92ZXJsYXlQb3NpdGlvbihwb3NpdGlvbi5wb3NpdGlvbiwgcG9zaXRpb24ubGVmdCwgcG9zaXRpb24udG9wKTtcbiAgICB9XG5cbiAgICB0aGlzLl9vdmVybGF5LnNldEF0dHJpYnV0ZSgnZGF0YS1wb3NpdGlvbicsIHRoaXMuY3VycmVudFBvc2l0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBvcHRpbWFsIHBvc2l0aW9uIHRoYXQgZml0cyB0aGUgb3ZlcmxheS5cbiAgICogQHBhcmFtIHBvc2l0aW9ucyBUaGUgbGlzdCBvZiBwb3NpdGlvbnMgdG8gY2hlY2suXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9nZXRPcHRpbWFsUG9zaXRpb24ocG9zaXRpb25zOiBzdHJpbmdbXSk6IHtcbiAgICBsZWZ0OiBudW1iZXI7XG4gICAgdG9wOiBudW1iZXI7XG4gICAgcG9zaXRpb246IHN0cmluZztcbiAgICBmaXRzPzogYm9vbGVhbjtcbiAgfSB7XG4gICAgY29uc3QgeyBvZmZzZXRIZWlnaHQ6IG92ZXJsYXlIZWlnaHQsIG9mZnNldFdpZHRoOiBvdmVybGF5V2lkdGggfSA9IHRoaXMuX292ZXJsYXk7XG4gICAgY29uc3QgeyBpbm5lckhlaWdodDogdmlld3BvcnRIZWlnaHQsIGlubmVyV2lkdGg6IHZpZXdwb3J0V2lkdGggfSA9IHdpbmRvdztcbiAgICBjb25zdCB7XG4gICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AsXG4gICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCxcbiAgICAgIGhlaWdodDogdHJpZ2dlckhlaWdodCxcbiAgICAgIHdpZHRoOiB0cmlnZ2VyV2lkdGgsXG4gICAgfSA9IHRoaXMuX2FuY2hvciEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBjb25zdCBpc1J0bCA9IHRoaXMuX292ZXJsYXkubWF0Y2hlcygnOmRpcihydGwpJyk7XG4gICAgY29uc3QgdG9wU3BhY2UgPSB0cmlnZ2VyT2Zmc2V0VG9wO1xuICAgIGNvbnN0IGJvdHRvbVNwYWNlID0gdmlld3BvcnRIZWlnaHQgLSB0cmlnZ2VySGVpZ2h0IC0gdHJpZ2dlck9mZnNldFRvcDtcbiAgICBjb25zdCBsZWZ0U3BhY2UgPSB0cmlnZ2VyT2Zmc2V0TGVmdDtcbiAgICBjb25zdCByaWdodFNwYWNlID0gdmlld3BvcnRXaWR0aCAtIHRyaWdnZXJXaWR0aCAtIHRyaWdnZXJPZmZzZXRMZWZ0O1xuXG4gICAgLy8gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgb3ZlcmxheSBhbmQgdGhlIHRyaWdnZXIgd2lkdGgvaGVpZ2h0LlxuICAgIGNvbnN0IG92ZXJsYXlXaWR0aE5ldCA9IG92ZXJsYXlXaWR0aCAtIHRyaWdnZXJXaWR0aDtcbiAgICBjb25zdCBvdmVybGF5SGVpZ2h0TmV0ID0gb3ZlcmxheUhlaWdodCAtIHRyaWdnZXJIZWlnaHQ7XG5cbiAgICAvLyBUaGUgYW1vdW50IHRoYXQgd291bGQgZXhjZWVkIHRoZSB0cmlnZ2VyIGlmIHRoZSBvdmVybGF5IHdlcmUgY2VudGVyZWQgb24gaXQuXG4gICAgY29uc3Qgb3ZlcmxheVdpZHRoT3ZlcmxhcCA9IG92ZXJsYXlXaWR0aE5ldCAvIDI7XG4gICAgY29uc3Qgb3ZlcmxheUhlaWdodE92ZXJsYXAgPSBvdmVybGF5SGVpZ2h0TmV0IC8gMjtcblxuICAgIHRoaXMuX292ZXJsYXkuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAnLS1zYmItb3ZlcmxheS1jb250cm9sbGVyLXRyaWdnZXItaGVpZ2h0JyxcbiAgICAgIGAke3RyaWdnZXJIZWlnaHR9cHhgLFxuICAgICk7XG4gICAgdGhpcy5fb3ZlcmxheS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItb3ZlcmxheS1jb250cm9sbGVyLXRyaWdnZXItd2lkdGgnLCBgJHt0cmlnZ2VyV2lkdGh9cHhgKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWFzc2lnbm1lbnRcbiAgICBsZXQgcmVzdWx0OiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLl9nZXRPcHRpbWFsUG9zaXRpb24+ID0geyBsZWZ0OiAwLCB0b3A6IDAsIHBvc2l0aW9uOiAnJyB9O1xuICAgIGxldCBmaXJzdFBvc2l0aW9uOiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLl9nZXRPcHRpbWFsUG9zaXRpb24+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGZvciAoY29uc3QgcG9zaXRpb24gb2YgcG9zaXRpb25zKSB7XG4gICAgICAvLyBJZiBydGwgaXMgZW5hYmxlZCwgd2UgbWFwIHRoZSBsb2dpY2FsIHBvc2l0aW9uIHRvIHRoZWlyIFJUTCBlcXVpdmFsZW50LiAoZS5nLiAnaW5saW5lLXN0YXJ0JyAtPiAnaW5saW5lLWVuZCcpXG4gICAgICBjb25zdCBwaHlzaWNhbFBvc2l0aW9uID1cbiAgICAgICAgaXNSdGwgJiYgbG9naWNhbFN1cHBvcnRlZFBvc2l0aW9ucy5pbmNsdWRlcyhwb3NpdGlvbilcbiAgICAgICAgICA/IHJ0bFBvc2l0aW9uTWFwcGluZ1twb3NpdGlvbl1cbiAgICAgICAgICA6IHBvc2l0aW9uO1xuXG4gICAgICBzd2l0Y2ggKHBoeXNpY2FsUG9zaXRpb24pIHtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgY2FzZSAnYmxvY2stZW5kJzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoT3ZlcmxhcCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCArIHRyaWdnZXJIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOlxuICAgICAgICAgICAgICBvdmVybGF5SGVpZ2h0IDw9IGJvdHRvbVNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlXaWR0aE92ZXJsYXAgPD0gbGVmdFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlXaWR0aE92ZXJsYXAgPD0gcmlnaHRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICBjYXNlICdibG9jay1zdGFydCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCAtIG92ZXJsYXlXaWR0aE92ZXJsYXAsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgLSBvdmVybGF5SGVpZ2h0LFxuICAgICAgICAgICAgZml0czpcbiAgICAgICAgICAgICAgb3ZlcmxheUhlaWdodCA8PSB0b3BTcGFjZSAmJlxuICAgICAgICAgICAgICBvdmVybGF5V2lkdGhPdmVybGFwIDw9IGxlZnRTcGFjZSAmJlxuICAgICAgICAgICAgICBvdmVybGF5V2lkdGhPdmVybGFwIDw9IHJpZ2h0U3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICBjYXNlICdpbmxpbmUtZW5kJzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0ICsgdHJpZ2dlcldpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wIC0gb3ZlcmxheUhlaWdodE92ZXJsYXAsXG4gICAgICAgICAgICBmaXRzOlxuICAgICAgICAgICAgICBvdmVybGF5V2lkdGggPD0gcmlnaHRTcGFjZSAmJlxuICAgICAgICAgICAgICBvdmVybGF5SGVpZ2h0T3ZlcmxhcCA8PSB0b3BTcGFjZSAmJlxuICAgICAgICAgICAgICBvdmVybGF5SGVpZ2h0T3ZlcmxhcCA8PSBib3R0b21TcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgY2FzZSAnaW5saW5lLXN0YXJ0JzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wIC0gb3ZlcmxheUhlaWdodE92ZXJsYXAsXG4gICAgICAgICAgICBmaXRzOlxuICAgICAgICAgICAgICBvdmVybGF5V2lkdGggPD0gbGVmdFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlIZWlnaHRPdmVybGFwIDw9IHRvcFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlIZWlnaHRPdmVybGFwIDw9IGJvdHRvbVNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3RvcCBzcGFuLWxlZnQnOlxuICAgICAgICBjYXNlICdibG9jay1zdGFydCBzcGFuLWlubGluZS1zdGFydCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCAtIG92ZXJsYXlXaWR0aE5ldCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCAtIG92ZXJsYXlIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOiBvdmVybGF5SGVpZ2h0IDw9IHRvcFNwYWNlICYmIG92ZXJsYXlXaWR0aE5ldCA8PSBsZWZ0U3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndG9wIHNwYW4tcmlnaHQnOlxuICAgICAgICBjYXNlICdibG9jay1zdGFydCBzcGFuLWlubGluZS1lbmQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgLSBvdmVybGF5SGVpZ2h0LFxuICAgICAgICAgICAgZml0czogb3ZlcmxheUhlaWdodCA8PSB0b3BTcGFjZSAmJiBvdmVybGF5V2lkdGhOZXQgPD0gcmlnaHRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib3R0b20gc3Bhbi1sZWZ0JzpcbiAgICAgICAgY2FzZSAnYmxvY2stZW5kIHNwYW4taW5saW5lLXN0YXJ0JzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoTmV0LFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wICsgdHJpZ2dlckhlaWdodCxcbiAgICAgICAgICAgIGZpdHM6IG92ZXJsYXlIZWlnaHQgPD0gYm90dG9tU3BhY2UgJiYgb3ZlcmxheVdpZHRoTmV0IDw9IGxlZnRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib3R0b20gc3Bhbi1yaWdodCc6XG4gICAgICAgIGNhc2UgJ2Jsb2NrLWVuZCBzcGFuLWlubGluZS1lbmQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgKyB0cmlnZ2VySGVpZ2h0LFxuICAgICAgICAgICAgZml0czogb3ZlcmxheUhlaWdodCA8PSBib3R0b21TcGFjZSAmJiBvdmVybGF5V2lkdGhOZXQgPD0gcmlnaHRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsZWZ0IHNwYW4tdG9wJzpcbiAgICAgICAgY2FzZSAnaW5saW5lLXN0YXJ0IHNwYW4tYmxvY2stc3RhcnQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgLSBvdmVybGF5V2lkdGgsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgKyB0cmlnZ2VySGVpZ2h0IC0gb3ZlcmxheUhlaWdodCxcbiAgICAgICAgICAgIGZpdHM6IG92ZXJsYXlXaWR0aCA8PSBsZWZ0U3BhY2UgJiYgb3ZlcmxheUhlaWdodE5ldCA8PSB0b3BTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsZWZ0IHNwYW4tYm90dG9tJzpcbiAgICAgICAgY2FzZSAnaW5saW5lLXN0YXJ0IHNwYW4tYmxvY2stZW5kJzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wLFxuICAgICAgICAgICAgZml0czogb3ZlcmxheVdpZHRoIDw9IGxlZnRTcGFjZSAmJiBvdmVybGF5SGVpZ2h0TmV0IDw9IGJvdHRvbVNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JpZ2h0IHNwYW4tdG9wJzpcbiAgICAgICAgY2FzZSAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLXN0YXJ0JzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0ICsgdHJpZ2dlcldpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wICsgdHJpZ2dlckhlaWdodCAtIG92ZXJsYXlIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOiBvdmVybGF5V2lkdGggPD0gcmlnaHRTcGFjZSAmJiBvdmVybGF5SGVpZ2h0TmV0IDw9IHRvcFNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JpZ2h0IHNwYW4tYm90dG9tJzpcbiAgICAgICAgY2FzZSAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLWVuZCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCArIHRyaWdnZXJXaWR0aCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCxcbiAgICAgICAgICAgIGZpdHM6IG92ZXJsYXlXaWR0aCA8PSByaWdodFNwYWNlICYmIG92ZXJsYXlIZWlnaHROZXQgPD0gYm90dG9tU3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQuZml0cykge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgZmlyc3RQb3NpdGlvbiA/Pz0gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIElmIG5vIHBvc2l0aW9uIGZpdHMsIHdlIHJldHVybiB0aGUgZmlyc3Qgb25lLlxuICAgIHJldHVybiBmaXJzdFBvc2l0aW9uITtcbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5T3ZlcmxheVBvc2l0aW9uKHBvc2l0aW9uOiBzdHJpbmcsIGxlZnQ6IG51bWJlciwgdG9wOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9sYXN0UG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICB0aGlzLl9vdmVybGF5LnN0eWxlLmxlZnQgPSBgJHtsZWZ0fXB4YDtcbiAgICB0aGlzLl9vdmVybGF5LnN0eWxlLnRvcCA9IGAke3RvcH1weGA7XG4gIH1cblxuICAvKipcbiAgICogT25seSB1c2VkIGluIHBvbHlmaWxsIG1vZGUuXG4gICAqIFJlYWRzIHRoZSBsaXN0IG9mIHRoZSBjb25maWd1cmVkIHBvc2l0aW9ucyBmcm9tIHRoZSBDU1MgdmFyaWFibGVzLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfcmVhZFBvc2l0aW9uc0Zyb21Dc3MoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl91c2VQb2x5ZmlsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9vdmVybGF5U3R5bGVzID8/PSBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX292ZXJsYXkpO1xuICAgIGNvbnN0IHBvc2l0aW9ucyA9IFtcbiAgICAgIHRoaXMuX292ZXJsYXlTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zYmItb3ZlcmxheS1wb3NpdGlvbi1hcmVhJykgfHwgJ2Jsb2NrLWVuZCcsXG4gICAgICAuLi50aGlzLl9vdmVybGF5U3R5bGVzXG4gICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKCctLXNiYi1vdmVybGF5LXBvc2l0aW9uLXRyeS1mYWxsYmFja3MnKVxuICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAubWFwKChmKSA9PiBmLnRyaW0oKSlcbiAgICAgICAgLmZpbHRlcigoZikgPT4gISFmKSxcbiAgICBdO1xuXG4gICAgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYgJiYgcG9zaXRpb25zLnNvbWUoKHApID0+ICFzdXBwb3J0ZWRQb3NpdGlvbnMuaW5jbHVkZXMocCkpKSB7XG4gICAgICBjb25zdCB1bnN1cHBvcnRlZFBvc2l0aW9ucyA9IHBvc2l0aW9uc1xuICAgICAgICAuZmlsdGVyKChwKSA9PiAhc3VwcG9ydGVkUG9zaXRpb25zLmluY2x1ZGVzKHApKVxuICAgICAgICAuc29ydCgpXG4gICAgICAgIC5qb2luKCcsICcpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5zdXBwb3J0ZWQgcG9zaXRpb24tdHJ5LWZhbGxiYWNrcyAke3Vuc3VwcG9ydGVkUG9zaXRpb25zfSAoU3VwcG9ydGVkOiAke3N1cHBvcnRlZFBvc2l0aW9ucy5qb2luKCcsICcpfSlgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wb3NpdGlvbnMgPSBwb3NpdGlvbnM7XG4gICAgaWYgKHRoaXMuX2xhc3RQb3NpdGlvbiAmJiAhdGhpcy5fcG9zaXRpb25zLmluY2x1ZGVzKHRoaXMuX2xhc3RQb3NpdGlvbikpIHtcbiAgICAgIHRoaXMuX2xhc3RQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBSUEsTUFBTSw2QkFBNkIsQ0FBQyxZQUFZLElBQUksU0FBUyxlQUFlLFFBQVE7QUFrQnBGLE1BQU0sNEJBQTRCO0FBQUEsRUFDaEM7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTs7QUFHRixNQUFNLHFCQUFnRDtBQUFBLEVBQ3BELGVBQWU7QUFBQSxFQUNmLGFBQWE7QUFBQSxFQUNiLGdCQUFnQjtBQUFBLEVBQ2hCLGNBQWM7QUFBQSxFQUNkLGlDQUFpQztBQUFBLEVBQ2pDLCtCQUErQjtBQUFBLEVBQy9CLCtCQUErQjtBQUFBLEVBQy9CLDZCQUE2QjtBQUFBLEVBQzdCLGlDQUFpQztBQUFBLEVBQ2pDLCtCQUErQjtBQUFBLEVBQy9CLCtCQUErQjtBQUFBLEVBQy9CLDZCQUE2Qjs7QUFJL0IsSUFBSSxTQUFTO01BcUJBLDZCQUE0QjtBQUFBO0FBQUEsRUFjdkMsSUFBVyxrQkFBZTtBQUN4QixRQUFJLEtBQUssY0FBYztBQUNyQixhQUFPLEtBQUssaUJBQWlCLEtBQUssV0FBVyxDQUFDLEtBQUs7QUFBQSxJQUNyRCxPQUFPO0FBQ0wsV0FBSyxtQkFBbUIsaUJBQWlCLEtBQUssUUFBUTtBQUN0RCxhQUFPLEtBQUssZUFBZSxpQkFBaUIsZUFBZTtB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
298
+ //#endregion
299
+ export { SbbOverlayPositionController };
300
+
301
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1wb3NpdGlvbi1jb250cm9sbGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL292ZXJsYXktcG9zaXRpb24tY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1NlcnZlciwgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB0eXBlIHsgU2JiRWxlbWVudEludGVybmFsc01peGluVHlwZSB9IGZyb20gJy4uL21peGlucy50cyc7XG5cbmNvbnN0IGNzc0FuY2hvclBvc2l0aW9uU3VwcG9ydGVkID0gIWlzU2VydmVyICYmIENTUy5zdXBwb3J0cygnYW5jaG9yLW5hbWUnLCAnLS10ZXN0Jyk7XG5cbmNvbnN0IHBoeXNpY2FsU3VwcG9ydGVkUG9zaXRpb25zID0gW1xuICAndG9wJyxcbiAgJ2JvdHRvbScsXG4gICdsZWZ0JyxcbiAgJ3JpZ2h0JyxcbiAgJ3RvcCBzcGFuLWxlZnQnLFxuICAndG9wIHNwYW4tcmlnaHQnLFxuICAnYm90dG9tIHNwYW4tbGVmdCcsXG4gICdib3R0b20gc3Bhbi1yaWdodCcsXG4gICdsZWZ0IHNwYW4tdG9wJyxcbiAgJ2xlZnQgc3Bhbi1ib3R0b20nLFxuICAncmlnaHQgc3Bhbi10b3AnLFxuICAncmlnaHQgc3Bhbi1ib3R0b20nLFxuXTtcblxuLy8gTm90ZTogaWYgeW91IGFkZCBuZXcgbG9naWNhbCBzdXBwb3J0ZWQgcG9zaXRpb25zLCB1cGRhdGUgYWxzbyB0aGUgJ3J0bFBvc2l0aW9uTWFwcGluZydcbmNvbnN0IGxvZ2ljYWxTdXBwb3J0ZWRQb3NpdGlvbnMgPSBbXG4gICdibG9jay1zdGFydCcsXG4gICdibG9jay1lbmQnLFxuICAnaW5saW5lLXN0YXJ0JyxcbiAgJ2lubGluZS1lbmQnLFxuICAnYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtc3RhcnQnLFxuICAnYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtZW5kJyxcbiAgJ2Jsb2NrLWVuZCBzcGFuLWlubGluZS1zdGFydCcsXG4gICdibG9jay1lbmQgc3Bhbi1pbmxpbmUtZW5kJyxcbiAgJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLXN0YXJ0JyxcbiAgJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLWVuZCcsXG4gICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stc3RhcnQnLFxuICAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLWVuZCcsXG5dO1xuXG5jb25zdCBydGxQb3NpdGlvbk1hcHBpbmc6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICdibG9jay1zdGFydCc6ICdibG9jay1zdGFydCcsXG4gICdibG9jay1lbmQnOiAnYmxvY2stZW5kJyxcbiAgJ2lubGluZS1zdGFydCc6ICdpbmxpbmUtZW5kJyxcbiAgJ2lubGluZS1lbmQnOiAnaW5saW5lLXN0YXJ0JyxcbiAgJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLXN0YXJ0JzogJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLWVuZCcsXG4gICdibG9jay1zdGFydCBzcGFuLWlubGluZS1lbmQnOiAnYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtc3RhcnQnLFxuICAnYmxvY2stZW5kIHNwYW4taW5saW5lLXN0YXJ0JzogJ2Jsb2NrLWVuZCBzcGFuLWlubGluZS1lbmQnLFxuICAnYmxvY2stZW5kIHNwYW4taW5saW5lLWVuZCc6ICdibG9jay1lbmQgc3Bhbi1pbmxpbmUtc3RhcnQnLFxuICAnaW5saW5lLXN0YXJ0IHNwYW4tYmxvY2stc3RhcnQnOiAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLXN0YXJ0JyxcbiAgJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLWVuZCc6ICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stZW5kJyxcbiAgJ2lubGluZS1lbmQgc3Bhbi1ibG9jay1zdGFydCc6ICdpbmxpbmUtc3RhcnQgc3Bhbi1ibG9jay1zdGFydCcsXG4gICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stZW5kJzogJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLWVuZCcsXG59O1xuXG5jb25zdCBzdXBwb3J0ZWRQb3NpdGlvbnMgPSBbLi4ucGh5c2ljYWxTdXBwb3J0ZWRQb3NpdGlvbnMsIC4uLmxvZ2ljYWxTdXBwb3J0ZWRQb3NpdGlvbnNdO1xubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogQ29udHJvbGxlciBmb3IgbWFuYWdpbmcgb3ZlcmxheXMgcG9zaXRpb25pbmcuIEFsc28gYWN0cyBhcyBhIHBvbHlmaWxsIHdoZW4gbmF0aXZlXG4gKiBDU1MgQW5jaG9yIFBvc2l0aW9uaW5nIGlzIG5vdCBzdXBwb3J0ZWQgKGVub3VnaCkuXG4gKiBBcHBsaWVzIHVuaXF1ZSBhbmNob3IgbmFtZXMgd2hlbiB1c2luZyBuYXRpdmUgQ1NTIEFuY2hvciBQb3NpdGlvbmluZ1xuICogb3IgY2FsY3VsYXRlcyBhbmQgYXBwbGllcyBjb3JyZWN0IHBvc2l0aW9ucyBpbiBwb2x5ZmlsbCBtb2RlLlxuICpcbiAqIEFsc28sIHRoZSBjb250cm9sbGVyIHNldHMgdGhlICdkYXRhLXBvc2l0aW9uJyBhdHRyaWJ1dGUgb24gdGhlIG92ZXJsYXkgZWxlbWVudC5cbiAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXBwbHkgc3BlY2lmaWMgc3R5bGVzIGJhc2VkIG9uIHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSBvdmVybGF5LlxuICpcbiAqICMjIyBJbXBsZW1lbnRhdGlvblxuICogRGVmaW5lIGFuZCBhcHBseSB0aGUgZm9sbG93aW5nIENTUyB2YXJpYWJsZXMgb24gdGhlIG92ZXJsYXkgZWxlbWVudDpcbiAqIGBgYHNjc3NcbiAqICAgLS1zYmItb3ZlcmxheS1wb3NpdGlvbi1hcmVhOiBibG9jay1lbmQ7IC8vIERlZmF1bHRcbiAqICAgLS1zYmItb3ZlcmxheS1wb3NpdGlvbi10cnktZmFsbGJhY2tzOiBibG9jay1zdGFydCwgaW5saW5lLWVuZCwgaW5saW5lLXN0YXJ0OyAvLyBGYWxsYmFja3NcbiAqXG4gKiAgIHBvc2l0aW9uLWFyZWE6IHZhcigtLXNiYi1vdmVybGF5LXBvc2l0aW9uLWFyZWEpO1xuICogICBwb3NpdGlvbi10cnktZmFsbGJhY2tzOiB2YXIoLS1zYmItb3ZlcmxheS1wb3NpdGlvbi10cnktZmFsbGJhY2tzKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgU2JiT3ZlcmxheVBvc2l0aW9uQ29udHJvbGxlciBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc2l6ZU9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4gdGhpcy5fcmVxdWVzdENhbGN1bGF0ZVBvc2l0aW9uKCkpXG4gICAgOiBudWxsITtcbiAgcHJpdmF0ZSByZWFkb25seSBfb3ZlcmxheTogUmVhY3RpdmVDb250cm9sbGVySG9zdCAmIEhUTUxFbGVtZW50ICYgU2JiRWxlbWVudEludGVybmFsc01peGluVHlwZTtcbiAgcHJpdmF0ZSBfYWJvcnRDb250cm9sbGVyPzogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9hbmNob3I/OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfb3ZlcmxheVN0eWxlcz86IENTU1N0eWxlRGVjbGFyYXRpb247XG4gIHByaXZhdGUgX2ZyYW1lPzogUmV0dXJuVHlwZTx0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lPjtcbiAgcHJpdmF0ZSBfYW5jaG9yTmFtZSA9IGAtLXNiYi1vdmVybGF5LWFuY2hvci0keysrbmV4dElkfWA7XG4gIHByaXZhdGUgX3Bvc2l0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBfbGFzdFBvc2l0aW9uPzogc3RyaW5nO1xuXG4gIC8qKiBHZXQgdGhlIGN1cnJlbnQgcG9zaXRpb24uIChlLmcuIGJsb2NrLWVuZCwgYmxvY2stc3RhcnQsIGV0Yy4pICovXG4gIHB1YmxpYyBnZXQgY3VycmVudFBvc2l0aW9uKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX3VzZVBvbHlmaWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5fbGFzdFBvc2l0aW9uID8/IHRoaXMuX3Bvc2l0aW9uc1swXSA/PyAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fb3ZlcmxheVN0eWxlcyA/Pz0gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9vdmVybGF5KTtcbiAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5U3R5bGVzLmdldFByb3BlcnR5VmFsdWUoJ3Bvc2l0aW9uLWFyZWEnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgaG9zdDogUmVhY3RpdmVDb250cm9sbGVySG9zdCAmIEhUTUxFbGVtZW50ICYgU2JiRWxlbWVudEludGVybmFsc01peGluVHlwZSxcbiAgICBwcml2YXRlIF91c2VQb2x5ZmlsbCA9ICFjc3NBbmNob3JQb3NpdGlvblN1cHBvcnRlZCxcbiAgKSB7XG4gICAgaG9zdC5hZGRDb250cm9sbGVyKHRoaXMpO1xuICAgIHRoaXMuX292ZXJsYXkgPSBob3N0O1xuICB9XG5cbiAgcHVibGljIGhvc3RDb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl91c2VQb2x5ZmlsbCkge1xuICAgICAgdGhpcy5fb3ZlcmxheS5zdHlsZS5zZXRQcm9wZXJ0eSgncG9zaXRpb24tYW5jaG9yJywgdGhpcy5fYW5jaG9yTmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlc2V0IHRoZSAncG9zaXRpb24tYXJlYScgdmFsdWUgdG8gYXZvaWQgYW55IHVud2FudGVkIHNpZGUgZWZmZWN0IHdoZW4gdXNpbmcgdGhlIHBvbHlmaWxsLlxuICAgICAgdGhpcy5fb3ZlcmxheS5zdHlsZS5zZXRQcm9wZXJ0eSgncG9zaXRpb24tYXJlYScsICdpbml0aWFsJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhvc3RVcGRhdGUoKTogdm9pZCB7XG4gICAgaWYgKGlzU2VydmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3JlYWRQb3NpdGlvbnNGcm9tQ3NzKCk7XG4gIH1cblxuICAvKipcbiAgICogQ29ubmVjdHMgdGhlIG92ZXJsYXkgdG8gdGhlIGdpdmVuIHRyaWdnZXIgZWxlbWVudCBhbmQgZGV0ZXJtaW5lcyB0aGUgb3B0aW1hbCBwb3NpdGlvbi5cbiAgICogVXN1YWxseSwgdGhpcyBpcyBjYWxsZWQgd2hlbiB0aGUgb3ZlcmxheSBpcyBvcGVuZWQuXG4gICAqIEBwYXJhbSBhbmNob3IgVGhlIGFuY2hvciBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGNvbm5lY3QoYW5jaG9yOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9hbmNob3IpIHtcbiAgICAgIHRoaXMuZGlzY29ubmVjdCgpO1xuICAgIH1cbiAgICB0aGlzLl9hbmNob3IgPSBhbmNob3I7XG5cbiAgICBpZiAoIXRoaXMuX3VzZVBvbHlmaWxsKSB7XG4gICAgICB0aGlzLl9hbmNob3Iuc3R5bGUuc2V0UHJvcGVydHkoJ2FuY2hvci1uYW1lJywgdGhpcy5fYW5jaG9yTmFtZSEpO1xuICAgIH1cblxuICAgIHRoaXMuX3JlYWRQb3NpdGlvbnNGcm9tQ3NzKCk7XG4gICAgdGhpcy5fY2FsY3VsYXRlUG9zaXRpb24oKTtcbiAgICB0aGlzLl9hYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgLy8gV2UgbmVlZCB0byB1c2UgY2FwdHVyZSBoZXJlIHRvIHJlYWN0IHRvIGFsbCBzY3JvbGwgZXZlbnRzLlxuICAgIC8vIElmIGNhcHR1cmUgd2FzIG5vdCB1c2VkLCB0aGVuIHNjcm9sbCBldmVudHMgaW5zaWRlIHNlcGFyYXRlIHNjcm9sbFxuICAgIC8vIGNvbnRhaW5lcnMgd291bGQgbm90IGJlIGNhdWdodC5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiB0aGlzLl9yZXF1ZXN0Q2FsY3VsYXRlUG9zaXRpb24oKSwge1xuICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMuX2Fib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHRoaXMuX3JlcXVlc3RDYWxjdWxhdGVQb3NpdGlvbigpLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9hYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyLm9ic2VydmUoYW5jaG9yLCB7IGJveDogJ2JvcmRlci1ib3gnIH0pO1xuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5fb3ZlcmxheSwgeyBib3g6ICdib3JkZXItYm94JyB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNjb25uZWN0KCk6IHZvaWQge1xuICAgIHRoaXMuX2FuY2hvcj8uc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2FuY2hvci1uYW1lJyk7XG4gICAgdGhpcy5fYW5jaG9yID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX2Fib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIF9yZXF1ZXN0Q2FsY3VsYXRlUG9zaXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fZnJhbWUgPz89IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB0aGlzLl9jYWxjdWxhdGVQb3NpdGlvbigpO1xuICAgICAgdGhpcy5fZnJhbWUgPSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jYWxjdWxhdGVQb3NpdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2FuY2hvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl91c2VQb2x5ZmlsbCkge1xuICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLl9nZXRPcHRpbWFsUG9zaXRpb24odGhpcy5fcG9zaXRpb25zKTtcbiAgICAgIHRoaXMuX2FwcGx5T3ZlcmxheVBvc2l0aW9uKHBvc2l0aW9uLnBvc2l0aW9uLCBwb3NpdGlvbi5sZWZ0LCBwb3NpdGlvbi50b3ApO1xuICAgIH1cblxuICAgIHRoaXMuX292ZXJsYXkuc2V0QXR0cmlidXRlKCdkYXRhLXBvc2l0aW9uJywgdGhpcy5jdXJyZW50UG9zaXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIG9wdGltYWwgcG9zaXRpb24gdGhhdCBmaXRzIHRoZSBvdmVybGF5LlxuICAgKiBAcGFyYW0gcG9zaXRpb25zIFRoZSBsaXN0IG9mIHBvc2l0aW9ucyB0byBjaGVjay5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX2dldE9wdGltYWxQb3NpdGlvbihwb3NpdGlvbnM6IHN0cmluZ1tdKToge1xuICAgIGxlZnQ6IG51bWJlcjtcbiAgICB0b3A6IG51bWJlcjtcbiAgICBwb3NpdGlvbjogc3RyaW5nO1xuICAgIGZpdHM/OiBib29sZWFuO1xuICB9IHtcbiAgICBjb25zdCB7IG9mZnNldEhlaWdodDogb3ZlcmxheUhlaWdodCwgb2Zmc2V0V2lkdGg6IG92ZXJsYXlXaWR0aCB9ID0gdGhpcy5fb3ZlcmxheTtcbiAgICBjb25zdCB7IGlubmVySGVpZ2h0OiB2aWV3cG9ydEhlaWdodCwgaW5uZXJXaWR0aDogdmlld3BvcnRXaWR0aCB9ID0gd2luZG93O1xuICAgIGNvbnN0IHtcbiAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCxcbiAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0LFxuICAgICAgaGVpZ2h0OiB0cmlnZ2VySGVpZ2h0LFxuICAgICAgd2lkdGg6IHRyaWdnZXJXaWR0aCxcbiAgICB9ID0gdGhpcy5fYW5jaG9yIS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGNvbnN0IGlzUnRsID0gdGhpcy5fb3ZlcmxheS5tYXRjaGVzKCc6ZGlyKHJ0bCknKTtcbiAgICBjb25zdCB0b3BTcGFjZSA9IHRyaWdnZXJPZmZzZXRUb3A7XG4gICAgY29uc3QgYm90dG9tU3BhY2UgPSB2aWV3cG9ydEhlaWdodCAtIHRyaWdnZXJIZWlnaHQgLSB0cmlnZ2VyT2Zmc2V0VG9wO1xuICAgIGNvbnN0IGxlZnRTcGFjZSA9IHRyaWdnZXJPZmZzZXRMZWZ0O1xuICAgIGNvbnN0IHJpZ2h0U3BhY2UgPSB2aWV3cG9ydFdpZHRoIC0gdHJpZ2dlcldpZHRoIC0gdHJpZ2dlck9mZnNldExlZnQ7XG5cbiAgICAvLyBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBvdmVybGF5IGFuZCB0aGUgdHJpZ2dlciB3aWR0aC9oZWlnaHQuXG4gICAgY29uc3Qgb3ZlcmxheVdpZHRoTmV0ID0gb3ZlcmxheVdpZHRoIC0gdHJpZ2dlcldpZHRoO1xuICAgIGNvbnN0IG92ZXJsYXlIZWlnaHROZXQgPSBvdmVybGF5SGVpZ2h0IC0gdHJpZ2dlckhlaWdodDtcblxuICAgIC8vIFRoZSBhbW91bnQgdGhhdCB3b3VsZCBleGNlZWQgdGhlIHRyaWdnZXIgaWYgdGhlIG92ZXJsYXkgd2VyZSBjZW50ZXJlZCBvbiBpdC5cbiAgICBjb25zdCBvdmVybGF5V2lkdGhPdmVybGFwID0gb3ZlcmxheVdpZHRoTmV0IC8gMjtcbiAgICBjb25zdCBvdmVybGF5SGVpZ2h0T3ZlcmxhcCA9IG92ZXJsYXlIZWlnaHROZXQgLyAyO1xuXG4gICAgdGhpcy5fb3ZlcmxheS5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICctLXNiYi1vdmVybGF5LWNvbnRyb2xsZXItdHJpZ2dlci1oZWlnaHQnLFxuICAgICAgYCR7dHJpZ2dlckhlaWdodH1weGAsXG4gICAgKTtcbiAgICB0aGlzLl9vdmVybGF5LnN0eWxlLnNldFByb3BlcnR5KCctLXNiYi1vdmVybGF5LWNvbnRyb2xsZXItdHJpZ2dlci13aWR0aCcsIGAke3RyaWdnZXJXaWR0aH1weGApO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtYXNzaWdubWVudFxuICAgIGxldCByZXN1bHQ6IFJldHVyblR5cGU8dHlwZW9mIHRoaXMuX2dldE9wdGltYWxQb3NpdGlvbj4gPSB7IGxlZnQ6IDAsIHRvcDogMCwgcG9zaXRpb246ICcnIH07XG4gICAgbGV0IGZpcnN0UG9zaXRpb246IFJldHVyblR5cGU8dHlwZW9mIHRoaXMuX2dldE9wdGltYWxQb3NpdGlvbj4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgZm9yIChjb25zdCBwb3NpdGlvbiBvZiBwb3NpdGlvbnMpIHtcbiAgICAgIC8vIElmIHJ0bCBpcyBlbmFibGVkLCB3ZSBtYXAgdGhlIGxvZ2ljYWwgcG9zaXRpb24gdG8gdGhlaXIgUlRMIGVxdWl2YWxlbnQuIChlLmcuICdpbmxpbmUtc3RhcnQnIC0+ICdpbmxpbmUtZW5kJylcbiAgICAgIGNvbnN0IHBoeXNpY2FsUG9zaXRpb24gPVxuICAgICAgICBpc1J0bCAmJiBsb2dpY2FsU3VwcG9ydGVkUG9zaXRpb25zLmluY2x1ZGVzKHBvc2l0aW9uKVxuICAgICAgICAgID8gcnRsUG9zaXRpb25NYXBwaW5nW3Bvc2l0aW9uXVxuICAgICAgICAgIDogcG9zaXRpb247XG5cbiAgICAgIHN3aXRjaCAocGh5c2ljYWxQb3NpdGlvbikge1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICBjYXNlICdibG9jay1lbmQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgLSBvdmVybGF5V2lkdGhPdmVybGFwLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wICsgdHJpZ2dlckhlaWdodCxcbiAgICAgICAgICAgIGZpdHM6XG4gICAgICAgICAgICAgIG92ZXJsYXlIZWlnaHQgPD0gYm90dG9tU3BhY2UgJiZcbiAgICAgICAgICAgICAgb3ZlcmxheVdpZHRoT3ZlcmxhcCA8PSBsZWZ0U3BhY2UgJiZcbiAgICAgICAgICAgICAgb3ZlcmxheVdpZHRoT3ZlcmxhcCA8PSByaWdodFNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIGNhc2UgJ2Jsb2NrLXN0YXJ0JzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoT3ZlcmxhcCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCAtIG92ZXJsYXlIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOlxuICAgICAgICAgICAgICBvdmVybGF5SGVpZ2h0IDw9IHRvcFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlXaWR0aE92ZXJsYXAgPD0gbGVmdFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlXaWR0aE92ZXJsYXAgPD0gcmlnaHRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIGNhc2UgJ2lubGluZS1lbmQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgKyB0cmlnZ2VyV2lkdGgsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgLSBvdmVybGF5SGVpZ2h0T3ZlcmxhcCxcbiAgICAgICAgICAgIGZpdHM6XG4gICAgICAgICAgICAgIG92ZXJsYXlXaWR0aCA8PSByaWdodFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlIZWlnaHRPdmVybGFwIDw9IHRvcFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlIZWlnaHRPdmVybGFwIDw9IGJvdHRvbVNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICBjYXNlICdpbmxpbmUtc3RhcnQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgLSBvdmVybGF5V2lkdGgsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgLSBvdmVybGF5SGVpZ2h0T3ZlcmxhcCxcbiAgICAgICAgICAgIGZpdHM6XG4gICAgICAgICAgICAgIG92ZXJsYXlXaWR0aCA8PSBsZWZ0U3BhY2UgJiZcbiAgICAgICAgICAgICAgb3ZlcmxheUhlaWdodE92ZXJsYXAgPD0gdG9wU3BhY2UgJiZcbiAgICAgICAgICAgICAgb3ZlcmxheUhlaWdodE92ZXJsYXAgPD0gYm90dG9tU3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndG9wIHNwYW4tbGVmdCc6XG4gICAgICAgIGNhc2UgJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLXN0YXJ0JzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoTmV0LFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wIC0gb3ZlcmxheUhlaWdodCxcbiAgICAgICAgICAgIGZpdHM6IG92ZXJsYXlIZWlnaHQgPD0gdG9wU3BhY2UgJiYgb3ZlcmxheVdpZHRoTmV0IDw9IGxlZnRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd0b3Agc3Bhbi1yaWdodCc6XG4gICAgICAgIGNhc2UgJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLWVuZCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCAtIG92ZXJsYXlIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOiBvdmVybGF5SGVpZ2h0IDw9IHRvcFNwYWNlICYmIG92ZXJsYXlXaWR0aE5ldCA8PSByaWdodFNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2JvdHRvbSBzcGFuLWxlZnQnOlxuICAgICAgICBjYXNlICdibG9jay1lbmQgc3Bhbi1pbmxpbmUtc3RhcnQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgLSBvdmVybGF5V2lkdGhOZXQsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgKyB0cmlnZ2VySGVpZ2h0LFxuICAgICAgICAgICAgZml0czogb3ZlcmxheUhlaWdodCA8PSBib3R0b21TcGFjZSAmJiBvdmVybGF5V2lkdGhOZXQgPD0gbGVmdFNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2JvdHRvbSBzcGFuLXJpZ2h0JzpcbiAgICAgICAgY2FzZSAnYmxvY2stZW5kIHNwYW4taW5saW5lLWVuZCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCArIHRyaWdnZXJIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOiBvdmVybGF5SGVpZ2h0IDw9IGJvdHRvbVNwYWNlICYmIG92ZXJsYXlXaWR0aE5ldCA8PSByaWdodFNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xlZnQgc3Bhbi10b3AnOlxuICAgICAgICBjYXNlICdpbmxpbmUtc3RhcnQgc3Bhbi1ibG9jay1zdGFydCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCAtIG92ZXJsYXlXaWR0aCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCArIHRyaWdnZXJIZWlnaHQgLSBvdmVybGF5SGVpZ2h0LFxuICAgICAgICAgICAgZml0czogb3ZlcmxheVdpZHRoIDw9IGxlZnRTcGFjZSAmJiBvdmVybGF5SGVpZ2h0TmV0IDw9IHRvcFNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xlZnQgc3Bhbi1ib3R0b20nOlxuICAgICAgICBjYXNlICdpbmxpbmUtc3RhcnQgc3Bhbi1ibG9jay1lbmQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgLSBvdmVybGF5V2lkdGgsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AsXG4gICAgICAgICAgICBmaXRzOiBvdmVybGF5V2lkdGggPD0gbGVmdFNwYWNlICYmIG92ZXJsYXlIZWlnaHROZXQgPD0gYm90dG9tU3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmlnaHQgc3Bhbi10b3AnOlxuICAgICAgICBjYXNlICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stc3RhcnQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgKyB0cmlnZ2VyV2lkdGgsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgKyB0cmlnZ2VySGVpZ2h0IC0gb3ZlcmxheUhlaWdodCxcbiAgICAgICAgICAgIGZpdHM6IG92ZXJsYXlXaWR0aCA8PSByaWdodFNwYWNlICYmIG92ZXJsYXlIZWlnaHROZXQgPD0gdG9wU3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmlnaHQgc3Bhbi1ib3R0b20nOlxuICAgICAgICBjYXNlICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stZW5kJzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0ICsgdHJpZ2dlcldpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wLFxuICAgICAgICAgICAgZml0czogb3ZlcmxheVdpZHRoIDw9IHJpZ2h0U3BhY2UgJiYgb3ZlcmxheUhlaWdodE5ldCA8PSBib3R0b21TcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdC5maXRzKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBmaXJzdFBvc2l0aW9uID8/PSByZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gSWYgbm8gcG9zaXRpb24gZml0cywgd2UgcmV0dXJuIHRoZSBmaXJzdCBvbmUuXG4gICAgcmV0dXJuIGZpcnN0UG9zaXRpb24hO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXBwbHlPdmVybGF5UG9zaXRpb24ocG9zaXRpb246IHN0cmluZywgbGVmdDogbnVtYmVyLCB0b3A6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX2xhc3RQb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgIHRoaXMuX292ZXJsYXkuc3R5bGUubGVmdCA9IGAke2xlZnR9cHhgO1xuICAgIHRoaXMuX292ZXJsYXkuc3R5bGUudG9wID0gYCR7dG9wfXB4YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbmx5IHVzZWQgaW4gcG9seWZpbGwgbW9kZS5cbiAgICogUmVhZHMgdGhlIGxpc3Qgb2YgdGhlIGNvbmZpZ3VyZWQgcG9zaXRpb25zIGZyb20gdGhlIENTUyB2YXJpYWJsZXMuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9yZWFkUG9zaXRpb25zRnJvbUNzcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3VzZVBvbHlmaWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX292ZXJsYXlTdHlsZXMgPz89IGdldENvbXB1dGVkU3R5bGUodGhpcy5fb3ZlcmxheSk7XG4gICAgY29uc3QgcG9zaXRpb25zID0gW1xuICAgICAgdGhpcy5fb3ZlcmxheVN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKCctLXNiYi1vdmVybGF5LXBvc2l0aW9uLWFyZWEnKSB8fCAnYmxvY2stZW5kJyxcbiAgICAgIC4uLnRoaXMuX292ZXJsYXlTdHlsZXNcbiAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoJy0tc2JiLW92ZXJsYXktcG9zaXRpb24tdHJ5LWZhbGxiYWNrcycpXG4gICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgIC5tYXAoKGYpID0+IGYudHJpbSgpKVxuICAgICAgICAuZmlsdGVyKChmKSA9PiAhIWYpLFxuICAgIF07XG5cbiAgICBpZiAoaW1wb3J0Lm1ldGEuZW52LkRFViAmJiBwb3NpdGlvbnMuc29tZSgocCkgPT4gIXN1cHBvcnRlZFBvc2l0aW9ucy5pbmNsdWRlcyhwKSkpIHtcbiAgICAgIGNvbnN0IHVuc3VwcG9ydGVkUG9zaXRpb25zID0gcG9zaXRpb25zXG4gICAgICAgIC5maWx0ZXIoKHApID0+ICFzdXBwb3J0ZWRQb3NpdGlvbnMuaW5jbHVkZXMocCkpXG4gICAgICAgIC5zb3J0KClcbiAgICAgICAgLmpvaW4oJywgJyk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBVbnN1cHBvcnRlZCBwb3NpdGlvbi10cnktZmFsbGJhY2tzICR7dW5zdXBwb3J0ZWRQb3NpdGlvbnN9IChTdXBwb3J0ZWQ6ICR7c3VwcG9ydGVkUG9zaXRpb25zLmpvaW4oJywgJyl9KWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuX3Bvc2l0aW9ucyA9IHBvc2l0aW9ucztcbiAgICBpZiAodGhpcy5fbGFzdFBvc2l0aW9uICYmICF0aGlzLl9wb3NpdGlvbnMuaW5jbHVkZXModGhpcy5fbGFzdFBvc2l0aW9uKSkge1xuICAgICAgdGhpcy5fbGFzdFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUlBLElBQU0sNkJBQTZCLENBQUMsWUFBWSxJQUFJLFNBQVMsZUFBZSxTQUFTO0FBRXJGLElBQU0sNkJBQTZCO0NBQ2pDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNEO0FBR0QsSUFBTSw0QkFBNEI7Q0FDaEM7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0Q7QUFFRCxJQUFNLHFCQUFnRDtDQUNwRCxlQUFlO0NBQ2YsYUFBYTtDQUNiLGdCQUFnQjtDQUNoQixjQUFjO0NBQ2QsaUNBQWlDO0NBQ2pDLCtCQUErQjtDQUMvQiwrQkFBK0I7Q0FDL0IsNkJBQTZCO0NBQzdCLGlDQUFpQztDQUNqQywrQkFBK0I7Q0FDL0IsK0JBQStCO0NBQy9CLDZCQUE2QjtDQUM5QjtBQUUwQixDQUFDLEdBQUcsNEJBQTRCLEdBQUcsMEJBQTBCO0FBQ3hGLElBQUksU0FBUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQmIsSUFBYSwrQkFBYixNQUF5Qzs7Q0FjdkMsSUFBVyxrQkFBZTtBQUN4QixNQUFJLEtBQUssYUFDUCxRQUFPLEtBQUssaUJBQWlCLEtBQUssV0FBVyxNQUFNO09BQzlDO0FBQ0wsUUFBSyxtQkFBbUIsaUJBQWlCLEtBQUssU0FBUztBQUN2RCxVQUFPLEtBQUssZUFBZSxpQkFBaUIs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