@sbb-esta/lyne-elements-experimental-dev 4.7.0-dev.1773388997 → 4.7.0-dev.1773393170

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 (200) hide show
  1. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +76 -65
  2. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +52 -72
  3. package/autocomplete-grid/autocomplete-grid-button.js +6 -3
  4. package/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.js +17 -2
  5. package/autocomplete-grid/autocomplete-grid-cell.js +7 -4
  6. package/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.component.js +21 -20
  7. package/autocomplete-grid/autocomplete-grid-optgroup.js +6 -3
  8. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +33 -2
  9. package/autocomplete-grid/autocomplete-grid-option.js +9 -4
  10. package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +22 -2
  11. package/autocomplete-grid/autocomplete-grid-row.js +7 -4
  12. package/autocomplete-grid/autocomplete-grid.js +6 -3
  13. package/autocomplete-grid.js +21 -9
  14. package/autocomplete-grid.pure.js +15 -7
  15. package/core/datetime/date-helper.js +191 -2
  16. package/core/datetime.js +5 -2
  17. package/core/timetable/access-leg-helper.js +71 -76
  18. package/core/timetable/timetable-helper.js +11 -9
  19. package/core/timetable/timetable-properties.js +1 -0
  20. package/core/timetable.js +7 -3
  21. package/custom-elements.json +84 -84
  22. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +122 -114
  23. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +70 -92
  24. package/development/autocomplete-grid/autocomplete-grid-button.js +4 -6
  25. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.js +29 -2
  26. package/development/autocomplete-grid/autocomplete-grid-cell.js +5 -7
  27. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.component.js +22 -27
  28. package/development/autocomplete-grid/autocomplete-grid-optgroup.js +4 -6
  29. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +109 -2
  30. package/development/autocomplete-grid/autocomplete-grid-option.js +7 -7
  31. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +91 -2
  32. package/development/autocomplete-grid/autocomplete-grid-row.js +5 -7
  33. package/development/autocomplete-grid/autocomplete-grid.js +4 -6
  34. package/development/autocomplete-grid.js +14 -10
  35. package/development/autocomplete-grid.pure.js +13 -4
  36. package/development/core/datetime/date-helper.js +285 -2
  37. package/development/core/datetime.js +6 -2
  38. package/development/core/timetable/access-leg-helper.js +82 -104
  39. package/development/core/timetable/timetable-helper.js +17 -16
  40. package/development/core/timetable/timetable-properties.js +2 -0
  41. package/development/core/timetable.js +8 -3
  42. package/development/differenceInMinutes-B0dawX-5.js +26 -0
  43. package/development/format-BMkeaqaF.js +1433 -0
  44. package/development/isValid-BYRch7pV.js +53 -0
  45. package/development/journey-summary/journey-summary.component.js +288 -2
  46. package/development/journey-summary.js +5 -8
  47. package/development/journey-summary.pure.js +5 -2
  48. package/development/pearl-chain/pearl-chain.component.js +634 -2
  49. package/development/pearl-chain-time/pearl-chain-time.component.js +306 -2
  50. package/development/pearl-chain-time.js +5 -8
  51. package/development/pearl-chain-time.pure.js +5 -2
  52. package/development/pearl-chain-vertical/pearl-chain-vertical.component.js +28 -2
  53. package/development/pearl-chain-vertical-item/pearl-chain-vertical-item.component.js +393 -2
  54. package/development/pearl-chain-vertical-item.js +5 -8
  55. package/development/pearl-chain-vertical-item.pure.js +5 -2
  56. package/development/pearl-chain-vertical.js +5 -8
  57. package/development/pearl-chain-vertical.pure.js +5 -2
  58. package/development/pearl-chain.js +5 -8
  59. package/development/pearl-chain.pure.js +5 -2
  60. package/development/seat-reservation/common/mapper/icon-mapper.js +71 -168
  61. package/development/seat-reservation/common/mapper/mapper.js +122 -153
  62. package/development/seat-reservation/common/mapper/sample-data/seat-reservation-sample-data-bus.js +559 -570
  63. package/development/seat-reservation/common/mapper/sample-data/seat-reservation-sample-data-decks.js +972 -992
  64. package/development/seat-reservation/common/mapper/sample-data/seat-reservation-sample-data-giruno.js +20367 -20334
  65. package/development/seat-reservation/common/mapper/sample-data/seat-reservation-sample-data-others.js +1738 -1731
  66. package/development/seat-reservation/common/mapper/sample-data/seat-reservation-sample-data-train.js +9782 -9741
  67. package/development/seat-reservation/common/mapper.js +8 -1
  68. package/development/seat-reservation/common/svgs.js +46 -2
  69. package/development/seat-reservation/common/translations/i18n.js +900 -1118
  70. package/development/seat-reservation/common/translations.js +4 -1
  71. package/development/seat-reservation/common/types.js +2 -0
  72. package/development/seat-reservation/common.js +11 -7
  73. package/development/seat-reservation/seat-reservation/seat-reservation-base-element.js +1230 -1305
  74. package/development/seat-reservation/seat-reservation/seat-reservation.component.js +859 -2
  75. package/development/seat-reservation/seat-reservation-area/seat-reservation-area.component.js +106 -2
  76. package/development/seat-reservation/seat-reservation-area.js +5 -7
  77. package/development/seat-reservation/seat-reservation-graphic/seat-reservation-assets.js +34 -35
  78. package/development/seat-reservation/seat-reservation-graphic/seat-reservation-graphic.component.js +162 -2
  79. package/development/seat-reservation/seat-reservation-graphic.js +5 -7
  80. package/development/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.js +713 -2
  81. package/development/seat-reservation/seat-reservation-navigation-coach.js +5 -7
  82. package/development/seat-reservation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.js +131 -2
  83. package/development/seat-reservation/seat-reservation-navigation-services.js +5 -7
  84. package/development/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.js +601 -2
  85. package/development/seat-reservation/seat-reservation-place-control.js +5 -7
  86. package/development/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.js +22 -2
  87. package/development/seat-reservation/seat-reservation-scoped.js +5 -7
  88. package/development/seat-reservation/seat-reservation.js +6 -7
  89. package/development/seat-reservation.js +28 -15
  90. package/development/seat-reservation.pure.js +28 -10
  91. package/development/timetable-duration/timetable-duration.component.js +108 -2
  92. package/development/timetable-duration.js +5 -8
  93. package/development/timetable-duration.pure.js +5 -2
  94. package/development/timetable-row/timetable-row.component.js +781 -2
  95. package/development/timetable-row.js +13 -8
  96. package/development/timetable-row.pure.js +12 -2
  97. package/development/toDate-BWb6Z1JD.js +24 -0
  98. package/differenceInMinutes-COvvdYsJ.js +23 -0
  99. package/format-CmKROkbc.js +1186 -0
  100. package/isValid-m3_OsPaB.js +45 -0
  101. package/journey-summary/journey-summary.component.js +194 -2
  102. package/journey-summary.js +4 -5
  103. package/journey-summary.pure.js +4 -2
  104. package/package.json +2 -2
  105. package/pearl-chain/pearl-chain.component.js +165 -2
  106. package/pearl-chain-time/pearl-chain-time.component.js +157 -2
  107. package/pearl-chain-time.js +4 -5
  108. package/pearl-chain-time.pure.js +4 -2
  109. package/pearl-chain-vertical/pearl-chain-vertical.component.js +17 -2
  110. package/pearl-chain-vertical-item/pearl-chain-vertical-item.component.js +77 -2
  111. package/pearl-chain-vertical-item.js +4 -5
  112. package/pearl-chain-vertical-item.pure.js +4 -2
  113. package/pearl-chain-vertical.js +4 -5
  114. package/pearl-chain-vertical.pure.js +4 -2
  115. package/pearl-chain.js +4 -5
  116. package/pearl-chain.pure.js +4 -2
  117. package/seat-reservation/common/mapper/icon-mapper.js +71 -71
  118. package/seat-reservation/common/mapper/mapper.js +89 -95
  119. package/seat-reservation/common/mapper/sample-data/seat-reservation-sample-data-bus.js +558 -568
  120. package/seat-reservation/common/mapper/sample-data/seat-reservation-sample-data-decks.js +970 -989
  121. package/seat-reservation/common/mapper/sample-data/seat-reservation-sample-data-giruno.js +20366 -20332
  122. package/seat-reservation/common/mapper/sample-data/seat-reservation-sample-data-others.js +1737 -1729
  123. package/seat-reservation/common/mapper/sample-data/seat-reservation-sample-data-train.js +9781 -9739
  124. package/seat-reservation/common/mapper.js +9 -3
  125. package/seat-reservation/common/svgs.js +243 -2
  126. package/seat-reservation/common/translations/i18n.js +891 -1084
  127. package/seat-reservation/common/translations.js +4 -2
  128. package/seat-reservation/common/types.js +1 -0
  129. package/seat-reservation/common.js +15 -9
  130. package/seat-reservation/seat-reservation/seat-reservation-base-element.js +810 -832
  131. package/seat-reservation/seat-reservation/seat-reservation.component.js +420 -2
  132. package/seat-reservation/seat-reservation-area/seat-reservation-area.component.js +51 -2
  133. package/seat-reservation/seat-reservation-area.js +7 -4
  134. package/seat-reservation/seat-reservation-graphic/seat-reservation-assets.js +71 -68
  135. package/seat-reservation/seat-reservation-graphic/seat-reservation-graphic.component.js +75 -2
  136. package/seat-reservation/seat-reservation-graphic.js +7 -4
  137. package/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.js +234 -2
  138. package/seat-reservation/seat-reservation-navigation-coach.js +7 -4
  139. package/seat-reservation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.js +85 -2
  140. package/seat-reservation/seat-reservation-navigation-services.js +7 -4
  141. package/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.js +203 -2
  142. package/seat-reservation/seat-reservation-place-control.js +7 -4
  143. package/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.js +13 -2
  144. package/seat-reservation/seat-reservation-scoped.js +7 -4
  145. package/seat-reservation/seat-reservation.js +9 -5
  146. package/seat-reservation.js +39 -17
  147. package/seat-reservation.pure.js +32 -15
  148. package/timetable-duration/timetable-duration.component.js +57 -2
  149. package/timetable-duration.js +4 -5
  150. package/timetable-duration.pure.js +4 -2
  151. package/timetable-row/timetable-row.component.js +427 -2
  152. package/timetable-row.js +13 -6
  153. package/timetable-row.pure.js +11 -2
  154. package/toDate-Bw2KTWeq.js +15 -0
  155. package/autocomplete-grid-cell.component-Dak9wlBr.js +0 -24
  156. package/autocomplete-grid-option.component-DNRFHOwc.js +0 -37
  157. package/autocomplete-grid-row.component-DBHZQ0GQ.js +0 -27
  158. package/date-helper-CGproP5d.js +0 -185
  159. package/development/autocomplete-grid-cell.component-BBvM4o2H.js +0 -42
  160. package/development/autocomplete-grid-option.component-QzfM5eIE.js +0 -123
  161. package/development/autocomplete-grid-row.component-H8sCTCkT.js +0 -104
  162. package/development/date-helper-8_Y-PuHh.js +0 -520
  163. package/development/differenceInMinutes-DN_1Rk3O.js +0 -110
  164. package/development/format-Bbrn2bgo.js +0 -1848
  165. package/development/isValid-C-HzKv4v.js +0 -178
  166. package/development/journey-summary.component-uGhZvA4p.js +0 -385
  167. package/development/pearl-chain-time.component-B8mayTWD.js +0 -415
  168. package/development/pearl-chain-vertical-item.component-BDzbcIaf.js +0 -435
  169. package/development/pearl-chain-vertical.component-CswE7b3M.js +0 -39
  170. package/development/pearl-chain.component-wpsTvoSe.js +0 -704
  171. package/development/seat-reservation-area.component-BK92ZtFo.js +0 -138
  172. package/development/seat-reservation-graphic.component-cUnsHh5x.js +0 -193
  173. package/development/seat-reservation-navigation-coach.component-D6Bglus8.js +0 -828
  174. package/development/seat-reservation-navigation-services.component-DYJ6Ddkg.js +0 -179
  175. package/development/seat-reservation-place-control.component-Bg9evKBW.js +0 -726
  176. package/development/seat-reservation-scoped.component-DRQ_I702.js +0 -31
  177. package/development/seat-reservation.component-Cq_aJKR0.js +0 -818
  178. package/development/svgs-C3JMWR26.js +0 -28
  179. package/development/timetable-duration.component-DI0lET17.js +0 -125
  180. package/development/timetable-row.component-CAED6Zwc.js +0 -932
  181. package/development/toDate-Biiv3kyf.js +0 -150
  182. package/differenceInMinutes-Dr9gRqtu.js +0 -27
  183. package/format-CM5exOsN.js +0 -1103
  184. package/isValid-B9oVW3lA.js +0 -36
  185. package/journey-summary.component-Cq_4kaOp.js +0 -264
  186. package/pearl-chain-time.component-DGDW5S1c.js +0 -239
  187. package/pearl-chain-vertical-item.component-G22bWhLU.js +0 -108
  188. package/pearl-chain-vertical.component-CXIDT5RD.js +0 -21
  189. package/pearl-chain.component-DmjkVIva.js +0 -194
  190. package/seat-reservation-area.component-n-9rGn_y.js +0 -75
  191. package/seat-reservation-graphic.component-YTXRmKt0.js +0 -102
  192. package/seat-reservation-navigation-coach.component-YJ0vaYmO.js +0 -333
  193. package/seat-reservation-navigation-services.component-C3xnLJg2.js +0 -127
  194. package/seat-reservation-place-control.component-DmBAfM6K.js +0 -322
  195. package/seat-reservation-scoped.component-DPkz6u17.js +0 -17
  196. package/seat-reservation.component-C_anMkgw.js +0 -364
  197. package/svgs-D9arBcqr.js +0 -26
  198. package/timetable-duration.component-DCu8Phts.js +0 -65
  199. package/timetable-row.component-BVRCB3xK.js +0 -559
  200. package/toDate-p-Tpkb7t.js +0 -16
