@sbb-esta/lyne-elements 1.15.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (680) hide show
  1. package/README.md +6 -6
  2. package/accordion/accordion.d.ts +4 -1
  3. package/accordion/accordion.d.ts.map +1 -1
  4. package/accordion.js +31 -22
  5. package/action-group/action-group.d.ts +6 -4
  6. package/action-group/action-group.d.ts.map +1 -1
  7. package/action-group.js +20 -17
  8. package/alert/alert/alert.d.ts +7 -23
  9. package/alert/alert/alert.d.ts.map +1 -1
  10. package/alert/alert-group/alert-group.d.ts +0 -4
  11. package/alert/alert-group/alert-group.d.ts.map +1 -1
  12. package/alert/alert-group.js +46 -47
  13. package/alert/alert.js +74 -132
  14. package/animation.css +4 -8
  15. package/autocomplete/autocomplete-base-element.d.ts +7 -6
  16. package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  17. package/autocomplete/autocomplete.d.ts +0 -1
  18. package/autocomplete/autocomplete.d.ts.map +1 -1
  19. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +0 -1
  20. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  21. package/autocomplete-grid/autocomplete-grid-button.js +11 -11
  22. package/autocomplete-grid/autocomplete-grid.js +0 -3
  23. package/autocomplete.js +68 -67
  24. package/button/accent-button/accent-button.d.ts +19 -0
  25. package/button/accent-button/accent-button.d.ts.map +1 -0
  26. package/button/accent-button-link/accent-button-link.d.ts +19 -0
  27. package/button/accent-button-link/accent-button-link.d.ts.map +1 -0
  28. package/button/accent-button-link.d.ts +2 -0
  29. package/button/accent-button-link.d.ts.map +1 -0
  30. package/button/accent-button-link.js +17 -0
  31. package/button/accent-button-static/accent-button-static.d.ts +19 -0
  32. package/button/accent-button-static/accent-button-static.d.ts.map +1 -0
  33. package/button/accent-button-static.d.ts +2 -0
  34. package/button/accent-button-static.d.ts.map +1 -0
  35. package/button/accent-button-static.js +17 -0
  36. package/button/accent-button.d.ts +2 -0
  37. package/button/accent-button.d.ts.map +1 -0
  38. package/button/accent-button.js +17 -0
  39. package/button/common/button-common.d.ts.map +1 -1
  40. package/button/common.d.ts.map +1 -1
  41. package/button/common.js +20 -16
  42. package/button/mini-button/mini-button.d.ts +4 -3
  43. package/button/mini-button/mini-button.d.ts.map +1 -1
  44. package/button/mini-button-group/mini-button-group.d.ts +4 -1
  45. package/button/mini-button-group/mini-button-group.d.ts.map +1 -1
  46. package/button/mini-button-group.js +12 -8
  47. package/button/mini-button.d.ts +0 -1
  48. package/button/mini-button.d.ts.map +1 -1
  49. package/button/mini-button.js +10 -20
  50. package/button.d.ts +3 -3
  51. package/button.d.ts.map +1 -1
  52. package/button.js +3 -3
  53. package/calendar.js +25 -25
  54. package/card/card/card.d.ts +4 -1
  55. package/card/card/card.d.ts.map +1 -1
  56. package/card/card.js +10 -6
  57. package/checkbox/checkbox/checkbox.d.ts +4 -6
  58. package/checkbox/checkbox/checkbox.d.ts.map +1 -1
  59. package/checkbox/checkbox-group/checkbox-group.d.ts +4 -1
  60. package/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  61. package/checkbox/checkbox-group.js +14 -10
  62. package/checkbox/checkbox-panel/checkbox-panel.d.ts +4 -4
  63. package/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
  64. package/checkbox/checkbox-panel.js +21 -18
  65. package/checkbox/checkbox.js +28 -26
  66. package/{chip/chip.d.ts → chip-label/chip-label.d.ts} +4 -4
  67. package/chip-label/chip-label.d.ts.map +1 -0
  68. package/chip-label.d.ts +2 -0
  69. package/chip-label.d.ts.map +1 -0
  70. package/chip-label.js +54 -0
  71. package/clock.js +1 -1
  72. package/container/container.js +21 -21
  73. package/container/sticky-bar/sticky-bar.d.ts +1 -0
  74. package/container/sticky-bar/sticky-bar.d.ts.map +1 -1
  75. package/container/sticky-bar.js +20 -12
  76. package/core/base-elements/button-base-element.d.ts +27 -18
  77. package/core/base-elements/button-base-element.d.ts.map +1 -1
  78. package/core/base-elements/open-close-base-element.d.ts.map +1 -1
  79. package/core/base-elements.js +135 -138
  80. package/core/datetime/date-adapter.d.ts +2 -1
  81. package/core/datetime/date-adapter.d.ts.map +1 -1
  82. package/core/datetime/native-date-adapter.d.ts +1 -1
  83. package/core/datetime/native-date-adapter.d.ts.map +1 -1
  84. package/core/datetime.js +29 -28
  85. package/core/dom/animation.d.ts +2 -0
  86. package/core/dom/animation.d.ts.map +1 -0
  87. package/core/dom/lean-context.d.ts +5 -0
  88. package/core/dom/lean-context.d.ts.map +1 -0
  89. package/core/dom.d.ts +2 -2
  90. package/core/dom.d.ts.map +1 -1
  91. package/core/dom.js +50 -55
  92. package/core/eventing/form-element-handlers.d.ts +0 -7
  93. package/core/eventing/form-element-handlers.d.ts.map +1 -1
  94. package/core/eventing.d.ts +0 -1
  95. package/core/eventing.d.ts.map +1 -1
  96. package/core/eventing.js +28 -49
  97. package/core/i18n/i18n.d.ts +4 -2
  98. package/core/i18n/i18n.d.ts.map +1 -1
  99. package/core/i18n.js +147 -140
  100. package/core/mixins/disabled-mixin.d.ts +2 -7
  101. package/core/mixins/disabled-mixin.d.ts.map +1 -1
  102. package/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  103. package/core/mixins/form-associated-mixin.d.ts +1 -1
  104. package/core/mixins/form-associated-mixin.d.ts.map +1 -1
  105. package/core/mixins/form-associated-radio-button-mixin.d.ts +35 -0
  106. package/core/mixins/form-associated-radio-button-mixin.d.ts.map +1 -0
  107. package/core/mixins.d.ts +1 -0
  108. package/core/mixins.d.ts.map +1 -1
  109. package/core/mixins.js +347 -220
  110. package/core/styles/_index.scss +1 -0
  111. package/core/styles/core.scss +148 -0
  112. package/core/styles/image.scss +66 -0
  113. package/core/styles/mixins/animation.scss +2 -4
  114. package/core/styles/mixins/buttons.scss +7 -4
  115. package/core/styles/mixins/card.scss +1 -1
  116. package/core/styles/mixins/chip.scss +35 -35
  117. package/core/styles/mixins/image.scss +34 -0
  118. package/core/styles/mixins/overlay.scss +1 -1
  119. package/core/styles/mixins/panel.scss +1 -1
  120. package/core/styles/scrollbar.scss +44 -0
  121. package/core/styles/standard-theme.scss +2 -0
  122. package/core/styles/table.scss +4 -0
  123. package/core/testing/event-spy.d.ts +2 -1
  124. package/core/testing/event-spy.d.ts.map +1 -1
  125. package/core/testing.d.ts +0 -1
  126. package/core/testing.d.ts.map +1 -1
  127. package/core/testing.js +48 -57
  128. package/core.css +112 -0
  129. package/custom-elements.json +25961 -21672
  130. package/datepicker/common/datepicker-button.d.ts +3 -5
  131. package/datepicker/common/datepicker-button.d.ts.map +1 -1
  132. package/datepicker/common.js +30 -29
  133. package/datepicker/datepicker/datepicker.d.ts +25 -72
  134. package/datepicker/datepicker/datepicker.d.ts.map +1 -1
  135. package/datepicker/datepicker-next-day/datepicker-next-day.d.ts +1 -3
  136. package/datepicker/datepicker-next-day/datepicker-next-day.d.ts.map +1 -1
  137. package/datepicker/datepicker-next-day.js +10 -12
  138. package/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts +1 -3
  139. package/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts.map +1 -1
  140. package/datepicker/datepicker-previous-day.js +11 -13
  141. package/datepicker/datepicker.js +129 -157
  142. package/development/accordion/accordion.d.ts +4 -1
  143. package/development/accordion/accordion.d.ts.map +1 -1
  144. package/development/accordion.js +16 -5
  145. package/development/action-group/action-group.d.ts +6 -4
  146. package/development/action-group/action-group.d.ts.map +1 -1
  147. package/development/action-group.js +10 -7
  148. package/development/alert/alert/alert.d.ts +7 -23
  149. package/development/alert/alert/alert.d.ts.map +1 -1
  150. package/development/alert/alert-group/alert-group.d.ts +0 -4
  151. package/development/alert/alert-group/alert-group.d.ts.map +1 -1
  152. package/development/alert/alert-group.js +10 -12
  153. package/development/alert/alert.js +38 -122
  154. package/development/autocomplete/autocomplete-base-element.d.ts +7 -6
  155. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  156. package/development/autocomplete/autocomplete.d.ts +0 -1
  157. package/development/autocomplete/autocomplete.d.ts.map +1 -1
  158. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +0 -1
  159. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  160. package/development/autocomplete-grid/autocomplete-grid-button.js +6 -6
  161. package/development/autocomplete-grid/autocomplete-grid.js +1 -7
  162. package/development/autocomplete.js +23 -19
  163. package/development/button/accent-button/accent-button.d.ts +19 -0
  164. package/development/button/accent-button/accent-button.d.ts.map +1 -0
  165. package/development/button/accent-button-link/accent-button-link.d.ts +19 -0
  166. package/development/button/accent-button-link/accent-button-link.d.ts.map +1 -0
  167. package/development/button/accent-button-link.d.ts +2 -0
  168. package/development/button/accent-button-link.d.ts.map +1 -0
  169. package/development/button/accent-button-link.js +25 -0
  170. package/development/button/accent-button-static/accent-button-static.d.ts +19 -0
  171. package/development/button/accent-button-static/accent-button-static.d.ts.map +1 -0
  172. package/development/button/accent-button-static.d.ts +2 -0
  173. package/development/button/accent-button-static.d.ts.map +1 -0
  174. package/development/button/accent-button-static.js +25 -0
  175. package/development/button/accent-button.d.ts +2 -0
  176. package/development/button/accent-button.d.ts.map +1 -0
  177. package/development/button/accent-button.js +25 -0
  178. package/development/button/common/button-common.d.ts.map +1 -1
  179. package/development/button/common.d.ts.map +1 -1
  180. package/development/button/common.js +20 -16
  181. package/development/button/mini-button/mini-button.d.ts +4 -3
  182. package/development/button/mini-button/mini-button.d.ts.map +1 -1
  183. package/development/button/mini-button-group/mini-button-group.d.ts +4 -1
  184. package/development/button/mini-button-group/mini-button-group.d.ts.map +1 -1
  185. package/development/button/mini-button-group.js +7 -3
  186. package/development/button/mini-button.d.ts +0 -1
  187. package/development/button/mini-button.d.ts.map +1 -1
  188. package/development/button/mini-button.js +14 -32
  189. package/development/button.d.ts +3 -3
  190. package/development/button.d.ts.map +1 -1
  191. package/development/button.js +3 -3
  192. package/development/calendar.js +1 -1
  193. package/development/card/card/card.d.ts +4 -1
  194. package/development/card/card/card.d.ts.map +1 -1
  195. package/development/card/card.js +8 -4
  196. package/development/checkbox/checkbox/checkbox.d.ts +4 -6
  197. package/development/checkbox/checkbox/checkbox.d.ts.map +1 -1
  198. package/development/checkbox/checkbox-group/checkbox-group.d.ts +4 -1
  199. package/development/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  200. package/development/checkbox/checkbox-group.js +7 -3
  201. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts +4 -4
  202. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
  203. package/development/checkbox/checkbox-panel.js +7 -4
  204. package/development/checkbox/checkbox.js +8 -6
  205. package/development/{chip/chip.d.ts → chip-label/chip-label.d.ts} +4 -4
  206. package/development/chip-label/chip-label.d.ts.map +1 -0
  207. package/development/chip-label.d.ts +2 -0
  208. package/development/chip-label.d.ts.map +1 -0
  209. package/development/{chip.js → chip-label.js} +26 -26
  210. package/development/clock.js +1 -1
  211. package/development/container/container.js +8 -12
  212. package/development/container/sticky-bar/sticky-bar.d.ts +1 -0
  213. package/development/container/sticky-bar/sticky-bar.d.ts.map +1 -1
  214. package/development/container/sticky-bar.js +18 -10
  215. package/development/core/base-elements/button-base-element.d.ts +27 -18
  216. package/development/core/base-elements/button-base-element.d.ts.map +1 -1
  217. package/development/core/base-elements/open-close-base-element.d.ts.map +1 -1
  218. package/development/core/base-elements.js +66 -74
  219. package/development/core/datetime/date-adapter.d.ts +2 -1
  220. package/development/core/datetime/date-adapter.d.ts.map +1 -1
  221. package/development/core/datetime/native-date-adapter.d.ts +1 -1
  222. package/development/core/datetime/native-date-adapter.d.ts.map +1 -1
  223. package/development/core/datetime.js +4 -3
  224. package/development/core/dom/animation.d.ts +2 -0
  225. package/development/core/dom/animation.d.ts.map +1 -0
  226. package/development/core/dom/lean-context.d.ts +5 -0
  227. package/development/core/dom/lean-context.d.ts.map +1 -0
  228. package/development/core/dom.d.ts +2 -2
  229. package/development/core/dom.d.ts.map +1 -1
  230. package/development/core/dom.js +13 -21
  231. package/development/core/eventing/form-element-handlers.d.ts +0 -7
  232. package/development/core/eventing/form-element-handlers.d.ts.map +1 -1
  233. package/development/core/eventing.d.ts +0 -1
  234. package/development/core/eventing.d.ts.map +1 -1
  235. package/development/core/eventing.js +1 -25
  236. package/development/core/i18n/i18n.d.ts +4 -2
  237. package/development/core/i18n/i18n.d.ts.map +1 -1
  238. package/development/core/i18n.js +27 -23
  239. package/development/core/mixins/disabled-mixin.d.ts +2 -7
  240. package/development/core/mixins/disabled-mixin.d.ts.map +1 -1
  241. package/development/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  242. package/development/core/mixins/form-associated-mixin.d.ts +1 -1
  243. package/development/core/mixins/form-associated-mixin.d.ts.map +1 -1
  244. package/development/core/mixins/form-associated-radio-button-mixin.d.ts +35 -0
  245. package/development/core/mixins/form-associated-radio-button-mixin.d.ts.map +1 -0
  246. package/development/core/mixins.d.ts +1 -0
  247. package/development/core/mixins.d.ts.map +1 -1
  248. package/development/core/mixins.js +221 -30
  249. package/development/core/testing/event-spy.d.ts +2 -1
  250. package/development/core/testing/event-spy.d.ts.map +1 -1
  251. package/development/core/testing.d.ts +0 -1
  252. package/development/core/testing.d.ts.map +1 -1
  253. package/development/core/testing.js +4 -15
  254. package/development/datepicker/common/datepicker-button.d.ts +3 -5
  255. package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
  256. package/development/datepicker/common.js +13 -12
  257. package/development/datepicker/datepicker/datepicker.d.ts +25 -72
  258. package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
  259. package/development/datepicker/datepicker-next-day/datepicker-next-day.d.ts +1 -3
  260. package/development/datepicker/datepicker-next-day/datepicker-next-day.d.ts.map +1 -1
  261. package/development/datepicker/datepicker-next-day.js +9 -15
  262. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts +1 -3
  263. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts.map +1 -1
  264. package/development/datepicker/datepicker-previous-day.js +9 -15
  265. package/development/datepicker/datepicker.js +74 -115
  266. package/development/dialog/dialog/dialog.d.ts +3 -0
  267. package/development/dialog/dialog/dialog.d.ts.map +1 -1
  268. package/development/dialog/dialog-title.js +2 -1
  269. package/development/dialog/dialog.js +46 -39
  270. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts +7 -1
  271. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
  272. package/development/expansion-panel/expansion-panel-header.js +3 -3
  273. package/development/expansion-panel/expansion-panel.js +32 -17
  274. package/development/file-selector/common/file-selector-common.d.ts +23 -0
  275. package/development/file-selector/common/file-selector-common.d.ts.map +1 -0
  276. package/development/file-selector/common.d.ts +2 -0
  277. package/development/file-selector/common.d.ts.map +1 -0
  278. package/development/file-selector/common.js +382 -0
  279. package/development/file-selector/file-selector/file-selector.d.ts +24 -0
  280. package/development/file-selector/file-selector/file-selector.d.ts.map +1 -0
  281. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.d.ts +33 -0
  282. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.d.ts.map +1 -0
  283. package/development/file-selector/file-selector-dropzone.d.ts +2 -0
  284. package/development/file-selector/file-selector-dropzone.d.ts.map +1 -0
  285. package/development/file-selector/file-selector-dropzone.js +181 -0
  286. package/development/file-selector/file-selector.d.ts +1 -87
  287. package/development/file-selector/file-selector.d.ts.map +1 -1
  288. package/development/file-selector/file-selector.js +52 -0
  289. package/development/file-selector.d.ts +2 -0
  290. package/development/file-selector.d.ts.map +1 -1
  291. package/development/file-selector.js +4 -552
  292. package/development/flip-card/flip-card-details.js +1 -1
  293. package/development/flip-card/flip-card-summary.js +3 -11
  294. package/development/flip-card/flip-card.js +6 -6
  295. package/development/form-field/form-field/form-field.d.ts +7 -10
  296. package/development/form-field/form-field/form-field.d.ts.map +1 -1
  297. package/development/form-field/form-field-clear.js +6 -6
  298. package/development/form-field/form-field.js +74 -42
  299. package/development/header/common.js +2 -2
  300. package/development/header/header/header.d.ts +5 -3
  301. package/development/header/header/header.d.ts.map +1 -1
  302. package/development/header/header.js +15 -20
  303. package/development/image/image.d.ts +0 -30
  304. package/development/image/image.d.ts.map +1 -1
  305. package/development/image.js +62 -273
  306. package/development/journey-header/journey-header.d.ts +4 -1
  307. package/development/journey-header/journey-header.d.ts.map +1 -1
  308. package/development/journey-header.js +7 -3
  309. package/development/lead-container.js +2 -10
  310. package/development/link/common/link-common.d.ts.map +1 -1
  311. package/development/link/common.js +9 -8
  312. package/development/link-list/common/link-list-base.d.ts +1 -0
  313. package/development/link-list/common/link-list-base.d.ts.map +1 -1
  314. package/development/link-list/common.js +4 -2
  315. package/development/link-list/link-list-anchor.js +4 -4
  316. package/development/loading-indicator/loading-indicator.d.ts +1 -3
  317. package/development/loading-indicator/loading-indicator.d.ts.map +1 -1
  318. package/development/loading-indicator-circle/loading-indicator-circle.d.ts +16 -0
  319. package/development/loading-indicator-circle/loading-indicator-circle.d.ts.map +1 -0
  320. package/development/loading-indicator-circle.d.ts +2 -0
  321. package/development/loading-indicator-circle.d.ts.map +1 -0
  322. package/development/loading-indicator-circle.js +146 -0
  323. package/development/loading-indicator.js +81 -182
  324. package/development/map-container/map-container.d.ts.map +1 -1
  325. package/development/map-container.js +5 -5
  326. package/development/menu/common.js +5 -5
  327. package/development/menu/menu/menu.d.ts +3 -0
  328. package/development/menu/menu/menu.d.ts.map +1 -1
  329. package/development/menu/menu.js +39 -24
  330. package/development/navigation/common/navigation-action-common.d.ts.map +1 -1
  331. package/development/navigation/common.js +9 -5
  332. package/development/navigation/navigation/navigation.d.ts +3 -0
  333. package/development/navigation/navigation/navigation.d.ts.map +1 -1
  334. package/development/navigation/navigation-list/navigation-list.d.ts.map +1 -1
  335. package/development/navigation/navigation-list.js +3 -2
  336. package/development/navigation/navigation-marker/navigation-marker.d.ts +2 -1
  337. package/development/navigation/navigation-marker/navigation-marker.d.ts.map +1 -1
  338. package/development/navigation/navigation-marker.js +6 -4
  339. package/development/navigation/navigation-section/navigation-section.d.ts +3 -0
  340. package/development/navigation/navigation-section/navigation-section.d.ts.map +1 -1
  341. package/development/navigation/navigation-section.js +38 -22
  342. package/development/navigation/navigation.js +42 -27
  343. package/development/notification/notification.d.ts +6 -2
  344. package/development/notification/notification.d.ts.map +1 -1
  345. package/development/notification.js +27 -21
  346. package/development/option/option/option-base-element.d.ts +0 -7
  347. package/development/option/option/option-base-element.d.ts.map +1 -1
  348. package/development/option/option.js +5 -26
  349. package/development/overlay/overlay-base-element.d.ts +2 -0
  350. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  351. package/development/overlay/overlay.d.ts +3 -0
  352. package/development/overlay/overlay.d.ts.map +1 -1
  353. package/development/overlay.js +43 -31
  354. package/development/paginator/common/paginator-common.d.ts.map +1 -1
  355. package/development/paginator/common.js +7 -3
  356. package/development/paginator/paginator.js +1 -1
  357. package/development/popover/popover/popover.d.ts +3 -0
  358. package/development/popover/popover/popover.d.ts.map +1 -1
  359. package/development/popover/popover-trigger.js +9 -9
  360. package/development/popover/popover.js +41 -26
  361. package/development/radio-button/common/radio-button-common.d.ts +3 -10
  362. package/development/radio-button/common/radio-button-common.d.ts.map +1 -1
  363. package/development/radio-button/common.js +44 -121
  364. package/development/radio-button/radio-button/radio-button.d.ts +9 -1
  365. package/development/radio-button/radio-button/radio-button.d.ts.map +1 -1
  366. package/development/radio-button/radio-button-group/radio-button-group.d.ts +19 -26
  367. package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  368. package/development/radio-button/radio-button-group.js +87 -123
  369. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts +20 -2
  370. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  371. package/development/radio-button/radio-button-panel.js +35 -15
  372. package/development/radio-button/radio-button.js +11 -15
  373. package/development/select/select.d.ts +3 -9
  374. package/development/select/select.d.ts.map +1 -1
  375. package/development/select.js +27 -25
  376. package/development/selection-expansion-panel/selection-expansion-panel.d.ts +4 -1
  377. package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  378. package/development/selection-expansion-panel.js +28 -16
  379. package/development/skiplink-list/skiplink-list.d.ts.map +1 -1
  380. package/development/skiplink-list.js +3 -2
  381. package/development/slider/slider.d.ts +0 -1
  382. package/development/slider/slider.d.ts.map +1 -1
  383. package/development/slider.js +2 -2
  384. package/development/stepper/step-label/step-label.d.ts +0 -2
  385. package/development/stepper/step-label/step-label.d.ts.map +1 -1
  386. package/development/stepper/step-label.js +10 -11
  387. package/development/stepper/step.js +1 -1
  388. package/development/stepper/stepper/stepper.d.ts +4 -1
  389. package/development/stepper/stepper/stepper.d.ts.map +1 -1
  390. package/development/stepper/stepper.js +9 -7
  391. package/development/tabs/tab-group/tab-group.d.ts +4 -1
  392. package/development/tabs/tab-group/tab-group.d.ts.map +1 -1
  393. package/development/tabs/tab-group.js +14 -5
  394. package/development/tabs/tab-label.js +1 -1
  395. package/development/tag/tag/tag.d.ts +4 -1
  396. package/development/tag/tag/tag.d.ts.map +1 -1
  397. package/development/tag/tag-group/tag-group.d.ts +5 -2
  398. package/development/tag/tag-group/tag-group.d.ts.map +1 -1
  399. package/development/tag/tag-group.js +7 -4
  400. package/development/tag/tag.js +16 -12
  401. package/development/teaser/teaser.d.ts +2 -2
  402. package/development/teaser/teaser.d.ts.map +1 -1
  403. package/development/teaser-hero/teaser-hero.d.ts +2 -6
  404. package/development/teaser-hero/teaser-hero.d.ts.map +1 -1
  405. package/development/teaser-hero.js +9 -60
  406. package/development/teaser-product/common.js +7 -14
  407. package/development/teaser-product/teaser-product.js +1 -21
  408. package/development/teaser.js +12 -31
  409. package/development/time-input/time-input.d.ts +3 -6
  410. package/development/time-input/time-input.d.ts.map +1 -1
  411. package/development/time-input.js +33 -27
  412. package/development/toast/toast.d.ts +3 -0
  413. package/development/toast/toast.d.ts.map +1 -1
  414. package/development/toast.js +27 -13
  415. package/development/toggle/toggle/toggle.d.ts +4 -8
  416. package/development/toggle/toggle/toggle.d.ts.map +1 -1
  417. package/development/toggle/toggle.js +9 -12
  418. package/development/toggle-check/toggle-check.d.ts +4 -6
  419. package/development/toggle-check/toggle-check.d.ts.map +1 -1
  420. package/development/toggle-check.js +9 -7
  421. package/development/train/train/train.d.ts.map +1 -1
  422. package/development/train/train-blocked-passage.js +2 -2
  423. package/development/train/train-formation/train-formation.d.ts +3 -11
  424. package/development/train/train-formation/train-formation.d.ts.map +1 -1
  425. package/development/train/train-formation.js +43 -74
  426. package/development/train/train-wagon/train-wagon.d.ts +11 -8
  427. package/development/train/train-wagon/train-wagon.d.ts.map +1 -1
  428. package/development/train/train-wagon.js +149 -124
  429. package/development/train/train.js +35 -112
  430. package/development/visual-checkbox/visual-checkbox.d.ts +4 -1
  431. package/development/visual-checkbox/visual-checkbox.d.ts.map +1 -1
  432. package/development/visual-checkbox.js +7 -3
  433. package/dialog/dialog/dialog.d.ts +3 -0
  434. package/dialog/dialog/dialog.d.ts.map +1 -1
  435. package/dialog/dialog-title.js +9 -9
  436. package/dialog/dialog.js +56 -51
  437. package/expansion-panel/expansion-panel/expansion-panel.d.ts +7 -1
  438. package/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
  439. package/expansion-panel/expansion-panel-header.js +1 -1
  440. package/expansion-panel/expansion-panel.js +41 -28
  441. package/file-selector/common/file-selector-common.d.ts +23 -0
  442. package/file-selector/common/file-selector-common.d.ts.map +1 -0
  443. package/file-selector/common.d.ts +2 -0
  444. package/file-selector/common.d.ts.map +1 -0
  445. package/file-selector/common.js +210 -0
  446. package/file-selector/file-selector/file-selector.d.ts +24 -0
  447. package/file-selector/file-selector/file-selector.d.ts.map +1 -0
  448. package/file-selector/file-selector-dropzone/file-selector-dropzone.d.ts +33 -0
  449. package/file-selector/file-selector-dropzone/file-selector-dropzone.d.ts.map +1 -0
  450. package/file-selector/file-selector-dropzone.d.ts +2 -0
  451. package/file-selector/file-selector-dropzone.d.ts.map +1 -0
  452. package/file-selector/file-selector-dropzone.js +97 -0
  453. package/file-selector/file-selector.d.ts +1 -87
  454. package/file-selector/file-selector.d.ts.map +1 -1
  455. package/file-selector/file-selector.js +44 -0
  456. package/file-selector.d.ts +2 -0
  457. package/file-selector.d.ts.map +1 -1
  458. package/file-selector.js +3 -301
  459. package/flip-card/flip-card-details.js +5 -5
  460. package/flip-card/flip-card-summary.js +7 -7
  461. package/flip-card/flip-card.js +9 -9
  462. package/form-field/form-field/form-field.d.ts +7 -10
  463. package/form-field/form-field/form-field.d.ts.map +1 -1
  464. package/form-field/form-field-clear.js +12 -12
  465. package/form-field/form-field.js +118 -93
  466. package/header/common.js +10 -10
  467. package/header/header/header.d.ts +5 -3
  468. package/header/header/header.d.ts.map +1 -1
  469. package/header/header.js +28 -31
  470. package/image/image.d.ts +0 -30
  471. package/image/image.d.ts.map +1 -1
  472. package/image.js +187 -281
  473. package/index.d.ts +13 -9
  474. package/index.js +13 -9
  475. package/journey-header/journey-header.d.ts +4 -1
  476. package/journey-header/journey-header.d.ts.map +1 -1
  477. package/journey-header.js +29 -25
  478. package/lead-container.js +5 -5
  479. package/link/common/link-common.d.ts.map +1 -1
  480. package/link/common.js +18 -16
  481. package/link-list/common/link-list-base.d.ts +1 -0
  482. package/link-list/common/link-list-base.d.ts.map +1 -1
  483. package/link-list/common.js +11 -9
  484. package/link-list/link-list-anchor.js +8 -8
  485. package/loading-indicator/loading-indicator.d.ts +1 -3
  486. package/loading-indicator/loading-indicator.d.ts.map +1 -1
  487. package/loading-indicator-circle/loading-indicator-circle.d.ts +16 -0
  488. package/loading-indicator-circle/loading-indicator-circle.d.ts.map +1 -0
  489. package/loading-indicator-circle.d.ts +2 -0
  490. package/loading-indicator-circle.d.ts.map +1 -0
  491. package/loading-indicator-circle.js +46 -0
  492. package/loading-indicator.js +41 -51
  493. package/map-container/map-container.d.ts.map +1 -1
  494. package/map-container.js +7 -7
  495. package/menu/common.js +8 -8
  496. package/menu/menu/menu.d.ts +3 -0
  497. package/menu/menu/menu.d.ts.map +1 -1
  498. package/menu/menu.js +52 -43
  499. package/navigation/common/navigation-action-common.d.ts.map +1 -1
  500. package/navigation/common.js +10 -6
  501. package/navigation/navigation/navigation.d.ts +3 -0
  502. package/navigation/navigation/navigation.d.ts.map +1 -1
  503. package/navigation/navigation-list/navigation-list.d.ts.map +1 -1
  504. package/navigation/navigation-list.js +17 -16
  505. package/navigation/navigation-marker/navigation-marker.d.ts +2 -1
  506. package/navigation/navigation-marker/navigation-marker.d.ts.map +1 -1
  507. package/navigation/navigation-marker.js +12 -10
  508. package/navigation/navigation-section/navigation-section.d.ts +3 -0
  509. package/navigation/navigation-section/navigation-section.d.ts.map +1 -1
  510. package/navigation/navigation-section.js +46 -37
  511. package/navigation/navigation.js +30 -21
  512. package/notification/notification.d.ts +6 -2
  513. package/notification/notification.d.ts.map +1 -1
  514. package/notification.js +55 -51
  515. package/option/option/option-base-element.d.ts +0 -7
  516. package/option/option/option-base-element.d.ts.map +1 -1
  517. package/option/option.js +110 -125
  518. package/overlay/overlay-base-element.d.ts +2 -0
  519. package/overlay/overlay-base-element.d.ts.map +1 -1
  520. package/overlay/overlay.d.ts +3 -0
  521. package/overlay/overlay.d.ts.map +1 -1
  522. package/overlay.js +83 -77
  523. package/package.json +52 -29
  524. package/paginator/common/paginator-common.d.ts.map +1 -1
  525. package/paginator/common.js +21 -17
  526. package/paginator/paginator.js +1 -1
  527. package/popover/popover/popover.d.ts +3 -0
  528. package/popover/popover/popover.d.ts.map +1 -1
  529. package/popover/popover-trigger.js +6 -6
  530. package/popover/popover.js +114 -109
  531. package/radio-button/common/radio-button-common.d.ts +3 -10
  532. package/radio-button/common/radio-button-common.d.ts.map +1 -1
  533. package/radio-button/common.js +43 -90
  534. package/radio-button/radio-button/radio-button.d.ts +9 -1
  535. package/radio-button/radio-button/radio-button.d.ts.map +1 -1
  536. package/radio-button/radio-button-group/radio-button-group.d.ts +19 -26
  537. package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  538. package/radio-button/radio-button-group.js +112 -131
  539. package/radio-button/radio-button-panel/radio-button-panel.d.ts +20 -2
  540. package/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  541. package/radio-button/radio-button-panel.js +56 -44
  542. package/radio-button/radio-button.js +34 -38
  543. package/scrollbar.css +158 -0
  544. package/select/select.d.ts +3 -9
  545. package/select/select.d.ts.map +1 -1
  546. package/select.js +65 -66
  547. package/selection-expansion-panel/selection-expansion-panel.d.ts +4 -1
  548. package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  549. package/selection-expansion-panel.js +41 -31
  550. package/skiplink-list/skiplink-list.d.ts.map +1 -1
  551. package/skiplink-list.js +14 -13
  552. package/slider/slider.d.ts +0 -1
  553. package/slider/slider.d.ts.map +1 -1
  554. package/slider.js +1 -1
  555. package/standard-theme.css +396 -8
  556. package/stepper/step-label/step-label.d.ts +0 -2
  557. package/stepper/step-label/step-label.d.ts.map +1 -1
  558. package/stepper/step-label.js +6 -6
  559. package/stepper/step.js +4 -4
  560. package/stepper/stepper/stepper.d.ts +4 -1
  561. package/stepper/stepper/stepper.d.ts.map +1 -1
  562. package/stepper/stepper.js +22 -19
  563. package/table.css +232 -0
  564. package/tabs/tab-group/tab-group.d.ts +4 -1
  565. package/tabs/tab-group/tab-group.d.ts.map +1 -1
  566. package/tabs/tab-group.js +80 -74
  567. package/tabs/tab-label.js +1 -1
  568. package/tag/tag/tag.d.ts +4 -1
  569. package/tag/tag/tag.d.ts.map +1 -1
  570. package/tag/tag-group/tag-group.d.ts +5 -2
  571. package/tag/tag-group/tag-group.d.ts.map +1 -1
  572. package/tag/tag-group.js +13 -10
  573. package/tag/tag.js +25 -21
  574. package/teaser/teaser.d.ts +2 -2
  575. package/teaser/teaser.d.ts.map +1 -1
  576. package/teaser-hero/teaser-hero.d.ts +2 -6
  577. package/teaser-hero/teaser-hero.d.ts.map +1 -1
  578. package/teaser-hero.js +32 -57
  579. package/teaser-product/common.js +1 -1
  580. package/teaser-product/teaser-product.js +13 -13
  581. package/teaser.js +28 -28
  582. package/time-input/time-input.d.ts +3 -6
  583. package/time-input/time-input.d.ts.map +1 -1
  584. package/time-input.js +56 -55
  585. package/toast/toast.d.ts +3 -0
  586. package/toast/toast.d.ts.map +1 -1
  587. package/toast.js +51 -42
  588. package/toggle/toggle/toggle.d.ts +4 -8
  589. package/toggle/toggle/toggle.d.ts.map +1 -1
  590. package/toggle/toggle.js +48 -48
  591. package/toggle-check/toggle-check.d.ts +4 -6
  592. package/toggle-check/toggle-check.d.ts.map +1 -1
  593. package/toggle-check.js +23 -21
  594. package/train/train/train.d.ts.map +1 -1
  595. package/train/train-blocked-passage.js +1 -1
  596. package/train/train-formation/train-formation.d.ts +3 -11
  597. package/train/train-formation/train-formation.d.ts.map +1 -1
  598. package/train/train-formation.js +47 -65
  599. package/train/train-wagon/train-wagon.d.ts +11 -8
  600. package/train/train-wagon/train-wagon.d.ts.map +1 -1
  601. package/train/train-wagon.js +123 -134
  602. package/train/train.js +74 -78
  603. package/visual-checkbox/visual-checkbox.d.ts +4 -1
  604. package/visual-checkbox/visual-checkbox.d.ts.map +1 -1
  605. package/visual-checkbox.js +21 -17
  606. package/button/mini-button/mini-button-base-element.d.ts +0 -8
  607. package/button/mini-button/mini-button-base-element.d.ts.map +0 -1
  608. package/button/tertiary-button/tertiary-button.d.ts +0 -19
  609. package/button/tertiary-button/tertiary-button.d.ts.map +0 -1
  610. package/button/tertiary-button-link/tertiary-button-link.d.ts +0 -19
  611. package/button/tertiary-button-link/tertiary-button-link.d.ts.map +0 -1
  612. package/button/tertiary-button-link.d.ts +0 -2
  613. package/button/tertiary-button-link.d.ts.map +0 -1
  614. package/button/tertiary-button-link.js +0 -17
  615. package/button/tertiary-button-static/tertiary-button-static.d.ts +0 -19
  616. package/button/tertiary-button-static/tertiary-button-static.d.ts.map +0 -1
  617. package/button/tertiary-button-static.d.ts +0 -2
  618. package/button/tertiary-button-static.d.ts.map +0 -1
  619. package/button/tertiary-button-static.js +0 -17
  620. package/button/tertiary-button.d.ts +0 -2
  621. package/button/tertiary-button.d.ts.map +0 -1
  622. package/button/tertiary-button.js +0 -17
  623. package/chip/chip.d.ts.map +0 -1
  624. package/chip.d.ts +0 -2
  625. package/chip.d.ts.map +0 -1
  626. package/chip.js +0 -54
  627. package/core/dom/get-document-writing-mode.d.ts +0 -5
  628. package/core/dom/get-document-writing-mode.d.ts.map +0 -1
  629. package/core/dom/ssr.d.ts +0 -13
  630. package/core/dom/ssr.d.ts.map +0 -1
  631. package/core/eventing/handler-repository.d.ts +0 -28
  632. package/core/eventing/handler-repository.d.ts.map +0 -1
  633. package/core/observers/intersection-observer.d.ts +0 -20
  634. package/core/observers/intersection-observer.d.ts.map +0 -1
  635. package/core/observers/mutation-observer.d.ts +0 -13
  636. package/core/observers/mutation-observer.d.ts.map +0 -1
  637. package/core/observers/resize-observer.d.ts +0 -16
  638. package/core/observers/resize-observer.d.ts.map +0 -1
  639. package/core/observers.d.ts +0 -4
  640. package/core/observers.d.ts.map +0 -1
  641. package/core/observers.js +0 -38
  642. package/core/testing/wait-for-event.d.ts +0 -2
  643. package/core/testing/wait-for-event.d.ts.map +0 -1
  644. package/development/button/mini-button/mini-button-base-element.d.ts +0 -8
  645. package/development/button/mini-button/mini-button-base-element.d.ts.map +0 -1
  646. package/development/button/tertiary-button/tertiary-button.d.ts +0 -19
  647. package/development/button/tertiary-button/tertiary-button.d.ts.map +0 -1
  648. package/development/button/tertiary-button-link/tertiary-button-link.d.ts +0 -19
  649. package/development/button/tertiary-button-link/tertiary-button-link.d.ts.map +0 -1
  650. package/development/button/tertiary-button-link.d.ts +0 -2
  651. package/development/button/tertiary-button-link.d.ts.map +0 -1
  652. package/development/button/tertiary-button-link.js +0 -25
  653. package/development/button/tertiary-button-static/tertiary-button-static.d.ts +0 -19
  654. package/development/button/tertiary-button-static/tertiary-button-static.d.ts.map +0 -1
  655. package/development/button/tertiary-button-static.d.ts +0 -2
  656. package/development/button/tertiary-button-static.d.ts.map +0 -1
  657. package/development/button/tertiary-button-static.js +0 -25
  658. package/development/button/tertiary-button.d.ts +0 -2
  659. package/development/button/tertiary-button.d.ts.map +0 -1
  660. package/development/button/tertiary-button.js +0 -25
  661. package/development/chip/chip.d.ts.map +0 -1
  662. package/development/chip.d.ts +0 -2
  663. package/development/chip.d.ts.map +0 -1
  664. package/development/core/dom/get-document-writing-mode.d.ts +0 -5
  665. package/development/core/dom/get-document-writing-mode.d.ts.map +0 -1
  666. package/development/core/dom/ssr.d.ts +0 -13
  667. package/development/core/dom/ssr.d.ts.map +0 -1
  668. package/development/core/eventing/handler-repository.d.ts +0 -28
  669. package/development/core/eventing/handler-repository.d.ts.map +0 -1
  670. package/development/core/observers/intersection-observer.d.ts +0 -20
  671. package/development/core/observers/intersection-observer.d.ts.map +0 -1
  672. package/development/core/observers/mutation-observer.d.ts +0 -13
  673. package/development/core/observers/mutation-observer.d.ts.map +0 -1
  674. package/development/core/observers/resize-observer.d.ts +0 -16
  675. package/development/core/observers/resize-observer.d.ts.map +0 -1
  676. package/development/core/observers.d.ts +0 -4
  677. package/development/core/observers.d.ts.map +0 -1
  678. package/development/core/observers.js +0 -39
  679. package/development/core/testing/wait-for-event.d.ts +0 -2
  680. package/development/core/testing/wait-for-event.d.ts.map +0 -1
