@sbb-esta/lyne-elements-dev 5.0.0-next.3-dev.1779188320 → 5.0.0-next.3-dev.1779200097

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 (162) hide show
  1. package/autocomplete/autocomplete-base-element.js +2 -2
  2. package/autocomplete/autocomplete.component.js +1 -1
  3. package/{autocomplete-base-element-DRGjFF9_.js → autocomplete-base-element-6leI6UF4.js} +24 -14
  4. package/autocomplete.js +4 -4
  5. package/autocomplete.pure.js +3 -3
  6. package/calendar/calendar/calendar.component.js +2 -2
  7. package/{calendar.component-oS_T4s4k.js → calendar.component-BK4w5GWV.js} +35 -29
  8. package/calendar.js +4 -4
  9. package/calendar.pure.js +3 -3
  10. package/carousel/carousel/carousel.component.js +1 -1
  11. package/carousel/carousel-item/carousel-item.component.js +2 -2
  12. package/carousel/carousel-list/carousel-list.component.js +1 -1
  13. package/{carousel-item.component-DyZAdXL_.js → carousel-item.component-B6WmZPkW.js} +12 -2
  14. package/{carousel-list.component-Ai0uJWB7.js → carousel-list.component-CnZehdy6.js} +6 -13
  15. package/{carousel.component-9oMMOyWo.js → carousel.component-ZrkGeJgZ.js} +1 -1
  16. package/carousel.js +5 -5
  17. package/carousel.pure.js +4 -4
  18. package/chip/chip-group/chip-group.component.js +1 -1
  19. package/{chip-group.component-DJORKUef.js → chip-group.component-BIP7c2G0.js} +2 -7
  20. package/chip.js +1 -1
  21. package/chip.pure.js +1 -1
  22. package/core/overlay/overlay-outside-pointer-event-listener.js +1 -1
  23. package/custom-elements.json +3886 -3393
  24. package/datepicker/datepicker/datepicker.component.js +1 -1
  25. package/development/autocomplete/autocomplete-base-element.d.ts +6 -3
  26. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  27. package/development/autocomplete/autocomplete-base-element.js +2 -2
  28. package/development/autocomplete/autocomplete.component.js +1 -1
  29. package/development/autocomplete-base-element-qnPoRLvM.js +695 -0
  30. package/development/autocomplete.js +2 -2
  31. package/development/autocomplete.pure.js +2 -2
  32. package/development/calendar/calendar/calendar.component.d.ts +8 -0
  33. package/development/calendar/calendar/calendar.component.d.ts.map +1 -1
  34. package/development/calendar/calendar/calendar.component.js +2 -2
  35. package/development/calendar.component-BKWvdgzO.js +1461 -0
  36. package/development/calendar.js +2 -2
  37. package/development/calendar.pure.js +2 -2
  38. package/development/carousel/carousel/carousel.component.js +1 -1
  39. package/development/carousel/carousel-item/carousel-item.component.d.ts +8 -6
  40. package/development/carousel/carousel-item/carousel-item.component.d.ts.map +1 -1
  41. package/development/carousel/carousel-item/carousel-item.component.js +2 -2
  42. package/development/carousel/carousel-list/carousel-list.component.d.ts.map +1 -1
  43. package/development/carousel/carousel-list/carousel-list.component.js +1 -1
  44. package/development/{carousel-item.component-B_0wdIAu.js → carousel-item.component-nuo7jAt3.js} +16 -4
  45. package/development/carousel-list.component-B8PUREwS.js +126 -0
  46. package/development/carousel.component-D_KIJ9Bb.js +139 -0
  47. package/development/carousel.js +4 -4
  48. package/development/carousel.pure.js +4 -4
  49. package/development/chip/chip-group/chip-group.component.d.ts +1 -23
  50. package/development/chip/chip-group/chip-group.component.d.ts.map +1 -1
  51. package/development/chip/chip-group/chip-group.component.js +1 -1
  52. package/development/chip-group.component-CVizDsAz.js +395 -0
  53. package/development/chip.js +1 -1
  54. package/development/chip.pure.js +1 -1
  55. package/development/core/overlay/overlay-outside-pointer-event-listener.d.ts +1 -1
  56. package/development/core/overlay/overlay-outside-pointer-event-listener.d.ts.map +1 -1
  57. package/development/core/overlay/overlay-outside-pointer-event-listener.js +2 -2
  58. package/development/core.d.ts +0 -1
  59. package/development/core.d.ts.map +1 -1
  60. package/development/datepicker/datepicker/datepicker.component.d.ts +1 -1
  61. package/development/datepicker/datepicker/datepicker.component.d.ts.map +1 -1
  62. package/development/datepicker/datepicker/datepicker.component.js +3 -3
  63. package/development/dialog/dialog/dialog.component.d.ts +2 -3
  64. package/development/dialog/dialog/dialog.component.d.ts.map +1 -1
  65. package/development/dialog/dialog/dialog.component.js +1 -1
  66. package/development/{dialog.component-AItB8ixG.js → dialog.component-D8B2dVck.js} +4 -7
  67. package/development/dialog.js +1 -1
  68. package/development/dialog.pure.js +1 -1
  69. package/development/file-selector/common/file-selector-common.d.ts +5 -0
  70. package/development/file-selector/common/file-selector-common.d.ts.map +1 -1
  71. package/development/file-selector/common/file-selector-common.js +2 -2
  72. package/development/{file-selector-common-CGL95Rnw.js → file-selector-common-mZ5UYxOF.js} +17 -8
  73. package/development/file-selector.js +2 -2
  74. package/development/file-selector.pure.js +2 -2
  75. package/development/form-field/form-field/form-field.component.d.ts +1 -1
  76. package/development/form-field/form-field/form-field.component.d.ts.map +1 -1
  77. package/development/form-field.component-CPWBCHer.js +1 -1
  78. package/development/overlay/overlay-base-element.d.ts +4 -4
  79. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  80. package/development/overlay/overlay-base-element.js +3 -9
  81. package/development/overlay/overlay.component.d.ts +3 -3
  82. package/development/overlay/overlay.component.d.ts.map +1 -1
  83. package/development/overlay/overlay.component.js +1 -1
  84. package/development/{overlay.component-rFmitc_r.js → overlay.component-YSCuGeme.js} +4 -7
  85. package/development/overlay.js +1 -1
  86. package/development/overlay.pure.js +1 -1
  87. package/development/paginator/common/paginator-common.d.ts +11 -6
  88. package/development/paginator/common/paginator-common.d.ts.map +1 -1
  89. package/development/paginator/common/paginator-common.js +2 -2
  90. package/development/paginator-common-B7iba0wQ.js +432 -0
  91. package/development/paginator.js +2 -2
  92. package/development/paginator.pure.js +2 -2
  93. package/development/popover/popover.component.d.ts +7 -0
  94. package/development/popover/popover.component.d.ts.map +1 -1
  95. package/development/popover/popover.component.js +2 -2
  96. package/development/popover.component-CKUZbWbV.js +578 -0
  97. package/development/popover.js +2 -2
  98. package/development/popover.pure.js +2 -2
  99. package/development/{step.component-CcjtUFyR.js → step.component-B_YHm1tz.js} +32 -10
  100. package/development/stepper/step/step.component.d.ts +14 -1
  101. package/development/stepper/step/step.component.d.ts.map +1 -1
  102. package/development/stepper/step/step.component.js +2 -2
  103. package/development/stepper/stepper/stepper.component.d.ts +9 -5
  104. package/development/stepper/stepper/stepper.component.d.ts.map +1 -1
  105. package/development/stepper/stepper/stepper.component.js +1 -1
  106. package/development/stepper.component-BeqeUIRN.js +443 -0
  107. package/development/stepper.js +3 -3
  108. package/development/stepper.pure.js +3 -3
  109. package/development/tab-group.component-CGMBihsQ.js +297 -0
  110. package/development/{tab-label.component-CNX8bsJL.js → tab-label.component-CQOLO2t7.js} +11 -13
  111. package/development/tabs/tab-group/tab-group.component.d.ts +15 -8
  112. package/development/tabs/tab-group/tab-group.component.d.ts.map +1 -1
  113. package/development/tabs/tab-group/tab-group.component.js +2 -2
  114. package/development/tabs/tab-label/tab-label.component.d.ts.map +1 -1
  115. package/development/tabs/tab-label/tab-label.component.js +1 -1
  116. package/development/tabs.js +3 -3
  117. package/development/tabs.pure.js +3 -3
  118. package/dialog/dialog/dialog.component.js +1 -1
  119. package/{dialog.component-4O3__zyd.js → dialog.component-CsBryhM-.js} +3 -6
  120. package/dialog.js +1 -1
  121. package/dialog.pure.js +1 -1
  122. package/file-selector/common/file-selector-common.js +2 -2
  123. package/{file-selector-common-BE780nIa.js → file-selector-common-VNwWFEmM.js} +26 -19
  124. package/file-selector.js +5 -5
  125. package/file-selector.pure.js +4 -4
  126. package/overlay/overlay-base-element.js +2 -8
  127. package/overlay/overlay.component.js +1 -1
  128. package/{overlay.component-C80XN61v.js → overlay.component-myJflfLY.js} +3 -6
  129. package/overlay.js +1 -1
  130. package/overlay.pure.js +1 -1
  131. package/package.json +2 -2
  132. package/paginator/common/paginator-common.js +2 -2
  133. package/{paginator-common-uoCIcl4X.js → paginator-common-BWewgXga.js} +42 -24
  134. package/paginator.js +5 -5
  135. package/paginator.pure.js +4 -4
  136. package/popover/popover.component.js +2 -2
  137. package/{popover.component-DJruKzY-.js → popover.component-Dm_86bPY.js} +19 -7
  138. package/popover.js +3 -3
  139. package/popover.pure.js +2 -2
  140. package/{step.component-BY6_2Wh2.js → step.component-tJh-Pb_E.js} +23 -8
  141. package/stepper/step/step.component.js +2 -2
  142. package/stepper/stepper/stepper.component.js +1 -1
  143. package/{stepper.component-lh0YSbT1.js → stepper.component-BCl77LVa.js} +20 -3
  144. package/stepper.js +4 -4
  145. package/stepper.pure.js +3 -3
  146. package/{tab-group.component-t4eeCNf-.js → tab-group.component-CDhggNpe.js} +27 -2
  147. package/{tab-label.component-DvvSohaG.js → tab-label.component-BuF2qt1T.js} +23 -22
  148. package/tabs/tab-group/tab-group.component.js +2 -2
  149. package/tabs/tab-label/tab-label.component.js +1 -1
  150. package/tabs.js +7 -7
  151. package/tabs.pure.js +6 -6
  152. package/development/autocomplete-base-element-DQiZ6hhk.js +0 -683
  153. package/development/calendar.component-CjlcDyS5.js +0 -1450
  154. package/development/carousel-list.component-DpDh5tqB.js +0 -133
  155. package/development/carousel.component-ClWvnZ8s.js +0 -139
  156. package/development/chip-group.component-Sgmi-kSy.js +0 -403
  157. package/development/core/interfaces/overlay-close-details.d.ts +0 -6
  158. package/development/core/interfaces/overlay-close-details.d.ts.map +0 -1
  159. package/development/paginator-common-BCeNUko_.js +0 -410
  160. package/development/popover.component-BmTfHMFw.js +0 -564
  161. package/development/stepper.component-80S-oXrH.js +0 -422
  162. package/development/tab-group.component-D4fvd6Uu.js +0 -265