@@ -1,2 +1,713 @@
1
- import { t as SbbSeatReservationNavigationCoachElement } from "../../seat-reservation-navigation-coach.component-D6Bglus8.js";
2
- export { SbbSeatReservationNavigationCoachElement };
1
+ var __typeError = (msg) => {
2
+ throw TypeError(msg);
3
+ };
4
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
5
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
6
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
7
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
8
+ import { __runInitializers, __esDecorate } from "tslib";
9
+ import { SbbElement } from "@sbb-esta/lyne-elements/core/base-elements.js";
10
+ import { SbbLanguageController } from "@sbb-esta/lyne-elements/core/controllers.js";
11
+ import { forceType } from "@sbb-esta/lyne-elements/core/decorators.js";
12
+ import { boxSizingStyles } from "@sbb-esta/lyne-elements/core/styles.js";
13
+ import { css, nothing, html } from "lit";
14
+ import { property } from "lit/decorators.js";
15
+ import { classMap } from "lit/directives/class-map.js";
16
+ import { getI18nSeatReservation } from "../common/translations.js";
17
+ import { SbbSeatReservationNavigationServicesElement } from "../seat-reservation-navigation-services/seat-reservation-navigation-services.component.js";
18
+ import "@sbb-esta/lyne-elements/screen-reader-only.js";
19
+ const style = css`:host {
20
+ display: inline-block;
21
+ min-height: calc(44 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
22
+ --sbb-seat-reservation-navigation-travelclass-spacing: 10;
23
+ --sbb-seat-reservation-navigation-btn-border-width-default: 1;
24
+ --sbb-seat-reservation-navigation-btn-border-width: var(
25
+ --sbb-seat-reservation-navigation-btn-border-width-default
26
+ );
27
+ --sbb-seat-reservation-navigation-btn-border-color: var(--sbb-color-granite);
28
+ --sbb-seat-reservation-navigation-btn-border-color: light-dark(
29
+ var(--sbb-color-granite),
30
+ var(--sbb-color-graphite)
31
+ );
32
+ --sbb-seat-reservation-navigation-btn-background-color: var(--sbb-color-white);
33
+ --sbb-seat-reservation-navigation-btn-background-color: light-dark(
34
+ var(--sbb-color-white),
35
+ var(--sbb-color-black)
36
+ );
37
+ --sbb-seat-reservation-navigation-btn-border-width-selected: 2;
38
+ --sbb-seat-reservation-navigation-btn-background-color-selected: var(--sbb-color-milk);
39
+ --sbb-seat-reservation-navigation-btn-background-color-selected: light-dark(
40
+ var(--sbb-color-milk),
41
+ var(--sbb-color-iron)
42
+ );
43
+ --sbb-seat-reservation-navigation-btn-border-color-selected: var(--sbb-color-black);
44
+ --sbb-seat-reservation-navigation-btn-border-color-selected: light-dark(
45
+ var(--sbb-color-black),
46
+ var(--sbb-color-white)
47
+ );
48
+ --sbb-seat-reservation-navigation-btn-outline-width-focused: 1;
49
+ --sbb-seat-reservation-navigation-btn-outline-color-focused: var(--sbb-color-black);
50
+ --sbb-seat-reservation-navigation-btn-outline-color-focused: light-dark(
51
+ var(--sbb-color-black),
52
+ var(--sbb-color-white)
53
+ );
54
+ --sbb-seat-reservation-navigation-btn-outline-offset-focused: 4;
55
+ --sbb-seat-reservation-navigation-btn-background-color-focused: var(--sbb-color-white);
56
+ --sbb-seat-reservation-navigation-btn-background-color-focused: light-dark(
57
+ var(--sbb-color-white),
58
+ var(--sbb-color-black)
59
+ );
60
+ --sbb-seat-reservation-navigation-btn-border-width-focused: var(
61
+ --sbb-seat-reservation-navigation-btn-border-width
62
+ );
63
+ --sbb-seat-reservation-navigation-btn-border-color-focused: var(--sbb-color-black);
64
+ --sbb-seat-reservation-navigation-btn-border-color-focused: light-dark(
65
+ var(--sbb-color-black),
66
+ var(--sbb-color-white)
67
+ );
68
+ --sbb-seat-reservation-navigation-btn-border-width-hovered: 2;
69
+ --sbb-seat-reservation-navigation-btn-background-color-hovered: var(--sbb-color-cloud);
70
+ --sbb-seat-reservation-navigation-btn-background-color-hovered: light-dark(
71
+ var(--sbb-color-cloud),
72
+ var(--sbb-color-midnight)
73
+ );
74
+ --sbb-seat-reservation-navigation-btn-border-color-hovered: var(--sbb-color-black);
75
+ --sbb-seat-reservation-navigation-btn-border-color-hovered: light-dark(
76
+ var(--sbb-color-black),
77
+ var(--sbb-color-white)
78
+ );
79
+ --sbb-seat-reservation-navigation-btn-background-color-disabled: var(--sbb-background-color-2);
80
+ --sbb-seat-reservation-navigation-btn-border-color-disabled: var(--sbb-color-platinum);
81
+ --sbb-seat-reservation-navigation-btn-border-color-disabled: light-dark(
82
+ var(--sbb-color-platinum),
83
+ var(--sbb-color-iron)
84
+ );
85
+ }
86
+
87
+ .sbb-sr-navigation__item-coach {
88
+ display: flex;
89
+ flex-direction: column;
90
+ gap: calc(8 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
91
+ width: calc(80 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
92
+ list-style-type: none;
93
+ }
94
+ .sbb-sr-navigation__item-coach.first-coach .sbb-sr-navigation--first-class, .sbb-sr-navigation__item-coach.last-coach .sbb-sr-navigation--first-class {
95
+ width: calc(100% - 18 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
96
+ }
97
+ .sbb-sr-navigation__item-coach.first-coach .sbb-sr-navigation__ctrl-button:not(.sbb-seat-reservation-navigation-driver-area) {
98
+ border-radius: var(--sbb-border-radius-8x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-8x);
99
+ }
100
+ .sbb-sr-navigation__item-coach.first-coach .sbb-sr-navigation__ctrl-button:not(.sbb-seat-reservation-navigation-driver-area)::before {
101
+ content: "";
102
+ position: absolute;
103
+ width: 100%;
104
+ height: 100%;
105
+ border: calc(var(--sbb-seat-reservation-navigation-btn-border-width) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid var(--sbb-seat-reservation-navigation-btn-border-color);
106
+ border-radius: var(--sbb-border-radius-8x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-8x);
107
+ }
108
+ .sbb-sr-navigation__item-coach.first-coach .sbb-sr-navigation--first-class {
109
+ margin-inline-start: calc(var(--sbb-seat-reservation-navigation-travelclass-spacing) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
110
+ }
111
+ .sbb-sr-navigation__item-coach.last-coach .sbb-sr-navigation__ctrl-button:not(.sbb-sr-navigation-driver-area) {
112
+ border-radius: var(--sbb-border-radius-2x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-2x);
113
+ }
114
+ .sbb-sr-navigation__item-coach.last-coach .sbb-sr-navigation__ctrl-button:not(.sbb-sr-navigation-driver-area)::before {
115
+ content: "";
116
+ position: absolute;
117
+ width: 100%;
118
+ height: 100%;
119
+ border: calc(var(--sbb-seat-reservation-navigation-btn-border-width) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid var(--sbb-seat-reservation-navigation-btn-border-color);
120
+ border-radius: var(--sbb-border-radius-2x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-2x);
121
+ }
122
+ .sbb-sr-navigation__item-coach.last-coach .sbb-sr-navigation__additional-information {
123
+ padding-inline-end: calc(var(--sbb-seat-reservation-navigation-travelclass-spacing) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
124
+ }
125
+ .sbb-sr-navigation__item-coach.last-coach .sbb-sr-navigation--first-class {
126
+ margin-inline-end: calc(var(--sbb-seat-reservation-navigation-travelclass-spacing) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
127
+ }
128
+
129
+ .sbb-sr-navigation__ctrl-button {
130
+ appearance: none;
131
+ box-sizing: border-box;
132
+ margin: 0;
133
+ outline: none;
134
+ border: none;
135
+ border-radius: 0;
136
+ padding: 0;
137
+ background: none;
138
+ -webkit-tap-highlight-color: transparent;
139
+ color: inherit;
140
+ display: flex;
141
+ flex-direction: column;
142
+ justify-content: center;
143
+ height: calc(36 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
144
+ position: relative;
145
+ background-color: var(--sbb-seat-reservation-navigation-btn-background-color);
146
+ cursor: var(--sbb-cursor-pointer);
147
+ }
148
+ .sbb-sr-navigation__ctrl-button.sbb-sr-navigation-driver-area {
149
+ border-radius: var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x);
150
+ }
151
+ .sbb-sr-navigation__ctrl-button.sbb-sr-navigation-driver-area::before {
152
+ content: "";
153
+ position: absolute;
154
+ width: 100%;
155
+ height: 100%;
156
+ border: calc(var(--sbb-seat-reservation-navigation-btn-border-width) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid var(--sbb-seat-reservation-navigation-btn-border-color);
157
+ border-radius: var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x);
158
+ }
159
+ .sbb-sr-navigation__ctrl-button {
160
+ border-radius: var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x);
161
+ }
162
+ .sbb-sr-navigation__ctrl-button::before {
163
+ content: "";
164
+ position: absolute;
165
+ width: 100%;
166
+ height: 100%;
167
+ border: calc(var(--sbb-seat-reservation-navigation-btn-border-width) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid var(--sbb-seat-reservation-navigation-btn-border-color);
168
+ border-radius: var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x);
169
+ }
170
+
171
+ .sbb-sr-navigation__item-coach--focused .sbb-sr-navigation__ctrl-button {
172
+ --sbb-seat-reservation-navigation-btn-background-color: var(
173
+ --sbb-seat-reservation-navigation-btn-background-color-focused
174
+ );
175
+ --sbb-seat-reservation-navigation-btn-border-color: var(
176
+ --sbb-seat-reservation-navigation-btn-border-color-focused
177
+ );
178
+ --sbb-seat-reservation-navigation-btn-border-width: var(
179
+ --sbb-seat-reservation-navigation-btn-border-width-focused
180
+ );
181
+ outline: calc(var(--sbb-seat-reservation-navigation-btn-outline-width-focused) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid var(--sbb-seat-reservation-navigation-btn-outline-color-focused);
182
+ outline-offset: calc(var(--sbb-seat-reservation-navigation-btn-outline-offset-focused) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
183
+ }
184
+ .sbb-sr-navigation__item-coach--focused .sbb-sr-navigation__ctrl-button .sbb-sr-navigation__item-coach-travelclass {
185
+ background-color: var(--sbb-color-metal);
186
+ background-color: light-dark(var(--sbb-color-metal), var(--sbb-color-storm));
187
+ }
188
+ .sbb-sr-navigation__item-coach--focused .sbb-sr-navigation__ctrl-button .sbb-sr-navigation__item-coach-number {
189
+ color: var(--sbb-color-anthracite);
190
+ color: light-dark(var(--sbb-color-anthracite), var(--sbb-color-graphite));
191
+ }
192
+
193
+ .sbb-sr-navigation__item-coach--selected .sbb-sr-navigation__ctrl-button {
194
+ --sbb-seat-reservation-navigation-btn-background-color: var(
195
+ --sbb-seat-reservation-navigation-btn-background-color-selected
196
+ );
197
+ --sbb-seat-reservation-navigation-btn-border-color: var(
198
+ --sbb-seat-reservation-navigation-btn-border-color-selected
199
+ );
200
+ --sbb-seat-reservation-navigation-btn-border-width: var(
201
+ --sbb-seat-reservation-navigation-btn-border-width-selected
202
+ );
203
+ }
204
+ .sbb-sr-navigation__item-coach--selected .sbb-sr-navigation__ctrl-button .sbb-sr-navigation__item-coach-travelclass {
205
+ background-color: var(--sbb-color-black);
206
+ background-color: light-dark(var(--sbb-color-black), var(--sbb-color-white));
207
+ }
208
+ .sbb-sr-navigation__item-coach--selected .sbb-sr-navigation__ctrl-button .sbb-sr-navigation__item-coach-number {
209
+ color: var(--sbb-color-black);
210
+ color: light-dark(var(--sbb-color-black), var(--sbb-color-white));
211
+ }
212
+
213
+ .sbb-sr-navigation__item-coach--hovered .sbb-sr-navigation__ctrl-button {
214
+ --sbb-seat-reservation-navigation-btn-background-color: var(
215
+ --sbb-seat-reservation-navigation-btn-background-color-hovered
216
+ );
217
+ --sbb-seat-reservation-navigation-btn-border-color: var(
218
+ --sbb-seat-reservation-navigation-btn-border-color-hovered
219
+ );
220
+ --sbb-seat-reservation-navigation-btn-border-width: var(
221
+ --sbb-seat-reservation-navigation-btn-border-width-hovered
222
+ );
223
+ }
224
+
225
+ .sbb-sr-navigation__item-coach--selected.sbb-sr-navigation__item-coach--hovered .sbb-sr-navigation__ctrl-button {
226
+ --sbb-seat-reservation-navigation-btn-background-color: var(
227
+ --sbb-seat-reservation-navigation-btn-background-color-selected
228
+ );
229
+ --sbb-seat-reservation-navigation-btn-border-color: var(
230
+ --sbb-seat-reservation-navigation-btn-border-color-selected
231
+ );
232
+ --sbb-seat-reservation-navigation-btn-border-width: var(
233
+ --sbb-seat-reservation-navigation-btn-border-width-selected
234
+ );
235
+ background-color: var(--sbb-seat-reservation-navigation-btn-background-color-hovered) !important;
236
+ }
237
+
238
+ .sbb-sr-navigation__item-coach--selected .sbb-sr-navigation__ctrl-button:focus-visible:not([disabled], :disabled) {
239
+ --sbb-seat-reservation-navigation-btn-background-color: var(
240
+ --sbb-seat-reservation-navigation-btn-background-color-selected
241
+ );
242
+ --sbb-seat-reservation-navigation-btn-border-color: var(
243
+ --sbb-seat-reservation-navigation-btn-border-color-selected
244
+ );
245
+ --sbb-seat-reservation-navigation-btn-border-width: var(
246
+ --sbb-seat-reservation-navigation-btn-border-width-selected
247
+ );
248
+ }
249
+
250
+ .sbb-sr-navigation__item-coach--hovered .sbb-sr-navigation__ctrl-button {
251
+ --sbb-seat-reservation-navigation-btn-background-color: var(
252
+ --sbb-seat-reservation-navigation-btn-background-color-hovered
253
+ );
254
+ --sbb-seat-reservation-navigation-btn-border-color: var(
255
+ --sbb-seat-reservation-navigation-btn-border-color-hovered
256
+ );
257
+ --sbb-seat-reservation-navigation-btn-border-width: var(
258
+ --sbb-seat-reservation-navigation-btn-border-width-hovered
259
+ );
260
+ }
261
+
262
+ .sbb-sr-navigation__ctrl-button:hover:not([disabled], :disabled) {
263
+ --sbb-seat-reservation-navigation-btn-background-color: var(
264
+ --sbb-seat-reservation-navigation-btn-background-color-hovered
265
+ );
266
+ --sbb-seat-reservation-navigation-btn-border-color: var(
267
+ --sbb-seat-reservation-navigation-btn-border-color-hovered
268
+ );
269
+ --sbb-seat-reservation-navigation-btn-border-width: var(
270
+ --sbb-seat-reservation-navigation-btn-border-width-hovered
271
+ );
272
+ }
273
+ .sbb-sr-navigation__ctrl-button:hover:not([disabled], :disabled) .sbb-sr-navigation__item-coach-travelclass {
274
+ background-color: var(--sbb-color-smoke);
275
+ }
276
+ .sbb-sr-navigation__ctrl-button:hover:not([disabled], :disabled) .sbb-sr-navigation__item-coach-number {
277
+ color: var(--sbb-color-iron);
278
+ color: light-dark(var(--sbb-color-iron), var(--sbb-color-silver));
279
+ }
280
+
281
+ .sbb-sr-navigation__ctrl-button:is([disabled], :disabled) {
282
+ --sbb-seat-reservation-navigation-btn-background-color: var(
283
+ --sbb-seat-reservation-navigation-btn-background-color-disabled
284
+ );
285
+ --sbb-seat-reservation-navigation-btn-border-color: var(
286
+ --sbb-seat-reservation-navigation-btn-border-color-disabled
287
+ );
288
+ cursor: unset;
289
+ pointer-events: unset;
290
+ }
291
+ .sbb-sr-navigation__ctrl-button:is([disabled], :disabled) .sbb-sr-navigation__item-coach-travelclass {
292
+ background-color: var(--sbb-color-graphite);
293
+ background-color: light-dark(var(--sbb-color-graphite), var(--sbb-color-granite));
294
+ }
295
+ .sbb-sr-navigation__ctrl-button:is([disabled], :disabled) .sbb-sr-navigation__item-coach-number {
296
+ color: var(--sbb-color-graphite);
297
+ color: light-dark(var(--sbb-color-graphite), var(--sbb-color-granite));
298
+ }
299
+
300
+ .sbb-sr-navigation__additional-information {
301
+ display: flex;
302
+ justify-content: space-between;
303
+ align-items: center;
304
+ flex: 1;
305
+ column-gap: calc(8 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
306
+ padding-inline: calc(16 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
307
+ font-family: var(--sbb-typo-font-family);
308
+ font-weight: 700;
309
+ color: var(--sbb-color-granite);
310
+ color: light-dark(var(--sbb-color-granite), var(--sbb-color-granite));
311
+ }
312
+ @media (forced-colors: active) {
313
+ .sbb-sr-navigation__additional-information {
314
+ color: var(--sbb-color-milk);
315
+ }
316
+ }
317
+
318
+ .sbb-sr-navigation__item-coach-number {
319
+ color: var(--sbb-color-granite);
320
+ color: light-dark(var(--sbb-color-granite), var(--sbb-color-graphite));
321
+ }
322
+ @media (forced-colors: active) {
323
+ .sbb-sr-navigation__item-coach-number {
324
+ color: var(--sbb-color-granite);
325
+ color: light-dark(var(--sbb-color-granite), var(--sbb-color-graphite));
326
+ }
327
+ }
328
+ .sbb-sr-navigation__item-coach-number .sbb-sr-navigation__item-coach-travelclass {
329
+ background-color: var(--sbb-background-color-2-inverted);
330
+ }
331
+
332
+ .sbb-sr-navigation--first-class {
333
+ width: calc(100% - 8 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
334
+ position: absolute;
335
+ inset-block-start: calc(3 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
336
+ inset-inline-start: calc(4 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
337
+ border: calc(1 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid transparent;
338
+ border-radius: var(--sbb-border-radius-1x);
339
+ margin: auto;
340
+ background-color: var(--sbb-color-lemon);
341
+ }
342
+
343
+ .sbb-sr-navigation__item-coach-travelclass {
344
+ display: flex;
345
+ align-items: center;
346
+ justify-content: center;
347
+ min-height: calc(20 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
348
+ min-width: calc(20 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
349
+ border-radius: var(--sbb-border-radius-1x);
350
+ text-align: center;
351
+ background-color: var(--sbb-color-granite);
352
+ background-color: light-dark(var(--sbb-color-granite), var(--sbb-color-graphite));
353
+ color: var(--sbb-color-white);
354
+ color: light-dark(var(--sbb-color-white), var(--sbb-color-black));
355
+ }
356
+ @media (forced-colors: active) {
357
+ .sbb-sr-navigation__item-coach-travelclass {
358
+ border: var(--sbb-border-width-1x) solid;
359
+ }
360
+ }
361
+
362
+ :host([vertical]) .sbb-sr-navigation__item-coach {
363
+ flex-direction: row;
364
+ }
365
+ :host([vertical]) .sbb-sr-navigation__item-coach .sbb-sr-navigation__ctrl-button {
366
+ flex-direction: row-reverse;
367
+ height: calc(80 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
368
+ min-width: calc(36 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
369
+ }
370
+ :host([vertical]) .sbb-sr-navigation__item-coach .sbb-sr-navigation__additional-information {
371
+ flex-direction: column-reverse;
372
+ padding-block: calc(16 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
373
+ padding-inline-start: unset;
374
+ padding-inline-end: unset;
375
+ }
376
+ :host([vertical]) .sbb-sr-navigation__item-coach .sbb-sr-navigation--first-class {
377
+ height: calc(100% - 8 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
378
+ width: initial;
379
+ inset-inline-end: calc(3 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
380
+ inset-block-start: calc(4 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
381
+ inset-inline-start: initial;
382
+ }
383
+ :host([vertical]) .sbb-sr-navigation__item-coach.first-coach .sbb-sr-navigation--first-class, :host([vertical]) .sbb-sr-navigation__item-coach.last-coach .sbb-sr-navigation--first-class {
384
+ height: calc(100% - 18 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
385
+ }
386
+ :host([vertical]) .sbb-sr-navigation__item-coach.first-coach:not(.last-coach) .sbb-sr-navigation__ctrl-button:not(.sbb-sr-navigation-driver-area) {
387
+ border-radius: var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x);
388
+ }
389
+ :host([vertical]) .sbb-sr-navigation__item-coach.first-coach:not(.last-coach) .sbb-sr-navigation__ctrl-button:not(.sbb-sr-navigation-driver-area)::before {
390
+ content: "";
391
+ position: absolute;
392
+ width: 100%;
393
+ height: 100%;
394
+ border: calc(var(--sbb-seat-reservation-navigation-btn-border-width) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid var(--sbb-seat-reservation-navigation-btn-border-color);
395
+ border-radius: var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x);
396
+ }
397
+ :host([vertical]) .sbb-sr-navigation__item-coach.first-coach:not(.last-coach) .sbb-sr-navigation--first-class {
398
+ margin-block-start: calc(var(--sbb-seat-reservation-navigation-travelclass-spacing) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
399
+ margin-inline-start: initial;
400
+ }
401
+ :host([vertical]) .sbb-sr-navigation__item-coach.last-coach:not(.first-coach) .sbb-sr-navigation__ctrl-button:not(.sbb-sr-navigation-driver-area) {
402
+ border-radius: var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x);
403
+ }
404
+ :host([vertical]) .sbb-sr-navigation__item-coach.last-coach:not(.first-coach) .sbb-sr-navigation__ctrl-button:not(.sbb-sr-navigation-driver-area)::before {
405
+ content: "";
406
+ position: absolute;
407
+ width: 100%;
408
+ height: 100%;
409
+ border: calc(var(--sbb-seat-reservation-navigation-btn-border-width) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid var(--sbb-seat-reservation-navigation-btn-border-color);
410
+ border-radius: var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x);
411
+ }
412
+ :host([vertical]) .sbb-sr-navigation__item-coach.last-coach:not(.first-coach) .sbb-sr-navigation--first-class {
413
+ margin-block-end: calc(var(--sbb-seat-reservation-navigation-travelclass-spacing) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
414
+ margin-inline-end: initial;
415
+ }
416
+ :host([vertical]) .sbb-sr-navigation__item-coach .sbb-sr-navigation-driver-area {
417
+ height: calc(80 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
418
+ min-width: calc(36 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
419
+ }`;
420
+ SbbSeatReservationNavigationServicesElement.define();
421
+ let SbbSeatReservationNavigationCoachElement = (() => {
422
+ var _selected_accessor_storage, _focused_accessor_storage, _hovered_accessor_storage, _nativeFocusActive_accessor_storage, _index_accessor_storage, _coachItemDetails_accessor_storage, _disable_accessor_storage, _vertical_accessor_storage, _showTitleInfo_accessor_storage, _a;
423
+ let _classSuper = SbbElement;
424
+ let _selected_decorators;
425
+ let _selected_initializers = [];
426
+ let _selected_extraInitializers = [];
427
+ let _focused_decorators;
428
+ let _focused_initializers = [];
429
+ let _focused_extraInitializers = [];
430
+ let _hovered_decorators;
431
+ let _hovered_initializers = [];
432
+ let _hovered_extraInitializers = [];
433
+ let _nativeFocusActive_decorators;
434
+ let _nativeFocusActive_initializers = [];
435
+ let _nativeFocusActive_extraInitializers = [];
436
+ let _index_decorators;
437
+ let _index_initializers = [];
438
+ let _index_extraInitializers = [];
439
+ let _coachItemDetails_decorators;
440
+ let _coachItemDetails_initializers = [];
441
+ let _coachItemDetails_extraInitializers = [];
442
+ let _disable_decorators;
443
+ let _disable_initializers = [];
444
+ let _disable_extraInitializers = [];
445
+ let _vertical_decorators;
446
+ let _vertical_initializers = [];
447
+ let _vertical_extraInitializers = [];
448
+ let _showTitleInfo_decorators;
449
+ let _showTitleInfo_initializers = [];
450
+ let _showTitleInfo_extraInitializers = [];
451
+ return _a = class extends _classSuper {
452
+ constructor() {
453
+ super(...arguments);
454
+ __privateAdd(this, _selected_accessor_storage);
455
+ __privateAdd(this, _focused_accessor_storage);
456
+ __privateAdd(this, _hovered_accessor_storage);
457
+ __privateAdd(this, _nativeFocusActive_accessor_storage);
458
+ __privateAdd(this, _index_accessor_storage);
459
+ __privateAdd(this, _coachItemDetails_accessor_storage);
460
+ __privateAdd(this, _disable_accessor_storage);
461
+ __privateAdd(this, _vertical_accessor_storage);
462
+ __privateAdd(this, _showTitleInfo_accessor_storage);
463
+ __privateSet(this, _selected_accessor_storage, __runInitializers(this, _selected_initializers, false));
464
+ __privateSet(this, _focused_accessor_storage, (__runInitializers(this, _selected_extraInitializers), __runInitializers(this, _focused_initializers, false)));
465
+ __privateSet(this, _hovered_accessor_storage, (__runInitializers(this, _focused_extraInitializers), __runInitializers(this, _hovered_initializers, false)));
466
+ __privateSet(this, _nativeFocusActive_accessor_storage, (__runInitializers(this, _hovered_extraInitializers), __runInitializers(this, _nativeFocusActive_initializers, true)));
467
+ __privateSet(this, _index_accessor_storage, (__runInitializers(this, _nativeFocusActive_extraInitializers), __runInitializers(this, _index_initializers, 0)));
468
+ __privateSet(this, _coachItemDetails_accessor_storage, (__runInitializers(this, _index_extraInitializers), __runInitializers(this, _coachItemDetails_initializers, {})));
469
+ __privateSet(this, _disable_accessor_storage, (__runInitializers(this, _coachItemDetails_extraInitializers), __runInitializers(this, _disable_initializers, false)));
470
+ __privateSet(this, _vertical_accessor_storage, (__runInitializers(this, _disable_extraInitializers), __runInitializers(this, _vertical_initializers, false)));
471
+ __privateSet(this, _showTitleInfo_accessor_storage, (__runInitializers(this, _vertical_extraInitializers), __runInitializers(this, _showTitleInfo_initializers, false)));
472
+ this._language = (__runInitializers(this, _showTitleInfo_extraInitializers), new SbbLanguageController(this));
473
+ }
474
+ /** Select coach property */
475
+ get selected() {
476
+ return __privateGet(this, _selected_accessor_storage);
477
+ }
478
+ set selected(value) {
479
+ __privateSet(this, _selected_accessor_storage, value);
480
+ }
481
+ /** Focus coach property */
482
+ get focused() {
483
+ return __privateGet(this, _focused_accessor_storage);
484
+ }
485
+ set focused(value) {
486
+ __privateSet(this, _focused_accessor_storage, value);
487
+ }
488
+ /** Hover coach property */
489
+ get hovered() {
490
+ return __privateGet(this, _hovered_accessor_storage);
491
+ }
492
+ set hovered(value) {
493
+ __privateSet(this, _hovered_accessor_storage, value);
494
+ }
495
+ /** Native focus for this navigation coach is also set when the focused property is changed */
496
+ get nativeFocusActive() {
497
+ return __privateGet(this, _nativeFocusActive_accessor_storage);
498
+ }
499
+ set nativeFocusActive(value) {
500
+ __privateSet(this, _nativeFocusActive_accessor_storage, value);
501
+ }
502
+ get index() {
503
+ return __privateGet(this, _index_accessor_storage);
504
+ }
505
+ set index(value) {
506
+ __privateSet(this, _index_accessor_storage, value);
507
+ }
508
+ get coachItemDetails() {
509
+ return __privateGet(this, _coachItemDetails_accessor_storage);
510
+ }
511
+ set coachItemDetails(value) {
512
+ __privateSet(this, _coachItemDetails_accessor_storage, value);
513
+ }
514
+ /** Disable the coach navigation */
515
+ get disable() {
516
+ return __privateGet(this, _disable_accessor_storage);
517
+ }
518
+ set disable(value) {
519
+ __privateSet(this, _disable_accessor_storage, value);
520
+ }
521
+ /** If the coach navigation should be displayed vertically */
522
+ get vertical() {
523
+ return __privateGet(this, _vertical_accessor_storage);
524
+ }
525
+ set vertical(value) {
526
+ __privateSet(this, _vertical_accessor_storage, value);
527
+ }
528
+ /** Disable the mouse over title information */
529
+ get showTitleInfo() {
530
+ return __privateGet(this, _showTitleInfo_accessor_storage);
531
+ }
532
+ set showTitleInfo(value) {
533
+ __privateSet(this, _showTitleInfo_accessor_storage, value);
534
+ }
535
+ willUpdate(changedProperties) {
536
+ super.willUpdate(changedProperties);
537
+ if (changedProperties.has("selected")) {
538
+ const selectedNavButtonElement = this.shadowRoot?.querySelector(".sbb-sr-navigation__ctrl-button");
539
+ if (this.selected && selectedNavButtonElement) {
540
+ if (this.nativeFocusActive) {
541
+ selectedNavButtonElement.focus();
542
+ }
543
+ this.dispatchEvent(new Event("focuscoach", { bubbles: true, composed: true }));
544
+ }
545
+ }
546
+ if (changedProperties.has("focused") && this.focused) {
547
+ const focusedNavButtonElement = this.shadowRoot?.querySelector(".sbb-sr-navigation__ctrl-button");
548
+ if (focusedNavButtonElement && this.nativeFocusActive) {
549
+ focusedNavButtonElement.focus();
550
+ }
551
+ }
552
+ }
553
+ /**
554
+ * Render a list of service icons provided by a caller
555
+ *
556
+ * @protected
557
+ */
558
+ render() {
559
+ return html`
560
+ <div
561
+ class="${classMap({
562
+ "sbb-sr-navigation__item-coach": true,
563
+ "last-coach": this.coachItemDetails.driverAreaSide?.right || false,
564
+ "first-coach": this.coachItemDetails.driverAreaSide?.left || false,
565
+ "sbb-sr-navigation__item-coach--selected": this.selected,
566
+ "sbb-sr-navigation__item-coach--focused": this.focused,
567
+ "sbb-sr-navigation__item-coach--hovered": this.hovered
568
+ })}"
569
+ >
570
+ ${this._getNavigationButton()}
571
+ ${this.coachItemDetails.propertyIds?.length ? html`<sbb-seat-reservation-navigation-services
572
+ ?vertical="${this.vertical}"
573
+ .propertyIds="${this.coachItemDetails.propertyIds}"
574
+ ?showTitleInfo="${this.showTitleInfo}"
575
+ ></sbb-seat-reservation-navigation-services>` : nothing}
576
+ </div>
577
+ `;
578
+ }
579
+ _getNavigationButton() {
580
+ const currServiceClassNumber = this._getCoachServiceClassNumber();
581
+ const titleDescriptionNavCoachButton = this._getTitleDescriptionNavCoachButton(currServiceClassNumber);
582
+ const ariaDescriptionCoachServices = this._getAriaDescriptionCoachServices();
583
+ return html` <button
584
+ @click=${() => this._selectNavCoach(this.index)}
585
+ class="${classMap({
586
+ "sbb-sr-navigation__ctrl-button": true,
587
+ "sbb-sr-navigation-driver-area": this.coachItemDetails.isDriverArea
588
+ })}"
589
+ ?disabled="${this.disable}"
590
+ title="${this.showTitleInfo ? titleDescriptionNavCoachButton : nothing}"
591
+ type="button"
592
+ aria-describedby="nav-coach-service-descriptions-${this.index}"
593
+ >
594
+ ${this._getBtnInformation(currServiceClassNumber)}
595
+ <sbb-screen-reader-only id="nav-coach-service-descriptions-${this.index}">
596
+ ${!this.showTitleInfo ? html`<div>${titleDescriptionNavCoachButton}</div>` : nothing}
597
+ ${ariaDescriptionCoachServices ? html`<div>${ariaDescriptionCoachServices}</div>` : nothing}
598
+ </sbb-screen-reader-only>
599
+ </button>`;
600
+ }
601
+ _getBtnInformation(serviceClassNumber) {
602
+ if (this.coachItemDetails.isDriverArea) {
603
+ return null;
604
+ }
605
+ return html`
606
+ ${serviceClassNumber === 1 ? html`<span class="sbb-sr-navigation--first-class"></span>` : nothing}
607
+ ${this.coachItemDetails.travelClass?.length > 0 || this.coachItemDetails.id ? html`<div class="sbb-sr-navigation__additional-information">
608
+ ${this.coachItemDetails.id ? html`<div class="sbb-sr-navigation__item-coach-number" aria-hidden="true">
609
+ ${this.coachItemDetails.id}
610
+ </div>` : nothing}
611
+ <div
612
+ ${serviceClassNumber ?? nothing}
613
+ class="sbb-sr-navigation__item-coach-travelclass"
614
+ aria-hidden="true"
615
+ >
616
+ ${serviceClassNumber}
617
+ </div>
618
+ </div>` : nothing}
619
+ `;
620
+ }
621
+ _getTitleDescriptionNavCoachButton(serviceClassNumber) {
622
+ if (this.coachItemDetails.isDriverArea && !this.coachItemDetails.driverAreaElements?.driverAreaNoVerticalWall) {
623
+ return getI18nSeatReservation("NAVIGATE_COACH_BLOCKED", this._language.current, [
624
+ this.coachItemDetails.id
625
+ ]);
626
+ }
627
+ if (this.coachItemDetails.driverAreaElements?.driverAreaNoVerticalWall) {
628
+ return getI18nSeatReservation("COACH_LOCOMOTIVE", this._language.current);
629
+ }
630
+ let label = getI18nSeatReservation("NAVIGATE_TO_COACH", this._language.current, [
631
+ this.coachItemDetails.id
632
+ ]);
633
+ if (serviceClassNumber) {
634
+ const serviceClassTranslationKey = serviceClassNumber === 1 ? "SERVICE_CLASS_FIRST" : "SERVICE_CLASS_SECOND";
635
+ const serviceClassTranslation = getI18nSeatReservation(serviceClassTranslationKey, this._language.current);
636
+ const serviceClassLabel = getI18nSeatReservation("NAVIGATE_TO_COACH_SERVICE_CLASS_SUB", this._language.current, [serviceClassTranslation]);
637
+ label = label.concat(serviceClassLabel);
638
+ }
639
+ const freePlacesTxt = getI18nSeatReservation("COACH_AVAILABLE_NUMBER_OF_PLACES", this._language.current, [this.coachItemDetails.freePlaces?.seats, this.coachItemDetails.freePlaces?.bicycles]);
640
+ label = label.concat(". ").concat(freePlacesTxt);
641
+ return label;
642
+ }
643
+ _getAriaDescriptionCoachServices() {
644
+ let ariaDescription = null;
645
+ if (this.coachItemDetails.propertyIds?.length) {
646
+ ariaDescription = getI18nSeatReservation("COACH_AVAILABLE_SERVICES", this._language.current) + ": ";
647
+ ariaDescription += this.coachItemDetails.propertyIds.map((propertyId) => getI18nSeatReservation(propertyId, this._language.current)).join() + ".";
648
+ }
649
+ return ariaDescription;
650
+ }
651
+ /**
652
+ * emits the index of the coach array for the main navigation.
653
+ * @param coachIndex
654
+ * @private
655
+ */
656
+ _selectNavCoach(coachIndex) {
657
+ this.dispatchEvent(new CustomEvent("selectcoach", {
658
+ bubbles: true,
659
+ composed: true,
660
+ detail: coachIndex
661
+ }));
662
+ }
663
+ _getCoachServiceClassNumber() {
664
+ return this.coachItemDetails.travelClass?.includes("FIRST") ? 1 : this.coachItemDetails.travelClass?.includes("SECOND") ? 2 : null;
665
+ }
666
+ }, _selected_accessor_storage = new WeakMap(), _focused_accessor_storage = new WeakMap(), _hovered_accessor_storage = new WeakMap(), _nativeFocusActive_accessor_storage = new WeakMap(), _index_accessor_storage = new WeakMap(), _coachItemDetails_accessor_storage = new WeakMap(), _disable_accessor_storage = new WeakMap(), _vertical_accessor_storage = new WeakMap(), _showTitleInfo_accessor_storage = new WeakMap(), (() => {
667
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
668
+ _selected_decorators = [forceType(), property({ type: Boolean })];
669
+ _focused_decorators = [forceType(), property({ type: Boolean })];
670
+ _hovered_decorators = [forceType(), property({ type: Boolean })];
671
+ _nativeFocusActive_decorators = [forceType(), property({ type: Boolean })];
672
+ _index_decorators = [forceType(), property({ type: Number })];
673
+ _coachItemDetails_decorators = [property({ attribute: "coach-item-details", type: Object })];
674
+ _disable_decorators = [forceType(), property({ attribute: "disable", type: Boolean })];
675
+ _vertical_decorators = [forceType(), property({ type: Boolean, reflect: true, useDefault: true })];
676
+ _showTitleInfo_decorators = [forceType(), property({ type: Boolean })];
677
+ __esDecorate(_a, null, _selected_decorators, { kind: "accessor", name: "selected", static: false, private: false, access: { has: (obj) => "selected" in obj, get: (obj) => obj.selected, set: (obj, value) => {
678
+ obj.selected = value;
679
+ } }, metadata: _metadata }, _selected_initializers, _selected_extraInitializers);
680
+ __esDecorate(_a, null, _focused_decorators, { kind: "accessor", name: "focused", static: false, private: false, access: { has: (obj) => "focused" in obj, get: (obj) => obj.focused, set: (obj, value) => {
681
+ obj.focused = value;
682
+ } }, metadata: _metadata }, _focused_initializers, _focused_extraInitializers);
683
+ __esDecorate(_a, null, _hovered_decorators, { kind: "accessor", name: "hovered", static: false, private: false, access: { has: (obj) => "hovered" in obj, get: (obj) => obj.hovered, set: (obj, value) => {
684
+ obj.hovered = value;
685
+ } }, metadata: _metadata }, _hovered_initializers, _hovered_extraInitializers);
686
+ __esDecorate(_a, null, _nativeFocusActive_decorators, { kind: "accessor", name: "nativeFocusActive", static: false, private: false, access: { has: (obj) => "nativeFocusActive" in obj, get: (obj) => obj.nativeFocusActive, set: (obj, value) => {
687
+ obj.nativeFocusActive = value;
688
+ } }, metadata: _metadata }, _nativeFocusActive_initializers, _nativeFocusActive_extraInitializers);
689
+ __esDecorate(_a, null, _index_decorators, { kind: "accessor", name: "index", static: false, private: false, access: { has: (obj) => "index" in obj, get: (obj) => obj.index, set: (obj, value) => {
690
+ obj.index = value;
691
+ } }, metadata: _metadata }, _index_initializers, _index_extraInitializers);
692
+ __esDecorate(_a, null, _coachItemDetails_decorators, { kind: "accessor", name: "coachItemDetails", static: false, private: false, access: { has: (obj) => "coachItemDetails" in obj, get: (obj) => obj.coachItemDetails, set: (obj, value) => {
693
+ obj.coachItemDetails = value;
694
+ } }, metadata: _metadata }, _coachItemDetails_initializers, _coachItemDetails_extraInitializers);
695
+ __esDecorate(_a, null, _disable_decorators, { kind: "accessor", name: "disable", static: false, private: false, access: { has: (obj) => "disable" in obj, get: (obj) => obj.disable, set: (obj, value) => {
696
+ obj.disable = value;
697
+ } }, metadata: _metadata }, _disable_initializers, _disable_extraInitializers);
698
+ __esDecorate(_a, null, _vertical_decorators, { kind: "accessor", name: "vertical", static: false, private: false, access: { has: (obj) => "vertical" in obj, get: (obj) => obj.vertical, set: (obj, value) => {
699
+ obj.vertical = value;
700
+ } }, metadata: _metadata }, _vertical_initializers, _vertical_extraInitializers);
701
+ __esDecorate(_a, null, _showTitleInfo_decorators, { kind: "accessor", name: "showTitleInfo", static: false, private: false, access: { has: (obj) => "showTitleInfo" in obj, get: (obj) => obj.showTitleInfo, set: (obj, value) => {
702
+ obj.showTitleInfo = value;
703
+ } }, metadata: _metadata }, _showTitleInfo_initializers, _showTitleInfo_extraInitializers);
704
+ if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
705
+ })(), _a.elementName = "sbb-seat-reservation-navigation-coach", _a.styles = [boxSizingStyles, style], _a.events = {
706
+ selectcoach: "selectcoach",
707
+ focuscoach: "focuscoach"
708
+ }, _a;
709
+ })();
710
+ export {
711
+ SbbSeatReservationNavigationCoachElement
712
+ };
713
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaC9zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tY29hY2guY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNiYkVsZW1lbnQgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2Jhc2UtZWxlbWVudHMuanMnO1xuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgYm94U2l6aW5nU3R5bGVzIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9zdHlsZXMuanMnO1xuaW1wb3J0IHsgdHlwZSBDU1NSZXN1bHRHcm91cCwgbm90aGluZywgdHlwZSBQcm9wZXJ0eVZhbHVlcywgdHlwZSBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgY2xhc3NNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9jbGFzcy1tYXAuanMnO1xuXG5pbXBvcnQgeyBnZXRJMThuU2VhdFJlc2VydmF0aW9uIH0gZnJvbSAnLi4vY29tbW9uL3RyYW5zbGF0aW9ucy50cyc7XG5pbXBvcnQgdHlwZSB7IENvYWNoSXRlbURldGFpbHMgfSBmcm9tICcuLi9jb21tb24vdHlwZXMudHMnO1xuaW1wb3J0IHsgU2JiU2VhdFJlc2VydmF0aW9uTmF2aWdhdGlvblNlcnZpY2VzRWxlbWVudCB9IGZyb20gJy4uL3NlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1zZXJ2aWNlcy9zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tc2VydmljZXMuY29tcG9uZW50LnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcblxuU2JiU2VhdFJlc2VydmF0aW9uTmF2aWdhdGlvblNlcnZpY2VzRWxlbWVudC5kZWZpbmUoKTtcblxuZXhwb3J0IHR5cGUgU2VsZWN0Q29hY2hFdmVudERldGFpbHMgPSBudW1iZXI7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgd2lsbCBkaXNwbGF5IHRoZSBuYXZpZ2F0aW9uIGNvYWNoIGl0ZW0gZm9yIFNlYXQgcmVzZXJ2YXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJTZWF0UmVzZXJ2YXRpb25OYXZpZ2F0aW9uQ29hY2hFbGVtZW50IGV4dGVuZHMgU2JiRWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgc3R5bGVdO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBzZWxlY3Rjb2FjaDogJ3NlbGVjdGNvYWNoJyxcbiAgICBmb2N1c2NvYWNoOiAnZm9jdXNjb2FjaCcsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqIFNlbGVjdCBjb2FjaCBwcm9wZXJ0eSAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3Igc2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogRm9jdXMgY29hY2ggcHJvcGVydHkgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogSG92ZXIgY29hY2ggcHJvcGVydHkgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGhvdmVyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogTmF0aXZlIGZvY3VzIGZvciB0aGlzIG5hdmlnYXRpb24gY29hY2ggaXMgYWxzbyBzZXQgd2hlbiB0aGUgZm9jdXNlZCBwcm9wZXJ0eSBpcyBjaGFuZ2VkICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBuYXRpdmVGb2N1c0FjdGl2ZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgYWNjZXNzb3IgaW5kZXg6IG51bWJlciA9IDA7XG5cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnY29hY2gtaXRlbS1kZXRhaWxzJywgdHlwZTogT2JqZWN0IH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBjb2FjaEl0ZW1EZXRhaWxzOiBDb2FjaEl0ZW1EZXRhaWxzID0gPENvYWNoSXRlbURldGFpbHM+e307XG5cbiAgLyoqIERpc2FibGUgdGhlIGNvYWNoIG5hdmlnYXRpb24gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2Rpc2FibGUnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBkaXNhYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIElmIHRoZSBjb2FjaCBuYXZpZ2F0aW9uIHNob3VsZCBiZSBkaXNwbGF5ZWQgdmVydGljYWxseSAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSwgdXNlRGVmYXVsdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3IgdmVydGljYWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogRGlzYWJsZSB0aGUgbW91c2Ugb3ZlciB0aXRsZSBpbmZvcm1hdGlvbiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3Igc2hvd1RpdGxlSW5mbzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3NlbGVjdGVkJykpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkTmF2QnV0dG9uRWxlbWVudCA9IHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihcbiAgICAgICAgJy5zYmItc3ItbmF2aWdhdGlvbl9fY3RybC1idXR0b24nLFxuICAgICAgKSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkICYmIHNlbGVjdGVkTmF2QnV0dG9uRWxlbWVudCkge1xuICAgICAgICBpZiAodGhpcy5uYXRpdmVGb2N1c0FjdGl2ZSkge1xuICAgICAgICAgIHNlbGVjdGVkTmF2QnV0dG9uRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIC8qKiBFbWl0cyB3aGVuIGEgbmF2IGNvYWNoIGhhcyB0aGUgZm9jdXMgKi9cbiAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnZm9jdXNjb2FjaCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2ZvY3VzZWQnKSAmJiB0aGlzLmZvY3VzZWQpIHtcbiAgICAgIGNvbnN0IGZvY3VzZWROYXZCdXR0b25FbGVtZW50ID0gdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAnLnNiYi1zci1uYXZpZ2F0aW9uX19jdHJsLWJ1dHRvbicsXG4gICAgICApIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuXG4gICAgICBpZiAoZm9jdXNlZE5hdkJ1dHRvbkVsZW1lbnQgJiYgdGhpcy5uYXRpdmVGb2N1c0FjdGl2ZSkge1xuICAgICAgICBmb2N1c2VkTmF2QnV0dG9uRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgYSBsaXN0IG9mIHNlcnZpY2UgaWNvbnMgcHJvdmlkZWQgYnkgYSBjYWxsZXJcbiAgICpcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiJHtjbGFzc01hcCh7XG4gICAgICAgICAgJ3NiYi1zci1uYXZpZ2F0aW9uX19pdGVtLWNvYWNoJzogdHJ1ZSxcbiAgICAgICAgICAnbGFzdC1jb2FjaCc6IHRoaXMuY29hY2hJdGVtRGV0YWlscy5kcml2ZXJBcmVhU2lkZT8ucmlnaHQgfHwgZmFsc2UsXG4gICAgICAgICAgJ2ZpcnN0LWNvYWNoJzogdGhpcy5jb2FjaEl0ZW1EZXRhaWxzLmRyaXZlckFyZWFTaWRlPy5sZWZ0IHx8IGZhbHNlLFxuICAgICAgICAgICdzYmItc3ItbmF2aWdhdGlvbl9faXRlbS1jb2FjaC0tc2VsZWN0ZWQnOiB0aGlzLnNlbGVjdGVkLFxuICAgICAgICAgICdzYmItc3ItbmF2aWdhdGlvbl9faXRlbS1jb2FjaC0tZm9jdXNlZCc6IHRoaXMuZm9jdXNlZCxcbiAgICAgICAgICAnc2JiLXNyLW5hdmlnYXRpb25fX2l0ZW0tY29hY2gtLWhvdmVyZWQnOiB0aGlzLmhvdmVyZWQsXG4gICAgICAgIH0pfVwiXG4gICAgICA+XG4gICAgICAgICR7dGhpcy5fZ2V0TmF2aWdhdGlvbkJ1dHRvbigpfVxuICAgICAgICAke3RoaXMuY29hY2hJdGVtRGV0YWlscy5wcm9wZXJ0eUlkcz8ubGVuZ3RoXG4gICAgICAgICAgPyBodG1sYDxzYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLXNlcnZpY2VzXG4gICAgICAgICAgICAgID92ZXJ0aWNhbD1cIiR7dGhpcy52ZXJ0aWNhbH1cIlxuICAgICAgICAgICAgICAucHJvcGVydHlJZHM9XCIke3RoaXMuY29hY2hJdGVtRGV0YWlscy5wcm9wZXJ0eUlkc31cIlxuICAgICAgICAgICAgICA/c2hvd1RpdGxlSW5mbz1cIiR7dGhpcy5zaG93VGl0bGVJbmZvfVwiXG4gICAgICAgICAgICA+PC9zYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLXNlcnZpY2VzPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0TmF2aWdhdGlvbkJ1dHRvbigpOiBUZW1wbGF0ZVJlc3VsdCB8IG51bGwge1xuICAgIGNvbnN0IGN1cnJTZXJ2aWNlQ2xhc3NOdW1iZXIgPSB0aGlzLl9nZXRDb2FjaFNlcnZpY2VDbGFzc051bWJlcigpO1xuICAgIGNvbnN0IHRpdGxlRGVzY3JpcHRpb25OYXZDb2FjaEJ1dHRvbiA9XG4gICAgICB0aGlzLl9nZXRUaXRsZURlc2NyaXB0aW9uTmF2Q29hY2hCdXR0b24oY3VyclNlcnZpY2VDbGFzc051bWJlcik7XG4gICAgY29uc3QgYXJpYURlc2NyaXB0aW9uQ29hY2hTZXJ2aWNlcyA9IHRoaXMuX2dldEFyaWFEZXNjcmlwdGlvbkNvYWNoU2VydmljZXMoKTtcblxuICAgIHJldHVybiBodG1sYCA8YnV0dG9uXG4gICAgICBAY2xpY2s9JHsoKSA9PiB0aGlzLl9zZWxlY3ROYXZDb2FjaCh0aGlzLmluZGV4KX1cbiAgICAgIGNsYXNzPVwiJHtjbGFzc01hcCh7XG4gICAgICAgICdzYmItc3ItbmF2aWdhdGlvbl9fY3RybC1idXR0b24nOiB0cnVlLFxuICAgICAgICAnc2JiLXNyLW5hdmlnYXRpb24tZHJpdmVyLWFyZWEnOiB0aGlzLmNvYWNoSXRlbURldGFpbHMuaXNEcml2ZXJBcmVhLFxuICAgICAgfSl9XCJcbiAgICAgID9kaXNhYmxlZD1cIiR7dGhpcy5kaXNhYmxlfVwiXG4gICAgICB0aXRsZT1cIiR7dGhpcy5zaG93VGl0bGVJbmZvID8gdGl0bGVEZXNjcmlwdGlvbk5hdkNvYWNoQnV0dG9uIDogbm90aGluZ31cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwibmF2LWNvYWNoLXNlcnZpY2UtZGVzY3JpcHRpb25zLSR7dGhpcy5pbmRleH1cIlxuICAgID5cbiAgICAgICR7dGhpcy5fZ2V0QnRuSW5mb3JtYXRpb24oY3VyclNlcnZpY2VDbGFzc051bWJlcil9XG4gICAgICA8c2JiLXNjcmVlbi1yZWFkZXItb25seSBpZD1cIm5hdi1jb2FjaC1zZXJ2aWNlLWRlc2NyaXB0aW9ucy0ke3RoaXMuaW5kZXh9XCI+XG4gICAgICAgICR7IXRoaXMuc2hvd1RpdGxlSW5mbyA/IGh0bWxgPGRpdj4ke3RpdGxlRGVzY3JpcHRpb25OYXZDb2FjaEJ1dHRvbn08L2Rpdj5gIDogbm90aGluZ31cbiAgICAgICAgJHthcmlhRGVzY3JpcHRpb25Db2FjaFNlcnZpY2VzID8gaHRtbGA8ZGl2PiR7YXJpYURlc2NyaXB0aW9uQ29hY2hTZXJ2aWNlc308L2Rpdj5gIDogbm90aGluZ31cbiAgICAgIDwvc2JiLXNjcmVlbi1yZWFkZXItb25seT5cbiAgICA8L2J1dHRvbj5gO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0QnRuSW5mb3JtYXRpb24oc2VydmljZUNsYXNzTnVtYmVyOiBudW1iZXIgfCBudWxsKTogVGVtcGxhdGVSZXN1bHQgfCBudWxsIHtcbiAgICBpZiAodGhpcy5jb2FjaEl0ZW1EZXRhaWxzLmlzRHJpdmVyQXJlYSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICAke3NlcnZpY2VDbGFzc051bWJlciA9PT0gMVxuICAgICAgICA/IGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItc3ItbmF2aWdhdGlvbi0tZmlyc3QtY2xhc3NcIj48L3NwYW4+YFxuICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAke3RoaXMuY29hY2hJdGVtRGV0YWlscy50cmF2ZWxDbGFzcz8ubGVuZ3RoID4gMCB8fCB0aGlzLmNvYWNoSXRlbURldGFpbHMuaWRcbiAgICAgICAgPyBodG1sYDxkaXYgY2xhc3M9XCJzYmItc3ItbmF2aWdhdGlvbl9fYWRkaXRpb25hbC1pbmZvcm1hdGlvblwiPlxuICAgICAgICAgICAgJHt0aGlzLmNvYWNoSXRlbURldGFpbHMuaWRcbiAgICAgICAgICAgICAgPyBodG1sYDxkaXYgY2xhc3M9XCJzYmItc3ItbmF2aWdhdGlvbl9faXRlbS1jb2FjaC1udW1iZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICR7dGhpcy5jb2FjaEl0ZW1EZXRhaWxzLmlkfVxuICAgICAgICAgICAgICAgIDwvZGl2PmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAke3NlcnZpY2VDbGFzc051bWJlciA/PyBub3RoaW5nfVxuICAgICAgICAgICAgICBjbGFzcz1cInNiYi1zci1uYXZpZ2F0aW9uX19pdGVtLWNvYWNoLXRyYXZlbGNsYXNzXCJcbiAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgJHtzZXJ2aWNlQ2xhc3NOdW1iZXJ9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5gXG4gICAgICAgIDogbm90aGluZ31cbiAgICBgO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VGl0bGVEZXNjcmlwdGlvbk5hdkNvYWNoQnV0dG9uKHNlcnZpY2VDbGFzc051bWJlcjogbnVtYmVyIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5jb2FjaEl0ZW1EZXRhaWxzLmlzRHJpdmVyQXJlYSAmJlxuICAgICAgIXRoaXMuY29hY2hJdGVtRGV0YWlscy5kcml2ZXJBcmVhRWxlbWVudHM/LmRyaXZlckFyZWFOb1ZlcnRpY2FsV2FsbFxuICAgICkge1xuICAgICAgcmV0dXJuIGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oJ05BVklHQVRFX0NPQUNIX0JMT0NLRUQnLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LCBbXG4gICAgICAgIHRoaXMuY29hY2hJdGVtRGV0YWlscy5pZCxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvYWNoSXRlbURldGFpbHMuZHJpdmVyQXJlYUVsZW1lbnRzPy5kcml2ZXJBcmVhTm9WZXJ0aWNhbFdhbGwpIHtcbiAgICAgIHJldHVybiBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdDT0FDSF9MT0NPTU9USVZFJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCk7XG4gICAgfVxuXG4gICAgbGV0IGxhYmVsID0gZ2V0STE4blNlYXRSZXNlcnZhdGlvbignTkFWSUdBVEVfVE9fQ09BQ0gnLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LCBbXG4gICAgICB0aGlzLmNvYWNoSXRlbURldGFpbHMuaWQsXG4gICAgXSk7XG5cbiAgICAvL0lmIHNlcnZpY2UgY2xhc3MgZXhpc3QsIHRoZW4gZXhwYW5kIGxhYmVsIHdpdGggc2VydmljZSBjbGFzcyB0cmFuc2xhdGlvblxuICAgIGlmIChzZXJ2aWNlQ2xhc3NOdW1iZXIpIHtcbiAgICAgIGNvbnN0IHNlcnZpY2VDbGFzc1RyYW5zbGF0aW9uS2V5ID1cbiAgICAgICAgc2VydmljZUNsYXNzTnVtYmVyID09PSAxID8gJ1NFUlZJQ0VfQ0xBU1NfRklSU1QnIDogJ1NFUlZJQ0VfQ0xBU1NfU0VDT05EJztcbiAgICAgIGNvbnN0IHNlcnZpY2VDbGFzc1RyYW5zbGF0aW9uID0gZ2V0STE4blNlYXRSZXNlcnZhdGlvbihcbiAgICAgICAgc2VydmljZUNsYXNzVHJhbnNsYXRpb25LZXksXG4gICAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgICApO1xuICAgICAgY29uc3Qgc2VydmljZUNsYXNzTGFiZWwgPSBnZXRJMThuU2VhdFJlc2VydmF0aW9uKFxuICAgICAgICAnTkFWSUdBVEVfVE9fQ09BQ0hfU0VSVklDRV9DTEFTU19TVUInLFxuICAgICAgICB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LFxuICAgICAgICBbc2VydmljZUNsYXNzVHJhbnNsYXRpb25dLFxuICAgICAgKTtcbiAgICAgIGxhYmVsID0gbGFiZWwuY29uY2F0KHNlcnZpY2VDbGFzc0xhYmVsKTtcbiAgICB9XG5cbiAgICAvLyBFeHBhbmRzIHRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIHNlYXRzIGFuZCBiaWN5Y2xlIHNwYWNlcyBhcyBpbmZvXG4gICAgY29uc3QgZnJlZVBsYWNlc1R4dCA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAnQ09BQ0hfQVZBSUxBQkxFX05VTUJFUl9PRl9QTEFDRVMnLFxuICAgICAgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCxcbiAgICAgIFt0aGlzLmNvYWNoSXRlbURldGFpbHMuZnJlZVBsYWNlcz8uc2VhdHMsIHRoaXMuY29hY2hJdGVtRGV0YWlscy5mcmVlUGxhY2VzPy5iaWN5Y2xlc10sXG4gICAgKTtcbiAgICBsYWJlbCA9IGxhYmVsLmNvbmNhdCgnLiAnKS5jb25jYXQoZnJlZVBsYWNlc1R4dCk7XG4gICAgcmV0dXJuIGxhYmVsO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0QXJpYURlc2NyaXB0aW9uQ29hY2hTZXJ2aWNlcygpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBsZXQgYXJpYURlc2NyaXB0aW9uID0gbnVsbDtcbiAgICBpZiAodGhpcy5jb2FjaEl0ZW1EZXRhaWxzLnByb3BlcnR5SWRzPy5sZW5ndGgpIHtcbiAgICAgIGFyaWFEZXNjcmlwdGlvbiA9XG4gICAgICAgIGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oJ0NPQUNIX0FWQUlMQUJMRV9TRVJWSUNFUycsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpICsgJzogJztcbiAgICAgIGFyaWFEZXNjcmlwdGlvbiArPVxuICAgICAgICB0aGlzLmNvYWNoSXRlbURldGFpbHMucHJvcGVydHlJZHNcbiAgICAgICAgICAubWFwKChwcm9wZXJ0eUlkKSA9PiBnZXRJMThuU2VhdFJlc2VydmF0aW9uKHByb3BlcnR5SWQsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpKVxuICAgICAgICAgIC5qb2luKCkgKyAnLic7XG4gICAgfVxuICAgIHJldHVybiBhcmlhRGVzY3JpcHRpb247XG4gIH1cblxuICAvKipcbiAgICogZW1pdHMgdGhlIGluZGV4IG9mIHRoZSBjb2FjaCBhcnJheSBmb3IgdGhlIG1haW4gbmF2aWdhdGlvbi5cbiAgICogQHBhcmFtIGNvYWNoSW5kZXhcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX3NlbGVjdE5hdkNvYWNoKGNvYWNoSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIC8qKlxuICAgICAqIEB0eXBlIHtDdXN0b21FdmVudDxTZWxlY3RDb2FjaEV2ZW50RGV0YWlscz59XG4gICAgICogRW1pdHMgd2hlbiBhIGNvYWNoIHdpdGhpbiB0aGUgbmF2aWdhdGlvbiB3YXMgc2VsZWN0ZWQgYW5kIHJldHVybnMgdGhlIGNsaWNrZWQgY29hY2ggbmF2IGluZGV4LlxuICAgICAqL1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBDdXN0b21FdmVudDxTZWxlY3RDb2FjaEV2ZW50RGV0YWlscz4oJ3NlbGVjdGNvYWNoJywge1xuICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICBjb21wb3NlZDogdHJ1ZSxcbiAgICAgICAgZGV0YWlsOiBjb2FjaEluZGV4LFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldENvYWNoU2VydmljZUNsYXNzTnVtYmVyKCk6IG51bWJlciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmNvYWNoSXRlbURldGFpbHMudHJhdmVsQ2xhc3M/LmluY2x1ZGVzKCdGSVJTVCcpXG4gICAgICA/IDFcbiAgICAgIDogdGhpcy5jb2FjaEl0ZW1EZXRhaWxzLnRyYXZlbENsYXNzPy5pbmNsdWRlcygnU0VDT05EJylcbiAgICAgICAgPyAyXG4gICAgICAgIDogbnVsbDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaCc6IFNiYlNlYXRSZXNlcnZhdGlvbk5hdmlnYXRpb25Db2FjaEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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