@sbb-esta/lyne-elements-experimental 0.0.0 → 0.52.1

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 (123) hide show
  1. package/README.md +55 -0
  2. package/constants-ClrwyPF-.js +12 -0
  3. package/core/datetime/date-helper.d.ts +27 -0
  4. package/core/datetime/date-helper.d.ts.map +1 -0
  5. package/core/datetime.d.ts +2 -0
  6. package/core/datetime.d.ts.map +1 -0
  7. package/core/datetime.js +193 -0
  8. package/core/timetable/access-leg-helper.d.ts +26 -0
  9. package/core/timetable/access-leg-helper.d.ts.map +1 -0
  10. package/core/timetable/timetable-helper.d.ts +9 -0
  11. package/core/timetable/timetable-helper.d.ts.map +1 -0
  12. package/core/timetable/timetable-properties.d.ts +308 -0
  13. package/core/timetable/timetable-properties.d.ts.map +1 -0
  14. package/core/timetable.d.ts +4 -0
  15. package/core/timetable.d.ts.map +1 -0
  16. package/core/timetable.js +123 -0
  17. package/custom-elements.json +1606 -0
  18. package/development/constants-D72r1E-c.js +22 -0
  19. package/development/core/datetime/date-helper.d.ts +27 -0
  20. package/development/core/datetime/date-helper.d.ts.map +1 -0
  21. package/development/core/datetime.d.ts +2 -0
  22. package/development/core/datetime.d.ts.map +1 -0
  23. package/development/core/datetime.js +290 -0
  24. package/development/core/timetable/access-leg-helper.d.ts +26 -0
  25. package/development/core/timetable/access-leg-helper.d.ts.map +1 -0
  26. package/development/core/timetable/timetable-helper.d.ts +9 -0
  27. package/development/core/timetable/timetable-helper.d.ts.map +1 -0
  28. package/development/core/timetable/timetable-properties.d.ts +308 -0
  29. package/development/core/timetable/timetable-properties.d.ts.map +1 -0
  30. package/development/core/timetable.d.ts +4 -0
  31. package/development/core/timetable.d.ts.map +1 -0
  32. package/development/core/timetable.js +164 -0
  33. package/development/differenceInMinutes-D47vcSvy.js +21 -0
  34. package/development/format-BOXfsJCN.js +1373 -0
  35. package/development/isValid-YTpbhEHG.js +52 -0
  36. package/development/journey-summary/journey-summary.d.ts +57 -0
  37. package/development/journey-summary/journey-summary.d.ts.map +1 -0
  38. package/development/journey-summary.d.ts +2 -0
  39. package/development/journey-summary.d.ts.map +1 -0
  40. package/development/journey-summary.js +209 -0
  41. package/development/pearl-chain/pearl-chain.d.ts +41 -0
  42. package/development/pearl-chain/pearl-chain.d.ts.map +1 -0
  43. package/development/pearl-chain/pearl-chain.sample-data.d.ts +121 -0
  44. package/development/pearl-chain/pearl-chain.sample-data.d.ts.map +1 -0
  45. package/development/pearl-chain-time/pearl-chain-time.d.ts +44 -0
  46. package/development/pearl-chain-time/pearl-chain-time.d.ts.map +1 -0
  47. package/development/pearl-chain-time.d.ts +2 -0
  48. package/development/pearl-chain-time.d.ts.map +1 -0
  49. package/development/pearl-chain-time.js +208 -0
  50. package/development/pearl-chain-vertical/pearl-chain-vertical.d.ts +17 -0
  51. package/development/pearl-chain-vertical/pearl-chain-vertical.d.ts.map +1 -0
  52. package/development/pearl-chain-vertical-item/pearl-chain-vertical-item.d.ts +35 -0
  53. package/development/pearl-chain-vertical-item/pearl-chain-vertical-item.d.ts.map +1 -0
  54. package/development/pearl-chain-vertical-item.d.ts +2 -0
  55. package/development/pearl-chain-vertical-item.d.ts.map +1 -0
  56. package/development/pearl-chain-vertical-item.js +368 -0
  57. package/development/pearl-chain-vertical.d.ts +2 -0
  58. package/development/pearl-chain-vertical.d.ts.map +1 -0
  59. package/development/pearl-chain-vertical.js +58 -0
  60. package/development/pearl-chain.d.ts +2 -0
  61. package/development/pearl-chain.d.ts.map +1 -0
  62. package/development/pearl-chain.js +597 -0
  63. package/development/timetable-duration/timetable-duration.d.ts +23 -0
  64. package/development/timetable-duration/timetable-duration.d.ts.map +1 -0
  65. package/development/timetable-duration/timetable-duration.sample-data.d.ts +6 -0
  66. package/development/timetable-duration/timetable-duration.sample-data.d.ts.map +1 -0
  67. package/development/timetable-duration.d.ts +2 -0
  68. package/development/timetable-duration.d.ts.map +1 -0
  69. package/development/timetable-duration.js +106 -0
  70. package/development/timetable-row/timetable-row.d.ts +79 -0
  71. package/development/timetable-row/timetable-row.d.ts.map +1 -0
  72. package/development/timetable-row/timetable-row.sample-data.d.ts +24 -0
  73. package/development/timetable-row/timetable-row.sample-data.d.ts.map +1 -0
  74. package/development/timetable-row.d.ts +2 -0
  75. package/development/timetable-row.d.ts.map +1 -0
  76. package/development/timetable-row.js +687 -0
  77. package/differenceInMinutes-CDpgJIgL.js +19 -0
  78. package/format-qHhIvnY8.js +1164 -0
  79. package/index.d.ts +19 -0
  80. package/index.js +17 -0
  81. package/isValid-Df_caLp4.js +40 -0
  82. package/journey-summary/journey-summary.d.ts +57 -0
  83. package/journey-summary/journey-summary.d.ts.map +1 -0
  84. package/journey-summary.d.ts +2 -0
  85. package/journey-summary.d.ts.map +1 -0
  86. package/journey-summary.js +130 -0
  87. package/package.json +79 -2
  88. package/pearl-chain/pearl-chain.d.ts +41 -0
  89. package/pearl-chain/pearl-chain.d.ts.map +1 -0
  90. package/pearl-chain/pearl-chain.sample-data.d.ts +121 -0
  91. package/pearl-chain/pearl-chain.sample-data.d.ts.map +1 -0
  92. package/pearl-chain-time/pearl-chain-time.d.ts +44 -0
  93. package/pearl-chain-time/pearl-chain-time.d.ts.map +1 -0
  94. package/pearl-chain-time.d.ts +2 -0
  95. package/pearl-chain-time.d.ts.map +1 -0
  96. package/pearl-chain-time.js +90 -0
  97. package/pearl-chain-vertical/pearl-chain-vertical.d.ts +17 -0
  98. package/pearl-chain-vertical/pearl-chain-vertical.d.ts.map +1 -0
  99. package/pearl-chain-vertical-item/pearl-chain-vertical-item.d.ts +35 -0
  100. package/pearl-chain-vertical-item/pearl-chain-vertical-item.d.ts.map +1 -0
  101. package/pearl-chain-vertical-item.d.ts +2 -0
  102. package/pearl-chain-vertical-item.d.ts.map +1 -0
  103. package/pearl-chain-vertical-item.js +48 -0
  104. package/pearl-chain-vertical.d.ts +2 -0
  105. package/pearl-chain-vertical.d.ts.map +1 -0
  106. package/pearl-chain-vertical.js +24 -0
  107. package/pearl-chain.d.ts +2 -0
  108. package/pearl-chain.d.ts.map +1 -0
  109. package/pearl-chain.js +147 -0
  110. package/timetable-duration/timetable-duration.d.ts +23 -0
  111. package/timetable-duration/timetable-duration.d.ts.map +1 -0
  112. package/timetable-duration/timetable-duration.sample-data.d.ts +6 -0
  113. package/timetable-duration/timetable-duration.sample-data.d.ts.map +1 -0
  114. package/timetable-duration.d.ts +2 -0
  115. package/timetable-duration.d.ts.map +1 -0
  116. package/timetable-duration.js +37 -0
  117. package/timetable-row/timetable-row.d.ts +79 -0
  118. package/timetable-row/timetable-row.d.ts.map +1 -0
  119. package/timetable-row/timetable-row.sample-data.d.ts +24 -0
  120. package/timetable-row/timetable-row.sample-data.d.ts.map +1 -0
  121. package/timetable-row.d.ts +2 -0
  122. package/timetable-row.d.ts.map +1 -0
  123. package/timetable-row.js +386 -0