@@ -1,410 +0,0 @@
1
- import { __esDecorate, __runInitializers } from "tslib";
2
- import { html, nothing, unsafeCSS } from "lit";
3
- import { property } from "lit/decorators.js";
4
- import { SbbDisabledMixin, SbbLanguageController, SbbNegativeMixin, forceType, i18nNextPage, i18nPage, i18nPaginatorSelected, i18nPreviousPage, sbbInputModalityDetector, screenReaderOnlyStyles } from "./core.js";
5
- import { SbbMiniButtonElement, SbbMiniButtonGroupElement } from "./button.pure.js";
6
- import { SbbDividerElement } from "./divider.pure.js";
7
- //#region src/elements/paginator/common/paginator-common.scss?inline
8
- var paginator_common_default = ":host([size=s]) {\n --sbb-paginator-height: var(--sbb-size-element-xs);\n}\n\n:host([size=m]) {\n --sbb-paginator-height: var(--sbb-size-element-m);\n}\n\n:host([negative]) {\n --sbb-paginator-color: var(--sbb-color-5);\n}";
9
- //#endregion
10
- //#region src/elements/paginator/common/paginator-common.ts
11
- var SbbPaginatorCommonElementMixin = (superClass) => {
12
- return (() => {
13
- let _classSuper = SbbNegativeMixin(SbbDisabledMixin(superClass));
14
- let _length_decorators;
15
- let _length_initializers = [];
16
- let _length_extraInitializers = [];
17
- let _pageSize_decorators;
18
- let _pageSize_initializers = [];
19
- let _pageSize_extraInitializers = [];
20
- let _pageIndex_decorators;
21
- let _pageIndex_initializers = [];
22
- let _pageIndex_extraInitializers = [];
23
- let _pagerPosition_decorators;
24
- let _pagerPosition_initializers = [];
25
- let _pagerPosition_extraInitializers = [];
26
- let _size_decorators;
27
- let _size_initializers = [];
28
- let _size_extraInitializers = [];
29
- let _accessibilityPageLabel_decorators;
30
- let _accessibilityPageLabel_initializers = [];
31
- let _accessibilityPageLabel_extraInitializers = [];
32
- let _accessibilityPreviousPageLabel_decorators;
33
- let _accessibilityPreviousPageLabel_initializers = [];
34
- let _accessibilityPreviousPageLabel_extraInitializers = [];
35
- let _accessibilityNextPageLabel_decorators;
36
- let _accessibilityNextPageLabel_initializers = [];
37
- let _accessibilityNextPageLabel_extraInitializers = [];
38
- return class SbbPaginatorCommonElement extends _classSuper {
39
- constructor() {
40
- super(...arguments);
41
- this.#length_accessor_storage = __runInitializers(this, _length_initializers, 0);
42
- this.#pageSize_accessor_storage = (__runInitializers(this, _length_extraInitializers), __runInitializers(this, _pageSize_initializers, 10));
43
- this.#pageIndex_accessor_storage = (__runInitializers(this, _pageSize_extraInitializers), __runInitializers(this, _pageIndex_initializers, 0));
44
- this.#pagerPosition_accessor_storage = (__runInitializers(this, _pageIndex_extraInitializers), __runInitializers(this, _pagerPosition_initializers, "start"));
45
- this.#size_accessor_storage = (__runInitializers(this, _pagerPosition_extraInitializers), __runInitializers(this, _size_initializers, null));
46
- this.#accessibilityPageLabel_accessor_storage = (__runInitializers(this, _size_extraInitializers), __runInitializers(this, _accessibilityPageLabel_initializers, ""));
47
- this.#accessibilityPreviousPageLabel_accessor_storage = (__runInitializers(this, _accessibilityPageLabel_extraInitializers), __runInitializers(this, _accessibilityPreviousPageLabel_initializers, ""));
48
- this.#accessibilityNextPageLabel_accessor_storage = (__runInitializers(this, _accessibilityPreviousPageLabel_extraInitializers), __runInitializers(this, _accessibilityNextPageLabel_initializers, ""));
49
- this.language = (__runInitializers(this, _accessibilityNextPageLabel_extraInitializers), new SbbLanguageController(this));
50
- }
51
- static {
52
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
53
- _length_decorators = [forceType(), property({ type: Number })];
54
- _pageSize_decorators = [forceType(), property({
55
- attribute: "page-size",
56
- type: Number
57
- })];
58
- _pageIndex_decorators = [forceType(), property({
59
- attribute: "page-index",
60
- type: Number
61
- })];
62
- _pagerPosition_decorators = [property({
63
- attribute: "pager-position",
64
- reflect: true
65
- })];
66
- _size_decorators = [property({ reflect: true })];
67
- _accessibilityPageLabel_decorators = [forceType(), property({ attribute: "accessibility-page-label" })];
68
- _accessibilityPreviousPageLabel_decorators = [forceType(), property({ attribute: "accessibility-previous-page-label" })];
69
- _accessibilityNextPageLabel_decorators = [forceType(), property({ attribute: "accessibility-next-page-label" })];
70
- __esDecorate(this, null, _length_decorators, {
71
- kind: "accessor",
72
- name: "length",
73
- static: false,
74
- private: false,
75
- access: {
76
- has: (obj) => "length" in obj,
77
- get: (obj) => obj.length,
78
- set: (obj, value) => {
79
- obj.length = value;
80
- }
81
- },
82
- metadata: _metadata
83
- }, _length_initializers, _length_extraInitializers);
84
- __esDecorate(this, null, _pageSize_decorators, {
85
- kind: "accessor",
86
- name: "pageSize",
87
- static: false,
88
- private: false,
89
- access: {
90
- has: (obj) => "pageSize" in obj,
91
- get: (obj) => obj.pageSize,
92
- set: (obj, value) => {
93
- obj.pageSize = value;
94
- }
95
- },
96
- metadata: _metadata
97
- }, _pageSize_initializers, _pageSize_extraInitializers);
98
- __esDecorate(this, null, _pageIndex_decorators, {
99
- kind: "accessor",
100
- name: "pageIndex",
101
- static: false,
102
- private: false,
103
- access: {
104
- has: (obj) => "pageIndex" in obj,
105
- get: (obj) => obj.pageIndex,
106
- set: (obj, value) => {
107
- obj.pageIndex = value;
108
- }
109
- },
110
- metadata: _metadata
111
- }, _pageIndex_initializers, _pageIndex_extraInitializers);
112
- __esDecorate(this, null, _pagerPosition_decorators, {
113
- kind: "accessor",
114
- name: "pagerPosition",
115
- static: false,
116
- private: false,
117
- access: {
118
- has: (obj) => "pagerPosition" in obj,
119
- get: (obj) => obj.pagerPosition,
120
- set: (obj, value) => {
121
- obj.pagerPosition = value;
122
- }
123
- },
124
- metadata: _metadata
125
- }, _pagerPosition_initializers, _pagerPosition_extraInitializers);
126
- __esDecorate(this, null, _size_decorators, {
127
- kind: "accessor",
128
- name: "size",
129
- static: false,
130
- private: false,
131
- access: {
132
- has: (obj) => "size" in obj,
133
- get: (obj) => obj.size,
134
- set: (obj, value) => {
135
- obj.size = value;
136
- }
137
- },
138
- metadata: _metadata
139
- }, _size_initializers, _size_extraInitializers);
140
- __esDecorate(this, null, _accessibilityPageLabel_decorators, {
141
- kind: "accessor",
142
- name: "accessibilityPageLabel",
143
- static: false,
144
- private: false,
145
- access: {
146
- has: (obj) => "accessibilityPageLabel" in obj,
147
- get: (obj) => obj.accessibilityPageLabel,
148
- set: (obj, value) => {
149
- obj.accessibilityPageLabel = value;
150
- }
151
- },
152
- metadata: _metadata
153
- }, _accessibilityPageLabel_initializers, _accessibilityPageLabel_extraInitializers);
154
- __esDecorate(this, null, _accessibilityPreviousPageLabel_decorators, {
155
- kind: "accessor",
156
- name: "accessibilityPreviousPageLabel",
157
- static: false,
158
- private: false,
159
- access: {
160
- has: (obj) => "accessibilityPreviousPageLabel" in obj,
161
- get: (obj) => obj.accessibilityPreviousPageLabel,
162
- set: (obj, value) => {
163
- obj.accessibilityPreviousPageLabel = value;
164
- }
165
- },
166
- metadata: _metadata
167
- }, _accessibilityPreviousPageLabel_initializers, _accessibilityPreviousPageLabel_extraInitializers);
168
- __esDecorate(this, null, _accessibilityNextPageLabel_decorators, {
169
- kind: "accessor",
170
- name: "accessibilityNextPageLabel",
171
- static: false,
172
- private: false,
173
- access: {
174
- has: (obj) => "accessibilityNextPageLabel" in obj,
175
- get: (obj) => obj.accessibilityNextPageLabel,
176
- set: (obj, value) => {
177
- obj.accessibilityNextPageLabel = value;
178
- }
179
- },
180
- metadata: _metadata
181
- }, _accessibilityNextPageLabel_initializers, _accessibilityNextPageLabel_extraInitializers);
182
- if (_metadata) Object.defineProperty(this, Symbol.metadata, {
183
- enumerable: true,
184
- configurable: true,
185
- writable: true,
186
- value: _metadata
187
- });
188
- }
189
- static {
190
- this.styles = [screenReaderOnlyStyles, unsafeCSS(paginator_common_default)];
191
- }
192
- static {
193
- this.elementDependencies = [
194
- SbbMiniButtonGroupElement,
195
- SbbMiniButtonElement,
196
- SbbDividerElement
197
- ];
198
- }
199
- static {
200
- this.role = "group";
201
- }
202
- #length_accessor_storage;
203
- /** Total number of items. */
204
- get length() {
205
- return this.#length_accessor_storage;
206
- }
207
- set length(value) {
208
- this.#length_accessor_storage = value;
209
- }
210
- #pageSize_accessor_storage;
211
- /** Number of items per page. */
212
- get pageSize() {
213
- return this.#pageSize_accessor_storage;
214
- }
215
- set pageSize(value) {
216
- this.#pageSize_accessor_storage = value;
217
- }
218
- #pageIndex_accessor_storage;
219
- /** Current page index. */
220
- get pageIndex() {
221
- return this.#pageIndex_accessor_storage;
222
- }
223
- set pageIndex(value) {
224
- this.#pageIndex_accessor_storage = value;
225
- }
226
- #pagerPosition_accessor_storage;
227
- /** Position of the prev/next buttons. */
228
- get pagerPosition() {
229
- return this.#pagerPosition_accessor_storage;
230
- }
231
- set pagerPosition(value) {
232
- this.#pagerPosition_accessor_storage = value;
233
- }
234
- #size_accessor_storage;
235
- /**
236
- * Size variant, either s (lean theme default) or m (standard theme default).
237
- */
238
- get size() {
239
- return this.#size_accessor_storage;
240
- }
241
- set size(value) {
242
- this.#size_accessor_storage = value;
243
- }
244
- #accessibilityPageLabel_accessor_storage;
245
- /**
246
- * Accessibility label for the page. Defaults to `page`.
247
- * Can be set for cases like a carousel, where `slide` or `image` fits better.
248
- */
249
- get accessibilityPageLabel() {
250
- return this.#accessibilityPageLabel_accessor_storage;
251
- }
252
- set accessibilityPageLabel(value) {
253
- this.#accessibilityPageLabel_accessor_storage = value;
254
- }
255
- #accessibilityPreviousPageLabel_accessor_storage;
256
- /**
257
- * Accessibility label for the previous page. Defaults to `previous page`.
258
- * Can be set for cases like a carousel, where `slide` or `image` fits better.
259
- */
260
- get accessibilityPreviousPageLabel() {
261
- return this.#accessibilityPreviousPageLabel_accessor_storage;
262
- }
263
- set accessibilityPreviousPageLabel(value) {
264
- this.#accessibilityPreviousPageLabel_accessor_storage = value;
265
- }
266
- #accessibilityNextPageLabel_accessor_storage;
267
- /**
268
- * Accessibility label for the next page. Defaults to `next page`.
269
- * Can be set for cases like a carousel, where `slide` or `image` fits better.
270
- */
271
- get accessibilityNextPageLabel() {
272
- return this.#accessibilityNextPageLabel_accessor_storage;
273
- }
274
- set accessibilityNextPageLabel(value) {
275
- this.#accessibilityNextPageLabel_accessor_storage = value;
276
- }
277
- willUpdate(changedProperties) {
278
- super.willUpdate(changedProperties);
279
- let prevPageIndex = null;
280
- if (changedProperties.has("length") && this.length !== changedProperties.get("length")) {
281
- this.length = isNaN(this.length) || this.length < 0 ? 0 : this.length;
282
- /**
283
- * If the pageIndex changes, it's added in the changedProperties map
284
- * and handled in the pageIndex logic below, emitting the page event.
285
- * If the pageIndex doesn't change there's no need to emit.
286
- */
287
- this.pageIndex = this._coercePageIndexInRange(this.pageIndex);
288
- }
289
- if (changedProperties.has("pageSize") && this.pageSize !== changedProperties.get("pageSize")) {
290
- const previousPageSize = changedProperties.get("pageSize");
291
- this.pageSize = isNaN(this.pageSize) || this.pageSize < 0 ? 0 : this.pageSize;
292
- if (previousPageSize && !changedProperties.has("pageIndex")) this.pageIndex = Math.floor(this.pageIndex * previousPageSize / this.pageSize) || 0;
293
- /**
294
- * If the pageIndex changes, it's added in the changedProperties map,
295
- * and this line is useless, since the correct value will be calculated in the logic below;
296
- * if the pageIndex doesn't change (e.g. change pageSize at pageIndex 0), the prevPageIndex and pageIndex are the same.
297
- * In both case the page event must be triggered to allow consumers to retrieve the correct data.
298
- */
299
- prevPageIndex = this.pageIndex;
300
- }
301
- if (changedProperties.has("pageIndex") && this.pageIndex !== changedProperties.get("pageIndex")) {
302
- this.pageIndex = this._coercePageIndexInRange(this.pageIndex);
303
- prevPageIndex = changedProperties.get("pageIndex");
304
- }
305
- if (prevPageIndex !== null) this._emitPageEvent(prevPageIndex);
306
- }
307
- updated(changedProperties) {
308
- super.updated(changedProperties);
309
- this.shadowRoot.querySelector(".sbb-screen-reader-only#status").textContent = this._currentPageLabel();
310
- }
311
- /** Evaluate `pageIndex` by excluding edge cases. */
312
- _coercePageIndexInRange(pageIndex) {
313
- return Math.max(Math.min(Math.max(isNaN(pageIndex) ? 0 : pageIndex, 0), this.numberOfPages() - 1), 0);
314
- }
315
- _currentPageLabel() {
316
- return `${this.accessibilityPageLabel ? this.accessibilityPageLabel : i18nPage[this.language.current]} ${this.pageIndex + 1} ${i18nPaginatorSelected[this.language.current]}.`;
317
- }
318
- /** Advances to the next page if it exists. */
319
- nextPage() {
320
- this.pageIndex = this.pageIndex + 1;
321
- }
322
- /** Move back to the previous page if it exists. */
323
- previousPage() {
324
- this.pageIndex = this.pageIndex - 1;
325
- }
326
- /** Move to the first page if not already there. */
327
- firstPage() {
328
- this.pageIndex = 0;
329
- }
330
- /** Move to the last page if not already there. */
331
- lastPage() {
332
- this.pageIndex = this.numberOfPages() - 1;
333
- }
334
- /** Move to a specific page index. */
335
- selectPage(index) {
336
- this.pageIndex = index;
337
- }
338
- /** Whether there is a previous page. */
339
- hasPreviousPage() {
340
- return this.pageIndex >= 1 && this.pageSize !== 0;
341
- }
342
- /** Whether there is a next page. */
343
- hasNextPage() {
344
- const maxPageIndex = this.numberOfPages() - 1;
345
- return this.pageIndex < maxPageIndex && this.pageSize !== 0;
346
- }
347
- /**
348
- * Calculates the current number of pages based on the `length` and the `pageSize`;
349
- * value must be rounded up (e.g. `length = 21` and `pageSize = 10` means 3 pages).
350
- */
351
- numberOfPages() {
352
- return this.pageSize ? Math.ceil(this.length / this.pageSize) : 0;
353
- }
354
- _emitPageEvent(previousPageIndex) {
355
- if (this.hasUpdated)
356
- /**
357
- * @type {CustomEvent<SbbPaginatorPageEventDetails>}
358
- * The page event is dispatched when the page index, length or page size changes.
359
- */
360
- this.dispatchEvent(new CustomEvent("page", {
361
- bubbles: true,
362
- composed: true,
363
- detail: {
364
- previousPageIndex,
365
- pageIndex: this.pageIndex,
366
- length: this.length,
367
- pageSize: this.pageSize
368
- }
369
- }));
370
- }
371
- renderPrevNextButtons() {
372
- return html`
373
- <sbb-mini-button-group ?negative=${this.negative} size=${this.size || nothing}>
374
- <sbb-mini-button
375
- id="sbb-paginator-prev-page"
376
- aria-label=${this.accessibilityPreviousPageLabel ? this.accessibilityPreviousPageLabel : i18nPreviousPage[this.language.current]}
377
- icon-name="chevron-small-left-small"
378
- ?disabled=${this.disabled || !this.hasPreviousPage()}
379
- @click=${() => {
380
- this.previousPage();
381
- if (!this.hasPreviousPage() && sbbInputModalityDetector.mostRecentModality === "keyboard") this.shadowRoot?.getElementById("sbb-paginator-next-page").focus();
382
- }}
383
- ></sbb-mini-button>
384
- <sbb-divider orientation="vertical"></sbb-divider>
385
- <sbb-mini-button
386
- id="sbb-paginator-next-page"
387
- aria-label=${this.accessibilityNextPageLabel ? this.accessibilityNextPageLabel : i18nNextPage[this.language.current]}
388
- icon-name="chevron-small-right-small"
389
- ?disabled=${this.disabled || !this.hasNextPage()}
390
- @click=${() => {
391
- this.nextPage();
392
- if (!this.hasNextPage() && sbbInputModalityDetector.mostRecentModality === "keyboard") this.shadowRoot?.getElementById("sbb-paginator-prev-page").focus();
393
- }}
394
- ></sbb-mini-button>
395
- </sbb-mini-button-group>
396
- `;
397
- }
398
- render() {
399
- return html`
400
- ${this.renderPaginator()}
401
- <span class="sbb-screen-reader-only" id="status" role="status"></span>
402
- `;
403
- }
404
- };
405
- })();
406
- };
407
- //#endregion
408
- export { SbbPaginatorCommonElementMixin as t };
409
-
410
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLWNvbW1vbi1CQ2VOVWtvXy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvcGFnaW5hdG9yL2NvbW1vbi9wYWdpbmF0b3ItY29tbW9uLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3BhZ2luYXRvci9jb21tb24vcGFnaW5hdG9yLWNvbW1vbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdChbc2l6ZT0ncyddKSB7XG4gIC0tc2JiLXBhZ2luYXRvci1oZWlnaHQ6IHZhcigtLXNiYi1zaXplLWVsZW1lbnQteHMpO1xufVxuXG46aG9zdChbc2l6ZT0nbSddKSB7XG4gIC0tc2JiLXBhZ2luYXRvci1oZWlnaHQ6IHZhcigtLXNiYi1zaXplLWVsZW1lbnQtbSk7XG59XG5cbjpob3N0KFtuZWdhdGl2ZV0pIHtcbiAgLS1zYmItcGFnaW5hdG9yLWNvbG9yOiB2YXIoLS1zYmItY29sb3ItNSk7XG59XG4iLCJpbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBub3RoaW5nLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxuICB1bnNhZmVDU1MsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgU2JiTWluaUJ1dHRvbkVsZW1lbnQsIFNiYk1pbmlCdXR0b25Hcm91cEVsZW1lbnQgfSBmcm9tICcuLi8uLi9idXR0b24ucHVyZS50cyc7XG5pbXBvcnQge1xuICB0eXBlIEFic3RyYWN0Q29uc3RydWN0b3IsXG4gIGZvcmNlVHlwZSxcbiAgaTE4bk5leHRQYWdlLFxuICBpMThuUGFnZSxcbiAgaTE4blBhZ2luYXRvclNlbGVjdGVkLFxuICBpMThuUHJldmlvdXNQYWdlLFxuICBTYmJEaXNhYmxlZE1peGluLFxuICB0eXBlIFNiYkVsZW1lbnQsXG4gIHR5cGUgU2JiRWxlbWVudENvbnN0cnVjdG9yLFxuICB0eXBlIFNiYkVsZW1lbnRUeXBlLFxuICBzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IsXG4gIFNiYkxhbmd1YWdlQ29udHJvbGxlcixcbiAgU2JiTmVnYXRpdmVNaXhpbixcbiAgc2NyZWVuUmVhZGVyT25seVN0eWxlcyxcbn0gZnJvbSAnLi4vLi4vY29yZS50cyc7XG5pbXBvcnQgeyBTYmJEaXZpZGVyRWxlbWVudCB9IGZyb20gJy4uLy4uL2RpdmlkZXIucHVyZS50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3BhZ2luYXRvci1jb21tb24uc2Nzcz9pbmxpbmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNiYlBhZ2luYXRvclBhZ2VFdmVudERldGFpbHMge1xuICBsZW5ndGg6IG51bWJlcjtcbiAgcGFnZVNpemU6IG51bWJlcjtcbiAgcGFnZUluZGV4OiBudW1iZXI7XG4gIHByZXZpb3VzUGFnZUluZGV4OiBudW1iZXI7XG59XG5cbmV4cG9ydCBkZWNsYXJlIGFic3RyYWN0IGNsYXNzIFNiYlBhZ2luYXRvckNvbW1vbkVsZW1lbnRNaXhpblR5cGUgZXh0ZW5kcyBTYmJOZWdhdGl2ZU1peGluKFxuICBTYmJEaXNhYmxlZE1peGluKFNiYkVsZW1lbnQpLFxuKSB7XG4gIHB1YmxpYyBhY2Nlc3NvciBsZW5ndGg6IG51bWJlcjtcbiAgcHVibGljIGFjY2Vzc29yIHBhZ2VTaXplOiBudW1iZXI7XG4gIHB1YmxpYyBhY2Nlc3NvciBwYWdlSW5kZXg6IG51bWJlcjtcbiAgcHVibGljIGFjY2Vzc29yIHBhZ2VyUG9zaXRpb246ICdzdGFydCcgfCAnZW5kJztcbiAgcHVibGljIGFjY2Vzc29yIHNpemU6ICdzJyB8ICdtJyB8IG51bGw7XG4gIHB1YmxpYyBhY2Nlc3NvciBhY2Nlc3NpYmlsaXR5UGFnZUxhYmVsOiBzdHJpbmc7XG4gIHB1YmxpYyBhY2Nlc3NvciBhY2Nlc3NpYmlsaXR5UHJldmlvdXNQYWdlTGFiZWw6IHN0cmluZztcbiAgcHVibGljIGFjY2Vzc29yIGFjY2Vzc2liaWxpdHlOZXh0UGFnZUxhYmVsOiBzdHJpbmc7XG4gIHB1YmxpYyBuZXh0UGFnZSgpOiB2b2lkO1xuICBwdWJsaWMgcHJldmlvdXNQYWdlKCk6IHZvaWQ7XG4gIHB1YmxpYyBmaXJzdFBhZ2UoKTogdm9pZDtcbiAgcHVibGljIGxhc3RQYWdlKCk6IHZvaWQ7XG4gIHB1YmxpYyBzZWxlY3RQYWdlKGluZGV4OiBudW1iZXIpOiB2b2lkO1xuICBwdWJsaWMgaGFzUHJldmlvdXNQYWdlKCk6IGJvb2xlYW47XG4gIHB1YmxpYyBoYXNOZXh0UGFnZSgpOiBib29sZWFuO1xuICBwdWJsaWMgbnVtYmVyT2ZQYWdlcygpOiBudW1iZXI7XG4gIHByb3RlY3RlZCBsYW5ndWFnZTogU2JiTGFuZ3VhZ2VDb250cm9sbGVyO1xuICBwcm90ZWN0ZWQgZW1pdFBhZ2VFdmVudChwcmV2aW91c1BhZ2VJbmRleDogbnVtYmVyLCBwYWdlSW5kZXg/OiBudW1iZXIpOiB2b2lkO1xuICBwcm90ZWN0ZWQgcmVuZGVyUHJldk5leHRCdXR0b25zKCk6IFRlbXBsYXRlUmVzdWx0O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVuZGVyUGFnaW5hdG9yKCk6IFRlbXBsYXRlUmVzdWx0O1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiUGFnaW5hdG9yQ29tbW9uRWxlbWVudE1peGluID0gPFxuICBUIGV4dGVuZHMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJFbGVtZW50PiAmIFNiYkVsZW1lbnRDb25zdHJ1Y3Rvcixcbj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYlBhZ2luYXRvckNvbW1vbkVsZW1lbnRNaXhpblR5cGU+ICYgVCA9PiB7XG4gIGFic3RyYWN0IGNsYXNzIFNiYlBhZ2luYXRvckNvbW1vbkVsZW1lbnRcbiAgICBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oU2JiRGlzYWJsZWRNaXhpbihzdXBlckNsYXNzKSlcbiAgICBpbXBsZW1lbnRzIFBhcnRpYWw8U2JiUGFnaW5hdG9yQ29tbW9uRWxlbWVudE1peGluVHlwZT5cbiAge1xuICAgIHB1YmxpYyBzdGF0aWMgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtzY3JlZW5SZWFkZXJPbmx5U3R5bGVzLCB1bnNhZmVDU1Moc3R5bGUpXTtcbiAgICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIGVsZW1lbnREZXBlbmRlbmNpZXM6IFNiYkVsZW1lbnRUeXBlW10gPSBbXG4gICAgICBTYmJNaW5pQnV0dG9uR3JvdXBFbGVtZW50LFxuICAgICAgU2JiTWluaUJ1dHRvbkVsZW1lbnQsXG4gICAgICBTYmJEaXZpZGVyRWxlbWVudCxcbiAgICBdO1xuXG4gICAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByb2xlID0gJ2dyb3VwJztcblxuICAgIC8qKiBUb3RhbCBudW1iZXIgb2YgaXRlbXMuICovXG4gICAgQGZvcmNlVHlwZSgpXG4gICAgQHByb3BlcnR5KHsgdHlwZTogTnVtYmVyIH0pXG4gICAgcHVibGljIGFjY2Vzc29yIGxlbmd0aDogbnVtYmVyID0gMDtcblxuICAgIC8qKiBOdW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UuICovXG4gICAgQGZvcmNlVHlwZSgpXG4gICAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncGFnZS1zaXplJywgdHlwZTogTnVtYmVyIH0pXG4gICAgcHVibGljIGFjY2Vzc29yIHBhZ2VTaXplOiBudW1iZXIgPSAxMDtcblxuICAgIC8qKiBDdXJyZW50IHBhZ2UgaW5kZXguICovXG4gICAgQGZvcmNlVHlwZSgpXG4gICAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncGFnZS1pbmRleCcsIHR5cGU6IE51bWJlciB9KVxuICAgIHB1YmxpYyBhY2Nlc3NvciBwYWdlSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICAvKiogUG9zaXRpb24gb2YgdGhlIHByZXYvbmV4dCBidXR0b25zLiAqL1xuICAgIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3BhZ2VyLXBvc2l0aW9uJywgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgYWNjZXNzb3IgcGFnZXJQb3NpdGlvbjpcbiAgICAgIHwgJ3N0YXJ0J1xuICAgICAgfCAnZW5kJyA9ICdzdGFydCc7XG5cbiAgICAvKipcbiAgICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBzIChsZWFuIHRoZW1lIGRlZmF1bHQpIG9yIG0gKHN0YW5kYXJkIHRoZW1lIGRlZmF1bHQpLlxuICAgICAqL1xuICAgIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6IFNiYlBhZ2luYXRvckNvbW1vbkVsZW1lbnRNaXhpblR5cGVbJ3NpemUnXSA9XG4gICAgICBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQWNjZXNzaWJpbGl0eSBsYWJlbCBmb3IgdGhlIHBhZ2UuIERlZmF1bHRzIHRvIGBwYWdlYC5cbiAgICAgKiBDYW4gYmUgc2V0IGZvciBjYXNlcyBsaWtlIGEgY2Fyb3VzZWwsIHdoZXJlIGBzbGlkZWAgb3IgYGltYWdlYCBmaXRzIGJldHRlci5cbiAgICAgKi9cbiAgICBAZm9yY2VUeXBlKClcbiAgICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhY2Nlc3NpYmlsaXR5LXBhZ2UtbGFiZWwnIH0pXG4gICAgcHVibGljIGFjY2Vzc29yIGFjY2Vzc2liaWxpdHlQYWdlTGFiZWw6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQWNjZXNzaWJpbGl0eSBsYWJlbCBmb3IgdGhlIHByZXZpb3VzIHBhZ2UuIERlZmF1bHRzIHRvIGBwcmV2aW91cyBwYWdlYC5cbiAgICAgKiBDYW4gYmUgc2V0IGZvciBjYXNlcyBsaWtlIGEgY2Fyb3VzZWwsIHdoZXJlIGBzbGlkZWAgb3IgYGltYWdlYCBmaXRzIGJldHRlci5cbiAgICAgKi9cbiAgICBAZm9yY2VUeXBlKClcbiAgICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhY2Nlc3NpYmlsaXR5LXByZXZpb3VzLXBhZ2UtbGFiZWwnIH0pXG4gICAgcHVibGljIGFjY2Vzc29yIGFjY2Vzc2liaWxpdHlQcmV2aW91c1BhZ2VMYWJlbDogc3RyaW5nID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBBY2Nlc3NpYmlsaXR5IGxhYmVsIGZvciB0aGUgbmV4dCBwYWdlLiBEZWZhdWx0cyB0byBgbmV4dCBwYWdlYC5cbiAgICAgKiBDYW4gYmUgc2V0IGZvciBjYXNlcyBsaWtlIGEgY2Fyb3VzZWwsIHdoZXJlIGBzbGlkZWAgb3IgYGltYWdlYCBmaXRzIGJldHRlci5cbiAgICAgKi9cbiAgICBAZm9yY2VUeXBlKClcbiAgICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhY2Nlc3NpYmlsaXR5LW5leHQtcGFnZS1sYWJlbCcgfSlcbiAgICBwdWJsaWMgYWNjZXNzb3IgYWNjZXNzaWJpbGl0eU5leHRQYWdlTGFiZWw6IHN0cmluZyA9ICcnO1xuXG4gICAgcHJvdGVjdGVkIGxhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVuZGVyUGFnaW5hdG9yKCk6IFRlbXBsYXRlUmVzdWx0O1xuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICAgIGxldCBwcmV2UGFnZUluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbGVuZ3RoJykgJiYgdGhpcy5sZW5ndGggIT09IGNoYW5nZWRQcm9wZXJ0aWVzLmdldCgnbGVuZ3RoJykpIHtcbiAgICAgICAgdGhpcy5sZW5ndGggPSBpc05hTih0aGlzLmxlbmd0aCkgfHwgdGhpcy5sZW5ndGggPCAwID8gMCA6IHRoaXMubGVuZ3RoO1xuICAgICAgICAvKipcbiAgICAgICAgICogSWYgdGhlIHBhZ2VJbmRleCBjaGFuZ2VzLCBpdCdzIGFkZGVkIGluIHRoZSBjaGFuZ2VkUHJvcGVydGllcyBtYXBcbiAgICAgICAgICogYW5kIGhhbmRsZWQgaW4gdGhlIHBhZ2VJbmRleCBsb2dpYyBiZWxvdywgZW1pdHRpbmcgdGhlIHBhZ2UgZXZlbnQuXG4gICAgICAgICAqIElmIHRoZSBwYWdlSW5kZXggZG9lc24ndCBjaGFuZ2UgdGhlcmUncyBubyBuZWVkIHRvIGVtaXQuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnBhZ2VJbmRleCA9IHRoaXMuX2NvZXJjZVBhZ2VJbmRleEluUmFuZ2UodGhpcy5wYWdlSW5kZXgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygncGFnZVNpemUnKSAmJlxuICAgICAgICB0aGlzLnBhZ2VTaXplICE9PSBjaGFuZ2VkUHJvcGVydGllcy5nZXQoJ3BhZ2VTaXplJylcbiAgICAgICkge1xuICAgICAgICBjb25zdCBwcmV2aW91c1BhZ2VTaXplID0gY2hhbmdlZFByb3BlcnRpZXMuZ2V0KCdwYWdlU2l6ZScpO1xuICAgICAgICB0aGlzLnBhZ2VTaXplID0gaXNOYU4odGhpcy5wYWdlU2l6ZSkgfHwgdGhpcy5wYWdlU2l6ZSA8IDAgPyAwIDogdGhpcy5wYWdlU2l6ZTtcbiAgICAgICAgLy8gQ3VycmVudCBwYWdlIG5lZWRzIHRvIGJlIHVwZGF0ZWQgdG8gcmVmbGVjdCB0aGUgbmV3IHBhZ2Ugc2l6ZS5cbiAgICAgICAgLy8gTmF2aWdhdGUgdG8gdGhlIHBhZ2UgY29udGFpbmluZyB0aGUgcHJldmlvdXMgcGFnZSdzIGZpcnN0IGl0ZW0uXG4gICAgICAgIC8vIElmIHRoZSBwYWdlSW5kZXggY2hhbmdlcyBpbiB0aGUgc2FtZSB1cGRhdGUgY3ljbGUsIHdlIHNob3VsZG4ndCBhZGp1c3QgaXQuXG4gICAgICAgIGlmIChwcmV2aW91c1BhZ2VTaXplICYmICFjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3BhZ2VJbmRleCcpKSB7XG4gICAgICAgICAgdGhpcy5wYWdlSW5kZXggPSBNYXRoLmZsb29yKCh0aGlzLnBhZ2VJbmRleCAqIHByZXZpb3VzUGFnZVNpemUpIC8gdGhpcy5wYWdlU2l6ZSkgfHwgMDtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogSWYgdGhlIHBhZ2VJbmRleCBjaGFuZ2VzLCBpdCdzIGFkZGVkIGluIHRoZSBjaGFuZ2VkUHJvcGVydGllcyBtYXAsXG4gICAgICAgICAqIGFuZCB0aGlzIGxpbmUgaXMgdXNlbGVzcywgc2luY2UgdGhlIGNvcnJlY3QgdmFsdWUgd2lsbCBiZSBjYWxjdWxhdGVkIGluIHRoZSBsb2dpYyBiZWxvdztcbiAgICAgICAgICogaWYgdGhlIHBhZ2VJbmRleCBkb2Vzbid0IGNoYW5nZSAoZS5nLiBjaGFuZ2UgcGFnZVNpemUgYXQgcGFnZUluZGV4IDApLCB0aGUgcHJldlBhZ2VJbmRleCBhbmQgcGFnZUluZGV4IGFyZSB0aGUgc2FtZS5cbiAgICAgICAgICogSW4gYm90aCBjYXNlIHRoZSBwYWdlIGV2ZW50IG11c3QgYmUgdHJpZ2dlcmVkIHRvIGFsbG93IGNvbnN1bWVycyB0byByZXRyaWV2ZSB0aGUgY29ycmVjdCBkYXRhLlxuICAgICAgICAgKi9cbiAgICAgICAgcHJldlBhZ2VJbmRleCA9IHRoaXMucGFnZUluZGV4O1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygncGFnZUluZGV4JykgJiZcbiAgICAgICAgdGhpcy5wYWdlSW5kZXggIT09IGNoYW5nZWRQcm9wZXJ0aWVzLmdldCgncGFnZUluZGV4JylcbiAgICAgICkge1xuICAgICAgICB0aGlzLnBhZ2VJbmRleCA9IHRoaXMuX2NvZXJjZVBhZ2VJbmRleEluUmFuZ2UodGhpcy5wYWdlSW5kZXgpO1xuICAgICAgICBwcmV2UGFnZUluZGV4ID0gY2hhbmdlZFByb3BlcnRpZXMuZ2V0KCdwYWdlSW5kZXgnKSE7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmV2UGFnZUluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuX2VtaXRQYWdlRXZlbnQocHJldlBhZ2VJbmRleCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgICBzdXBlci51cGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgICAgLy8gVG8gcmVsaWFibHkgYW5ub3VuY2UgcGFnZSBjaGFuZ2UsIHdlIGhhdmUgdG8gc2V0IHRoZSBsYWJlbCBpbiB1cGRhdGVkKCkgKGEgdGljayBsYXRlciB0aGFuIHRoZSBvdGhlciBjaGFuZ2VzKS5cbiAgICAgIHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcignLnNiYi1zY3JlZW4tcmVhZGVyLW9ubHkjc3RhdHVzJykhLnRleHRDb250ZW50ID1cbiAgICAgICAgdGhpcy5fY3VycmVudFBhZ2VMYWJlbCgpO1xuICAgIH1cblxuICAgIC8qKiBFdmFsdWF0ZSBgcGFnZUluZGV4YCBieSBleGNsdWRpbmcgZWRnZSBjYXNlcy4gKi9cbiAgICBwcml2YXRlIF9jb2VyY2VQYWdlSW5kZXhJblJhbmdlKHBhZ2VJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiBNYXRoLm1heChcbiAgICAgICAgTWF0aC5taW4oTWF0aC5tYXgoaXNOYU4ocGFnZUluZGV4KSA/IDAgOiBwYWdlSW5kZXgsIDApLCB0aGlzLm51bWJlck9mUGFnZXMoKSAtIDEpLFxuICAgICAgICAwLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jdXJyZW50UGFnZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5hY2Nlc3NpYmlsaXR5UGFnZUxhYmVsID8gdGhpcy5hY2Nlc3NpYmlsaXR5UGFnZUxhYmVsIDogaTE4blBhZ2VbdGhpcy5sYW5ndWFnZS5jdXJyZW50XX0gJHt0aGlzLnBhZ2VJbmRleCArIDF9ICR7aTE4blBhZ2luYXRvclNlbGVjdGVkW3RoaXMubGFuZ3VhZ2UuY3VycmVudF19LmA7XG4gICAgfVxuXG4gICAgLyoqIEFkdmFuY2VzIHRvIHRoZSBuZXh0IHBhZ2UgaWYgaXQgZXhpc3RzLiAqL1xuICAgIHB1YmxpYyBuZXh0UGFnZSgpOiB2b2lkIHtcbiAgICAgIHRoaXMucGFnZUluZGV4ID0gdGhpcy5wYWdlSW5kZXggKyAxO1xuICAgIH1cblxuICAgIC8qKiBNb3ZlIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBhZ2UgaWYgaXQgZXhpc3RzLiAqL1xuICAgIHB1YmxpYyBwcmV2aW91c1BhZ2UoKTogdm9pZCB7XG4gICAgICB0aGlzLnBhZ2VJbmRleCA9IHRoaXMucGFnZUluZGV4IC0gMTtcbiAgICB9XG5cbiAgICAvKiogTW92ZSB0byB0aGUgZmlyc3QgcGFnZSBpZiBub3QgYWxyZWFkeSB0aGVyZS4gKi9cbiAgICBwdWJsaWMgZmlyc3RQYWdlKCk6IHZvaWQge1xuICAgICAgdGhpcy5wYWdlSW5kZXggPSAwO1xuICAgIH1cblxuICAgIC8qKiBNb3ZlIHRvIHRoZSBsYXN0IHBhZ2UgaWYgbm90IGFscmVhZHkgdGhlcmUuICovXG4gICAgcHVibGljIGxhc3RQYWdlKCk6IHZvaWQge1xuICAgICAgdGhpcy5wYWdlSW5kZXggPSB0aGlzLm51bWJlck9mUGFnZXMoKSAtIDE7XG4gICAgfVxuXG4gICAgLyoqIE1vdmUgdG8gYSBzcGVjaWZpYyBwYWdlIGluZGV4LiAqL1xuICAgIHB1YmxpYyBzZWxlY3RQYWdlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgIHRoaXMucGFnZUluZGV4ID0gaW5kZXg7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlcmUgaXMgYSBwcmV2aW91cyBwYWdlLiAqL1xuICAgIHB1YmxpYyBoYXNQcmV2aW91c1BhZ2UoKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdGhpcy5wYWdlSW5kZXggPj0gMSAmJiB0aGlzLnBhZ2VTaXplICE9PSAwO1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRoZXJlIGlzIGEgbmV4dCBwYWdlLiAqL1xuICAgIHB1YmxpYyBoYXNOZXh0UGFnZSgpOiBib29sZWFuIHtcbiAgICAgIGNvbnN0IG1heFBhZ2VJbmRleCA9IHRoaXMubnVtYmVyT2ZQYWdlcygpIC0gMTtcbiAgICAgIHJldHVybiB0aGlzLnBhZ2VJbmRleCA8IG1heFBhZ2VJbmRleCAmJiB0aGlzLnBhZ2VTaXplICE9PSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIGN1cnJlbnQgbnVtYmVyIG9mIHBhZ2VzIGJhc2VkIG9uIHRoZSBgbGVuZ3RoYCBhbmQgdGhlIGBwYWdlU2l6ZWA7XG4gICAgICogdmFsdWUgbXVzdCBiZSByb3VuZGVkIHVwIChlLmcuIGBsZW5ndGggPSAyMWAgYW5kIGBwYWdlU2l6ZSA9IDEwYCBtZWFucyAzIHBhZ2VzKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgbnVtYmVyT2ZQYWdlcygpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIHRoaXMucGFnZVNpemUgPyBNYXRoLmNlaWwodGhpcy5sZW5ndGggLyB0aGlzLnBhZ2VTaXplKSA6IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZW1pdFBhZ2VFdmVudChwcmV2aW91c1BhZ2VJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAdHlwZSB7Q3VzdG9tRXZlbnQ8U2JiUGFnaW5hdG9yUGFnZUV2ZW50RGV0YWlscz59XG4gICAgICAgICAqIFRoZSBwYWdlIGV2ZW50IGlzIGRpc3BhdGNoZWQgd2hlbiB0aGUgcGFnZSBpbmRleCwgbGVuZ3RoIG9yIHBhZ2Ugc2l6ZSBjaGFuZ2VzLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21FdmVudDxTYmJQYWdpbmF0b3JQYWdlRXZlbnREZXRhaWxzPigncGFnZScsIHtcbiAgICAgICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgICAgICBjb21wb3NlZDogdHJ1ZSxcbiAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICBwcmV2aW91c1BhZ2VJbmRleCxcbiAgICAgICAgICAgICAgcGFnZUluZGV4OiB0aGlzLnBhZ2VJbmRleCxcbiAgICAgICAgICAgICAgbGVuZ3RoOiB0aGlzLmxlbmd0aCxcbiAgICAgICAgICAgICAgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCByZW5kZXJQcmV2TmV4dEJ1dHRvbnMoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgICAgcmV0dXJuIGh0bWxgXG4gICAgICAgIDxzYmItbWluaS1idXR0b24tZ3JvdXAgP25lZ2F0aXZlPSR7dGhpcy5uZWdhdGl2ZX0gc2l6ZT0ke3RoaXMuc2l6ZSB8fCBub3RoaW5nfT5cbiAgICAgICAgICA8c2JiLW1pbmktYnV0dG9uXG4gICAgICAgICAgICBpZD1cInNiYi1wYWdpbmF0b3ItcHJldi1wYWdlXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9JHt0aGlzLmFjY2Vzc2liaWxpdHlQcmV2aW91c1BhZ2VMYWJlbFxuICAgICAgICAgICAgICA/IHRoaXMuYWNjZXNzaWJpbGl0eVByZXZpb3VzUGFnZUxhYmVsXG4gICAgICAgICAgICAgIDogaTE4blByZXZpb3VzUGFnZVt0aGlzLmxhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICAgICAgaWNvbi1uYW1lPVwiY2hldnJvbi1zbWFsbC1sZWZ0LXNtYWxsXCJcbiAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMuZGlzYWJsZWQgfHwgIXRoaXMuaGFzUHJldmlvdXNQYWdlKCl9XG4gICAgICAgICAgICBAY2xpY2s9JHsoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucHJldmlvdXNQYWdlKCk7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhdGhpcy5oYXNQcmV2aW91c1BhZ2UoKSAmJlxuICAgICAgICAgICAgICAgIHNiYklucHV0TW9kYWxpdHlEZXRlY3Rvci5tb3N0UmVjZW50TW9kYWxpdHkgPT09ICdrZXlib2FyZCdcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFkb3dSb290Py5nZXRFbGVtZW50QnlJZCgnc2JiLXBhZ2luYXRvci1uZXh0LXBhZ2UnKSEuZm9jdXMoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+PC9zYmItbWluaS1idXR0b24+XG4gICAgICAgICAgPHNiYi1kaXZpZGVyIG9yaWVudGF0aW9uPVwidmVydGljYWxcIj48L3NiYi1kaXZpZGVyPlxuICAgICAgICAgIDxzYmItbWluaS1idXR0b25cbiAgICAgICAgICAgIGlkPVwic2JiLXBhZ2luYXRvci1uZXh0LXBhZ2VcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD0ke3RoaXMuYWNjZXNzaWJpbGl0eU5leHRQYWdlTGFiZWxcbiAgICAgICAgICAgICAgPyB0aGlzLmFjY2Vzc2liaWxpdHlOZXh0UGFnZUxhYmVsXG4gICAgICAgICAgICAgIDogaTE4bk5leHRQYWdlW3RoaXMubGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgICAgICBpY29uLW5hbWU9XCJjaGV2cm9uLXNtYWxsLXJpZ2h0LXNtYWxsXCJcbiAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMuZGlzYWJsZWQgfHwgIXRoaXMuaGFzTmV4dFBhZ2UoKX1cbiAgICAgICAgICAgIEBjbGljaz0keygpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5uZXh0UGFnZSgpO1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIXRoaXMuaGFzTmV4dFBhZ2UoKSAmJlxuICAgICAgICAgICAgICAgIHNiYklucHV0TW9kYWxpdHlEZXRlY3Rvci5tb3N0UmVjZW50TW9kYWxpdHkgPT09ICdrZXlib2FyZCdcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFkb3dSb290Py5nZXRFbGVtZW50QnlJZCgnc2JiLXBhZ2luYXRvci1wcmV2LXBhZ2UnKSEuZm9jdXMoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+PC9zYmItbWluaS1idXR0b24+XG4gICAgICAgIDwvc2JiLW1pbmktYnV0dG9uLWdyb3VwPlxuICAgICAgYDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICAgIHJldHVybiBodG1sYFxuICAgICAgICAke3RoaXMucmVuZGVyUGFnaW5hdG9yKCl9XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiIGlkPVwic3RhdHVzXCIgcm9sZT1cInN0YXR1c1wiPjwvc3Bhbj5cbiAgICAgIGA7XG4gICAgfVxuICB9XG4gIHJldHVybiBTYmJQYWdpbmF0b3JDb21tb25FbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJQYWdpbmF0b3JDb21tb25FbGVtZW50TWl4aW5UeXBlPiAmXG4gICAgVDtcbn07XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50RXZlbnRNYXAge1xuICAgIHBhZ2U6IEN1c3RvbUV2ZW50PFNiYlBhZ2luYXRvclBhZ2VFdmVudERldGFpbHM+O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUNnRUEsSUFBYSxrQ0FHWCxlQUMrRDtDQXlQL0QsY0F4UHdDO29CQUM5QixpQkFBaUIsaUJBQWlCLFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlQUR4QyxrQ0FDTCxZQUE4Qzs7O0lBZXRDLEtBQUEsMkJBQUEsa0JBQUEsTUFBQSxzQkFBaUIsQ0FBQztJQUts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