@@ -1,6 +1,5 @@
1
1
  import { CSSResultGroup } from 'lit';
2
2
  import { SbbDatepickerButton } from '../common.js';
3
- import { findPreviousAvailableDate, SbbInputUpdateEvent } from '../datepicker.js';
4
3
  /**
5
4
  * Combined with a `sbb-datepicker`, it can be used to move the date back.
6
5
  */
@@ -9,8 +8,7 @@ export declare class SbbDatepickerPreviousDayElement<T = Date> extends SbbDatepi
9
8
  protected iconName: string;
10
9
  protected i18nOffBoundaryDay: Record<string, string>;
11
10
  protected i18nSelectOffBoundaryDay: (currentDate: string) => Record<string, string>;
12
- protected findAvailableDate: typeof findPreviousAvailableDate;
13
- protected onInputUpdated(event: CustomEvent<SbbInputUpdateEvent>): void;
11
+ protected findAvailableDate(date: T): T;
14
12
  }
15
13
  declare global {
16
14
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"datepicker-previous-day.d.ts","sourceRoot":"","sources":["../../../../../src/elements/datepicker/datepicker-previous-day/datepicker-previous-day.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAK1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvF,OAAO,eAAe,CAAC;AAIvB;;GAEG;AACH,qBAKM,+BAA+B,CAAC,CAAC,GAAG,IAAI,CAAE,SAAQ,mBAAmB,CAAC,CAAC,CAAC;IAC5E,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,SAAS,CAAC,QAAQ,EAAE,MAAM,CAA8B;IACxD,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAmB;IACvE,SAAS,CAAC,wBAAwB,kDAAyB;IAC3D,SAAS,CAAC,iBAAiB,mCAA6B;IAExD,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,mBAAmB,CAAC,GAAG,IAAI;CAMxE;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,6BAA6B,EAAE,+BAA+B,CAAC;KAChE;CACF"}
1
+ {"version":3,"file":"datepicker-previous-day.d.ts","sourceRoot":"","sources":["../../../../../src/elements/datepicker/datepicker-previous-day/datepicker-previous-day.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAK1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAInD;;GAEG;AACH,qBAKM,+BAA+B,CAAC,CAAC,GAAG,IAAI,CAAE,SAAQ,mBAAmB,CAAC,CAAC,CAAC;IAC5E,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,SAAS,CAAC,QAAQ,EAAE,MAAM,CAA8B;IACxD,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAmB;IACvE,SAAS,CAAC,wBAAwB,kDAAyB;IAE3D,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC;CAIxC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,6BAA6B,EAAE,+BAA+B,CAAC;KAChE;CACF"}
@@ -3,8 +3,6 @@ import { customElement } from "lit/decorators.js";
3
3
  import { hostAttributes } from "../core/decorators.js";
4
4
  import { i18nPreviousDay, i18nSelectPreviousDay } from "../core/i18n.js";
5
5
  import { SbbDatepickerButton } from "./common.js";
6
- import { findPreviousAvailableDate } from "./datepicker.js";
7
- import "../icon.js";
8
6
  import { css } from "lit";
9
7
  const style = css`*,
10
8
  ::before,
@@ -28,7 +26,7 @@ const style = css`*,
28
26
  --sbb-button-border-disabled-style: dashed;
29
27
  --sbb-button-border-radius: var(--sbb-border-radius-infinity);
30
28
  --sbb-button-transition-duration: var(
31
- --sbb-disable-animation-zero-time,
29
+ --sbb-disable-animation-duration,
32
30
  var(--sbb-animation-duration-2x)
33
31
  );
34
32
  --sbb-button-transition-easing-function: var(--sbb-animation-easing);
@@ -81,12 +79,12 @@ sbb-icon {
81
79
  --sbb-button-color-disabled-text: var(--sbb-color-smoke);
82
80
  }
83
81
 
84
- :host(:is([disabled], [data-disabled], [data-group-disabled])) .sbb-datepicker-previous-day {
82
+ :host(:is([disabled], :disabled, [disabled-interactive], [data-disabled], [data-group-disabled])) .sbb-datepicker-previous-day {
85
83
  color: var(--sbb-button-color-disabled-text);
86
84
  cursor: default;
87
85
  pointer-events: none;
88
86
  }
89
- :host(:is([disabled], [data-disabled], [data-group-disabled])) .sbb-datepicker-previous-day::before {
87
+ :host(:is([disabled], :disabled, [disabled-interactive], [data-disabled], [data-group-disabled])) .sbb-datepicker-previous-day::before {
90
88
  background-color: var(--sbb-button-color-disabled-background);
91
89
  border: var(--sbb-button-border-disabled-width) var(--sbb-button-border-disabled-style) var(--sbb-button-color-disabled-border);
92
90
  }
@@ -98,17 +96,17 @@ sbb-icon {
98
96
  }
99
97
 
100
98
  @media (any-hover: hover) {
101
- :host(:not([disabled], [data-disabled], [data-group-disabled], :active, [data-active]):hover) {
99
+ :host(:not([disabled], :disabled, [disabled-interactive], [data-disabled], [data-group-disabled], :active, [data-active]):hover) {
102
100
  --sbb-button-translate-y-content-hover: -0.0625rem;
103
101
  }
104
102
  }
105
103
  @media (any-hover: hover) {
106
- :host(:not([disabled], [data-disabled], [data-group-disabled], :active, [data-active]):hover) .sbb-datepicker-previous-day::before {
104
+ :host(:not([disabled], :disabled, [disabled-interactive], [data-disabled], [data-group-disabled], :active, [data-active]):hover) .sbb-datepicker-previous-day::before {
107
105
  background-color: var(--sbb-button-color-hover-background);
108
106
  }
109
107
  }
110
108
 
111
- :host(:not([disabled], [data-disabled], [data-group-disabled]):is(:active, [data-active])) .sbb-datepicker-previous-day::before {
109
+ :host(:not([disabled], :disabled, [disabled-interactive], [data-disabled], [data-group-disabled]):is(:active, [data-active])) .sbb-datepicker-previous-day::before {
112
110
  background-color: var(--sbb-button-color-active-background);
113
111
  }
114
112
 
@@ -131,13 +129,9 @@ let SbbDatepickerPreviousDayElement = (() => {
131
129
  this.iconName = "chevron-small-left-small";
132
130
  this.i18nOffBoundaryDay = i18nPreviousDay;
133
131
  this.i18nSelectOffBoundaryDay = i18nSelectPreviousDay;
134
- this.findAvailableDate = findPreviousAvailableDate;
135
132
  }
136
- onInputUpdated(event) {
137
- if (this.boundary !== event.detail.min) {
138
- this.boundary = event.detail.min;
139
- this.setDisabledState(this.datePickerElement);
140
- }
133
+ findAvailableDate(date) {
134
+ return this.datePickerElement.findPreviousAvailableDate(date);
141
135
  }
142
136
  }, _classThis = _a, (() => {
143
137
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
@@ -150,4 +144,4 @@ let SbbDatepickerPreviousDayElement = (() => {
150
144
  export {
151
145
  SbbDatepickerPreviousDayElement
152
146
  };
153
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1wcmV2aW91cy1kYXkuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXItcHJldmlvdXMtZGF5L2RhdGVwaWNrZXItcHJldmlvdXMtZGF5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaTE4blByZXZpb3VzRGF5LCBpMThuU2VsZWN0UHJldmlvdXNEYXkgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiRGF0ZXBpY2tlckJ1dHRvbiB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5pbXBvcnQgeyBmaW5kUHJldmlvdXNBdmFpbGFibGVEYXRlLCB0eXBlIFNiYklucHV0VXBkYXRlRXZlbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyLmpzJztcbmltcG9ydCAnLi4vLi4vaWNvbi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2RhdGVwaWNrZXItcHJldmlvdXMtZGF5LnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogQ29tYmluZWQgd2l0aCBhIGBzYmItZGF0ZXBpY2tlcmAsIGl0IGNhbiBiZSB1c2VkIHRvIG1vdmUgdGhlIGRhdGUgYmFjay5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWRhdGVwaWNrZXItcHJldmlvdXMtZGF5JylcbkBob3N0QXR0cmlidXRlcyh7XG4gIHNsb3Q6ICdwcmVmaXgnLFxufSlcbmNsYXNzIFNiYkRhdGVwaWNrZXJQcmV2aW91c0RheUVsZW1lbnQ8VCA9IERhdGU+IGV4dGVuZHMgU2JiRGF0ZXBpY2tlckJ1dHRvbjxUPiB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIHByb3RlY3RlZCBpY29uTmFtZTogc3RyaW5nID0gJ2NoZXZyb24tc21hbGwtbGVmdC1zbWFsbCc7XG4gIHByb3RlY3RlZCBpMThuT2ZmQm91bmRhcnlEYXk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSBpMThuUHJldmlvdXNEYXk7XG4gIHByb3RlY3RlZCBpMThuU2VsZWN0T2ZmQm91bmRhcnlEYXkgPSBpMThuU2VsZWN0UHJldmlvdXNEYXk7XG4gIHByb3RlY3RlZCBmaW5kQXZhaWxhYmxlRGF0ZSA9IGZpbmRQcmV2aW91c0F2YWlsYWJsZURhdGU7XG5cbiAgcHJvdGVjdGVkIG9uSW5wdXRVcGRhdGVkKGV2ZW50OiBDdXN0b21FdmVudDxTYmJJbnB1dFVwZGF0ZUV2ZW50Pik6IHZvaWQge1xuICAgIGlmICh0aGlzLmJvdW5kYXJ5ICE9PSBldmVudC5kZXRhaWwubWluKSB7XG4gICAgICB0aGlzLmJvdW5kYXJ5ID0gZXZlbnQuZGV0YWlsLm1pbiE7XG4gICAgICB0aGlzLnNldERpc2FibGVkU3RhdGUodGhpcy5kYXRlUGlja2VyRWxlbWVudCEpO1xuICAgIH1cbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRhdGVwaWNrZXItcHJldmlvdXMtZGF5JzogU2JiRGF0ZXBpY2tlclByZXZpb3VzRGF5RWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFtQk0sbUNBQStCLE1BQUE7O0FBSnBDLE1BQUEsbUJBQUEsQ0FBQSxjQUFjLDZCQUE2QixHQUMzQyxlQUFlO0FBQUEsSUFDZCxNQUFNO0FBQUEsRUFBQSxDQUNQLENBQUM7Ozs7b0JBQ3NEO0FBQVIsRUFBQSxtQkFBUSxZQUFzQjtBQUFBOztBQUdsRSxXQUFRLFdBQVc7QUFDbkIsV0FBa0IscUJBQTJCO0FBQzdDLFdBQXdCLDJCQUFHO0FBQzNCLFdBQWlCLG9CQUFHO0FBQUEsSUFBQTtBQUFBLElBRXBCLGVBQWUsT0FBdUM7QUFDOUQsVUFBSSxLQUFLLGFBQWEsTUFBTSxPQUFPLEtBQUs7QUFDakMsYUFBQSxXQUFXLE1BQU0sT0FBTztBQUN4QixhQUFBLGlCQUFpQixLQUFLLGlCQUFrQjtBQUFBLE1BQUE7QUFBQSxJQUMvQztBQUFBOztBQVpKLGlCQWNDLE1BQUEsbUJBQUEsRUFBQSxPQUFBLFdBQUEsR0FBQSxrQkFBQSxFQUFBLE1BQUEsU0FBQSxNQUFBLFdBQUEsTUFBQSxVQUFBLFVBQUEsR0FBQSxNQUFBLHVCQUFBOzs7UUFid0IsR0FBTSxTQUFtQixPQUQ1QyxrQkFBK0IsWUFBQSx1QkFBQSxHQUFXOzs7In0=
147
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1wcmV2aW91cy1kYXkuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXItcHJldmlvdXMtZGF5L2RhdGVwaWNrZXItcHJldmlvdXMtZGF5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaTE4blByZXZpb3VzRGF5LCBpMThuU2VsZWN0UHJldmlvdXNEYXkgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiRGF0ZXBpY2tlckJ1dHRvbiB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2RhdGVwaWNrZXItcHJldmlvdXMtZGF5LnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogQ29tYmluZWQgd2l0aCBhIGBzYmItZGF0ZXBpY2tlcmAsIGl0IGNhbiBiZSB1c2VkIHRvIG1vdmUgdGhlIGRhdGUgYmFjay5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWRhdGVwaWNrZXItcHJldmlvdXMtZGF5JylcbkBob3N0QXR0cmlidXRlcyh7XG4gIHNsb3Q6ICdwcmVmaXgnLFxufSlcbmNsYXNzIFNiYkRhdGVwaWNrZXJQcmV2aW91c0RheUVsZW1lbnQ8VCA9IERhdGU+IGV4dGVuZHMgU2JiRGF0ZXBpY2tlckJ1dHRvbjxUPiB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIHByb3RlY3RlZCBpY29uTmFtZTogc3RyaW5nID0gJ2NoZXZyb24tc21hbGwtbGVmdC1zbWFsbCc7XG4gIHByb3RlY3RlZCBpMThuT2ZmQm91bmRhcnlEYXk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSBpMThuUHJldmlvdXNEYXk7XG4gIHByb3RlY3RlZCBpMThuU2VsZWN0T2ZmQm91bmRhcnlEYXkgPSBpMThuU2VsZWN0UHJldmlvdXNEYXk7XG5cbiAgcHJvdGVjdGVkIGZpbmRBdmFpbGFibGVEYXRlKGRhdGU6IFQpOiBUIHtcbiAgICAvLyBXaGVuIGNhbGxpbmcgZmluZEF2YWlsYWJsZURhdGUsIGRhdGVwaWNrZXJFbGVtZW50IGlzIGFsd2F5cyBkZWZpbmVkLlxuICAgIHJldHVybiB0aGlzLmRhdGVQaWNrZXJFbGVtZW50IS5maW5kUHJldmlvdXNBdmFpbGFibGVEYXRlKGRhdGUpO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZGF0ZXBpY2tlci1wcmV2aW91cy1kYXknOiBTYmJEYXRlcGlja2VyUHJldmlvdXNEYXlFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFpQk0sbUNBQStCLE1BQUE7O0FBSnBDLE1BQUEsbUJBQUEsQ0FBQSxjQUFjLDZCQUE2QixHQUMzQyxlQUFlO0FBQUEsSUFDZCxNQUFNO0FBQUEsRUFBQSxDQUNQLENBQUM7Ozs7b0JBQ3NEO0FBQVIsRUFBQSxtQkFBUSxZQUFzQjtBQUFBOztBQUdsRSxXQUFRLFdBQVc7QUFDbkIsV0FBa0IscUJBQTJCO0FBQzdDLFdBQXdCLDJCQUFHO0FBQUEsSUFBQTtBQUFBLElBRTNCLGtCQUFrQixNQUFPO0FBRTFCLGFBQUEsS0FBSyxrQkFBbUIsMEJBQTBCLElBQUk7QUFBQSxJQUFBO0FBQUE7O0FBVGpFLGlCQVdDLE1BQUEsbUJBQUEsRUFBQSxPQUFBLFdBQUEsR0FBQSxrQkFBQSxFQUFBLE1BQUEsU0FBQSxNQUFBLFdBQUEsTUFBQSxVQUFBLFVBQUEsR0FBQSxNQUFBLHVCQUFBOzs7UUFWd0IsR0FBTSxTQUFtQixPQUQ1QyxrQkFBK0IsWUFBQSx1QkFBQSxHQUFXOzs7In0=
@@ -13,7 +13,7 @@ import { SbbConnectedAbortController, SbbLanguageController } from "../core/cont
13
13
  import { defaultDateAdapter } from "../core/datetime.js";
14
14
  import { forceType } from "../core/decorators.js";
15
15
  import { findInput, findReferencedElement } from "../core/dom.js";
16
- import { EventEmitter } from "../core/eventing.js";
16
+ import { EventEmitter, forwardEventToHost } from "../core/eventing.js";
17
17
  import { i18nDatePickerPlaceholder, i18nDateChangedTo } from "../core/i18n.js";
18
18
  const style = css`:host {
19
19
  border: 0;
@@ -33,47 +33,12 @@ function getDatePicker(element, trigger) {
33
33
  }
34
34
  return findReferencedElement(trigger);
35
35
  }
36
- function getAvailableDate(date, delta, dateFilter, dateAdapter) {
37
- let availableDate = dateAdapter.addCalendarDays(date, delta);
38
- if (dateFilter) {
39
- while (!dateFilter(availableDate)) {
40
- availableDate = dateAdapter.addCalendarDays(availableDate, delta);
41
- }
42
- }
43
- return availableDate;
44
- }
45
- function findPreviousAvailableDate(date, dateFilter, dateAdapter, min) {
46
- const previousDate = getAvailableDate(date, -1, dateFilter, dateAdapter);
47
- const dateMin = dateAdapter.deserialize(min);
48
- if (!dateMin || dateAdapter.isValid(dateMin) && dateAdapter.compareDate(previousDate, dateMin) >= 0) {
49
- return previousDate;
50
- }
51
- return date;
52
- }
53
- function findNextAvailableDate(date, dateFilter, dateAdapter, max) {
54
- const nextDate = getAvailableDate(date, 1, dateFilter, dateAdapter);
55
- const dateMax = dateAdapter.deserialize(max);
56
- if (!dateMax || dateAdapter.isValid(dateMax) && dateAdapter.compareDate(nextDate, dateMax) <= 0) {
57
- return nextDate;
58
- }
59
- return date;
60
- }
61
- function isDateAvailable(date, dateFilter, min, max) {
62
- var _a;
63
- const dateAdapter = ((_a = readConfig().datetime) == null ? void 0 : _a.dateAdapter) ?? defaultDateAdapter;
64
- const dateMin = dateAdapter.deserialize(min);
65
- const dateMax = dateAdapter.deserialize(max);
66
- if (dateAdapter.isValid(dateMin) && dateAdapter.compareDate(date, dateMin) < 0 || dateAdapter.isValid(dateMax) && dateAdapter.compareDate(date, dateMax) > 0) {
67
- return false;
68
- }
69
- return dateFilter ? dateFilter(date) : true;
70
- }
71
36
  const datepickerControlRegisteredEventFactory = () => new CustomEvent("datepickerControlRegistered", {
72
37
  bubbles: false,
73
38
  composed: true
74
39
  });
75
40
  let SbbDatepickerElement = (() => {
76
- var _wide_accessor_storage, _dateFilter_accessor_storage, _dateParser_accessor_storage, _format_accessor_storage, _input_accessor_storage, __inputElement_accessor_storage, _a;
41
+ var _wide_accessor_storage, _dateFilter_accessor_storage, _input_accessor_storage, __inputElement_accessor_storage, _a;
77
42
  let _classDecorators = [customElement("sbb-datepicker")];
78
43
  let _classDescriptor;
79
44
  let _classExtraInitializers = [];
@@ -86,12 +51,6 @@ let SbbDatepickerElement = (() => {
86
51
  let _dateFilter_decorators;
87
52
  let _dateFilter_initializers = [];
88
53
  let _dateFilter_extraInitializers = [];
89
- let _dateParser_decorators;
90
- let _dateParser_initializers = [];
91
- let _dateParser_extraInitializers = [];
92
- let _format_decorators;
93
- let _format_initializers = [];
94
- let _format_extraInitializers = [];
95
54
  let _input_decorators;
96
55
  let _input_initializers = [];
97
56
  let _input_extraInitializers = [];
@@ -106,20 +65,12 @@ let SbbDatepickerElement = (() => {
106
65
  super(...arguments);
107
66
  __privateAdd(this, _wide_accessor_storage);
108
67
  __privateAdd(this, _dateFilter_accessor_storage);
109
- __privateAdd(this, _dateParser_accessor_storage);
110
- __privateAdd(this, _format_accessor_storage);
111
68
  __privateAdd(this, _input_accessor_storage);
112
69
  __privateAdd(this, __inputElement_accessor_storage);
113
70
  __privateSet(this, _wide_accessor_storage, (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _wide_initializers, false)));
114
71
  __privateSet(this, _dateFilter_accessor_storage, (__runInitializers(this, _wide_extraInitializers), __runInitializers(this, _dateFilter_initializers, () => true)));
115
- __privateSet(this, _dateParser_accessor_storage, (__runInitializers(this, _dateFilter_extraInitializers), __runInitializers(this, _dateParser_initializers, null)));
116
- __privateSet(this, _format_accessor_storage, (__runInitializers(this, _dateParser_extraInitializers), __runInitializers(this, _format_initializers, null)));
117
- __privateSet(this, _input_accessor_storage, (__runInitializers(this, _format_extraInitializers), __runInitializers(this, _input_initializers, null)));
72
+ __privateSet(this, _input_accessor_storage, (__runInitializers(this, _dateFilter_extraInitializers), __runInitializers(this, _input_initializers, null)));
118
73
  this._now = __runInitializers(this, _input_extraInitializers);
119
- this._didChange = new EventEmitter(this, SbbDatepickerElement2.events.didChange, {
120
- bubbles: true,
121
- cancelable: true
122
- });
123
74
  this._change = new EventEmitter(this, SbbDatepickerElement2.events.change, {
124
75
  bubbles: true
125
76
  });
@@ -146,7 +97,7 @@ let SbbDatepickerElement = (() => {
146
97
  this._inputElement.placeholder = i18nDatePickerPlaceholder[this._language.current];
147
98
  }
148
99
  if (this.valueAsDate) {
149
- this._inputElement.value = this._format(this.valueAsDate);
100
+ this._inputElement.value = this._dateAdapter.format(this.valueAsDate);
150
101
  }
151
102
  }
152
103
  });
@@ -165,26 +116,6 @@ let SbbDatepickerElement = (() => {
165
116
  set dateFilter(value) {
166
117
  __privateSet(this, _dateFilter_accessor_storage, value);
167
118
  }
168
- /**
169
- * A function used to parse string value into dates.
170
- * @deprecated No longer required.
171
- */
172
- get dateParser() {
173
- return __privateGet(this, _dateParser_accessor_storage);
174
- }
175
- set dateParser(value) {
176
- __privateSet(this, _dateParser_accessor_storage, value);
177
- }
178
- /**
179
- * A function used to format dates into the preferred string format.
180
- * @deprecated No longer required.
181
- */
182
- get format() {
183
- return __privateGet(this, _format_accessor_storage);
184
- }
185
- set format(value) {
186
- __privateSet(this, _format_accessor_storage, value);
187
- }
188
119
  /** Reference of the native input connected to the datepicker. */
189
120
  get input() {
190
121
  return __privateGet(this, _input_accessor_storage);
@@ -192,7 +123,6 @@ let SbbDatepickerElement = (() => {
192
123
  set input(value) {
193
124
  __privateSet(this, _input_accessor_storage, value);
194
125
  }
195
- // TODO: Change undefined to null as a breaking change.
196
126
  /** A configured date which acts as the current date instead of the real current date. Recommended for testing purposes. */
197
127
  set now(value) {
198
128
  this._now = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
@@ -248,20 +178,6 @@ let SbbDatepickerElement = (() => {
248
178
  super.firstUpdated(changedProperties);
249
179
  this._setAriaLiveMessage();
250
180
  }
251
- /**
252
- * Gets the input value with the correct date format.
253
- * @deprecated Use property valueAsDate instead.
254
- */
255
- getValueAsDate() {
256
- return this.valueAsDate ?? void 0;
257
- }
258
- /**
259
- * Set the input value to the correctly formatted value.
260
- * @deprecated Use property valueAsDate instead.
261
- */
262
- setValueAsDate(date) {
263
- this.valueAsDate = date;
264
- }
265
181
  /**
266
182
  * @internal
267
183
  * Whether a custom now is configured.
@@ -290,7 +206,10 @@ let SbbDatepickerElement = (() => {
290
206
  input.placeholder = i18nDatePickerPlaceholder[this._language.current];
291
207
  }
292
208
  const options = { signal: this._datePickerController.signal };
293
- input.addEventListener("input", () => this._parseInput(), options);
209
+ input.addEventListener("input", (e) => {
210
+ forwardEventToHost(e, this);
211
+ this._parseInput();
212
+ }, options);
294
213
  input.addEventListener("change", () => this._handleInputChange(), options);
295
214
  this._parseInput(true);
296
215
  this._tryApplyFormatToInput();
@@ -308,15 +227,15 @@ let SbbDatepickerElement = (() => {
308
227
  this._validateDate();
309
228
  this._setAriaLiveMessage();
310
229
  this._change.emit();
311
- this._didChange.emit();
312
230
  }
313
231
  _tryApplyFormatToInput() {
314
232
  if (!this._inputElement) {
315
233
  return false;
316
234
  }
317
- const formattedDate = this.valueAsDate ? this._format(this.valueAsDate) : "";
235
+ const formattedDate = this.valueAsDate ? this._dateAdapter.format(this.valueAsDate) : "";
318
236
  if (formattedDate && this._inputElement.value !== formattedDate) {
319
- this._inputElement.value = formattedDate;
237
+ const setValue = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, "value").set;
238
+ setValue.call(this._inputElement, formattedDate);
320
239
  this._inputElement.dispatchEvent(new InputEvent("input", { bubbles: true, composed: true }));
321
240
  this._inputElement.dispatchEvent(new Event("change", { bubbles: true, composed: true }));
322
241
  return true;
@@ -324,11 +243,10 @@ let SbbDatepickerElement = (() => {
324
243
  return false;
325
244
  }
326
245
  _validateDate() {
327
- var _a2, _b;
328
246
  if (!this._inputElement) {
329
247
  return;
330
248
  }
331
- const isEmptyOrValid = !this._inputElement.value || !!this.valueAsDate && isDateAvailable(this.valueAsDate, this.dateFilter, (_a2 = this._inputElement) == null ? void 0 : _a2.min, (_b = this._inputElement) == null ? void 0 : _b.max);
249
+ const isEmptyOrValid = !this._inputElement.value || this._isDateAvailable();
332
250
  const wasValid = !this._inputElement.hasAttribute("data-sbb-invalid");
333
251
  this._inputElement.toggleAttribute("data-sbb-invalid", !isEmptyOrValid);
334
252
  if (wasValid !== isEmptyOrValid) {
@@ -337,15 +255,11 @@ let SbbDatepickerElement = (() => {
337
255
  }
338
256
  _parseInput(deserializeAsFallback = false) {
339
257
  const value = this._inputElement.value;
340
- const parse = this.dateParser ?? ((v) => this._dateAdapter.parse(v, this.now));
341
- this._valueAsDate = this._dateAdapter.getValidDateOrNull(parse(value));
258
+ this._valueAsDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.parse(value, this.now));
342
259
  if (deserializeAsFallback && !this._valueAsDate) {
343
260
  this._valueAsDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
344
261
  }
345
262
  }
346
- _format(date) {
347
- return this.format ? this.format(date) : this._dateAdapter.format(date);
348
- }
349
263
  _setAriaLiveMessage() {
350
264
  var _a2, _b;
351
265
  const containerElement = (_b = (_a2 = this.shadowRoot) == null ? void 0 : _a2.querySelector) == null ? void 0 : _b.call(_a2, "#status-container");
@@ -361,12 +275,68 @@ let SbbDatepickerElement = (() => {
361
275
  render() {
362
276
  return html`<p id="status-container" role="status"></p>`;
363
277
  }
364
- }, _wide_accessor_storage = new WeakMap(), _dateFilter_accessor_storage = new WeakMap(), _dateParser_accessor_storage = new WeakMap(), _format_accessor_storage = new WeakMap(), _input_accessor_storage = new WeakMap(), __inputElement_accessor_storage = new WeakMap(), _classThis = _a, (() => {
278
+ /**
279
+ * Calculates the first available date before the given one,
280
+ * considering the SbbDatepickerElement `dateFilter` property and `min` parameter (e.g. from the self-named input's attribute).
281
+ * @param date The starting date for calculations.
282
+ */
283
+ findPreviousAvailableDate(date) {
284
+ var _a2;
285
+ const previousDate = this._findAvailableDate(date, -1);
286
+ const dateMin = this._dateAdapter.deserialize((_a2 = this._inputElement) == null ? void 0 : _a2.min);
287
+ if (!dateMin || this._dateAdapter.isValid(dateMin) && this._dateAdapter.compareDate(previousDate, dateMin) >= 0) {
288
+ return previousDate;
289
+ }
290
+ return date;
291
+ }
292
+ /**
293
+ * Calculates the first available date after the given one,
294
+ * considering the SbbDatepickerElement `dateFilter` property and `max` parameter (e.g. from the self-named input's attribute).
295
+ * @param date The starting date for calculations.
296
+ */
297
+ findNextAvailableDate(date) {
298
+ var _a2;
299
+ const nextDate = this._findAvailableDate(date, 1);
300
+ const dateMax = this._dateAdapter.deserialize((_a2 = this._inputElement) == null ? void 0 : _a2.max);
301
+ if (!dateMax || this._dateAdapter.isValid(dateMax) && this._dateAdapter.compareDate(nextDate, dateMax) <= 0) {
302
+ return nextDate;
303
+ }
304
+ return date;
305
+ }
306
+ /**
307
+ * Returns the first available date before or after a given one, considering the `dateFilter` property.
308
+ * @param date The starting date for calculations.
309
+ * @param delta The number of days to add/subtract from the starting one.
310
+ */
311
+ _findAvailableDate(date, delta) {
312
+ let availableDate = this._dateAdapter.addCalendarDays(date, delta);
313
+ if (this.dateFilter) {
314
+ while (!this.dateFilter(availableDate)) {
315
+ availableDate = this._dateAdapter.addCalendarDays(availableDate, delta);
316
+ }
317
+ }
318
+ return availableDate;
319
+ }
320
+ /**
321
+ * Checks if valueAsDate is valid, considering the SbbDatepickerElement `dateFilter` property
322
+ * and `min` and `max` parameters (e.g. from the self-named input's attributes).
323
+ */
324
+ _isDateAvailable() {
325
+ var _a2, _b;
326
+ if (!this.valueAsDate) {
327
+ return false;
328
+ }
329
+ const dateMin = this._dateAdapter.deserialize((_a2 = this._inputElement) == null ? void 0 : _a2.min);
330
+ const dateMax = this._dateAdapter.deserialize((_b = this._inputElement) == null ? void 0 : _b.max);
331
+ if (this._dateAdapter.isValid(dateMin) && this._dateAdapter.compareDate(this.valueAsDate, dateMin) < 0 || this._dateAdapter.isValid(dateMax) && this._dateAdapter.compareDate(this.valueAsDate, dateMax) > 0) {
332
+ return false;
333
+ }
334
+ return this.dateFilter ? this.dateFilter(this.valueAsDate) : true;
335
+ }
336
+ }, _wide_accessor_storage = new WeakMap(), _dateFilter_accessor_storage = new WeakMap(), _input_accessor_storage = new WeakMap(), __inputElement_accessor_storage = new WeakMap(), _classThis = _a, (() => {
365
337
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
366
338
  _wide_decorators = [forceType(), property({ type: Boolean })];
367
339
  _dateFilter_decorators = [property({ attribute: false })];
368
- _dateParser_decorators = [property({ attribute: false })];
369
- _format_decorators = [property({ attribute: false })];
370
340
  _input_decorators = [property()];
371
341
  _set_now_decorators = [property()];
372
342
  _set_valueAsDate_decorators = [property({ attribute: false })];
@@ -377,12 +347,6 @@ let SbbDatepickerElement = (() => {
377
347
  __esDecorate(_a, null, _dateFilter_decorators, { kind: "accessor", name: "dateFilter", static: false, private: false, access: { has: (obj) => "dateFilter" in obj, get: (obj) => obj.dateFilter, set: (obj, value) => {
378
348
  obj.dateFilter = value;
379
349
  } }, metadata: _metadata }, _dateFilter_initializers, _dateFilter_extraInitializers);
380
- __esDecorate(_a, null, _dateParser_decorators, { kind: "accessor", name: "dateParser", static: false, private: false, access: { has: (obj) => "dateParser" in obj, get: (obj) => obj.dateParser, set: (obj, value) => {
381
- obj.dateParser = value;
382
- } }, metadata: _metadata }, _dateParser_initializers, _dateParser_extraInitializers);
383
- __esDecorate(_a, null, _format_decorators, { kind: "accessor", name: "format", static: false, private: false, access: { has: (obj) => "format" in obj, get: (obj) => obj.format, set: (obj, value) => {
384
- obj.format = value;
385
- } }, metadata: _metadata }, _format_initializers, _format_extraInitializers);
386
350
  __esDecorate(_a, null, _input_decorators, { kind: "accessor", name: "input", static: false, private: false, access: { has: (obj) => "input" in obj, get: (obj) => obj.input, set: (obj, value) => {
387
351
  obj.input = value;
388
352
  } }, metadata: _metadata }, _input_initializers, _input_extraInitializers);
@@ -399,7 +363,6 @@ let SbbDatepickerElement = (() => {
399
363
  SbbDatepickerElement2 = _classThis = _classDescriptor.value;
400
364
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
401
365
  })(), _a.styles = style, _a.events = {
402
- didChange: "didChange",
403
366
  change: "change",
404
367
  inputUpdated: "inputUpdated",
405
368
  datePickerUpdated: "datePickerUpdated",
@@ -410,10 +373,6 @@ let SbbDatepickerElement = (() => {
410
373
  export {
411
374
  SbbDatepickerElement,
412
375
  datepickerControlRegisteredEventFactory,
413
- findNextAvailableDate,
414
- findPreviousAvailableDate,
415
- getAvailableDate,
416
- getDatePicker,
417
- isDateAvailable
376
+ getDatePicker
418
377
  };
419
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICBMaXRFbGVtZW50LFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29yZS9jb25maWcuanMnO1xuaW1wb3J0IHsgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyLCBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IHR5cGUgRGF0ZUFkYXB0ZXIsIGRlZmF1bHREYXRlQWRhcHRlciB9IGZyb20gJy4uLy4uL2NvcmUvZGF0ZXRpbWUuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGZpbmRJbnB1dCwgZmluZFJlZmVyZW5jZWRFbGVtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnLi4vLi4vY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBpMThuRGF0ZUNoYW5nZWRUbywgaTE4bkRhdGVQaWNrZXJQbGFjZWhvbGRlciB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVMaWtlLCBTYmJWYWxpZGF0aW9uQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi8uLi9jb3JlL2ludGVyZmFjZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJEYXRlcGlja2VyQnV0dG9uIH0gZnJvbSAnLi4vY29tbW9uLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiRGF0ZXBpY2tlclRvZ2dsZUVsZW1lbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyLXRvZ2dsZS5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2RhdGVwaWNrZXIuc2Nzcz9saXQmaW5saW5lJztcblxuZXhwb3J0IGludGVyZmFjZSBTYmJJbnB1dFVwZGF0ZUV2ZW50IHtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICByZWFkb25seT86IGJvb2xlYW47XG4gIG1pbj86IHN0cmluZyB8IG51bWJlcjtcbiAgbWF4Pzogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG4vLyBUT0RPKGJyZWFraW5nLWNoYW5nZSk6IElubGluZSBkZXByZWNhdGVkIGZ1bmN0aW9ucyBpbiBTYmJEYXRlcGlja2VyRWxlbWVudCBhcyBwdWJsaWMgbWV0aG9kc1xuLy8gd2hlcmUgcG9zc2libGUgYW5kIHVzZSB0aGVzZSBtZXRob2RzIHdoZXJlIHRoZSBmdW5jdGlvbnMgYXJlIGN1cnJlbnRseSB1c2VkLlxuXG4vKipcbiAqIEdpdmVuIGEgU2JiRGF0ZXBpY2tlclByZXZpb3VzRGF5RWxlbWVudCwgYSBTYmJEYXRlcGlja2VyTmV4dERheUVsZW1lbnQgb3IgYSBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudCBjb21wb25lbnQsXG4gKiBpdCByZXR1cm5zIHRoZSByZWxhdGVkIFNiYkRhdGVwaWNrZXJFbGVtZW50IHJlZmVyZW5jZSwgaWYgZXhpc3RzLlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgcG90ZW50aWFsbHkgY29ubmVjdGVkIHRvIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudC5cbiAqIEBwYXJhbSB0cmlnZ2VyIFRoZSBpZCBvciB0aGUgcmVmZXJlbmNlIG9mIHRoZSBTYmJEYXRlUGlja2VyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0ZVBpY2tlcjxUID0gRGF0ZT4oXG4gIGVsZW1lbnQ6IFNiYkRhdGVwaWNrZXJCdXR0b248VD4gfCBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudDxUPixcbiAgdHJpZ2dlcj86IHN0cmluZyB8IEhUTUxFbGVtZW50LFxuKTogU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD4gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF0cmlnZ2VyKSB7XG4gICAgcmV0dXJuIGVsZW1lbnRcbiAgICAgIC5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJylcbiAgICAgID8ucXVlcnlTZWxlY3RvcjxTYmJEYXRlcGlja2VyRWxlbWVudDxUPj4oJ3NiYi1kYXRlcGlja2VyJyk7XG4gIH1cblxuICByZXR1cm4gZmluZFJlZmVyZW5jZWRFbGVtZW50PFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+Pih0cmlnZ2VyKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmaXJzdCBhdmFpbGFibGUgZGF0ZSBiZWZvcmUgb3IgYWZ0ZXIgYSBnaXZlbiBvbmUsIGNvbnNpZGVyaW5nIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudCBgZGF0ZUZpbHRlcmAgcHJvcGVydHkuXG4gKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZSBmb3IgY2FsY3VsYXRpb25zLlxuICogQHBhcmFtIGRlbHRhIFRoZSBudW1iZXIgb2YgZGF5cyB0byBhZGQvc3VidHJhY3QgZnJvbSB0aGUgc3RhcnRpbmcgb25lLlxuICogQHBhcmFtIGRhdGVGaWx0ZXIgVGhlIGRhdGVGaWx0ZXIgZnVuY3Rpb24gZnJvbSB0aGUgU2JiRGF0ZXBpY2tlckVsZW1lbnQuXG4gKiBAcGFyYW0gZGF0ZUFkYXB0ZXIgVGhlIGFkYXB0ZXIgY2xhc3MuXG4gKlxuICogQGRlcHJlY2F0ZWQgTm90IGludGVuZGVkIGFzIHB1YmxpYyBBUEkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBdmFpbGFibGVEYXRlPFQgPSBEYXRlPihcbiAgZGF0ZTogVCxcbiAgZGVsdGE6IG51bWJlcixcbiAgZGF0ZUZpbHRlcjogKChkYXRlOiBUKSA9PiBib29sZWFuKSB8IG51bGwsXG4gIGRhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxUPixcbik6IFQge1xuICBsZXQgYXZhaWxhYmxlRGF0ZSA9IGRhdGVBZGFwdGVyLmFkZENhbGVuZGFyRGF5cyhkYXRlLCBkZWx0YSk7XG5cbiAgaWYgKGRhdGVGaWx0ZXIpIHtcbiAgICB3aGlsZSAoIWRhdGVGaWx0ZXIoYXZhaWxhYmxlRGF0ZSkpIHtcbiAgICAgIGF2YWlsYWJsZURhdGUgPSBkYXRlQWRhcHRlci5hZGRDYWxlbmRhckRheXMoYXZhaWxhYmxlRGF0ZSwgZGVsdGEpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhdmFpbGFibGVEYXRlO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGZpcnN0IGF2YWlsYWJsZSBkYXRlIGJlZm9yZSB0aGUgZ2l2ZW4gb25lLFxuICogY29uc2lkZXJpbmcgdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50IGBkYXRlRmlsdGVyYCBwcm9wZXJ0eSBhbmQgYG1pbmAgcGFyYW1ldGVyIChlLmcuIGZyb20gdGhlIHNlbGYtbmFtZWQgaW5wdXQncyBhdHRyaWJ1dGUpLlxuICogQHBhcmFtIGRhdGUgVGhlIHN0YXJ0aW5nIGRhdGUgZm9yIGNhbGN1bGF0aW9ucy5cbiAqIEBwYXJhbSBkYXRlRmlsdGVyIFRoZSBkYXRlRmlsdGVyIGZ1bmN0aW9uIGZyb20gdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50LlxuICogQHBhcmFtIGRhdGVBZGFwdGVyIFRoZSBhZGFwdGVyIGNsYXNzLlxuICogQHBhcmFtIG1pbiBUaGUgbWluaW11bSB2YWx1ZSB0byBjb25zaWRlciBpbiBjYWxjdWxhdGlvbnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgTm90IGludGVuZGVkIGFzIHB1YmxpYyBBUEkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUHJldmlvdXNBdmFpbGFibGVEYXRlPFQgPSBEYXRlPihcbiAgZGF0ZTogVCxcbiAgZGF0ZUZpbHRlcjogKChkYXRlOiBUKSA9PiBib29sZWFuKSB8IG51bGwsXG4gIGRhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxUPixcbiAgbWluOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsLFxuKTogVCB7XG4gIGNvbnN0IHByZXZpb3VzRGF0ZSA9IGdldEF2YWlsYWJsZURhdGUoZGF0ZSwgLTEsIGRhdGVGaWx0ZXIsIGRhdGVBZGFwdGVyKTtcbiAgY29uc3QgZGF0ZU1pbiA9IGRhdGVBZGFwdGVyLmRlc2VyaWFsaXplKG1pbik7XG5cbiAgaWYgKFxuICAgICFkYXRlTWluIHx8XG4gICAgKGRhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1pbikgJiYgZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUocHJldmlvdXNEYXRlLCBkYXRlTWluKSA+PSAwKVxuICApIHtcbiAgICByZXR1cm4gcHJldmlvdXNEYXRlO1xuICB9XG4gIHJldHVybiBkYXRlO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGZpcnN0IGF2YWlsYWJsZSBkYXRlIGFmdGVyIHRoZSBnaXZlbiBvbmUsXG4gKiBjb25zaWRlcmluZyB0aGUgU2JiRGF0ZXBpY2tlckVsZW1lbnQgYGRhdGVGaWx0ZXJgIHByb3BlcnR5IGFuZCBgbWF4YCBwYXJhbWV0ZXIgKGUuZy4gZnJvbSB0aGUgc2VsZi1uYW1lZCBpbnB1dCdzIGF0dHJpYnV0ZSkuXG4gKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZSBmb3IgY2FsY3VsYXRpb25zLlxuICogQHBhcmFtIGRhdGVGaWx0ZXIgVGhlIGRhdGVGaWx0ZXIgZnVuY3Rpb24gZnJvbSB0aGUgU2JiRGF0ZXBpY2tlckVsZW1lbnQuXG4gKiBAcGFyYW0gZGF0ZUFkYXB0ZXIgVGhlIGFkYXB0ZXIgY2xhc3MuXG4gKiBAcGFyYW0gbWF4IFRoZSBtYXhpbXVtIHZhbHVlIHRvIGNvbnNpZGVyIGluIGNhbGN1bGF0aW9ucy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBOb3QgaW50ZW5kZWQgYXMgcHVibGljIEFQSS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmROZXh0QXZhaWxhYmxlRGF0ZTxUID0gRGF0ZT4oXG4gIGRhdGU6IFQsXG4gIGRhdGVGaWx0ZXI6ICgoZGF0ZTogVCkgPT4gYm9vbGVhbikgfCBudWxsLFxuICBkYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXI8VD4sXG4gIG1heDogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCxcbik6IFQge1xuICBjb25zdCBuZXh0RGF0ZSA9IGdldEF2YWlsYWJsZURhdGUoZGF0ZSwgMSwgZGF0ZUZpbHRlciwgZGF0ZUFkYXB0ZXIpO1xuICBjb25zdCBkYXRlTWF4ID0gZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUobWF4KTtcblxuICBpZiAoXG4gICAgIWRhdGVNYXggfHxcbiAgICAoZGF0ZUFkYXB0ZXIuaXNWYWxpZChkYXRlTWF4KSAmJiBkYXRlQWRhcHRlci5jb21wYXJlRGF0ZShuZXh0RGF0ZSwgZGF0ZU1heCkgPD0gMClcbiAgKSB7XG4gICAgcmV0dXJuIG5leHREYXRlO1xuICB9XG4gIHJldHVybiBkYXRlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgcHJvdmlkZWQgZGF0ZSBpcyBhIHZhbGlkIG9uZSwgY29uc2lkZXJpbmcgdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50IGBkYXRlRmlsdGVyYCBwcm9wZXJ0eVxuICogYW5kIGBtaW5gIGFuZCBgbWF4YCBwYXJhbWV0ZXJzIChlLmcuIGZyb20gdGhlIHNlbGYtbmFtZWQgaW5wdXQncyBhdHRyaWJ1dGVzKS5cbiAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlIGZvciBjYWxjdWxhdGlvbnMuXG4gKiBAcGFyYW0gZGF0ZUZpbHRlciBUaGUgZGF0ZUZpbHRlciBmdW5jdGlvbiBmcm9tIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudC5cbiAqIEBwYXJhbSBtaW4gVGhlIG1pbmltdW0gdmFsdWUgdG8gY29uc2lkZXIgaW4gY2FsY3VsYXRpb25zLlxuICogQHBhcmFtIG1heCBUaGUgbWF4aW11bSB2YWx1ZSB0byBjb25zaWRlciBpbiBjYWxjdWxhdGlvbnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgTm90IGludGVuZGVkIGFzIHB1YmxpYyBBUEkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RhdGVBdmFpbGFibGU8VCA9IERhdGU+KFxuICBkYXRlOiBULFxuICBkYXRlRmlsdGVyOiAoKGRhdGU6IFQpID0+IGJvb2xlYW4pIHwgbnVsbCxcbiAgbWluOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBtYXg6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsXG4pOiBib29sZWFuIHtcbiAgY29uc3QgZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPFQ+ID0gcmVhZENvbmZpZygpLmRhdGV0aW1lPy5kYXRlQWRhcHRlciA/PyBkZWZhdWx0RGF0ZUFkYXB0ZXI7XG4gIGNvbnN0IGRhdGVNaW4gPSBkYXRlQWRhcHRlci5kZXNlcmlhbGl6ZShtaW4pO1xuICBjb25zdCBkYXRlTWF4ID0gZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUobWF4KTtcblxuICBpZiAoXG4gICAgKGRhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1pbikgJiYgZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUoZGF0ZSwgZGF0ZU1pbiEpIDwgMCkgfHxcbiAgICAoZGF0ZUFkYXB0ZXIuaXNWYWxpZChkYXRlTWF4KSAmJiBkYXRlQWRhcHRlci5jb21wYXJlRGF0ZShkYXRlLCBkYXRlTWF4ISkgPiAwKVxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gZGF0ZUZpbHRlciA/IGRhdGVGaWx0ZXIoZGF0ZSkgOiB0cnVlO1xufVxuXG5leHBvcnQgY29uc3QgZGF0ZXBpY2tlckNvbnRyb2xSZWdpc3RlcmVkRXZlbnRGYWN0b3J5ID0gKCk6IEN1c3RvbUV2ZW50ID0+XG4gIG5ldyBDdXN0b21FdmVudCgnZGF0ZXBpY2tlckNvbnRyb2xSZWdpc3RlcmVkJywge1xuICAgIGJ1YmJsZXM6IGZhbHNlLFxuICAgIGNvbXBvc2VkOiB0cnVlLFxuICB9KTtcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGEgbmF0aXZlIGlucHV0LCBpdCBkaXNwbGF5cyB0aGUgaW5wdXQncyB2YWx1ZSBhcyBhIGZvcm1hdHRlZCBkYXRlLlxuICpcbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGRpZENoYW5nZSAtIERlcHJlY2F0ZWQuIHVzZWQgZm9yIFJlYWN0LiBXaWxsIHByb2JhYmx5IGJlIHJlbW92ZWQgb25jZSBSZWFjdCAxOSBpcyBhdmFpbGFibGUuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBjaGFuZ2UgLSBOb3RpZmllcyB0aGF0IHRoZSBjb25uZWN0ZWQgaW5wdXQgaGFzIGNoYW5nZXMuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNiYklucHV0VXBkYXRlRXZlbnQ+fSBpbnB1dFVwZGF0ZWQgLSBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBpbnB1dCBjb25uZWN0ZWQgdG8gdGhlIGRhdGVwaWNrZXIgaGF2ZSBjaGFuZ2VzLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gZGF0ZVBpY2tlclVwZGF0ZWQgLSBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBkYXRlcGlja2VyIGhhdmUgY2hhbmdlcy5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8U2JiVmFsaWRhdGlvbkNoYW5nZUV2ZW50Pn0gdmFsaWRhdGlvbkNoYW5nZSAtIEVtaXRzIHdoZW5ldmVyIHRoZSBpbnRlcm5hbCB2YWxpZGF0aW9uIHN0YXRlIGNoYW5nZXMuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kYXRlcGlja2VyJylcbmNsYXNzIFNiYkRhdGVwaWNrZXJFbGVtZW50PFQgPSBEYXRlPiBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgZGlkQ2hhbmdlOiAnZGlkQ2hhbmdlJyxcbiAgICBjaGFuZ2U6ICdjaGFuZ2UnLFxuICAgIGlucHV0VXBkYXRlZDogJ2lucHV0VXBkYXRlZCcsXG4gICAgZGF0ZVBpY2tlclVwZGF0ZWQ6ICdkYXRlUGlja2VyVXBkYXRlZCcsXG4gICAgdmFsaWRhdGlvbkNoYW5nZTogJ3ZhbGlkYXRpb25DaGFuZ2UnLFxuICB9IGFzIGNvbnN0O1xuXG4gIC8qKiBJZiBzZXQgdG8gdHJ1ZSwgdHdvIG1vbnRocyBhcmUgZGlzcGxheWVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3Igd2lkZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBBIGZ1bmN0aW9uIHVzZWQgdG8gZmlsdGVyIG91dCBkYXRlcy4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiBmYWxzZSB9KSBwdWJsaWMgYWNjZXNzb3IgZGF0ZUZpbHRlcjogKGRhdGU6IFQgfCBudWxsKSA9PiBib29sZWFuID0gKCkgPT5cbiAgICB0cnVlO1xuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHVzZWQgdG8gcGFyc2Ugc3RyaW5nIHZhbHVlIGludG8gZGF0ZXMuXG4gICAqIEBkZXByZWNhdGVkIE5vIGxvbmdlciByZXF1aXJlZC5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogZmFsc2UgfSkgcHVibGljIGFjY2Vzc29yIGRhdGVQYXJzZXI6ICgodmFsdWU6IHN0cmluZykgPT4gVCkgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB1c2VkIHRvIGZvcm1hdCBkYXRlcyBpbnRvIHRoZSBwcmVmZXJyZWQgc3RyaW5nIGZvcm1hdC5cbiAgICogQGRlcHJlY2F0ZWQgTm8gbG9uZ2VyIHJlcXVpcmVkLlxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiBmYWxzZSB9KSBwdWJsaWMgYWNjZXNzb3IgZm9ybWF0OiAoKGRhdGU6IFQpID0+IHN0cmluZykgfCBudWxsID0gbnVsbDtcblxuICAvKiogUmVmZXJlbmNlIG9mIHRoZSBuYXRpdmUgaW5wdXQgY29ubmVjdGVkIHRvIHRoZSBkYXRlcGlja2VyLiAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgYWNjZXNzb3IgaW5wdXQ6IHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gVE9ETzogQ2hhbmdlIHVuZGVmaW5lZCB0byBudWxsIGFzIGEgYnJlYWtpbmcgY2hhbmdlLlxuICAvKiogQSBjb25maWd1cmVkIGRhdGUgd2hpY2ggYWN0cyBhcyB0aGUgY3VycmVudCBkYXRlIGluc3RlYWQgb2YgdGhlIHJlYWwgY3VycmVudCBkYXRlLiBSZWNvbW1lbmRlZCBmb3IgdGVzdGluZyBwdXJwb3Nlcy4gKi9cbiAgQHByb3BlcnR5KClcbiAgcHVibGljIHNldCBub3codmFsdWU6IFNiYkRhdGVMaWtlPFQ+IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fbm93ID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSk7XG4gIH1cbiAgcHVibGljIGdldCBub3coKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX25vdyA/PyB0aGlzLl9kYXRlQWRhcHRlci50b2RheSgpO1xuICB9XG4gIHByaXZhdGUgX25vdz86IFQgfCBudWxsO1xuXG4gIC8qKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIGRhdGUgYXMgYSBEYXRlIG9yIGN1c3RvbSBkYXRlIHByb3ZpZGVyIGluc3RhbmNlLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6IGZhbHNlIH0pXG4gIHB1YmxpYyBzZXQgdmFsdWVBc0RhdGUodmFsdWU6IFNiYkRhdGVMaWtlPFQ+IHwgbnVsbCkge1xuICAgIHRoaXMuX3ZhbHVlQXNEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSk7XG4gICAgaWYgKHRoaXMuX3RyeUFwcGx5Rm9ybWF0VG9JbnB1dCgpKSB7XG4gICAgICAvKiBFbWl0IGJsdXIgZXZlbnQgd2hlbiB2YWx1ZSBpcyBjaGFuZ2VkIHByb2dyYW1tYXRpY2FsbHkgdG8gbm90aWZ5XG4gICAgICBmcmFtZXdvcmtzIHRoYXQgcmVseSBvbiB0aGF0IGV2ZW50IHRvIHVwZGF0ZSBmb3JtIHN0YXR1cy4gKi9cbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudCEuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2JsdXInLCB7IGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgICB9XG4gIH1cbiAgcHVibGljIGdldCB2YWx1ZUFzRGF0ZSgpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlQXNEYXRlID8/IG51bGw7XG4gIH1cbiAgcHJpdmF0ZSBfdmFsdWVBc0RhdGU/OiBUIHwgbnVsbDtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgb25seSB1c2VkIGZvciBSZWFjdC4gV2lsbCBwcm9iYWJseSBiZSByZW1vdmVkIG9uY2UgUmVhY3QgMTkgaXMgYXZhaWxhYmxlLlxuICAgKi9cbiAgcHJpdmF0ZSBfZGlkQ2hhbmdlOiBFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKHRoaXMsIFNiYkRhdGVwaWNrZXJFbGVtZW50LmV2ZW50cy5kaWRDaGFuZ2UsIHtcbiAgICBidWJibGVzOiB0cnVlLFxuICAgIGNhbmNlbGFibGU6IHRydWUsXG4gIH0pO1xuXG4gIC8qKiBOb3RpZmllcyB0aGF0IHRoZSBjb25uZWN0ZWQgaW5wdXQgaGFzIGNoYW5nZXMuICovXG4gIHByaXZhdGUgX2NoYW5nZTogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcih0aGlzLCBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMuY2hhbmdlLCB7XG4gICAgYnViYmxlczogdHJ1ZSxcbiAgfSk7XG5cbiAgLyoqIE5vdGlmaWVzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGlucHV0IGNvbm5lY3RlZCB0byB0aGUgZGF0ZXBpY2tlciBoYXZlIGNoYW5nZXMuICovXG4gIHByaXZhdGUgX2lucHV0VXBkYXRlZDogRXZlbnRFbWl0dGVyPFNiYklucHV0VXBkYXRlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYkRhdGVwaWNrZXJFbGVtZW50LmV2ZW50cy5pbnB1dFVwZGF0ZWQsXG4gICAgeyBidWJibGVzOiB0cnVlLCBjYW5jZWxhYmxlOiB0cnVlIH0sXG4gICk7XG5cbiAgLyoqIE5vdGlmaWVzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGRhdGVwaWNrZXIgaGF2ZSBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF9kYXRlUGlja2VyVXBkYXRlZDogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYkRhdGVwaWNrZXJFbGVtZW50LmV2ZW50cy5kYXRlUGlja2VyVXBkYXRlZCxcbiAgICB7XG4gICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICB9LFxuICApO1xuXG4gIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgaW50ZXJuYWwgdmFsaWRhdGlvbiBzdGF0ZSBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF92YWxpZGF0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8U2JiVmFsaWRhdGlvbkNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMudmFsaWRhdGlvbkNoYW5nZSxcbiAgKTtcblxuICBAc3RhdGUoKVxuICBwcml2YXRlIGFjY2Vzc29yIF9pbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfaW5wdXRFbGVtZW50UGxhY2Vob2xkZXJNdXRhYmxlID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfZGF0ZVBpY2tlckNvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG5cbiAgcHJpdmF0ZSBfaW5wdXRPYnNlcnZlciA9ICFpc1NlcnZlclxuICAgID8gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9uc0xpc3QpID0+IHtcbiAgICAgICAgdGhpcy5fZW1pdElucHV0VXBkYXRlZCgpO1xuICAgICAgICAvLyBUT0RPOiBEZWNpZGUgd2hldGhlciB0byByZW1vdmUgdGhpcyBsb2dpYyBieSBhZGRpbmcgYSB2YWx1ZSBwcm9wZXJ0eSB0byB0aGUgZGF0ZXBpY2tlci5cbiAgICAgICAgaWYgKHRoaXMuX2lucHV0RWxlbWVudCAmJiBtdXRhdGlvbnNMaXN0Py5zb21lKChlKSA9PiBlLmF0dHJpYnV0ZU5hbWUgPT09ICd2YWx1ZScpKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLl9pbnB1dEVsZW1lbnQuZ2V0QXR0cmlidXRlKCd2YWx1ZScpO1xuICAgICAgICAgIHRoaXMudmFsdWVBc0RhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5wYXJzZSh2YWx1ZSwgdGhpcy5ub3cpID8/IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIDogbnVsbDtcblxuICBwcml2YXRlIF9kYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXI8VD4gPSByZWFkQ29uZmlnKCkuZGF0ZXRpbWU/LmRhdGVBZGFwdGVyID8/IGRlZmF1bHREYXRlQWRhcHRlcjtcblxuICBwcml2YXRlIF9hYm9ydCA9IG5ldyBTYmJDb25uZWN0ZWRBYm9ydENvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKS53aXRoSGFuZGxlcigoKSA9PiB7XG4gICAgaWYgKHRoaXMuX2lucHV0RWxlbWVudCkge1xuICAgICAgaWYgKHRoaXMuX2lucHV0RWxlbWVudFBsYWNlaG9sZGVyTXV0YWJsZSkge1xuICAgICAgICB0aGlzLl9pbnB1dEVsZW1lbnQucGxhY2Vob2xkZXIgPSBpMThuRGF0ZVBpY2tlclBsYWNlaG9sZGVyW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudmFsdWVBc0RhdGUpIHtcbiAgICAgICAgdGhpcy5faW5wdXRFbGVtZW50LnZhbHVlID0gdGhpcy5fZm9ybWF0KHRoaXMudmFsdWVBc0RhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdkYXRlcGlja2VyQ29udHJvbFJlZ2lzdGVyZWQnLCAoKSA9PiB0aGlzLl9lbWl0SW5wdXRVcGRhdGVkKCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fYWJvcnQuc2lnbmFsLFxuICAgIH0pO1xuICAgIHRoaXMuX2F0dGFjaElucHV0KCk7XG4gICAgaWYgKHRoaXMuX2lucHV0RWxlbWVudCkge1xuICAgICAgdGhpcy5fZW1pdElucHV0VXBkYXRlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnaW5wdXQnKSkge1xuICAgICAgdGhpcy5fYXR0YWNoSW5wdXQoKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCd3aWRlJykgfHxcbiAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZGF0ZUZpbHRlcicpIHx8XG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25vdycpXG4gICAgKSB7XG4gICAgICB0aGlzLl9kYXRlUGlja2VyVXBkYXRlZC5lbWl0KCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3ZhbHVlQXNEYXRlJykpIHtcbiAgICAgIHRoaXMuX3NldEFyaWFMaXZlTWVzc2FnZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX2lucHV0T2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICB0aGlzLl9zZXRBcmlhTGl2ZU1lc3NhZ2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBpbnB1dCB2YWx1ZSB3aXRoIHRoZSBjb3JyZWN0IGRhdGUgZm9ybWF0LlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgcHJvcGVydHkgdmFsdWVBc0RhdGUgaW5zdGVhZC5cbiAgICovXG4gIHB1YmxpYyBnZXRWYWx1ZUFzRGF0ZSgpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZUFzRGF0ZSA/PyB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBpbnB1dCB2YWx1ZSB0byB0aGUgY29ycmVjdGx5IGZvcm1hdHRlZCB2YWx1ZS5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIHByb3BlcnR5IHZhbHVlQXNEYXRlIGluc3RlYWQuXG4gICAqL1xuICBwdWJsaWMgc2V0VmFsdWVBc0RhdGUoZGF0ZTogU2JiRGF0ZUxpa2U8VD4pOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlQXNEYXRlID0gZGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogV2hldGhlciBhIGN1c3RvbSBub3cgaXMgY29uZmlndXJlZC5cbiAgICovXG4gIHB1YmxpYyBoYXNDdXN0b21Ob3coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fbm93O1xuICB9XG5cbiAgcHJpdmF0ZSBfYXR0YWNoSW5wdXQoKTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBmaW5kSW5wdXQodGhpcywgdGhpcy5pbnB1dCk7XG4gICAgaWYgKHRoaXMuX2lucHV0RWxlbWVudCA9PT0gaW5wdXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2lucHV0RWxlbWVudCkge1xuICAgICAgdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgICB0aGlzLl9pbnB1dE9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgfVxuXG4gICAgdGhpcy5faW5wdXRFbGVtZW50ID0gaW5wdXQ7XG4gICAgaWYgKGlucHV0KSB7XG4gICAgICB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgIHRoaXMuX2lucHV0T2JzZXJ2ZXI/Lm9ic2VydmUoaW5wdXQsIHtcbiAgICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ2Rpc2FibGVkJywgJ3JlYWRvbmx5JywgJ21pbicsICdtYXgnLCAndmFsdWUnXSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnRQbGFjZWhvbGRlck11dGFibGUgPSAhaW5wdXQucGxhY2Vob2xkZXI7XG4gICAgICBpbnB1dC50eXBlID0gJ3RleHQnO1xuICAgICAgaWYgKHRoaXMuX2lucHV0RWxlbWVudFBsYWNlaG9sZGVyTXV0YWJsZSkge1xuICAgICAgICBpbnB1dC5wbGFjZWhvbGRlciA9IGkxOG5EYXRlUGlja2VyUGxhY2Vob2xkZXJbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9wdGlvbnM6IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zID0geyBzaWduYWw6IHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyLnNpZ25hbCB9O1xuICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB0aGlzLl9wYXJzZUlucHV0KCksIG9wdGlvbnMpO1xuICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4gdGhpcy5faGFuZGxlSW5wdXRDaGFuZ2UoKSwgb3B0aW9ucyk7XG4gICAgICB0aGlzLl9wYXJzZUlucHV0KHRydWUpO1xuICAgICAgdGhpcy5fdHJ5QXBwbHlGb3JtYXRUb0lucHV0KCk7XG4gICAgICB0aGlzLl92YWxpZGF0ZURhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9lbWl0SW5wdXRVcGRhdGVkKCk6IHZvaWQge1xuICAgIGNvbnN0IHsgZGlzYWJsZWQsIHJlYWRPbmx5OiByZWFkb25seSwgbWluLCBtYXggfSA9IHRoaXMuX2lucHV0RWxlbWVudCA/PyB7fTtcbiAgICB0aGlzLl9pbnB1dFVwZGF0ZWQuZW1pdCh7IGRpc2FibGVkLCByZWFkb25seSwgbWluLCBtYXggfSk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVJbnB1dENoYW5nZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdHJ5QXBwbHlGb3JtYXRUb0lucHV0KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fdmFsaWRhdGVEYXRlKCk7XG4gICAgdGhpcy5fc2V0QXJpYUxpdmVNZXNzYWdlKCk7XG4gICAgdGhpcy5fY2hhbmdlLmVtaXQoKTtcbiAgICB0aGlzLl9kaWRDaGFuZ2UuZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdHJ5QXBwbHlGb3JtYXRUb0lucHV0KCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5faW5wdXRFbGVtZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IHRoaXMudmFsdWVBc0RhdGUgPyB0aGlzLl9mb3JtYXQodGhpcy52YWx1ZUFzRGF0ZSEpIDogJyc7XG4gICAgaWYgKGZvcm1hdHRlZERhdGUgJiYgdGhpcy5faW5wdXRFbGVtZW50LnZhbHVlICE9PSBmb3JtYXR0ZWREYXRlKSB7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQudmFsdWUgPSBmb3JtYXR0ZWREYXRlO1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IElucHV0RXZlbnQoJ2lucHV0JywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KSk7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmFsaWRhdGVEYXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW5wdXRFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaXNFbXB0eU9yVmFsaWQgPVxuICAgICAgIXRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSB8fFxuICAgICAgKCEhdGhpcy52YWx1ZUFzRGF0ZSAmJlxuICAgICAgICBpc0RhdGVBdmFpbGFibGUoXG4gICAgICAgICAgdGhpcy52YWx1ZUFzRGF0ZSxcbiAgICAgICAgICB0aGlzLmRhdGVGaWx0ZXIsXG4gICAgICAgICAgdGhpcy5faW5wdXRFbGVtZW50Py5taW4sXG4gICAgICAgICAgdGhpcy5faW5wdXRFbGVtZW50Py5tYXgsXG4gICAgICAgICkpO1xuICAgIGNvbnN0IHdhc1ZhbGlkID0gIXRoaXMuX2lucHV0RWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLWludmFsaWQnKTtcbiAgICB0aGlzLl9pbnB1dEVsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCdkYXRhLXNiYi1pbnZhbGlkJywgIWlzRW1wdHlPclZhbGlkKTtcbiAgICBpZiAod2FzVmFsaWQgIT09IGlzRW1wdHlPclZhbGlkKSB7XG4gICAgICB0aGlzLl92YWxpZGF0aW9uQ2hhbmdlLmVtaXQoeyB2YWxpZDogaXNFbXB0eU9yVmFsaWQgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcGFyc2VJbnB1dChkZXNlcmlhbGl6ZUFzRmFsbGJhY2sgPSBmYWxzZSk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5faW5wdXRFbGVtZW50IS52YWx1ZTtcbiAgICBjb25zdCBwYXJzZSA9IHRoaXMuZGF0ZVBhcnNlciA/PyAoKHY6IHN0cmluZykgPT4gdGhpcy5fZGF0ZUFkYXB0ZXIucGFyc2UodiwgdGhpcy5ub3cpKTtcbiAgICAvLyBXZSBhcmUgYXNzaWduaW5nIGRpcmVjdGx5IHRvIHRoZSBwcml2YXRlIGJhY2tpbmcgcHJvcGVydHkgb2YgdmFsdWVBc0RhdGVcbiAgICAvLyBhcyB3ZSBkb24ndCB3YW50IHRvIHRyaWdnZXIgYSBibHVyIGV2ZW50IGR1cmluZyB0aGlzIHRpbWUuXG4gICAgdGhpcy5fdmFsdWVBc0RhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwocGFyc2UodmFsdWUpKTtcbiAgICBpZiAoZGVzZXJpYWxpemVBc0ZhbGxiYWNrICYmICF0aGlzLl92YWx1ZUFzRGF0ZSkge1xuICAgICAgdGhpcy5fdmFsdWVBc0RhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwoXG4gICAgICAgIHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZm9ybWF0KGRhdGU6IFQpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZvcm1hdCA/IHRoaXMuZm9ybWF0KGRhdGUpIDogdGhpcy5fZGF0ZUFkYXB0ZXIuZm9ybWF0KGRhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0QXJpYUxpdmVNZXNzYWdlKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRhaW5lckVsZW1lbnQ6IEhUTUxQYXJhZ3JhcGhFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCA9XG4gICAgICB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3I/LjxIVE1MUGFyYWdyYXBoRWxlbWVudD4oJyNzdGF0dXMtY29udGFpbmVyJyk7XG5cbiAgICBpZiAoIWNvbnRhaW5lckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnZhbHVlQXNEYXRlKSB7XG4gICAgICBjb250YWluZXJFbGVtZW50LmlubmVyVGV4dCA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZm9ybWF0KHRoaXMudmFsdWVBc0RhdGUsIHsgd2Vla2RheVN0eWxlOiAnbG9uZycgfSk7XG4gICAgICBjb250YWluZXJFbGVtZW50LmlubmVyVGV4dCA9IGAke2kxOG5EYXRlQ2hhbmdlZFRvW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke2RhdGV9YDtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGA8cCBpZD1cInN0YXR1cy1jb250YWluZXJcIiByb2xlPVwic3RhdHVzXCI+PC9wPmA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1kYXRlcGlja2VyJzogU2JiRGF0ZXBpY2tlckVsZW1lbnQ7XG4gIH1cblxuICBpbnRlcmZhY2UgR2xvYmFsRXZlbnRIYW5kbGVyc0V2ZW50TWFwIHtcbiAgICBpbnB1dFVwZGF0ZWQ6IEN1c3RvbUV2ZW50PFNiYklucHV0VXBkYXRlRXZlbnQ+O1xuICB9XG59XG4iXSwibmFtZXMiOlsiU2JiRGF0ZXBpY2tlckVsZW1lbnQiLCJf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
378
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICBMaXRFbGVtZW50LFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29yZS9jb25maWcuanMnO1xuaW1wb3J0IHsgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyLCBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IHR5cGUgRGF0ZUFkYXB0ZXIsIGRlZmF1bHREYXRlQWRhcHRlciB9IGZyb20gJy4uLy4uL2NvcmUvZGF0ZXRpbWUuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGZpbmRJbnB1dCwgZmluZFJlZmVyZW5jZWRFbGVtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBmb3J3YXJkRXZlbnRUb0hvc3QgfSBmcm9tICcuLi8uLi9jb3JlL2V2ZW50aW5nLmpzJztcbmltcG9ydCB7IGkxOG5EYXRlQ2hhbmdlZFRvLCBpMThuRGF0ZVBpY2tlclBsYWNlaG9sZGVyIH0gZnJvbSAnLi4vLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiRGF0ZUxpa2UsIFNiYlZhbGlkYXRpb25DaGFuZ2VFdmVudCB9IGZyb20gJy4uLy4uL2NvcmUvaW50ZXJmYWNlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVwaWNrZXJCdXR0b24gfSBmcm9tICcuLi9jb21tb24uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudCB9IGZyb20gJy4uL2RhdGVwaWNrZXItdG9nZ2xlLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZGF0ZXBpY2tlci5zY3NzP2xpdCZpbmxpbmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNiYklucHV0VXBkYXRlRXZlbnQge1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHJlYWRvbmx5PzogYm9vbGVhbjtcbiAgbWluPzogc3RyaW5nIHwgbnVtYmVyO1xuICBtYXg/OiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbi8qKlxuICogR2l2ZW4gYSBTYmJEYXRlcGlja2VyUHJldmlvdXNEYXlFbGVtZW50LCBhIFNiYkRhdGVwaWNrZXJOZXh0RGF5RWxlbWVudCBvciBhIFNiYkRhdGVwaWNrZXJUb2dnbGVFbGVtZW50IGNvbXBvbmVudCxcbiAqIGl0IHJldHVybnMgdGhlIHJlbGF0ZWQgU2JiRGF0ZXBpY2tlckVsZW1lbnQgcmVmZXJlbmNlLCBpZiBleGlzdHMuXG4gKiBAcGFyYW0gZWxlbWVudCBUaGUgZWxlbWVudCBwb3RlbnRpYWxseSBjb25uZWN0ZWQgdG8gdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50LlxuICogQHBhcmFtIHRyaWdnZXIgVGhlIGlkIG9yIHRoZSByZWZlcmVuY2Ugb2YgdGhlIFNiYkRhdGVQaWNrZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRlUGlja2VyPFQgPSBEYXRlPihcbiAgZWxlbWVudDogU2JiRGF0ZXBpY2tlckJ1dHRvbjxUPiB8IFNiYkRhdGVwaWNrZXJUb2dnbGVFbGVtZW50PFQ+LFxuICB0cmlnZ2VyPzogc3RyaW5nIHwgSFRNTEVsZW1lbnQsXG4pOiBTYmJEYXRlcGlja2VyRWxlbWVudDxUPiB8IG51bGwgfCB1bmRlZmluZWQge1xuICBpZiAoIXRyaWdnZXIpIHtcbiAgICByZXR1cm4gZWxlbWVudFxuICAgICAgLmNsb3Nlc3Q/Lignc2JiLWZvcm0tZmllbGQnKVxuICAgICAgPy5xdWVyeVNlbGVjdG9yPFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+Pignc2JiLWRhdGVwaWNrZXInKTtcbiAgfVxuXG4gIHJldHVybiBmaW5kUmVmZXJlbmNlZEVsZW1lbnQ8U2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD4+KHRyaWdnZXIpO1xufVxuXG5leHBvcnQgY29uc3QgZGF0ZXBpY2tlckNvbnRyb2xSZWdpc3RlcmVkRXZlbnRGYWN0b3J5ID0gKCk6IEN1c3RvbUV2ZW50ID0+XG4gIG5ldyBDdXN0b21FdmVudCgnZGF0ZXBpY2tlckNvbnRyb2xSZWdpc3RlcmVkJywge1xuICAgIGJ1YmJsZXM6IGZhbHNlLFxuICAgIGNvbXBvc2VkOiB0cnVlLFxuICB9KTtcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGEgbmF0aXZlIGlucHV0LCBpdCBkaXNwbGF5cyB0aGUgaW5wdXQncyB2YWx1ZSBhcyBhIGZvcm1hdHRlZCBkYXRlLlxuICpcbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGNoYW5nZSAtIE5vdGlmaWVzIHRoYXQgdGhlIGNvbm5lY3RlZCBpbnB1dCBoYXMgY2hhbmdlcy5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGlucHV0IC0gTm90aWZpZXMgdGhhdCB0aGUgY29ubmVjdGVkIGlucHV0IGZpcmVkIHRoZSBpbnB1dCBldmVudC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8U2JiSW5wdXRVcGRhdGVFdmVudD59IGlucHV0VXBkYXRlZCAtIE5vdGlmaWVzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGlucHV0IGNvbm5lY3RlZCB0byB0aGUgZGF0ZXBpY2tlciBoYXZlIGNoYW5nZXMuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBkYXRlUGlja2VyVXBkYXRlZCAtIE5vdGlmaWVzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGRhdGVwaWNrZXIgaGF2ZSBjaGFuZ2VzLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDxTYmJWYWxpZGF0aW9uQ2hhbmdlRXZlbnQ+fSB2YWxpZGF0aW9uQ2hhbmdlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGludGVybmFsIHZhbGlkYXRpb24gc3RhdGUgY2hhbmdlcy5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWRhdGVwaWNrZXInKVxuY2xhc3MgU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VCA9IERhdGU+IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBjaGFuZ2U6ICdjaGFuZ2UnLFxuICAgIGlucHV0VXBkYXRlZDogJ2lucHV0VXBkYXRlZCcsXG4gICAgZGF0ZVBpY2tlclVwZGF0ZWQ6ICdkYXRlUGlja2VyVXBkYXRlZCcsXG4gICAgdmFsaWRhdGlvbkNoYW5nZTogJ3ZhbGlkYXRpb25DaGFuZ2UnLFxuICB9IGFzIGNvbnN0O1xuXG4gIC8qKiBJZiBzZXQgdG8gdHJ1ZSwgdHdvIG1vbnRocyBhcmUgZGlzcGxheWVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3Igd2lkZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBBIGZ1bmN0aW9uIHVzZWQgdG8gZmlsdGVyIG91dCBkYXRlcy4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiBmYWxzZSB9KSBwdWJsaWMgYWNjZXNzb3IgZGF0ZUZpbHRlcjogKGRhdGU6IFQgfCBudWxsKSA9PiBib29sZWFuID0gKCkgPT5cbiAgICB0cnVlO1xuXG4gIC8qKiBSZWZlcmVuY2Ugb2YgdGhlIG5hdGl2ZSBpbnB1dCBjb25uZWN0ZWQgdG8gdGhlIGRhdGVwaWNrZXIuICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBhY2Nlc3NvciBpbnB1dDogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKiogQSBjb25maWd1cmVkIGRhdGUgd2hpY2ggYWN0cyBhcyB0aGUgY3VycmVudCBkYXRlIGluc3RlYWQgb2YgdGhlIHJlYWwgY3VycmVudCBkYXRlLiBSZWNvbW1lbmRlZCBmb3IgdGVzdGluZyBwdXJwb3Nlcy4gKi9cbiAgQHByb3BlcnR5KClcbiAgcHVibGljIHNldCBub3codmFsdWU6IFNiYkRhdGVMaWtlPFQ+IHwgbnVsbCkge1xuICAgIHRoaXMuX25vdyA9IHRoaXMuX2RhdGVBZGFwdGVyLmdldFZhbGlkRGF0ZU9yTnVsbCh0aGlzLl9kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSkpO1xuICB9XG4gIHB1YmxpYyBnZXQgbm93KCk6IFQge1xuICAgIHJldHVybiB0aGlzLl9ub3cgPz8gdGhpcy5fZGF0ZUFkYXB0ZXIudG9kYXkoKTtcbiAgfVxuICBwcml2YXRlIF9ub3c/OiBUIHwgbnVsbDtcblxuICAvKiogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBkYXRlIGFzIGEgRGF0ZSBvciBjdXN0b20gZGF0ZSBwcm92aWRlciBpbnN0YW5jZS4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiBmYWxzZSB9KVxuICBwdWJsaWMgc2V0IHZhbHVlQXNEYXRlKHZhbHVlOiBTYmJEYXRlTGlrZTxUPiB8IG51bGwpIHtcbiAgICB0aGlzLl92YWx1ZUFzRGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmdldFZhbGlkRGF0ZU9yTnVsbCh0aGlzLl9kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSkpO1xuICAgIGlmICh0aGlzLl90cnlBcHBseUZvcm1hdFRvSW5wdXQoKSkge1xuICAgICAgLyogRW1pdCBibHVyIGV2ZW50IHdoZW4gdmFsdWUgaXMgY2hhbmdlZCBwcm9ncmFtbWF0aWNhbGx5IHRvIG5vdGlmeVxuICAgICAgZnJhbWV3b3JrcyB0aGF0IHJlbHkgb24gdGhhdCBldmVudCB0byB1cGRhdGUgZm9ybSBzdGF0dXMuICovXG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQhLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdibHVyJywgeyBjb21wb3NlZDogdHJ1ZSB9KSk7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBnZXQgdmFsdWVBc0RhdGUoKTogVCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZUFzRGF0ZSA/PyBudWxsO1xuICB9XG4gIHByaXZhdGUgX3ZhbHVlQXNEYXRlPzogVCB8IG51bGw7XG5cbiAgLyoqIE5vdGlmaWVzIHRoYXQgdGhlIGNvbm5lY3RlZCBpbnB1dCBoYXMgY2hhbmdlcy4gKi9cbiAgcHJpdmF0ZSBfY2hhbmdlOiBFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKHRoaXMsIFNiYkRhdGVwaWNrZXJFbGVtZW50LmV2ZW50cy5jaGFuZ2UsIHtcbiAgICBidWJibGVzOiB0cnVlLFxuICB9KTtcblxuICAvKiogTm90aWZpZXMgdGhhdCB0aGUgYXR0cmlidXRlcyBvZiB0aGUgaW5wdXQgY29ubmVjdGVkIHRvIHRoZSBkYXRlcGlja2VyIGhhdmUgY2hhbmdlcy4gKi9cbiAgcHJpdmF0ZSBfaW5wdXRVcGRhdGVkOiBFdmVudEVtaXR0ZXI8U2JiSW5wdXRVcGRhdGVFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2JiRGF0ZXBpY2tlckVsZW1lbnQuZXZlbnRzLmlucHV0VXBkYXRlZCxcbiAgICB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUgfSxcbiAgKTtcblxuICAvKiogTm90aWZpZXMgdGhhdCB0aGUgYXR0cmlidXRlcyBvZiB0aGUgZGF0ZXBpY2tlciBoYXZlIGNoYW5nZXMuICovXG4gIHByaXZhdGUgX2RhdGVQaWNrZXJVcGRhdGVkOiBFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2JiRGF0ZXBpY2tlckVsZW1lbnQuZXZlbnRzLmRhdGVQaWNrZXJVcGRhdGVkLFxuICAgIHtcbiAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgIH0sXG4gICk7XG5cbiAgLyoqIEVtaXRzIHdoZW5ldmVyIHRoZSBpbnRlcm5hbCB2YWxpZGF0aW9uIHN0YXRlIGNoYW5nZXMuICovXG4gIHByaXZhdGUgX3ZhbGlkYXRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxTYmJWYWxpZGF0aW9uQ2hhbmdlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYkRhdGVwaWNrZXJFbGVtZW50LmV2ZW50cy52YWxpZGF0aW9uQ2hhbmdlLFxuICApO1xuXG4gIEBzdGF0ZSgpXG4gIHByaXZhdGUgYWNjZXNzb3IgX2lucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9pbnB1dEVsZW1lbnRQbGFjZWhvbGRlck11dGFibGUgPSBmYWxzZTtcblxuICBwcml2YXRlIF9kYXRlUGlja2VyQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcblxuICBwcml2YXRlIF9pbnB1dE9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zTGlzdCkgPT4ge1xuICAgICAgICB0aGlzLl9lbWl0SW5wdXRVcGRhdGVkKCk7XG4gICAgICAgIC8vIFRPRE86IERlY2lkZSB3aGV0aGVyIHRvIHJlbW92ZSB0aGlzIGxvZ2ljIGJ5IGFkZGluZyBhIHZhbHVlIHByb3BlcnR5IHRvIHRoZSBkYXRlcGlja2VyLlxuICAgICAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50ICYmIG11dGF0aW9uc0xpc3Q/LnNvbWUoKGUpID0+IGUuYXR0cmlidXRlTmFtZSA9PT0gJ3ZhbHVlJykpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2lucHV0RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJyk7XG4gICAgICAgICAgdGhpcy52YWx1ZUFzRGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLnBhcnNlKHZhbHVlLCB0aGlzLm5vdykgPz8gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgOiBudWxsO1xuXG4gIHByaXZhdGUgX2RhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxUPiA9IHJlYWRDb25maWcoKS5kYXRldGltZT8uZGF0ZUFkYXB0ZXIgPz8gZGVmYXVsdERhdGVBZGFwdGVyO1xuXG4gIHByaXZhdGUgX2Fib3J0ID0gbmV3IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2UgPSBuZXcgU2JiTGFuZ3VhZ2VDb250cm9sbGVyKHRoaXMpLndpdGhIYW5kbGVyKCgpID0+IHtcbiAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50KSB7XG4gICAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50UGxhY2Vob2xkZXJNdXRhYmxlKSB7XG4gICAgICAgIHRoaXMuX2lucHV0RWxlbWVudC5wbGFjZWhvbGRlciA9IGkxOG5EYXRlUGlja2VyUGxhY2Vob2xkZXJbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF07XG4gICAgICB9XG4gICAgICBpZiAodGhpcy52YWx1ZUFzRGF0ZSkge1xuICAgICAgICB0aGlzLl9pbnB1dEVsZW1lbnQudmFsdWUgPSB0aGlzLl9kYXRlQWRhcHRlci5mb3JtYXQodGhpcy52YWx1ZUFzRGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2RhdGVwaWNrZXJDb250cm9sUmVnaXN0ZXJlZCcsICgpID0+IHRoaXMuX2VtaXRJbnB1dFVwZGF0ZWQoKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9hYm9ydC5zaWduYWwsXG4gICAgfSk7XG4gICAgdGhpcy5fYXR0YWNoSW5wdXQoKTtcbiAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50KSB7XG4gICAgICB0aGlzLl9lbWl0SW5wdXRVcGRhdGVkKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdpbnB1dCcpKSB7XG4gICAgICB0aGlzLl9hdHRhY2hJbnB1dCgpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3dpZGUnKSB8fFxuICAgICAgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkYXRlRmlsdGVyJykgfHxcbiAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbm93JylcbiAgICApIHtcbiAgICAgIHRoaXMuX2RhdGVQaWNrZXJVcGRhdGVkLmVtaXQoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygndmFsdWVBc0RhdGUnKSkge1xuICAgICAgdGhpcy5fc2V0QXJpYUxpdmVNZXNzYWdlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5faW5wdXRPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyPy5hYm9ydCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIHRoaXMuX3NldEFyaWFMaXZlTWVzc2FnZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBXaGV0aGVyIGEgY3VzdG9tIG5vdyBpcyBjb25maWd1cmVkLlxuICAgKi9cbiAgcHVibGljIGhhc0N1c3RvbU5vdygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9ub3c7XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hJbnB1dCgpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dCA9IGZpbmRJbnB1dCh0aGlzLCB0aGlzLmlucHV0KTtcbiAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50ID09PSBpbnB1dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAodGhpcy5faW5wdXRFbGVtZW50KSB7XG4gICAgICB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICAgIHRoaXMuX2lucHV0T2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9pbnB1dEVsZW1lbnQgPSBpbnB1dDtcbiAgICBpZiAoaW5wdXQpIHtcbiAgICAgIHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgdGhpcy5faW5wdXRPYnNlcnZlcj8ub2JzZXJ2ZShpbnB1dCwge1xuICAgICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnZGlzYWJsZWQnLCAncmVhZG9ubHknLCAnbWluJywgJ21heCcsICd2YWx1ZSddLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudFBsYWNlaG9sZGVyTXV0YWJsZSA9ICFpbnB1dC5wbGFjZWhvbGRlcjtcbiAgICAgIGlucHV0LnR5cGUgPSAndGV4dCc7XG4gICAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50UGxhY2Vob2xkZXJNdXRhYmxlKSB7XG4gICAgICAgIGlucHV0LnBsYWNlaG9sZGVyID0gaTE4bkRhdGVQaWNrZXJQbGFjZWhvbGRlclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb3B0aW9uczogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7IHNpZ25hbDogdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXIuc2lnbmFsIH07XG4gICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnaW5wdXQnLFxuICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgIGZvcndhcmRFdmVudFRvSG9zdChlLCB0aGlzKTtcbiAgICAgICAgICB0aGlzLl9wYXJzZUlucHV0KCk7XG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApO1xuICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4gdGhpcy5faGFuZGxlSW5wdXRDaGFuZ2UoKSwgb3B0aW9ucyk7XG4gICAgICB0aGlzLl9wYXJzZUlucHV0KHRydWUpO1xuICAgICAgdGhpcy5fdHJ5QXBwbHlGb3JtYXRUb0lucHV0KCk7XG4gICAgICB0aGlzLl92YWxpZGF0ZURhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9lbWl0SW5wdXRVcGRhdGVkKCk6IHZvaWQge1xuICAgIGNvbnN0IHsgZGlzYWJsZWQsIHJlYWRPbmx5OiByZWFkb25seSwgbWluLCBtYXggfSA9IHRoaXMuX2lucHV0RWxlbWVudCA/PyB7fTtcbiAgICB0aGlzLl9pbnB1dFVwZGF0ZWQuZW1pdCh7IGRpc2FibGVkLCByZWFkb25seSwgbWluLCBtYXggfSk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVJbnB1dENoYW5nZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdHJ5QXBwbHlGb3JtYXRUb0lucHV0KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fdmFsaWRhdGVEYXRlKCk7XG4gICAgdGhpcy5fc2V0QXJpYUxpdmVNZXNzYWdlKCk7XG4gICAgdGhpcy5fY2hhbmdlLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3RyeUFwcGx5Rm9ybWF0VG9JbnB1dCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuX2lucHV0RWxlbWVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB0aGlzLnZhbHVlQXNEYXRlID8gdGhpcy5fZGF0ZUFkYXB0ZXIuZm9ybWF0KHRoaXMudmFsdWVBc0RhdGUhKSA6ICcnO1xuICAgIGlmIChmb3JtYXR0ZWREYXRlICYmIHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSAhPT0gZm9ybWF0dGVkRGF0ZSkge1xuICAgICAgLy8gSW4gb3JkZXIgdG8gc3VwcG9ydCBSZWFjdCBvbkNoYW5nZSBldmVudCwgd2UgaGF2ZSB0byBnZXQgdGhlIHNldHRlciBhbmQgY2FsbCBpdC5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTE2MDAjaXNzdWVjb21tZW50LTM0NTgxMzEzMFxuICAgICAgY29uc3Qgc2V0VmFsdWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlLCAndmFsdWUnKSEuc2V0ITtcbiAgICAgIHNldFZhbHVlLmNhbGwodGhpcy5faW5wdXRFbGVtZW50LCBmb3JtYXR0ZWREYXRlKTtcblxuICAgICAgdGhpcy5faW5wdXRFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IElucHV0RXZlbnQoJ2lucHV0JywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KSk7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmFsaWRhdGVEYXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW5wdXRFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaXNFbXB0eU9yVmFsaWQgPSAhdGhpcy5faW5wdXRFbGVtZW50LnZhbHVlIHx8IHRoaXMuX2lzRGF0ZUF2YWlsYWJsZSgpO1xuICAgIGNvbnN0IHdhc1ZhbGlkID0gIXRoaXMuX2lucHV0RWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLWludmFsaWQnKTtcbiAgICB0aGlzLl9pbnB1dEVsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCdkYXRhLXNiYi1pbnZhbGlkJywgIWlzRW1wdHlPclZhbGlkKTtcbiAgICBpZiAod2FzVmFsaWQgIT09IGlzRW1wdHlPclZhbGlkKSB7XG4gICAgICB0aGlzLl92YWxpZGF0aW9uQ2hhbmdlLmVtaXQoeyB2YWxpZDogaXNFbXB0eU9yVmFsaWQgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcGFyc2VJbnB1dChkZXNlcmlhbGl6ZUFzRmFsbGJhY2sgPSBmYWxzZSk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5faW5wdXRFbGVtZW50IS52YWx1ZTtcbiAgICAvLyBXZSBhcmUgYXNzaWduaW5nIGRpcmVjdGx5IHRvIHRoZSBwcml2YXRlIGJhY2tpbmcgcHJvcGVydHkgb2YgdmFsdWVBc0RhdGVcbiAgICAvLyBhcyB3ZSBkb24ndCB3YW50IHRvIHRyaWdnZXIgYSBibHVyIGV2ZW50IGR1cmluZyB0aGlzIHRpbWUuXG4gICAgdGhpcy5fdmFsdWVBc0RhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwoXG4gICAgICB0aGlzLl9kYXRlQWRhcHRlci5wYXJzZSh2YWx1ZSwgdGhpcy5ub3cpLFxuICAgICk7XG4gICAgaWYgKGRlc2VyaWFsaXplQXNGYWxsYmFjayAmJiAhdGhpcy5fdmFsdWVBc0RhdGUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlQXNEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKFxuICAgICAgICB0aGlzLl9kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldEFyaWFMaXZlTWVzc2FnZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjb250YWluZXJFbGVtZW50OiBIVE1MUGFyYWdyYXBoRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQgPVxuICAgICAgdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPy48SFRNTFBhcmFncmFwaEVsZW1lbnQ+KCcjc3RhdHVzLWNvbnRhaW5lcicpO1xuXG4gICAgaWYgKCFjb250YWluZXJFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmICghdGhpcy52YWx1ZUFzRGF0ZSkge1xuICAgICAgY29udGFpbmVyRWxlbWVudC5pbm5lclRleHQgPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmZvcm1hdCh0aGlzLnZhbHVlQXNEYXRlLCB7IHdlZWtkYXlTdHlsZTogJ2xvbmcnIH0pO1xuICAgICAgY29udGFpbmVyRWxlbWVudC5pbm5lclRleHQgPSBgJHtpMThuRGF0ZUNoYW5nZWRUb1t0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0gJHtkYXRlfWA7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgPHAgaWQ9XCJzdGF0dXMtY29udGFpbmVyXCIgcm9sZT1cInN0YXR1c1wiPjwvcD5gO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIGZpcnN0IGF2YWlsYWJsZSBkYXRlIGJlZm9yZSB0aGUgZ2l2ZW4gb25lLFxuICAgKiBjb25zaWRlcmluZyB0aGUgU2JiRGF0ZXBpY2tlckVsZW1lbnQgYGRhdGVGaWx0ZXJgIHByb3BlcnR5IGFuZCBgbWluYCBwYXJhbWV0ZXIgKGUuZy4gZnJvbSB0aGUgc2VsZi1uYW1lZCBpbnB1dCdzIGF0dHJpYnV0ZSkuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlIGZvciBjYWxjdWxhdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgZmluZFByZXZpb3VzQXZhaWxhYmxlRGF0ZShkYXRlOiBUKTogVCB7XG4gICAgY29uc3QgcHJldmlvdXNEYXRlID0gdGhpcy5fZmluZEF2YWlsYWJsZURhdGUoZGF0ZSwgLTEpO1xuICAgIGNvbnN0IGRhdGVNaW4gPSB0aGlzLl9kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh0aGlzLl9pbnB1dEVsZW1lbnQ/Lm1pbik7XG5cbiAgICBpZiAoXG4gICAgICAhZGF0ZU1pbiB8fFxuICAgICAgKHRoaXMuX2RhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1pbikgJiZcbiAgICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUocHJldmlvdXNEYXRlLCBkYXRlTWluKSA+PSAwKVxuICAgICkge1xuICAgICAgcmV0dXJuIHByZXZpb3VzRGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgZmlyc3QgYXZhaWxhYmxlIGRhdGUgYWZ0ZXIgdGhlIGdpdmVuIG9uZSxcbiAgICogY29uc2lkZXJpbmcgdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50IGBkYXRlRmlsdGVyYCBwcm9wZXJ0eSBhbmQgYG1heGAgcGFyYW1ldGVyIChlLmcuIGZyb20gdGhlIHNlbGYtbmFtZWQgaW5wdXQncyBhdHRyaWJ1dGUpLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZSBmb3IgY2FsY3VsYXRpb25zLlxuICAgKi9cbiAgcHVibGljIGZpbmROZXh0QXZhaWxhYmxlRGF0ZShkYXRlOiBUKTogVCB7XG4gICAgY29uc3QgbmV4dERhdGUgPSB0aGlzLl9maW5kQXZhaWxhYmxlRGF0ZShkYXRlLCAxKTtcbiAgICBjb25zdCBkYXRlTWF4ID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodGhpcy5faW5wdXRFbGVtZW50Py5tYXgpO1xuXG4gICAgaWYgKFxuICAgICAgIWRhdGVNYXggfHxcbiAgICAgICh0aGlzLl9kYXRlQWRhcHRlci5pc1ZhbGlkKGRhdGVNYXgpICYmIHRoaXMuX2RhdGVBZGFwdGVyLmNvbXBhcmVEYXRlKG5leHREYXRlLCBkYXRlTWF4KSA8PSAwKVxuICAgICkge1xuICAgICAgcmV0dXJuIG5leHREYXRlO1xuICAgIH1cbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBmaXJzdCBhdmFpbGFibGUgZGF0ZSBiZWZvcmUgb3IgYWZ0ZXIgYSBnaXZlbiBvbmUsIGNvbnNpZGVyaW5nIHRoZSBgZGF0ZUZpbHRlcmAgcHJvcGVydHkuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlIGZvciBjYWxjdWxhdGlvbnMuXG4gICAqIEBwYXJhbSBkZWx0YSBUaGUgbnVtYmVyIG9mIGRheXMgdG8gYWRkL3N1YnRyYWN0IGZyb20gdGhlIHN0YXJ0aW5nIG9uZS5cbiAgICovXG4gIHByaXZhdGUgX2ZpbmRBdmFpbGFibGVEYXRlKGRhdGU6IFQsIGRlbHRhOiBudW1iZXIpOiBUIHtcbiAgICBsZXQgYXZhaWxhYmxlRGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmFkZENhbGVuZGFyRGF5cyhkYXRlLCBkZWx0YSk7XG5cbiAgICBpZiAodGhpcy5kYXRlRmlsdGVyKSB7XG4gICAgICB3aGlsZSAoIXRoaXMuZGF0ZUZpbHRlcihhdmFpbGFibGVEYXRlKSkge1xuICAgICAgICBhdmFpbGFibGVEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuYWRkQ2FsZW5kYXJEYXlzKGF2YWlsYWJsZURhdGUsIGRlbHRhKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYXZhaWxhYmxlRGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdmFsdWVBc0RhdGUgaXMgdmFsaWQsIGNvbnNpZGVyaW5nIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudCBgZGF0ZUZpbHRlcmAgcHJvcGVydHlcbiAgICogYW5kIGBtaW5gIGFuZCBgbWF4YCBwYXJhbWV0ZXJzIChlLmcuIGZyb20gdGhlIHNlbGYtbmFtZWQgaW5wdXQncyBhdHRyaWJ1dGVzKS5cbiAgICovXG4gIHByaXZhdGUgX2lzRGF0ZUF2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMudmFsdWVBc0RhdGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRlTWluID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodGhpcy5faW5wdXRFbGVtZW50Py5taW4pO1xuICAgIGNvbnN0IGRhdGVNYXggPSB0aGlzLl9kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh0aGlzLl9pbnB1dEVsZW1lbnQ/Lm1heCk7XG5cbiAgICBpZiAoXG4gICAgICAodGhpcy5fZGF0ZUFkYXB0ZXIuaXNWYWxpZChkYXRlTWluKSAmJlxuICAgICAgICB0aGlzLl9kYXRlQWRhcHRlci5jb21wYXJlRGF0ZSh0aGlzLnZhbHVlQXNEYXRlLCBkYXRlTWluISkgPCAwKSB8fFxuICAgICAgKHRoaXMuX2RhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1heCkgJiZcbiAgICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUodGhpcy52YWx1ZUFzRGF0ZSwgZGF0ZU1heCEpID4gMClcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kYXRlRmlsdGVyID8gdGhpcy5kYXRlRmlsdGVyKHRoaXMudmFsdWVBc0RhdGUpIDogdHJ1ZTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRhdGVwaWNrZXInOiBTYmJEYXRlcGlja2VyRWxlbWVudDtcbiAgfVxuXG4gIGludGVyZmFjZSBHbG9iYWxFdmVudEhhbmRsZXJzRXZlbnRNYXAge1xuICAgIGlucHV0VXBkYXRlZDogQ3VzdG9tRXZlbnQ8U2JiSW5wdXRVcGRhdGVFdmVudD47XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJTYmJEYXRlcGlja2VyRWxlbWVudCIsIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0NnQixTQUFBLGNBQ2QsU0FDQSxTQUE4Qjs7QUFFOUIsTUFBSSxDQUFDLFNBQVM7QUFDWixZQUFPLG1CQUNKLFlBREksaUNBQ00sc0JBRE4sbUJBRUgsY0FBdUM7QUFBQSxFQUFnQjtBQUc3RCxTQUFPLHNCQUErQyxPQUFPO0FBQy9EO0FBRU8sTUFBTSwwQ0FBMEMsTUFDckQsSUFBSSxZQUFZLCtCQUErQjtBQUFBLEVBQzdDLFNBQVM7QUFBQSxFQUNULFVBQVU7QUFDWCxDQUFBO0lBYUcsd0JBQW9CLE1BQUE7OzBCQUR6QixjQUFjLGdCQUFnQixDQUFDOzs7O29CQUNhOzs7Ozs7Ozs7Ozs7Ozs7O0FBQVJBLE1BQUFBLHlCQUFBLG1CQUFRLFlBQVU7QUFBQTs7O0FBWXJEO0FBR2dDO0FBSXBCO0FBd0RaO0FBM0VJLHlCQUFBLHlCQUFBLGtCQUFBLE1BQUEsMEJBQUEsR0FZNEIsa0JBQUEsTUFBQSxvQkFBQSxLQUFLO0FBR1cseUJBQUEsK0JBQUEsa0JBQUEsTUFBQSx1QkFBQSxHQUFBLGtCQUFBLE1BQUEsMEJBQTBDLE1BQ3hGLElBQUk7QUFHc0IseUJBQUEsMEJBQUEsa0JBQUEsTUFBQSw2QkFBQSxHQUFBLGtCQUFBLE1BQUEscUJBQXFDLElBQUk7QUFVN0QsV0FBQSxPQUFnQixrQkFBQSxNQUFBLHdCQUFBO0FBa0JoQixXQUFPLFVBQWlCLElBQUksYUFBYSxNQUFNQSxzQkFBcUIsT0FBTyxRQUFRO0FBQUEsUUFDekYsU0FBUztBQUFBLE1BQUEsQ0FDVjtBQUdPLFdBQWEsZ0JBQXNDLElBQUksYUFDN0QsTUFDQUEsc0JBQXFCLE9BQU8sY0FDNUIsRUFBRSxTQUFTLE1BQU0sWUFBWSxLQUFBLENBQU07QUFJN0IsV0FB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
@@ -28,6 +28,9 @@ export declare class SbbDialogElement extends SbbOverlayBaseElement {
28
28
  protected closeAttribute: string;
29
29
  /** Opens the component. */
30
30
  open(): void;
31
+ protected isZeroAnimationDuration(): boolean;
32
+ protected handleClosing(): void;
33
+ private _handleOpening;
31
34
  connectedCallback(): void;
32
35
  protected firstUpdated(changedProperties: PropertyValues<this>): void;
33
36
  protected willUpdate(changedProperties: PropertyValues<this>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../../../src/elements/dialog/dialog/dialog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAM1E,OAAO,EAAe,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAMtE,OAAO,6BAA6B,CAAC;AAIrC;;;;;;;;;;;GAWG;AACH,qBAEM,gBAAiB,SAAQ,qBAAqB;IAClD,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,6BAA6B;IAC7B,SAA4D,cAAc,EAAE,OAAO,GAAG,MAAM,CAClF;IAMV,OAAO,CAAC,4BAA4B,CAIjC;IAEH,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,qBAAqB,CAA4B;IACzD,OAAO,CAAC,qBAAqB,CAAwC;IACrE,OAAO,CAAC,2BAA2B,CAAkB;IACrD,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,SAAS,CAA4B;IAC7C,SAAS,CAAC,cAAc,EAAE,MAAM,CAAsB;IAEtD,2BAA2B;IACpB,IAAI,IAAI,IAAI;IA2BH,iBAAiB,IAAI,IAAI;cAYtB,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAO3D,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAQzD,uBAAuB,IAAI,IAAI;IAgBlD,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAwC5D,SAAS,CAAC,eAAe,IAAI,IAAI;IAQjC,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,gBAAgB;IAqCxB,OAAO,CAAC,oBAAoB,CAS1B;IAGF,OAAO,CAAC,qBAAqB,CAc3B;IAEF,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,0BAA0B;cAMf,MAAM,IAAI,cAAc;CAmB5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,YAAY,EAAE,gBAAgB,CAAC;KAChC;CACF"}
1
+ {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../../../src/elements/dialog/dialog/dialog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAM1E,OAAO,EAAe,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAMtE,OAAO,6BAA6B,CAAC;AAIrC;;;;;;;;;;;GAWG;AACH,qBAEM,gBAAiB,SAAQ,qBAAqB;IAClD,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,6BAA6B;IAC7B,SAA4D,cAAc,EAAE,OAAO,GAAG,MAAM,CAClF;IAMV,OAAO,CAAC,4BAA4B,CAIjC;IAEH,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,qBAAqB,CAA4B;IACzD,OAAO,CAAC,qBAAqB,CAAwC;IACrE,OAAO,CAAC,2BAA2B,CAAkB;IACrD,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,SAAS,CAA4B;IAC7C,SAAS,CAAC,cAAc,EAAE,MAAM,CAAsB;IAEtD,2BAA2B;IACpB,IAAI,IAAI,IAAI;IAiCnB,SAAS,CAAC,uBAAuB,IAAI,OAAO;IAI5C,SAAS,CAAC,aAAa,IAAI,IAAI;IAwB/B,OAAO,CAAC,cAAc;IAeN,iBAAiB,IAAI,IAAI;cAYtB,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAO3D,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAQzD,uBAAuB,IAAI,IAAI;IAgBlD,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAS5D,SAAS,CAAC,eAAe,IAAI,IAAI;IAQjC,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,gBAAgB;IAqCxB,OAAO,CAAC,oBAAoB,CAS1B;IAGF,OAAO,CAAC,qBAAqB,CAc3B;IAEF,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,0BAA0B;cAMf,MAAM,IAAI,cAAc;CAe5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,YAAY,EAAE,gBAAgB,CAAC;KAChC;CACF"}