@@ -0,0 +1,597 @@
1
+ import { defaultDateAdapter } from "@sbb-esta/lyne-elements/core/datetime.js";
2
+ import { css, LitElement, html, nothing } from "lit";
3
+ import { property, customElement } from "lit/decorators.js";
4
+ import { styleMap } from "lit/directives/style-map.js";
5
+ import { removeTimezoneFromISOTimeString } from "./core/datetime.js";
6
+ import { isRideLeg } from "./core/timetable.js";
7
+ import { d as differenceInMinutes } from "./differenceInMinutes-D47vcSvy.js";
8
+ import { t as toDate } from "./constants-D72r1E-c.js";
9
+ function isAfter(date, dateToCompare) {
10
+ const _date = toDate(date);
11
+ const _dateToCompare = toDate(dateToCompare);
12
+ return _date.getTime() > _dateToCompare.getTime();
13
+ }
14
+ function isBefore(date, dateToCompare) {
15
+ const _date = toDate(date);
16
+ const _dateToCompare = toDate(dateToCompare);
17
+ return +_date < +_dateToCompare;
18
+ }
19
+ const style = css`/**
20
+ * Better font rendering (on OS X)
21
+ * http://maximilianhoffmann.com/posts/better-font-rendering-on-osx
22
+ *
23
+ * Usage:
24
+ *
25
+ * .var_dark_on_light {
26
+ * @include font-smoothing;
27
+ * }
28
+ * .var_light_on_dark {
29
+ * @include font-smoothing-reset;
30
+ * }
31
+ */
32
+ /** This mixin can be used to avoid spacing problems by inserting an invisible space as pseudo element. */
33
+ *,
34
+ ::before,
35
+ ::after {
36
+ box-sizing: border-box;
37
+ }
38
+
39
+ :host {
40
+ --sbb-pearl-chain-height: var(--sbb-border-width-2x);
41
+ --sbb-pearl-chain-spacing-small: var(--sbb-spacing-fixed-1x);
42
+ --sbb-pearl-chain-color: var(--sbb-pearl-chain-bullet-color);
43
+ --sbb-pearl-chain-color-disruption: var(--sbb-pearl-chain-bullet-color-disruption);
44
+ --sbb-pearl-chain-color-past: var(--sbb-pearl-chain-bullet-color-past);
45
+ --sbb-pearl-chain-leg-width: 100%;
46
+ --sbb-pearl-chain-bullet-size-start-end: 0.625rem;
47
+ --sbb-pearl-chain-bullet-size-stop: 0.5rem;
48
+ --sbb-pearl-chain-bullet-color: var(--sbb-color-charcoal);
49
+ --sbb-pearl-chain-bullet-color-past: var(--sbb-color-metal);
50
+ --sbb-pearl-chain-bullet-color-irrelevant: var(--sbb-color-metal);
51
+ --sbb-pearl-chain-bullet-color-disruption: var(--sbb-color-red);
52
+ --sbb-pearl-chain-bullet-border-width: var(--sbb-border-width-2x);
53
+ --sbb-pearl-chain-bullet-animation-duration: 1920ms;
54
+ --sbb-pearl-chain-bullet-animation-easing: ease-out;
55
+ --sbb-pearl-chain-bullet-crossed-width: 0.88375rem;
56
+ --sbb-pearl-chain-bullet-crossed-height: 0.21875rem;
57
+ --sbb-pearl-chain-bullet-crossed-border-width: 0.09375rem;
58
+ display: block;
59
+ }
60
+
61
+ .sbb-pearl-chain {
62
+ position: relative;
63
+ display: flex;
64
+ justify-content: space-between;
65
+ flex-wrap: nowrap;
66
+ color: var(--sbb-pearl-chain-color);
67
+ width: 100%;
68
+ padding-block: calc((var(--sbb-pearl-chain-bullet-size-start-end) - var(--sbb-pearl-chain-height)) / 2);
69
+ padding-inline-end: var(--sbb-pearl-chain-bullet-size-start-end);
70
+ }
71
+
72
+ .sbb-pearl-chain__bullet {
73
+ background: var(--sbb-pearl-chain-bullet-color);
74
+ color: var(--sbb-pearl-chain-bullet-color);
75
+ border-color: var(--sbb-pearl-chain-bullet-color);
76
+ border-radius: 100%;
77
+ min-height: var(--sbb-pearl-chain-bullet-size-start-end);
78
+ min-width: var(--sbb-pearl-chain-bullet-size-start-end);
79
+ height: var(--sbb-pearl-chain-bullet-size-start-end);
80
+ width: var(--sbb-pearl-chain-bullet-size-start-end);
81
+ content: "";
82
+ position: absolute;
83
+ background-color: currentcolor;
84
+ inset-block-start: 0;
85
+ z-index: 3;
86
+ }
87
+ @media (forced-colors: active) {
88
+ .sbb-pearl-chain__bullet {
89
+ --sbb-pearl-chain-bullet-color: CanvasText;
90
+ }
91
+ }
92
+
93
+ .sbb-pearl-chain__bullet:first-of-type {
94
+ inset-inline-start: 0;
95
+ }
96
+
97
+ .sbb-pearl-chain__bullet:last-of-type {
98
+ inset-inline-end: 0;
99
+ }
100
+
101
+ .sbb-pearl-chain__leg {
102
+ flex-shrink: 0;
103
+ flex-grow: 0;
104
+ position: relative;
105
+ height: var(--sbb-pearl-chain-height);
106
+ border-inline-end: var(--sbb-pearl-chain-spacing-small) solid Canvas;
107
+ background-color: currentcolor;
108
+ width: var(--sbb-pearl-chain-leg-width);
109
+ display: flex;
110
+ align-items: center;
111
+ }
112
+ @media (forced-colors: active) {
113
+ .sbb-pearl-chain__leg {
114
+ background-color: CanvasText;
115
+ }
116
+ .sbb-pearl-chain--past .sbb-pearl-chain__leg {
117
+ background-color: GrayText;
118
+ }
119
+ }
120
+
121
+ .sbb-pearl-chain__leg:last-of-type {
122
+ border: none;
123
+ }
124
+
125
+ .sbb-pearl-chain__stop {
126
+ background: var(--sbb-pearl-chain-bullet-color);
127
+ color: var(--sbb-pearl-chain-bullet-color);
128
+ border-color: var(--sbb-pearl-chain-bullet-color);
129
+ border-radius: 100%;
130
+ min-height: var(--sbb-pearl-chain-bullet-size-stop);
131
+ min-width: var(--sbb-pearl-chain-bullet-size-stop);
132
+ height: var(--sbb-pearl-chain-bullet-size-stop);
133
+ width: var(--sbb-pearl-chain-bullet-size-stop);
134
+ border: var(--sbb-pearl-chain-bullet-border-width) solid currentcolor;
135
+ background: Canvas;
136
+ position: relative;
137
+ z-index: 2;
138
+ }
139
+ @media (forced-colors: active) {
140
+ .sbb-pearl-chain__stop {
141
+ --sbb-pearl-chain-bullet-color: CanvasText;
142
+ }
143
+ }
144
+
145
+ .sbb-pearl-chain__bullet--future {
146
+ background: var(--sbb-pearl-chain-bullet-color);
147
+ color: var(--sbb-pearl-chain-bullet-color);
148
+ border-color: var(--sbb-pearl-chain-bullet-color);
149
+ border-radius: 100%;
150
+ }
151
+ @media (forced-colors: active) {
152
+ .sbb-pearl-chain__bullet--future {
153
+ --sbb-pearl-chain-bullet-color: CanvasText;
154
+ }
155
+ }
156
+
157
+ .sbb-pearl-chain__leg--past,
158
+ .sbb-pearl-chain--past,
159
+ .sbb-pearl-chain__leg--past::after,
160
+ .sbb-pearl-chain__leg--progress::after,
161
+ .sbb-pearl-chain__leg--progress .sbb-pearl-chain__stop,
162
+ .sbb-pearl-chain--progress,
163
+ .sbb-pearl-chain__bullet--past {
164
+ --sbb-pearl-chain-bullet-color: var(--sbb-pearl-chain-bullet-color-past);
165
+ color: var(--sbb-pearl-chain-color-past);
166
+ }
167
+ @media (forced-colors: active) {
168
+ .sbb-pearl-chain__leg--past,
169
+ .sbb-pearl-chain--past,
170
+ .sbb-pearl-chain__leg--past::after,
171
+ .sbb-pearl-chain__leg--progress::after,
172
+ .sbb-pearl-chain__leg--progress .sbb-pearl-chain__stop,
173
+ .sbb-pearl-chain--progress,
174
+ .sbb-pearl-chain__bullet--past {
175
+ --sbb-pearl-chain-bullet-color: GrayText !important;
176
+ }
177
+ }
178
+ @media (forced-colors: active) {
179
+ .sbb-pearl-chain__leg--past,
180
+ .sbb-pearl-chain--past,
181
+ .sbb-pearl-chain__leg--past::after,
182
+ .sbb-pearl-chain__leg--progress::after,
183
+ .sbb-pearl-chain__leg--progress .sbb-pearl-chain__stop,
184
+ .sbb-pearl-chain--progress,
185
+ .sbb-pearl-chain__bullet--past {
186
+ background-color: GrayText !important;
187
+ }
188
+ }
189
+
190
+ .sbb-pearl-chain__bullet--progress {
191
+ --sbb-pearl-chain-bullet-color: var(--sbb-pearl-chain-bullet-color-past);
192
+ background: var(--sbb-pearl-chain-bullet-color);
193
+ }
194
+ @media (forced-colors: active) {
195
+ .sbb-pearl-chain__bullet--progress {
196
+ --sbb-pearl-chain-bullet-color: GrayText !important;
197
+ }
198
+ }
199
+
200
+ .sbb-pearl-chain__bullet--departure-disruption,
201
+ .sbb-pearl-chain--arrival-disruption,
202
+ .sbb-pearl-chain--departure-disruption,
203
+ .sbb-pearl-chain__leg--disruption {
204
+ --sbb-pearl-chain-bullet-color: var(--sbb-pearl-chain-bullet-color-disruption);
205
+ color: var(--sbb-pearl-chain-color-disruption);
206
+ }
207
+ @media (forced-colors: active) {
208
+ .sbb-pearl-chain__bullet--departure-disruption,
209
+ .sbb-pearl-chain--arrival-disruption,
210
+ .sbb-pearl-chain--departure-disruption,
211
+ .sbb-pearl-chain__leg--disruption {
212
+ --sbb-pearl-chain-bullet-color: Highlight;
213
+ }
214
+ }
215
+ @media (forced-colors: active) {
216
+ .sbb-pearl-chain__bullet--departure-disruption,
217
+ .sbb-pearl-chain--arrival-disruption,
218
+ .sbb-pearl-chain--departure-disruption,
219
+ .sbb-pearl-chain__leg--disruption {
220
+ color: Highlight;
221
+ background: Highlight;
222
+ }
223
+ }
224
+
225
+ .sbb-pearl-chain__leg--disruption .sbb-pearl-chain__stop {
226
+ --sbb-pearl-chain-bullet-color: var(--sbb-pearl-chain-bullet-color-disruption);
227
+ }
228
+ @media (forced-colors: active) {
229
+ .sbb-pearl-chain__leg--disruption .sbb-pearl-chain__stop {
230
+ --sbb-pearl-chain-bullet-color: Highlight;
231
+ }
232
+ }
233
+
234
+ .sbb-pearl-chain__leg--past .sbb-pearl-chain__stop {
235
+ --sbb-pearl-chain-bullet-color: var(--sbb-pearl-chain-bullet-color-past);
236
+ }
237
+ @media (forced-colors: active) {
238
+ .sbb-pearl-chain__leg--past .sbb-pearl-chain__stop {
239
+ --sbb-pearl-chain-bullet-color: GrayText !important;
240
+ }
241
+ }
242
+
243
+ .sbb-pearl-chain__leg--disruption::after {
244
+ background-color: unset;
245
+ background-image: linear-gradient(to right, currentcolor 0%, currentcolor 50%, Canvas 50%);
246
+ background-repeat: repeat-x;
247
+ background-size: calc(2 * var(--sbb-pearl-chain-spacing-small)) var(--sbb-pearl-chain-height);
248
+ inset-inline-end: var(--sbb-pearl-chain-height);
249
+ }
250
+ @media (forced-colors: active) {
251
+ .sbb-pearl-chain__leg--disruption::after {
252
+ background: unset;
253
+ border-block-start: 0.0625rem dashed Highlight;
254
+ transform: translateY(0.0625rem);
255
+ }
256
+ }
257
+
258
+ .sbb-pearl-chain__leg--skipped {
259
+ color: var(--sbb-pearl-chain-color-disruption);
260
+ }
261
+ .sbb-pearl-chain__leg--skipped::after {
262
+ background-color: unset;
263
+ background-image: linear-gradient(to right, currentcolor 0%, currentcolor 50%, Canvas 50%);
264
+ background-repeat: repeat-x;
265
+ background-size: calc(2 * var(--sbb-pearl-chain-spacing-small)) var(--sbb-pearl-chain-height);
266
+ inset-inline-end: var(--sbb-pearl-chain-height);
267
+ }
268
+ @media (forced-colors: active) {
269
+ .sbb-pearl-chain__leg--skipped::after {
270
+ background: unset;
271
+ border-block-start: 0.0625rem dashed Highlight;
272
+ transform: translateY(0.0625rem);
273
+ }
274
+ }
275
+
276
+ .sbb-pearl-chain__stop--departure-skipped {
277
+ border: var(--sbb-pearl-chain-bullet-border-width) solid currentcolor;
278
+ background: Canvas;
279
+ min-height: var(--sbb-pearl-chain-bullet-size-stop);
280
+ min-width: var(--sbb-pearl-chain-bullet-size-stop);
281
+ height: var(--sbb-pearl-chain-bullet-size-stop);
282
+ width: var(--sbb-pearl-chain-bullet-size-stop);
283
+ border: var(--sbb-pearl-chain-bullet-border-width) solid currentcolor;
284
+ background: Canvas;
285
+ }
286
+ .sbb-pearl-chain__stop--departure-skipped::before {
287
+ content: "";
288
+ position: absolute;
289
+ inset-block-start: 50%;
290
+ inset-inline-start: 50%;
291
+ transform: translate(-50%, -50%) rotate(45deg);
292
+ border-block-start: var(--sbb-pearl-chain-bullet-crossed-border-width) solid canvas;
293
+ background: var(--sbb-pearl-chain-bullet-color-disruption);
294
+ height: var(--sbb-pearl-chain-bullet-crossed-height);
295
+ width: var(--sbb-pearl-chain-bullet-crossed-width);
296
+ }
297
+ @media (forced-colors: active) {
298
+ .sbb-pearl-chain__stop--departure-skipped::before {
299
+ background: Highlight;
300
+ }
301
+ }
302
+
303
+ .sbb-pearl-chain--arrival-skipped,
304
+ .sbb-pearl-chain--departure-skipped {
305
+ min-height: var(--sbb-pearl-chain-bullet-size-start-end);
306
+ min-width: var(--sbb-pearl-chain-bullet-size-start-end);
307
+ height: var(--sbb-pearl-chain-bullet-size-start-end);
308
+ width: var(--sbb-pearl-chain-bullet-size-start-end);
309
+ border: var(--sbb-pearl-chain-bullet-border-width) solid currentcolor;
310
+ background: Canvas;
311
+ }
312
+ .sbb-pearl-chain--arrival-skipped::before,
313
+ .sbb-pearl-chain--departure-skipped::before {
314
+ content: "";
315
+ position: absolute;
316
+ inset-block-start: 50%;
317
+ inset-inline-start: 50%;
318
+ transform: translate(-50%, -50%) rotate(45deg);
319
+ border-block-start: var(--sbb-pearl-chain-bullet-crossed-border-width) solid canvas;
320
+ background: var(--sbb-pearl-chain-bullet-color-disruption);
321
+ height: var(--sbb-pearl-chain-bullet-crossed-height);
322
+ width: var(--sbb-pearl-chain-bullet-crossed-width);
323
+ }
324
+ @media (forced-colors: active) {
325
+ .sbb-pearl-chain--arrival-skipped::before,
326
+ .sbb-pearl-chain--departure-skipped::before {
327
+ background: Highlight;
328
+ }
329
+ }
330
+
331
+ .sbb-pearl-chain__leg::after {
332
+ content: "";
333
+ position: absolute;
334
+ inset-block: 0;
335
+ inset-inline-start: 0;
336
+ background-color: currentcolor;
337
+ border-radius: var(--sbb-pearl-chain-height);
338
+ z-index: 1;
339
+ }
340
+ @media (forced-colors: active) {
341
+ .sbb-pearl-chain__leg::after {
342
+ background-color: CanvasText;
343
+ }
344
+ .sbb-pearl-chain--past .sbb-pearl-chain__leg::after {
345
+ background-color: GrayText;
346
+ }
347
+ }
348
+
349
+ .sbb-pearl-chain__leg:last-of-type::after {
350
+ inset-inline-end: calc(-1 * var(--sbb-pearl-chain-height));
351
+ }
352
+
353
+ .sbb-pearl-chain__leg--progress::after {
354
+ background-color: var(--sbb-pearl-chain-color-past);
355
+ width: var(--sbb-pearl-chain-leg-status);
356
+ }
357
+
358
+ .sbb-pearl-chain__position {
359
+ background: var(--sbb-pearl-chain-bullet-color);
360
+ color: var(--sbb-pearl-chain-bullet-color);
361
+ border-color: var(--sbb-pearl-chain-bullet-color);
362
+ border-radius: 100%;
363
+ min-height: var(--sbb-pearl-chain-bullet-size-start-end);
364
+ min-width: var(--sbb-pearl-chain-bullet-size-start-end);
365
+ height: var(--sbb-pearl-chain-bullet-size-start-end);
366
+ width: var(--sbb-pearl-chain-bullet-size-start-end);
367
+ --sbb-pearl-chain-bullet-color: var(--sbb-pearl-chain-bullet-color-disruption);
368
+ animation: pearl-chain-bullet-position-pulse var(--sbb-pearl-chain-bullet-animation-duration) var(--sbb-pearl-chain-bullet-animation-easing) infinite;
369
+ position: absolute;
370
+ inset-block-start: -200%;
371
+ z-index: 4;
372
+ inset-inline-start: var(--sbb-pearl-chain-status-position);
373
+ }
374
+ @media (forced-colors: active) {
375
+ .sbb-pearl-chain__position {
376
+ --sbb-pearl-chain-bullet-color: CanvasText;
377
+ }
378
+ }
379
+ @media (forced-colors: active) {
380
+ .sbb-pearl-chain__position {
381
+ --sbb-pearl-chain-bullet-color: Highlight;
382
+ }
383
+ }
384
+ @keyframes pearl-chain-bullet-position-pulse {
385
+ 0% {
386
+ box-shadow: 0 0 0 0 var(--sbb-pearl-chain-bullet-color-disruption);
387
+ }
388
+ 25% {
389
+ box-shadow: 0 0 0 0 var(--sbb-pearl-chain-bullet-color-disruption);
390
+ }
391
+ 50% {
392
+ box-shadow: 0 0 0 0.1875rem var(--sbb-color-red-alpha-20);
393
+ }
394
+ 100% {
395
+ box-shadow: 0 0 0 0 var(--sbb-pearl-chain-bullet-color-disruption);
396
+ }
397
+ }
398
+
399
+ .sbb-pearl-chain__position--no-animation {
400
+ animation: unset;
401
+ }
402
+
403
+ .sbb-screen-reader-only {
404
+ border: 0;
405
+ clip: rect(0 0 0 0);
406
+ height: 1px;
407
+ margin: -1px;
408
+ overflow: hidden;
409
+ padding: 0;
410
+ position: absolute;
411
+ white-space: nowrap;
412
+ width: 1px;
413
+ }`;
414
+ var __defProp = Object.defineProperty;
415
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
416
+ var __decorateClass = (decorators, target, key, kind) => {
417
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
418
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
419
+ if (decorator = decorators[i])
420
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
421
+ if (kind && result) __defProp(target, key, result);
422
+ return result;
423
+ };
424
+ let SbbPearlChainElement = class extends LitElement {
425
+ constructor() {
426
+ super(...arguments);
427
+ this._now = null;
428
+ }
429
+ set now(value) {
430
+ this._now = defaultDateAdapter.getValidDateOrNull(defaultDateAdapter.deserialize(value));
431
+ }
432
+ get now() {
433
+ return this._now;
434
+ }
435
+ _getAllDuration(legs) {
436
+ return legs == null ? void 0 : legs.reduce((sum, leg) => {
437
+ var _a, _b;
438
+ const arrivalNoTz = removeTimezoneFromISOTimeString((_a = leg.arrival) == null ? void 0 : _a.time);
439
+ const departureNoTz = removeTimezoneFromISOTimeString((_b = leg.departure) == null ? void 0 : _b.time);
440
+ if (arrivalNoTz && departureNoTz) {
441
+ return sum + differenceInMinutes(
442
+ removeTimezoneFromISOTimeString(leg.arrival.time),
443
+ removeTimezoneFromISOTimeString(leg.departure.time)
444
+ );
445
+ }
446
+ return sum;
447
+ }, 0);
448
+ }
449
+ _isAllCancelled(legs) {
450
+ return legs == null ? void 0 : legs.every((leg) => {
451
+ var _a, _b;
452
+ return (_b = (_a = leg == null ? void 0 : leg.serviceJourney) == null ? void 0 : _a.serviceAlteration) == null ? void 0 : _b.cancelled;
453
+ });
454
+ }
455
+ _getRelativeDuration(legs, leg) {
456
+ var _a, _b;
457
+ const arrivalNoTz = removeTimezoneFromISOTimeString((_a = leg.arrival) == null ? void 0 : _a.time);
458
+ const departureNoTz = removeTimezoneFromISOTimeString((_b = leg.departure) == null ? void 0 : _b.time);
459
+ if (arrivalNoTz && departureNoTz) {
460
+ const duration = differenceInMinutes(
461
+ removeTimezoneFromISOTimeString(leg.arrival.time),
462
+ removeTimezoneFromISOTimeString(leg.departure.time)
463
+ );
464
+ const allDurations = this._getAllDuration(legs);
465
+ if (allDurations === 0) {
466
+ return 100;
467
+ }
468
+ return duration / allDurations * 100;
469
+ }
470
+ return 0;
471
+ }
472
+ _getProgress(now, start, end) {
473
+ if (!start || !end) {
474
+ return 0;
475
+ }
476
+ const total = differenceInMinutes(end, start);
477
+ const progress = differenceInMinutes(now, start);
478
+ return total && progress / total * 100;
479
+ }
480
+ _getStatus(now, end, start) {
481
+ if (start && end && isBefore(start, now) && isAfter(end, now)) {
482
+ return "progress";
483
+ } else if (end && isBefore(end, now)) {
484
+ return "past";
485
+ }
486
+ return "future";
487
+ }
488
+ _renderPosition(now, start, end) {
489
+ const currentPosition = this._getProgress(now, start, end);
490
+ if (currentPosition < 0 && currentPosition > 100) return void 0;
491
+ const statusStyle = () => {
492
+ return {
493
+ "--sbb-pearl-chain-status-position": `${currentPosition}%`,
494
+ ...currentPosition >= 50 ? { transform: `translateX(-100%)` } : {}
495
+ };
496
+ };
497
+ const animation = this.disableAnimation ? "sbb-pearl-chain__position--no-animation" : "";
498
+ return html`<span
499
+ style=${styleMap(statusStyle())}
500
+ class="sbb-pearl-chain__position ${animation}"
501
+ ></span>`;
502
+ }
503
+ render() {
504
+ var _a, _b, _c, _d;
505
+ const now = this.now ?? /* @__PURE__ */ new Date();
506
+ const rideLegs = (_a = this.legs) == null ? void 0 : _a.filter((leg) => isRideLeg(leg));
507
+ const departureTime = (rideLegs == null ? void 0 : rideLegs.length) && removeTimezoneFromISOTimeString((_c = (_b = rideLegs[0]) == null ? void 0 : _b.departure) == null ? void 0 : _c.time);
508
+ const arrivalTime = (rideLegs == null ? void 0 : rideLegs.length) && removeTimezoneFromISOTimeString((_d = rideLegs[(rideLegs == null ? void 0 : rideLegs.length) - 1].arrival) == null ? void 0 : _d.time);
509
+ const departureNotServiced = (() => {
510
+ var _a2, _b2, _c2, _d2;
511
+ return rideLegs && ((_b2 = (_a2 = rideLegs[0]) == null ? void 0 : _a2.serviceJourney) == null ? void 0 : _b2.stopPoints) && ((_d2 = (_c2 = rideLegs[0]) == null ? void 0 : _c2.serviceJourney) == null ? void 0 : _d2.stopPoints[0].stopStatus) === "NOT_SERVICED" ? "sbb-pearl-chain--departure-skipped" : "";
512
+ })();
513
+ const arrivalNotServiced = (() => {
514
+ var _a2;
515
+ const lastLeg = rideLegs && rideLegs[rideLegs.length - 1];
516
+ const stops = lastLeg && ((_a2 = lastLeg.serviceJourney) == null ? void 0 : _a2.stopPoints);
517
+ return stops && stops[stops.length - 1].stopStatus === "NOT_SERVICED" ? "sbb-pearl-chain--arrival-skipped" : "";
518
+ })();
519
+ const departureCancelClass = (() => {
520
+ var _a2, _b2, _c2;
521
+ return rideLegs && ((_c2 = (_b2 = (_a2 = rideLegs[0]) == null ? void 0 : _a2.serviceJourney) == null ? void 0 : _b2.serviceAlteration) == null ? void 0 : _c2.cancelled) ? "sbb-pearl-chain--departure-disruption" : "";
522
+ })();
523
+ const arrivalCancelClass = (() => {
524
+ var _a2, _b2, _c2;
525
+ return rideLegs && ((_c2 = (_b2 = (_a2 = rideLegs[rideLegs.length - 1]) == null ? void 0 : _a2.serviceJourney) == null ? void 0 : _b2.serviceAlteration) == null ? void 0 : _c2.cancelled) ? "sbb-pearl-chain--arrival-disruption" : "";
526
+ })();
527
+ const statusClassDeparture = rideLegs && departureTime && arrivalTime && !departureCancelClass ? "sbb-pearl-chain__bullet--" + this._getStatus(now, arrivalTime, departureTime) : "";
528
+ const statusClassArrival = rideLegs && arrivalTime && !arrivalCancelClass ? "sbb-pearl-chain__bullet--" + this._getStatus(now, arrivalTime) : "";
529
+ if (this._isAllCancelled(rideLegs)) {
530
+ return html`
531
+ <div class="sbb-pearl-chain">
532
+ <span class="sbb-pearl-chain__bullet sbb-pearl-chain--departure-disruption"></span>
533
+ <div class="sbb-pearl-chain__leg sbb-pearl-chain__leg--disruption"></div>
534
+ <span class="sbb-pearl-chain__bullet sbb-pearl-chain--departure-disruption"></span>
535
+ </div>
536
+ `;
537
+ }
538
+ return html`
539
+ <div class="sbb-pearl-chain">
540
+ <span
541
+ class="sbb-pearl-chain__bullet ${statusClassDeparture} ${departureNotServiced} ${departureCancelClass}"
542
+ ></span>
543
+ ${rideLegs == null ? void 0 : rideLegs.map((leg, index) => {
544
+ var _a2, _b2, _c2, _d2, _e, _f;
545
+ const { stopPoints, serviceAlteration } = (leg == null ? void 0 : leg.serviceJourney) || {};
546
+ const duration = this._getRelativeDuration(rideLegs, leg);
547
+ const departure = removeTimezoneFromISOTimeString((_a2 = leg.departure) == null ? void 0 : _a2.time);
548
+ const arrival = removeTimezoneFromISOTimeString((_b2 = leg.arrival) == null ? void 0 : _b2.time);
549
+ const isArrivalNotServiced = stopPoints && ((_c2 = stopPoints[stopPoints.length - 1]) == null ? void 0 : _c2.stopStatus) === "NOT_SERVICED";
550
+ const isArrivalPlanned = stopPoints && ((_d2 = stopPoints[stopPoints.length - 1]) == null ? void 0 : _d2.stopStatus) === "PLANNED";
551
+ const isDepartureNotServiced = stopPoints && ((_e = stopPoints[0]) == null ? void 0 : _e.stopStatus) === "NOT_SERVICED";
552
+ const stopPointsBefore = index > 0 && rideLegs[index - 1].serviceJourney.stopPoints;
553
+ const isBeforeLegArrivalNotServiced = stopPointsBefore && ((_f = stopPointsBefore[stopPointsBefore.length - 1]) == null ? void 0 : _f.stopStatus) === "NOT_SERVICED";
554
+ const skippedLeg = isArrivalNotServiced || isDepartureNotServiced && isArrivalPlanned ? "sbb-pearl-chain__leg--skipped" : "";
555
+ const departureSkippedBullet = isDepartureNotServiced || isBeforeLegArrivalNotServiced ? "sbb-pearl-chain__stop--departure-skipped" : "";
556
+ const cancelled = (serviceAlteration == null ? void 0 : serviceAlteration.cancelled) ? "sbb-pearl-chain__leg--disruption" : "";
557
+ const legStatus = !cancelled && this._getStatus(now, departure, arrival) && "sbb-pearl-chain__leg--" + this._getStatus(now, arrival, departure);
558
+ const legStyle = () => {
559
+ return {
560
+ "--sbb-pearl-chain-leg-width": `${duration}%`,
561
+ ...this._getStatus(now, arrival, departure) === "progress" && !cancelled ? {
562
+ "--sbb-pearl-chain-leg-status": `${this._getProgress(now, departure, arrival)}%`
563
+ } : {}
564
+ };
565
+ };
566
+ return html` <div
567
+ class="sbb-pearl-chain__leg ${legStatus} ${cancelled} ${skippedLeg}"
568
+ style=${styleMap(legStyle())}
569
+ >
570
+ ${index > 0 && index < rideLegs.length ? html`<span class="sbb-pearl-chain__stop ${departureSkippedBullet}"></span>` : nothing}
571
+ ${this._getStatus(now, arrival, departure) === "progress" && !cancelled ? this._renderPosition(now, departure, arrival) : nothing}
572
+ </div>`;
573
+ })}
574
+ <span
575
+ class="sbb-pearl-chain__bullet ${statusClassArrival} ${arrivalNotServiced} ${arrivalCancelClass}"
576
+ ></span>
577
+ </div>
578
+ `;
579
+ }
580
+ };
581
+ SbbPearlChainElement.styles = style;
582
+ __decorateClass([
583
+ property({ type: Array })
584
+ ], SbbPearlChainElement.prototype, "legs", 2);
585
+ __decorateClass([
586
+ property({ attribute: "disable-animation", type: Boolean })
587
+ ], SbbPearlChainElement.prototype, "disableAnimation", 2);
588
+ __decorateClass([
589
+ property()
590
+ ], SbbPearlChainElement.prototype, "now", 1);
591
+ SbbPearlChainElement = __decorateClass([
592
+ customElement("sbb-pearl-chain")
593
+ ], SbbPearlChainElement);
594
+ export {
595
+ SbbPearlChainElement
596
+ };
597
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVhcmwtY2hhaW4uanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9pc0FmdGVyLm1qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9pc0JlZm9yZS5tanMiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMtZXhwZXJpbWVudGFsL3BlYXJsLWNoYWluL3BlYXJsLWNoYWluLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBpc0FmdGVyXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBmaXJzdCBkYXRlIGFmdGVyIHRoZSBzZWNvbmQgb25lP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGZpcnN0IGRhdGUgYWZ0ZXIgdGhlIHNlY29uZCBvbmU/XG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0aGF0IHNob3VsZCBiZSBhZnRlciB0aGUgb3RoZXIgb25lIHRvIHJldHVybiB0cnVlXG4gKiBAcGFyYW0gZGF0ZVRvQ29tcGFyZSAtIFRoZSBkYXRlIHRvIGNvbXBhcmUgd2l0aFxuICpcbiAqIEByZXR1cm5zIFRoZSBmaXJzdCBkYXRlIGlzIGFmdGVyIHRoZSBzZWNvbmQgZGF0ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJcyAxMCBKdWx5IDE5ODkgYWZ0ZXIgMTEgRmVicnVhcnkgMTk4Nz9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzQWZ0ZXIobmV3IERhdGUoMTk4OSwgNiwgMTApLCBuZXcgRGF0ZSgxOTg3LCAxLCAxMSkpXG4gKiAvLz0+IHRydWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQWZ0ZXIoZGF0ZSwgZGF0ZVRvQ29tcGFyZSkge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgY29uc3QgX2RhdGVUb0NvbXBhcmUgPSB0b0RhdGUoZGF0ZVRvQ29tcGFyZSk7XG4gIHJldHVybiBfZGF0ZS5nZXRUaW1lKCkgPiBfZGF0ZVRvQ29tcGFyZS5nZXRUaW1lKCk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgaXNBZnRlcjtcbiIsImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBpc0JlZm9yZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZmlyc3QgZGF0ZSBiZWZvcmUgdGhlIHNlY29uZCBvbmU/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZmlyc3QgZGF0ZSBiZWZvcmUgdGhlIHNlY29uZCBvbmU/XG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0aGF0IHNob3VsZCBiZSBiZWZvcmUgdGhlIG90aGVyIG9uZSB0byByZXR1cm4gdHJ1ZVxuICogQHBhcmFtIGRhdGVUb0NvbXBhcmUgLSBUaGUgZGF0ZSB0byBjb21wYXJlIHdpdGhcbiAqXG4gKiBAcmV0dXJucyBUaGUgZmlyc3QgZGF0ZSBpcyBiZWZvcmUgdGhlIHNlY29uZCBkYXRlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElzIDEwIEp1bHkgMTk4OSBiZWZvcmUgMTEgRmVicnVhcnkgMTk4Nz9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzQmVmb3JlKG5ldyBEYXRlKDE5ODksIDYsIDEwKSwgbmV3IERhdGUoMTk4NywgMSwgMTEpKVxuICogLy89PiBmYWxzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNCZWZvcmUoZGF0ZSwgZGF0ZVRvQ29tcGFyZSkge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgY29uc3QgX2RhdGVUb0NvbXBhcmUgPSB0b0RhdGUoZGF0ZVRvQ29tcGFyZSk7XG4gIHJldHVybiArX2RhdGUgPCArX2RhdGVUb0NvbXBhcmU7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgaXNCZWZvcmU7XG4iLCJpbXBvcnQgeyBkZWZhdWx0RGF0ZUFkYXB0ZXIgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2RhdGV0aW1lLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiRGF0ZUxpa2UgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2ludGVyZmFjZXMvdHlwZXMnO1xuaW1wb3J0IHsgZGlmZmVyZW5jZUluTWludXRlcywgaXNBZnRlciwgaXNCZWZvcmUgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBMaXRFbGVtZW50LCBub3RoaW5nIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgc3R5bGVNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9zdHlsZS1tYXAuanMnO1xuXG5pbXBvcnQgeyByZW1vdmVUaW1lem9uZUZyb21JU09UaW1lU3RyaW5nIH0gZnJvbSAnLi4vY29yZS9kYXRldGltZS5qcyc7XG5pbXBvcnQgdHlwZSB7IExlZywgUHRSaWRlTGVnIH0gZnJvbSAnLi4vY29yZS90aW1ldGFibGUuanMnO1xuaW1wb3J0IHsgaXNSaWRlTGVnIH0gZnJvbSAnLi4vY29yZS90aW1ldGFibGUuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9wZWFybC1jaGFpbi5zY3NzP2xpdCZpbmxpbmUnO1xuXG50eXBlIFN0YXR1cyA9ICdwcm9ncmVzcycgfCAnZnV0dXJlJyB8ICdwYXN0JztcblxuLyoqXG4gKiBJdCB2aXN1YWxseSBkaXNwbGF5cyBqb3VybmV5IGluZm9ybWF0aW9uLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLXBlYXJsLWNoYWluJylcbmV4cG9ydCBjbGFzcyBTYmJQZWFybENoYWluRWxlbWVudCBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKipcbiAgICogRGVmaW5lIHRoZSBsZWdzIG9mIHRoZSBwZWFybC1jaGFpbi5cbiAgICogRm9ybWF0OlxuICAgKiBge1wibGVnc1wiOiBbe1wiZHVyYXRpb25cIjogMjV9LCAuLi5dfWBcbiAgICogYGR1cmF0aW9uYCBpbiBtaW51dGVzLiBEdXJhdGlvbiBvZiB0aGUgbGVnIGlzIHJlbGF0aXZlXG4gICAqIHRvIHRoZSB0b3RhbCB0cmF2ZWwgdGltZS4gRXhhbXBsZTogZGVwYXJ0dXJlIDE2OjMwLCBjaGFuZ2UgYXQgMTY6NDAsXG4gICAqIGFycml2YWwgYXQgMTc6MDAuIFNvIHRoZSBjaGFuZ2Ugc2hvdWxkIGhhdmUgYSBkdXJhdGlvbiBvZiAzMy4zMyUuXG4gICAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBBcnJheSB9KSBwdWJsaWMgbGVncz86IChMZWcgfCBQdFJpZGVMZWcpW107XG5cbiAgLyoqXG4gICAqIFBlciBkZWZhdWx0LCB0aGUgY3VycmVudCBsb2NhdGlvbiBoYXMgYSBwdWxzYXRpbmcgYW5pbWF0aW9uLiBZb3UgY2FuXG4gICAqIGRpc2FibGUgdGhlIGFuaW1hdGlvbiB3aXRoIHRoaXMgcHJvcGVydHkuXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdkaXNhYmxlLWFuaW1hdGlvbicsIHR5cGU6IEJvb2xlYW4gfSkgcHVibGljIGRpc2FibGVBbmltYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKiBBIGNvbmZpZ3VyZWQgZGF0ZSB3aGljaCBhY3RzIGFzIHRoZSBjdXJyZW50IGRhdGUgaW5zdGVhZCBvZiB0aGUgcmVhbCBjdXJyZW50IGRhdGUuIFJlY29tbWVuZGVkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IG5vdyh2YWx1ZTogU2JiRGF0ZUxpa2UgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9ub3cgPSBkZWZhdWx0RGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKGRlZmF1bHREYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSkpO1xuICB9XG4gIHB1YmxpYyBnZXQgbm93KCk6IERhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbm93O1xuICB9XG4gIHByaXZhdGUgX25vdzogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX2dldEFsbER1cmF0aW9uKGxlZ3M6IFB0UmlkZUxlZ1tdKTogbnVtYmVyIHtcbiAgICByZXR1cm4gbGVncz8ucmVkdWNlKChzdW06IG51bWJlciwgbGVnKSA9PiB7XG4gICAgICBjb25zdCBhcnJpdmFsTm9UeiA9IHJlbW92ZVRpbWV6b25lRnJvbUlTT1RpbWVTdHJpbmcobGVnLmFycml2YWw/LnRpbWUpO1xuICAgICAgY29uc3QgZGVwYXJ0dXJlTm9UeiA9IHJlbW92ZVRpbWV6b25lRnJvbUlTT1RpbWVTdHJpbmcobGVnLmRlcGFydHVyZT8udGltZSk7XG4gICAgICBpZiAoYXJyaXZhbE5vVHogJiYgZGVwYXJ0dXJlTm9Ueikge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHN1bSArXG4gICAgICAgICAgZGlmZmVyZW5jZUluTWludXRlcyhcbiAgICAgICAgICAgIHJlbW92ZVRpbWV6b25lRnJvbUlTT1RpbWVTdHJpbmcobGVnLmFycml2YWwudGltZSkhLFxuICAgICAgICAgICAgcmVtb3ZlVGltZXpvbmVGcm9tSVNPVGltZVN0cmluZyhsZWcuZGVwYXJ0dXJlLnRpbWUpISxcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc3VtO1xuICAgIH0sIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNBbGxDYW5jZWxsZWQobGVnczogUHRSaWRlTGVnW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gbGVncz8uZXZlcnkoKGxlZykgPT4gbGVnPy5zZXJ2aWNlSm91cm5leT8uc2VydmljZUFsdGVyYXRpb24/LmNhbmNlbGxlZCk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZWxhdGl2ZUR1cmF0aW9uKGxlZ3M6IFB0UmlkZUxlZ1tdLCBsZWc6IFB0UmlkZUxlZyk6IG51bWJlciB7XG4gICAgY29uc3QgYXJyaXZhbE5vVHogPSByZW1vdmVUaW1lem9uZUZyb21JU09UaW1lU3RyaW5nKGxlZy5hcnJpdmFsPy50aW1lKTtcbiAgICBjb25zdCBkZXBhcnR1cmVOb1R6ID0gcmVtb3ZlVGltZXpvbmVGcm9tSVNPVGltZVN0cmluZyhsZWcuZGVwYXJ0dXJlPy50aW1lKTtcbiAgICBpZiAoYXJyaXZhbE5vVHogJiYgZGVwYXJ0dXJlTm9Ueikge1xuICAgICAgY29uc3QgZHVyYXRpb24gPSBkaWZmZXJlbmNlSW5NaW51dGVzKFxuICAgICAgICByZW1vdmVUaW1lem9uZUZyb21JU09UaW1lU3RyaW5nKGxlZy5hcnJpdmFsLnRpbWUpISxcbiAgICAgICAgcmVtb3ZlVGltZXpvbmVGcm9tSVNPVGltZVN0cmluZyhsZWcuZGVwYXJ0dXJlLnRpbWUpISxcbiAgICAgICk7XG4gICAgICBjb25zdCBhbGxEdXJhdGlvbnMgPSB0aGlzLl9nZXRBbGxEdXJhdGlvbihsZWdzKTtcblxuICAgICAgaWYgKGFsbER1cmF0aW9ucyA9PT0gMCkge1xuICAgICAgICByZXR1cm4gMTAwO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gKGR1cmF0aW9uIC8gYWxsRHVyYXRpb25zKSAqIDEwMDtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRQcm9ncmVzcyhub3c6IERhdGUsIHN0YXJ0PzogRGF0ZSwgZW5kPzogRGF0ZSk6IG51bWJlciB7XG4gICAgaWYgKCFzdGFydCB8fCAhZW5kKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY29uc3QgdG90YWwgPSBkaWZmZXJlbmNlSW5NaW51dGVzKGVuZCwgc3RhcnQpO1xuICAgIGNvbnN0IHByb2dyZXNzID0gZGlmZmVyZW5jZUluTWludXRlcyhub3csIHN0YXJ0KTtcblxuICAgIHJldHVybiB0b3RhbCAmJiAocHJvZ3Jlc3MgLyB0b3RhbCkgKiAxMDA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRTdGF0dXMobm93OiBEYXRlLCBlbmQ/OiBEYXRlLCBzdGFydD86IERhdGUpOiBTdGF0dXMge1xuICAgIGlmIChzdGFydCAmJiBlbmQgJiYgaXNCZWZvcmUoc3RhcnQsIG5vdykgJiYgaXNBZnRlcihlbmQsIG5vdykpIHtcbiAgICAgIHJldHVybiAncHJvZ3Jlc3MnO1xuICAgIH0gZWxzZSBpZiAoZW5kICYmIGlzQmVmb3JlKGVuZCwgbm93KSkge1xuICAgICAgcmV0dXJuICdwYXN0JztcbiAgICB9XG4gICAgcmV0dXJuICdmdXR1cmUnO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyUG9zaXRpb24obm93OiBEYXRlLCBzdGFydD86IERhdGUsIGVuZD86IERhdGUpOiBUZW1wbGF0ZVJlc3VsdCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY3VycmVudFBvc2l0aW9uID0gdGhpcy5fZ2V0UHJvZ3Jlc3Mobm93LCBzdGFydCwgZW5kKTtcbiAgICBpZiAoY3VycmVudFBvc2l0aW9uIDwgMCAmJiBjdXJyZW50UG9zaXRpb24gPiAxMDApIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBzdGF0dXNTdHlsZSA9ICgpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgICctLXNiYi1wZWFybC1jaGFpbi1zdGF0dXMtcG9zaXRpb24nOiBgJHtjdXJyZW50UG9zaXRpb259JWAsXG4gICAgICAgIC4uLihjdXJyZW50UG9zaXRpb24gPj0gNTAgPyB7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZVgoLTEwMCUpYCB9IDoge30pLFxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgYW5pbWF0aW9uID0gdGhpcy5kaXNhYmxlQW5pbWF0aW9uID8gJ3NiYi1wZWFybC1jaGFpbl9fcG9zaXRpb24tLW5vLWFuaW1hdGlvbicgOiAnJztcblxuICAgIHJldHVybiBodG1sYDxzcGFuXG4gICAgICBzdHlsZT0ke3N0eWxlTWFwKHN0YXR1c1N0eWxlKCkpfVxuICAgICAgY2xhc3M9XCJzYmItcGVhcmwtY2hhaW5fX3Bvc2l0aW9uICR7YW5pbWF0aW9ufVwiXG4gICAgPjwvc3Bhbj5gO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3Qgbm93ID0gdGhpcy5ub3cgPz8gbmV3IERhdGUoKTtcblxuICAgIGNvbnN0IHJpZGVMZWdzOiBQdFJpZGVMZWdbXSA9IHRoaXMubGVncz8uZmlsdGVyKChsZWcpID0+IGlzUmlkZUxlZyhsZWcpKSBhcyBQdFJpZGVMZWdbXTtcblxuICAgIGNvbnN0IGRlcGFydHVyZVRpbWUgPVxuICAgICAgcmlkZUxlZ3M/Lmxlbmd0aCAmJiByZW1vdmVUaW1lem9uZUZyb21JU09UaW1lU3RyaW5nKHJpZGVMZWdzWzBdPy5kZXBhcnR1cmU/LnRpbWUpO1xuICAgIGNvbnN0IGFycml2YWxUaW1lID1cbiAgICAgIHJpZGVMZWdzPy5sZW5ndGggJiZcbiAgICAgIHJlbW92ZVRpbWV6b25lRnJvbUlTT1RpbWVTdHJpbmcocmlkZUxlZ3NbcmlkZUxlZ3M/Lmxlbmd0aCAtIDFdLmFycml2YWw/LnRpbWUpO1xuXG4gICAgY29uc3QgZGVwYXJ0dXJlTm90U2VydmljZWQgPSAoKCk6IHN0cmluZyA9PiB7XG4gICAgICByZXR1cm4gcmlkZUxlZ3MgJiZcbiAgICAgICAgcmlkZUxlZ3NbMF0/LnNlcnZpY2VKb3VybmV5Py5zdG9wUG9pbnRzICYmXG4gICAgICAgIHJpZGVMZWdzWzBdPy5zZXJ2aWNlSm91cm5leT8uc3RvcFBvaW50c1swXS5zdG9wU3RhdHVzID09PSAnTk9UX1NFUlZJQ0VEJ1xuICAgICAgICA/ICdzYmItcGVhcmwtY2hhaW4tLWRlcGFydHVyZS1za2lwcGVkJ1xuICAgICAgICA6ICcnO1xuICAgIH0pKCk7XG5cbiAgICBjb25zdCBhcnJpdmFsTm90U2VydmljZWQgPSAoKCk6IHN0cmluZyA9PiB7XG4gICAgICBjb25zdCBsYXN0TGVnID0gcmlkZUxlZ3MgJiYgcmlkZUxlZ3NbcmlkZUxlZ3MubGVuZ3RoIC0gMV07XG4gICAgICBjb25zdCBzdG9wcyA9IGxhc3RMZWcgJiYgbGFzdExlZy5zZXJ2aWNlSm91cm5leT8uc3RvcFBvaW50cztcblxuICAgICAgcmV0dXJuIHN0b3BzICYmIHN0b3BzW3N0b3BzLmxlbmd0aCAtIDFdLnN0b3BTdGF0dXMgPT09ICdOT1RfU0VSVklDRUQnXG4gICAgICAgID8gJ3NiYi1wZWFybC1jaGFpbi0tYXJyaXZhbC1za2lwcGVkJ1xuICAgICAgICA6ICcnO1xuICAgIH0pKCk7XG5cbiAgICBjb25zdCBkZXBhcnR1cmVDYW5jZWxDbGFzcyA9ICgoKTogc3RyaW5nID0+IHtcbiAgICAgIHJldHVybiByaWRlTGVncyAmJiByaWRlTGVnc1swXT8uc2VydmljZUpvdXJuZXk/LnNlcnZpY2VBbHRlcmF0aW9uPy5jYW5jZWxsZWRcbiAgICAgICAgPyAnc2JiLXBlYXJsLWNoYWluLS1kZXBhcnR1cmUtZGlzcnVwdGlvbidcbiAgICAgICAgOiAnJztcbiAgICB9KSgpO1xuXG4gICAgY29uc3QgYXJyaXZhbENhbmNlbENsYXNzID0gKCgpOiBzdHJpbmcgPT4ge1xuICAgICAgcmV0dXJuIHJpZGVMZWdzICYmIHJpZGVMZWdzW3JpZGVMZWdzLmxlbmd0aCAtIDFdPy5zZXJ2aWNlSm91cm5leT8uc2VydmljZUFsdGVyYXRpb24/LmNhbmNlbGxlZFxuICAgICAgICA/ICdzYmItcGVhcmwtY2hhaW4tLWFycml2YWwtZGlzcnVwdGlvbidcbiAgICAgICAgOiAnJztcbiAgICB9KSgpO1xuXG4gICAgY29uc3Qgc3RhdHVzQ2xhc3NEZXBhcnR1cmUgPVxuICAgICAgcmlkZUxlZ3MgJiYgZGVwYXJ0dXJlVGltZSAmJiBhcnJpdmFsVGltZSAmJiAhZGVwYXJ0dXJlQ2FuY2VsQ2xhc3NcbiAgICAgICAgPyAnc2JiLXBlYXJsLWNoYWluX19idWxsZXQtLScgKyB0aGlzLl9nZXRTdGF0dXMobm93LCBhcnJpdmFsVGltZSwgZGVwYXJ0dXJlVGltZSlcbiAgICAgICAgOiAnJztcblxuICAgIGNvbnN0IHN0YXR1c0NsYXNzQXJyaXZhbCA9XG4gICAgICByaWRlTGVncyAmJiBhcnJpdmFsVGltZSAmJiAhYXJyaXZhbENhbmNlbENsYXNzXG4gICAgICAgID8gJ3NiYi1wZWFybC1jaGFpbl9fYnVsbGV0LS0nICsgdGhpcy5fZ2V0U3RhdHVzKG5vdywgYXJyaXZhbFRpbWUpXG4gICAgICAgIDogJyc7XG5cbiAgICBpZiAodGhpcy5faXNBbGxDYW5jZWxsZWQocmlkZUxlZ3MpKSB7XG4gICAgICByZXR1cm4gaHRtbGBcbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1wZWFybC1jaGFpblwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXBlYXJsLWNoYWluX19idWxsZXQgc2JiLXBlYXJsLWNoYWluLS1kZXBhcnR1cmUtZGlzcnVwdGlvblwiPjwvc3Bhbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXBlYXJsLWNoYWluX19sZWcgc2JiLXBlYXJsLWNoYWluX19sZWctLWRpc3J1cHRpb25cIj48L2Rpdj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1wZWFybC1jaGFpbl9fYnVsbGV0IHNiYi1wZWFybC1jaGFpbi0tZGVwYXJ0dXJlLWRpc3J1cHRpb25cIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgYDtcbiAgICB9XG5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItcGVhcmwtY2hhaW5cIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNiYi1wZWFybC1jaGFpbl9fYnVsbGV0ICR7c3RhdHVzQ2xhc3NEZXBhcnR1cmV9ICR7ZGVwYXJ0dXJlTm90U2VydmljZWR9ICR7ZGVwYXJ0dXJlQ2FuY2VsQ2xhc3N9XCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgJHtyaWRlTGVncz8ubWFwKChsZWc6IFB0UmlkZUxlZywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgc3RvcFBvaW50cywgc2VydmljZUFsdGVyYXRpb24gfSA9IGxlZz8uc2VydmljZUpvdXJuZXkgfHwge307XG5cbiAgICAgICAgICBjb25zdCBkdXJhdGlvbiA9IHRoaXMuX2dldFJlbGF0aXZlRHVyYXRpb24ocmlkZUxlZ3MsIGxlZyk7XG4gICAgICAgICAgY29uc3QgZGVwYXJ0dXJlID0gcmVtb3ZlVGltZXpvbmVGcm9tSVNPVGltZVN0cmluZyhsZWcuZGVwYXJ0dXJlPy50aW1lKTtcbiAgICAgICAgICBjb25zdCBhcnJpdmFsID0gcmVtb3ZlVGltZXpvbmVGcm9tSVNPVGltZVN0cmluZyhsZWcuYXJyaXZhbD8udGltZSk7XG5cbiAgICAgICAgICBjb25zdCBpc0Fycml2YWxOb3RTZXJ2aWNlZCA9XG4gICAgICAgICAgICBzdG9wUG9pbnRzICYmIHN0b3BQb2ludHNbc3RvcFBvaW50cy5sZW5ndGggLSAxXT8uc3RvcFN0YXR1cyA9PT0gJ05PVF9TRVJWSUNFRCc7XG4gICAgICAgICAgY29uc3QgaXNBcnJpdmFsUGxhbm5lZCA9XG4gICAgICAgICAgICBzdG9wUG9pbnRzICYmIHN0b3BQb2ludHNbc3RvcFBvaW50cy5sZW5ndGggLSAxXT8uc3RvcFN0YXR1cyA9PT0gJ1BMQU5ORUQnO1xuICAgICAgICAgIGNvbnN0IGlzRGVwYXJ0dXJlTm90U2VydmljZWQgPSBzdG9wUG9pbnRzICYmIHN0b3BQb2ludHNbMF0/LnN0b3BTdGF0dXMgPT09ICdOT1RfU0VSVklDRUQnO1xuXG4gICAgICAgICAgY29uc3Qgc3RvcFBvaW50c0JlZm9yZSA9IGluZGV4ID4gMCAmJiByaWRlTGVnc1tpbmRleCAtIDFdLnNlcnZpY2VKb3VybmV5LnN0b3BQb2ludHM7XG4gICAgICAgICAgY29uc3QgaXNCZWZvcmVMZWdBcnJpdmFsTm90U2VydmljZWQgPVxuICAgICAgICAgICAgc3RvcFBvaW50c0JlZm9yZSAmJlxuICAgICAgICAgICAgc3RvcFBvaW50c0JlZm9yZVtzdG9wUG9pbnRzQmVmb3JlLmxlbmd0aCAtIDFdPy5zdG9wU3RhdHVzID09PSAnTk9UX1NFUlZJQ0VEJztcblxuICAgICAgICAgIGNvbnN0IHNraXBwZWRMZWcgPVxuICAgICAgICAgICAgaXNBcnJpdmFsTm90U2VydmljZWQgfHwgKGlzRGVwYXJ0dXJlTm90U2VydmljZWQgJiYgaXNBcnJpdmFsUGxhbm5lZClcbiAgICAgICAgICAgICAgPyAnc2JiLXBlYXJsLWNoYWluX19sZWctLXNraXBwZWQnXG4gICAgICAgICAgICAgIDogJyc7XG4gICAgICAgICAgY29uc3QgZGVwYXJ0dXJlU2tpcHBlZEJ1bGxldCA9XG4gICAgICAgICAgICBpc0RlcGFydHVyZU5vdFNlcnZpY2VkIHx8IGlzQmVmb3JlTGVnQXJyaXZhbE5vdFNlcnZpY2VkXG4gICAgICAgICAgICAgID8gJ3NiYi1wZWFybC1jaGFpbl9fc3RvcC0tZGVwYXJ0dXJlLXNraXBwZWQnXG4gICAgICAgICAgICAgIDogJyc7XG5cbiAgICAgICAgICBjb25zdCBjYW5jZWxsZWQgPSBzZXJ2aWNlQWx0ZXJhdGlvbj8uY2FuY2VsbGVkID8gJ3NiYi1wZWFybC1jaGFpbl9fbGVnLS1kaXNydXB0aW9uJyA6ICcnO1xuXG4gICAgICAgICAgY29uc3QgbGVnU3RhdHVzID1cbiAgICAgICAgICAgICFjYW5jZWxsZWQgJiZcbiAgICAgICAgICAgIHRoaXMuX2dldFN0YXR1cyhub3csIGRlcGFydHVyZSwgYXJyaXZhbCkgJiZcbiAgICAgICAgICAgICdzYmItcGVhcmwtY2hhaW5fX2xlZy0tJyArIHRoaXMuX2dldFN0YXR1cyhub3csIGFycml2YWwsIGRlcGFydHVyZSk7XG5cbiAgICAgICAgICBjb25zdCBsZWdTdHlsZSA9ICgpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICctLXNiYi1wZWFybC1jaGFpbi1sZWctd2lkdGgnOiBgJHtkdXJhdGlvbn0lYCxcbiAgICAgICAgICAgICAgLi4uKHRoaXMuX2dldFN0YXR1cyhub3csIGFycml2YWwsIGRlcGFydHVyZSkgPT09ICdwcm9ncmVzcycgJiYgIWNhbmNlbGxlZFxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAnLS1zYmItcGVhcmwtY2hhaW4tbGVnLXN0YXR1cyc6IGAke3RoaXMuX2dldFByb2dyZXNzKG5vdywgZGVwYXJ0dXJlLCBhcnJpdmFsKX0lYCxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHJldHVybiBodG1sYCA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNiYi1wZWFybC1jaGFpbl9fbGVnICR7bGVnU3RhdHVzfSAke2NhbmNlbGxlZH0gJHtza2lwcGVkTGVnfVwiXG4gICAgICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKGxlZ1N0eWxlKCkpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgICR7aW5kZXggPiAwICYmIGluZGV4IDwgcmlkZUxlZ3MubGVuZ3RoXG4gICAgICAgICAgICAgID8gaHRtbGA8c3BhbiBjbGFzcz1cInNiYi1wZWFybC1jaGFpbl9fc3RvcCAke2RlcGFydHVyZVNraXBwZWRCdWxsZXR9XCI+PC9zcGFuPmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgJHt0aGlzLl9nZXRTdGF0dXMobm93LCBhcnJpdmFsLCBkZXBhcnR1cmUpID09PSAncHJvZ3Jlc3MnICYmICFjYW5jZWxsZWRcbiAgICAgICAgICAgICAgPyB0aGlzLl9yZW5kZXJQb3NpdGlvbihub3csIGRlcGFydHVyZSwgYXJyaXZhbClcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgIDwvZGl2PmA7XG4gICAgICAgIH0pfVxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwic2JiLXBlYXJsLWNoYWluX19idWxsZXQgJHtzdGF0dXNDbGFzc0Fycml2YWx9ICR7YXJyaXZhbE5vdFNlcnZpY2VkfSAke2Fycml2YWxDYW5jZWxDbGFzc31cIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXBlYXJsLWNoYWluJzogU2JiUGVhcmxDaGFpbkVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYiIsIl9hIiwiX2QiLCJfYyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFzQk8sU0FBUyxRQUFRLE1BQU0sZUFBZTtBQUMzQyxRQUFNLFFBQVEsT0FBTyxJQUFJO0FBQ3pCLFFBQU0saUJBQWlCLE9BQU8sYUFBYTtBQUMzQyxTQUFPLE1BQU0sUUFBTyxJQUFLLGVBQWUsUUFBTztBQUNqRDtBQ0pPLFNBQVMsU0FBUyxNQUFNLGVBQWU7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
@@ -0,0 +1,23 @@
1
+ import { CSSResultGroup, TemplateResult, LitElement } from 'lit';
2
+
3
+ /**
4
+ * Used in `sbb-timetable-row`, it displays information about the trip duration.
5
+ */
6
+ export declare class SbbTimetableDurationElement extends LitElement {
7
+ static styles: CSSResultGroup;
8
+ /**
9
+ * Stringified JSON which defines most of the
10
+ * content of the component. Please check the
11
+ * individual stories to get an idea of the
12
+ * structure.
13
+ */
14
+ config: string;
15
+ private _language;
16
+ protected render(): TemplateResult;
17
+ }
18
+ declare global {
19
+ interface HTMLElementTagNameMap {
20
+ 'sbb-timetable-duration': SbbTimetableDurationElement;
21
+ }
22
+ }
23
+ //# sourceMappingURL=timetable-duration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timetable-duration.d.ts","sourceRoot":"","sources":["../../../../src/elements-experimental/timetable-duration/timetable-duration.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1D,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAKvC;;GAEG;AACH,qBACa,2BAA4B,SAAQ,UAAU;IACzD,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD;;;;;OAKG;IACgB,MAAM,EAAG,MAAM,CAAC;IAEnC,OAAO,CAAC,SAAS,CAAmC;cAEjC,MAAM,IAAI,cAAc;CAqC5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,wBAAwB,EAAE,2BAA2B,CAAC;KACvD;CACF"}
@@ -0,0 +1,6 @@
1
+ declare const _default: {
2
+ hours: number;
3
+ minutes: number;
4
+ }[];
5
+ export default _default;
6
+ //# sourceMappingURL=timetable-duration.sample-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timetable-duration.sample-data.d.ts","sourceRoot":"","sources":["../../../../src/elements-experimental/timetable-duration/timetable-duration.sample-data.ts"],"names":[],"mappings":";;;;AAAA,wBAaE"}