@sbb-esta/lyne-elements 2.3.0 → 2.4.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 (255) hide show
  1. package/autocomplete/autocomplete-base-element.d.ts +1 -0
  2. package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  3. package/autocomplete/autocomplete.d.ts.map +1 -1
  4. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  5. package/autocomplete-grid/autocomplete-grid.js +0 -1
  6. package/autocomplete.js +28 -28
  7. package/button/common/button-common.d.ts.map +1 -1
  8. package/calendar/calendar.d.ts +55 -11
  9. package/calendar/calendar.d.ts.map +1 -1
  10. package/calendar.js +374 -224
  11. package/card/common/card-action-common.d.ts.map +1 -1
  12. package/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  13. package/checkbox/checkbox-group.js +1 -1
  14. package/checkbox/common/checkbox-common.d.ts.map +1 -1
  15. package/core/controllers/escapable-overlay-controller.d.ts +11 -0
  16. package/core/controllers/escapable-overlay-controller.d.ts.map +1 -0
  17. package/core/controllers.d.ts +1 -0
  18. package/core/controllers.d.ts.map +1 -1
  19. package/core/controllers.js +73 -47
  20. package/core/datetime/date-adapter.d.ts +4 -2
  21. package/core/datetime/date-adapter.d.ts.map +1 -1
  22. package/core/datetime/native-date-adapter.d.ts +1 -1
  23. package/core/datetime/native-date-adapter.d.ts.map +1 -1
  24. package/core/datetime.js +51 -43
  25. package/core/decorators/date-converter.d.ts +8 -0
  26. package/core/decorators/date-converter.d.ts.map +1 -0
  27. package/core/decorators/date-only-type.d.ts +8 -0
  28. package/core/decorators/date-only-type.d.ts.map +1 -0
  29. package/core/decorators/get-override.d.ts.map +1 -1
  30. package/core/decorators/handle-distinct-change.d.ts.map +1 -1
  31. package/core/decorators/host-attributes.d.ts.map +1 -1
  32. package/core/decorators/slot-state.d.ts.map +1 -1
  33. package/core/decorators.d.ts +2 -0
  34. package/core/decorators.d.ts.map +1 -1
  35. package/core/decorators.js +52 -31
  36. package/core/dom/input-element.d.ts +1 -1
  37. package/core/dom/input-element.d.ts.map +1 -1
  38. package/core/dom.js +5 -5
  39. package/core/eventing/throttle.d.ts.map +1 -1
  40. package/core/i18n/i18n.d.ts +4 -0
  41. package/core/i18n/i18n.d.ts.map +1 -1
  42. package/core/i18n.js +87 -63
  43. package/core/mixins/disabled-mixin.d.ts.map +1 -1
  44. package/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  45. package/core/mixins/form-associated-input-mixin.d.ts +25 -0
  46. package/core/mixins/form-associated-input-mixin.d.ts.map +1 -0
  47. package/core/mixins/form-associated-mixin.d.ts +13 -0
  48. package/core/mixins/form-associated-mixin.d.ts.map +1 -1
  49. package/core/mixins/form-associated-radio-button-mixin.d.ts.map +1 -1
  50. package/core/mixins/hydration-mixin.d.ts.map +1 -1
  51. package/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  52. package/core/mixins/negative-mixin.d.ts.map +1 -1
  53. package/core/mixins/panel-mixin.d.ts.map +1 -1
  54. package/core/mixins/required-mixin.d.ts.map +1 -1
  55. package/core/mixins/update-scheduler-mixin.d.ts.map +1 -1
  56. package/core/mixins.d.ts +1 -0
  57. package/core/mixins.d.ts.map +1 -1
  58. package/core/mixins.js +518 -333
  59. package/core/styles/core.scss +3 -1
  60. package/core/testing/mocha-extensions.d.ts.map +1 -1
  61. package/core/testing/wait-for-render.d.ts.map +1 -1
  62. package/core.css +2 -2
  63. package/custom-elements.json +18176 -14267
  64. package/date-input/date-input.d.ts +67 -0
  65. package/date-input/date-input.d.ts.map +1 -0
  66. package/date-input.d.ts +2 -0
  67. package/date-input.d.ts.map +1 -0
  68. package/date-input.js +149 -0
  69. package/datepicker/common/datepicker-button.d.ts.map +1 -1
  70. package/datepicker/common.js +49 -45
  71. package/datepicker/datepicker/datepicker.d.ts +16 -6
  72. package/datepicker/datepicker/datepicker.d.ts.map +1 -1
  73. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  74. package/datepicker/datepicker-toggle.js +41 -38
  75. package/datepicker/datepicker.js +94 -76
  76. package/development/autocomplete/autocomplete-base-element.d.ts +1 -0
  77. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  78. package/development/autocomplete/autocomplete.d.ts.map +1 -1
  79. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  80. package/development/autocomplete-grid/autocomplete-grid.js +1 -2
  81. package/development/autocomplete.js +9 -4
  82. package/development/button/common/button-common.d.ts.map +1 -1
  83. package/development/calendar/calendar.d.ts +55 -11
  84. package/development/calendar/calendar.d.ts.map +1 -1
  85. package/development/calendar.js +301 -87
  86. package/development/card/common/card-action-common.d.ts.map +1 -1
  87. package/development/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  88. package/development/checkbox/checkbox-group.js +2 -2
  89. package/development/checkbox/common/checkbox-common.d.ts.map +1 -1
  90. package/development/core/controllers/escapable-overlay-controller.d.ts +11 -0
  91. package/development/core/controllers/escapable-overlay-controller.d.ts.map +1 -0
  92. package/development/core/controllers.d.ts +1 -0
  93. package/development/core/controllers.d.ts.map +1 -1
  94. package/development/core/controllers.js +36 -1
  95. package/development/core/datetime/date-adapter.d.ts +4 -2
  96. package/development/core/datetime/date-adapter.d.ts.map +1 -1
  97. package/development/core/datetime/native-date-adapter.d.ts +1 -1
  98. package/development/core/datetime/native-date-adapter.d.ts.map +1 -1
  99. package/development/core/datetime.js +14 -2
  100. package/development/core/decorators/date-converter.d.ts +8 -0
  101. package/development/core/decorators/date-converter.d.ts.map +1 -0
  102. package/development/core/decorators/date-only-type.d.ts +8 -0
  103. package/development/core/decorators/date-only-type.d.ts.map +1 -0
  104. package/development/core/decorators/get-override.d.ts.map +1 -1
  105. package/development/core/decorators/handle-distinct-change.d.ts.map +1 -1
  106. package/development/core/decorators/host-attributes.d.ts.map +1 -1
  107. package/development/core/decorators/slot-state.d.ts.map +1 -1
  108. package/development/core/decorators.d.ts +2 -0
  109. package/development/core/decorators.d.ts.map +1 -1
  110. package/development/core/decorators.js +23 -2
  111. package/development/core/dom/input-element.d.ts +1 -1
  112. package/development/core/dom/input-element.d.ts.map +1 -1
  113. package/development/core/dom.js +3 -3
  114. package/development/core/eventing/throttle.d.ts.map +1 -1
  115. package/development/core/i18n/i18n.d.ts +4 -0
  116. package/development/core/i18n/i18n.d.ts.map +1 -1
  117. package/development/core/i18n.js +29 -1
  118. package/development/core/mixins/disabled-mixin.d.ts.map +1 -1
  119. package/development/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  120. package/development/core/mixins/form-associated-input-mixin.d.ts +25 -0
  121. package/development/core/mixins/form-associated-input-mixin.d.ts.map +1 -0
  122. package/development/core/mixins/form-associated-mixin.d.ts +13 -0
  123. package/development/core/mixins/form-associated-mixin.d.ts.map +1 -1
  124. package/development/core/mixins/form-associated-radio-button-mixin.d.ts.map +1 -1
  125. package/development/core/mixins/hydration-mixin.d.ts.map +1 -1
  126. package/development/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  127. package/development/core/mixins/negative-mixin.d.ts.map +1 -1
  128. package/development/core/mixins/panel-mixin.d.ts.map +1 -1
  129. package/development/core/mixins/required-mixin.d.ts.map +1 -1
  130. package/development/core/mixins/update-scheduler-mixin.d.ts.map +1 -1
  131. package/development/core/mixins.d.ts +1 -0
  132. package/development/core/mixins.d.ts.map +1 -1
  133. package/development/core/mixins.js +379 -88
  134. package/development/core/testing/mocha-extensions.d.ts.map +1 -1
  135. package/development/core/testing/wait-for-render.d.ts.map +1 -1
  136. package/development/date-input/date-input.d.ts +67 -0
  137. package/development/date-input/date-input.d.ts.map +1 -0
  138. package/development/date-input.d.ts +2 -0
  139. package/development/date-input.d.ts.map +1 -0
  140. package/development/date-input.js +259 -0
  141. package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
  142. package/development/datepicker/common.js +11 -2
  143. package/development/datepicker/datepicker/datepicker.d.ts +16 -6
  144. package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
  145. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  146. package/development/datepicker/datepicker-toggle.js +12 -3
  147. package/development/datepicker/datepicker.js +65 -39
  148. package/development/dialog/dialog/dialog.d.ts.map +1 -1
  149. package/development/dialog/dialog.js +3 -1
  150. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
  151. package/development/expansion-panel/expansion-panel.js +2 -2
  152. package/development/file-selector/common/file-selector-common.d.ts.map +1 -1
  153. package/development/form-field/form-field/form-field.d.ts +1 -1
  154. package/development/form-field/form-field/form-field.d.ts.map +1 -1
  155. package/development/form-field/form-field.js +19 -13
  156. package/development/header/common/header-action-common.d.ts.map +1 -1
  157. package/development/icon/icon-name-mixin.d.ts.map +1 -1
  158. package/development/icon/icon-request.d.ts.map +1 -1
  159. package/development/icon/icon-validate.d.ts.map +1 -1
  160. package/development/link/common/block-link-common.d.ts.map +1 -1
  161. package/development/link/common/inline-link-common.d.ts.map +1 -1
  162. package/development/link/common/link-common.d.ts.map +1 -1
  163. package/development/menu/common/menu-action-common.d.ts.map +1 -1
  164. package/development/menu/menu/menu.d.ts +1 -1
  165. package/development/menu/menu/menu.d.ts.map +1 -1
  166. package/development/menu/menu.js +5 -15
  167. package/development/navigation/common/navigation-action-common.d.ts.map +1 -1
  168. package/development/navigation/navigation/navigation.d.ts +1 -3
  169. package/development/navigation/navigation/navigation.d.ts.map +1 -1
  170. package/development/navigation/navigation.js +8 -21
  171. package/development/overlay/overlay-base-element.d.ts +2 -2
  172. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  173. package/development/overlay/overlay.d.ts.map +1 -1
  174. package/development/overlay.js +6 -13
  175. package/development/paginator/common/paginator-common.d.ts.map +1 -1
  176. package/development/popover/popover/popover.d.ts +1 -1
  177. package/development/popover/popover/popover.d.ts.map +1 -1
  178. package/development/popover/popover.js +5 -15
  179. package/development/radio-button/common/radio-button-common.d.ts.map +1 -1
  180. package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  181. package/development/radio-button/radio-button-group.js +2 -2
  182. package/development/select/select.d.ts +3 -1
  183. package/development/select/select.d.ts.map +1 -1
  184. package/development/select.js +12 -8
  185. package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  186. package/development/selection-expansion-panel.js +2 -2
  187. package/development/stepper/step/step.d.ts +0 -2
  188. package/development/stepper/step/step.d.ts.map +1 -1
  189. package/development/stepper/step.js +1 -16
  190. package/development/stepper/stepper/stepper.d.ts +11 -0
  191. package/development/stepper/stepper/stepper.d.ts.map +1 -1
  192. package/development/stepper/stepper.js +30 -3
  193. package/development/tag/tag/tag.d.ts +11 -0
  194. package/development/tag/tag/tag.d.ts.map +1 -1
  195. package/development/tag/tag-group/tag-group.d.ts +1 -1
  196. package/development/tag/tag-group/tag-group.d.ts.map +1 -1
  197. package/development/tag/tag-group.js +9 -3
  198. package/development/tag/tag.js +37 -10
  199. package/development/teaser-product/common/teaser-product-common.d.ts.map +1 -1
  200. package/dialog/dialog/dialog.d.ts.map +1 -1
  201. package/dialog/dialog.js +2 -2
  202. package/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
  203. package/expansion-panel/expansion-panel.js +1 -1
  204. package/file-selector/common/file-selector-common.d.ts.map +1 -1
  205. package/form-field/form-field/form-field.d.ts +1 -1
  206. package/form-field/form-field/form-field.d.ts.map +1 -1
  207. package/form-field/form-field.js +30 -24
  208. package/header/common/header-action-common.d.ts.map +1 -1
  209. package/icon/icon-name-mixin.d.ts.map +1 -1
  210. package/icon/icon-request.d.ts.map +1 -1
  211. package/icon/icon-validate.d.ts.map +1 -1
  212. package/index.d.ts +2 -0
  213. package/index.js +2 -0
  214. package/link/common/block-link-common.d.ts.map +1 -1
  215. package/link/common/inline-link-common.d.ts.map +1 -1
  216. package/link/common/link-common.d.ts.map +1 -1
  217. package/menu/common/menu-action-common.d.ts.map +1 -1
  218. package/menu/menu/menu.d.ts +1 -1
  219. package/menu/menu/menu.d.ts.map +1 -1
  220. package/menu/menu.js +25 -34
  221. package/navigation/common/navigation-action-common.d.ts.map +1 -1
  222. package/navigation/navigation/navigation.d.ts +1 -3
  223. package/navigation/navigation/navigation.d.ts.map +1 -1
  224. package/navigation/navigation.js +45 -54
  225. package/overlay/overlay-base-element.d.ts +2 -2
  226. package/overlay/overlay-base-element.d.ts.map +1 -1
  227. package/overlay/overlay.d.ts.map +1 -1
  228. package/overlay.js +57 -63
  229. package/package.json +6 -1
  230. package/paginator/common/paginator-common.d.ts.map +1 -1
  231. package/popover/popover/popover.d.ts +1 -1
  232. package/popover/popover/popover.d.ts.map +1 -1
  233. package/popover/popover.js +101 -110
  234. package/radio-button/common/radio-button-common.d.ts.map +1 -1
  235. package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  236. package/radio-button/radio-button-group.js +1 -1
  237. package/select/select.d.ts +3 -1
  238. package/select/select.d.ts.map +1 -1
  239. package/select.js +39 -37
  240. package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  241. package/selection-expansion-panel.js +1 -1
  242. package/standard-theme.css +2 -2
  243. package/stepper/step/step.d.ts +0 -2
  244. package/stepper/step/step.d.ts.map +1 -1
  245. package/stepper/step.js +24 -36
  246. package/stepper/stepper/stepper.d.ts +11 -0
  247. package/stepper/stepper/stepper.d.ts.map +1 -1
  248. package/stepper/stepper.js +59 -41
  249. package/tag/tag/tag.d.ts +11 -0
  250. package/tag/tag/tag.d.ts.map +1 -1
  251. package/tag/tag-group/tag-group.d.ts +1 -1
  252. package/tag/tag-group/tag-group.d.ts.map +1 -1
  253. package/tag/tag-group.js +32 -29
  254. package/tag/tag.js +60 -41
  255. package/teaser-product/common/teaser-product-common.d.ts.map +1 -1
@@ -2,8 +2,8 @@ var U = (a) => {
2
2
  throw TypeError(a);
3
3
  };
4
4
  var H = (a, s, l) => s.has(a) || U("Cannot " + l);
5
- var u = (a, s, l) => (H(a, s, "read from private field"), l ? l.call(a) : s.get(a)), g = (a, s, l) => s.has(a) ? U("Cannot add the same private member more than once") : s instanceof WeakSet ? s.add(a) : s.set(a, l), d = (a, s, l, o) => (H(a, s, "write to private field"), o ? o.call(a, l) : s.set(a, l), l);
6
- import { __esDecorate as c, __runInitializers as n } from "tslib";
5
+ var g = (a, s, l) => (H(a, s, "read from private field"), l ? l.call(a) : s.get(a)), k = (a, s, l) => s.has(a) ? U("Cannot add the same private member more than once") : s instanceof WeakSet ? s.add(a) : s.set(a, l), c = (a, s, l, o) => (H(a, s, "write to private field"), o ? o.call(a, l) : s.set(a, l), l);
6
+ import { __esDecorate as _, __runInitializers as n } from "tslib";
7
7
  import { css as J, LitElement as K, isServer as B, nothing as Q, html as G } from "lit";
8
8
  import { customElement as V, property as E, state as f } from "lit/decorators.js";
9
9
  import { ref as w } from "lit/directives/ref.js";
@@ -15,20 +15,20 @@ import { SbbDatepickerAssociationControlController as te } from "./common.js";
15
15
  import "../calendar.js";
16
16
  import "../popover/popover.js";
17
17
  import "../button/mini-button.js";
18
- const ie = J`*,:before,:after{box-sizing:border-box}:host{--sbb-datepicker-control-radius: var(--sbb-border-radius-4x);--sbb-datepicker-control-color: var(--sbb-color-black);display:inline-flex}.sbb-datepicker-toggle__trigger{color:var(--sbb-datepicker-control-color);height:unset}sbb-icon{color:var(--sbb-color-graphite)}sbb-popover{margin:0;padding:0;border:none;width:auto;height:auto;background-color:transparent}`;
19
- let ge = (() => {
20
- var _, h, m, p, b, r;
21
- let a = [V("sbb-datepicker-toggle")], s, l = [], o, x = Z(ee(K)), v = [], C, y, $, S = [], z = [], P, D = [], I = [], O, A = [], N = [], F, M = [], L = [], R, j = [], q = [];
18
+ const ie = J`*,:before,:after{box-sizing:border-box}:host{--sbb-datepicker-control-radius: var(--sbb-border-radius-4x);--sbb-datepicker-control-color: var(--sbb-color-black);display:inline-flex}.sbb-datepicker-toggle__trigger{color:var(--sbb-datepicker-control-color);height:unset}sbb-icon{color:var(--sbb-color-graphite)}sbb-popover{margin:0;padding:0;border:none;width:auto;height:auto;background-color:transparent}`, ae = (a) => (a == null ? void 0 : a.localName) === "sbb-date-input";
19
+ let ke = (() => {
20
+ var h, m, p, u, b, r;
21
+ let a = [V("sbb-datepicker-toggle")], s, l = [], o, x = Z(ee(K)), v = [], C, y, $, S = [], z = [], D, I = [], P = [], O, A = [], N = [], F, M = [], L = [], R, j = [], q = [];
22
22
  return r = class extends x {
23
23
  constructor() {
24
24
  var t;
25
25
  super();
26
- g(this, _);
27
- g(this, h);
28
- g(this, m);
29
- g(this, p);
30
- g(this, b);
31
- this._datepicker = n(this, v), d(this, _, n(this, S, "day")), d(this, h, (n(this, z), n(this, D, !1))), d(this, m, (n(this, I), n(this, A, null))), d(this, p, (n(this, N), n(this, M, null))), d(this, b, (n(this, L), n(this, j, !1))), this._calendarElement = n(this, q), this._language = new X(this), this.addController(new te(this)), (t = this.addEventListener) == null || t.call(this, "click", (e) => {
26
+ k(this, h);
27
+ k(this, m);
28
+ k(this, p);
29
+ k(this, u);
30
+ k(this, b);
31
+ this._datepicker = n(this, v), c(this, h, n(this, S, "day")), c(this, m, (n(this, z), n(this, I, !1))), c(this, p, (n(this, P), n(this, A, null))), c(this, u, (n(this, N), n(this, M, null))), c(this, b, (n(this, L), n(this, j, !1))), this._calendarElement = n(this, q), this._language = new X(this), this.addController(new te(this)), (t = this.addEventListener) == null || t.call(this, "click", (e) => {
32
32
  e.composedPath()[0] === this && this.open();
33
33
  }), B || this.hydrationComplete.then(() => this._renderCalendar = !0);
34
34
  }
@@ -46,42 +46,42 @@ let ge = (() => {
46
46
  }
47
47
  /** Datepicker reference. */
48
48
  set datepicker(t) {
49
- var e, i, k;
50
- this._datepicker = typeof t == "string" ? ((k = (i = (e = this.getRootNode) == null ? void 0 : e.call(this)) == null ? void 0 : i.querySelector) == null ? void 0 : k.call(i, `#${t}`)) ?? null : t;
49
+ var e, i, d;
50
+ this._datepicker = typeof t == "string" ? ((d = (i = (e = this.getRootNode) == null ? void 0 : e.call(this)) == null ? void 0 : i.querySelector) == null ? void 0 : d.call(i, `#${t}`)) ?? null : t;
51
51
  }
52
52
  get datepicker() {
53
53
  return this._datepicker ?? null;
54
54
  }
55
55
  /** The initial view of calendar which should be displayed on opening. */
56
56
  get view() {
57
- return u(this, _);
57
+ return g(this, h);
58
58
  }
59
59
  set view(t) {
60
- d(this, _, t);
60
+ c(this, h, t);
61
61
  }
62
62
  get _disabled() {
63
- return u(this, h);
63
+ return g(this, m);
64
64
  }
65
65
  set _disabled(t) {
66
- d(this, h, t);
66
+ c(this, m, t);
67
67
  }
68
68
  get _min() {
69
- return u(this, m);
69
+ return g(this, p);
70
70
  }
71
71
  set _min(t) {
72
- d(this, m, t);
72
+ c(this, p, t);
73
73
  }
74
74
  get _max() {
75
- return u(this, p);
75
+ return g(this, u);
76
76
  }
77
77
  set _max(t) {
78
- d(this, p, t);
78
+ c(this, u, t);
79
79
  }
80
80
  get _renderCalendar() {
81
- return u(this, b);
81
+ return g(this, b);
82
82
  }
83
83
  set _renderCalendar(t) {
84
- d(this, b, t);
84
+ c(this, b, t);
85
85
  }
86
86
  /**
87
87
  * Opens the calendar.
@@ -96,8 +96,8 @@ let ge = (() => {
96
96
  t && (this.negative = t.hasAttribute("negative"));
97
97
  }
98
98
  willUpdate(t) {
99
- var e, i, k, T;
100
- super.willUpdate(t), this.datepicker ? (this._disabled = (((e = this.datepicker.inputElement) == null ? void 0 : e.disabled) || ((i = this.datepicker.inputElement) == null ? void 0 : i.readOnly)) ?? !0, this._min = (k = this.datepicker.inputElement) == null ? void 0 : k.min, this._max = (T = this.datepicker.inputElement) == null ? void 0 : T.max, this._configureCalendar(), this._calendarElement && (this._calendarElement.selected = this.datepicker.valueAsDate ?? null)) : (this._disabled = !0, this._min = null, this._max = null);
99
+ var e, i, d, T;
100
+ super.willUpdate(t), this.datepicker ? (this._disabled = (((e = this.datepicker.inputElement) == null ? void 0 : e.disabled) || ((i = this.datepicker.inputElement) == null ? void 0 : i.readOnly)) ?? !0, this._min = (d = this.datepicker.inputElement) == null ? void 0 : d.min, this._max = (T = this.datepicker.inputElement) == null ? void 0 : T.max, this._configureCalendar(), this._calendarElement && (this._calendarElement.selected = this.datepicker.valueAsDate ?? null)) : (this._disabled = !0, this._min = null, this._max = null);
101
101
  }
102
102
  _configureCalendar() {
103
103
  !this._calendarElement || !this.datepicker || (this._calendarElement.wide = this.datepicker.wide, this._calendarElement.now = this._nowOrNull(), this._calendarElement.dateFilter = this.datepicker.dateFilter);
@@ -139,34 +139,37 @@ let ge = (() => {
139
139
  .max=${this._max}
140
140
  .now=${this._nowOrNull()}
141
141
  ?wide=${(t = this.datepicker) == null ? void 0 : t.wide}
142
- .dateFilter=${(e = this.datepicker) == null ? void 0 : e.dateFilter}
142
+ .dateFilter=${((e = this.datepicker) == null ? void 0 : e.dateFilter) ?? null}
143
143
  @dateSelected=${(i) => {
144
- this._calendarElement.selected = i.detail, this.datepicker && (this.datepicker.valueAsDate = i.detail);
144
+ if (this._calendarElement.selected = i.detail, this.datepicker) {
145
+ const d = this.datepicker.inputElement;
146
+ ae(d) ? (d.valueAsDate = i.detail, d.dispatchEvent(new InputEvent("input", { bubbles: !0, composed: !0 })), d.dispatchEvent(new Event("change", { bubbles: !0, composed: !0 })), d.dispatchEvent(new Event("blur", { composed: !0 }))) : this.datepicker.valueAsDate = i.detail;
147
+ }
145
148
  }}
146
149
  ${w((i) => this._assignCalendar(i))}
147
150
  ></sbb-calendar>` : Q}
148
151
  </sbb-popover>
149
152
  `;
150
153
  }
151
- }, _ = new WeakMap(), h = new WeakMap(), m = new WeakMap(), p = new WeakMap(), b = new WeakMap(), o = r, (() => {
154
+ }, h = new WeakMap(), m = new WeakMap(), p = new WeakMap(), u = new WeakMap(), b = new WeakMap(), o = r, (() => {
152
155
  const t = typeof Symbol == "function" && Symbol.metadata ? Object.create(x[Symbol.metadata] ?? null) : void 0;
153
- C = [E({ attribute: "date-picker" })], y = [E({ attribute: "datepicker" })], $ = [E()], P = [f()], O = [f()], F = [f()], R = [f()], c(r, null, C, { kind: "setter", name: "datePicker", static: !1, private: !1, access: { has: (e) => "datePicker" in e, set: (e, i) => {
156
+ C = [E({ attribute: "date-picker" })], y = [E({ attribute: "datepicker" })], $ = [E()], D = [f()], O = [f()], F = [f()], R = [f()], _(r, null, C, { kind: "setter", name: "datePicker", static: !1, private: !1, access: { has: (e) => "datePicker" in e, set: (e, i) => {
154
157
  e.datePicker = i;
155
- } }, metadata: t }, null, v), c(r, null, y, { kind: "setter", name: "datepicker", static: !1, private: !1, access: { has: (e) => "datepicker" in e, set: (e, i) => {
158
+ } }, metadata: t }, null, v), _(r, null, y, { kind: "setter", name: "datepicker", static: !1, private: !1, access: { has: (e) => "datepicker" in e, set: (e, i) => {
156
159
  e.datepicker = i;
157
- } }, metadata: t }, null, v), c(r, null, $, { kind: "accessor", name: "view", static: !1, private: !1, access: { has: (e) => "view" in e, get: (e) => e.view, set: (e, i) => {
160
+ } }, metadata: t }, null, v), _(r, null, $, { kind: "accessor", name: "view", static: !1, private: !1, access: { has: (e) => "view" in e, get: (e) => e.view, set: (e, i) => {
158
161
  e.view = i;
159
- } }, metadata: t }, S, z), c(r, null, P, { kind: "accessor", name: "_disabled", static: !1, private: !1, access: { has: (e) => "_disabled" in e, get: (e) => e._disabled, set: (e, i) => {
162
+ } }, metadata: t }, S, z), _(r, null, D, { kind: "accessor", name: "_disabled", static: !1, private: !1, access: { has: (e) => "_disabled" in e, get: (e) => e._disabled, set: (e, i) => {
160
163
  e._disabled = i;
161
- } }, metadata: t }, D, I), c(r, null, O, { kind: "accessor", name: "_min", static: !1, private: !1, access: { has: (e) => "_min" in e, get: (e) => e._min, set: (e, i) => {
164
+ } }, metadata: t }, I, P), _(r, null, O, { kind: "accessor", name: "_min", static: !1, private: !1, access: { has: (e) => "_min" in e, get: (e) => e._min, set: (e, i) => {
162
165
  e._min = i;
163
- } }, metadata: t }, A, N), c(r, null, F, { kind: "accessor", name: "_max", static: !1, private: !1, access: { has: (e) => "_max" in e, get: (e) => e._max, set: (e, i) => {
166
+ } }, metadata: t }, A, N), _(r, null, F, { kind: "accessor", name: "_max", static: !1, private: !1, access: { has: (e) => "_max" in e, get: (e) => e._max, set: (e, i) => {
164
167
  e._max = i;
165
- } }, metadata: t }, M, L), c(r, null, R, { kind: "accessor", name: "_renderCalendar", static: !1, private: !1, access: { has: (e) => "_renderCalendar" in e, get: (e) => e._renderCalendar, set: (e, i) => {
168
+ } }, metadata: t }, M, L), _(r, null, R, { kind: "accessor", name: "_renderCalendar", static: !1, private: !1, access: { has: (e) => "_renderCalendar" in e, get: (e) => e._renderCalendar, set: (e, i) => {
166
169
  e._renderCalendar = i;
167
- } }, metadata: t }, j, q), c(null, s = { value: o }, a, { kind: "class", name: o.name, metadata: t }, null, l), o = s.value, t && Object.defineProperty(o, Symbol.metadata, { enumerable: !0, configurable: !0, writable: !0, value: t });
170
+ } }, metadata: t }, j, q), _(null, s = { value: o }, a, { kind: "class", name: o.name, metadata: t }, null, l), o = s.value, t && Object.defineProperty(o, Symbol.metadata, { enumerable: !0, configurable: !0, writable: !0, value: t });
168
171
  })(), r.styles = ie, n(o, l), o;
169
172
  })();
170
173
  export {
171
- ge as SbbDatepickerToggleElement
174
+ ke as SbbDatepickerToggleElement
172
175
  };
@@ -1,79 +1,81 @@
1
- var L = (i) => {
1
+ var T = (i) => {
2
2
  throw TypeError(i);
3
3
  };
4
- var R = (i, n, r) => n.has(i) || L("Cannot " + r);
5
- var b = (i, n, r) => (R(i, n, "read from private field"), r ? r.call(i) : n.get(i)), f = (i, n, r) => n.has(i) ? L("Cannot add the same private member more than once") : n instanceof WeakSet ? n.add(i) : n.set(i, r), o = (i, n, r, d) => (R(i, n, "write to private field"), d ? d.call(i, r) : n.set(i, r), r);
4
+ var L = (i, n, r) => n.has(i) || T("Cannot " + r);
5
+ var D = (i, n, r) => (L(i, n, "read from private field"), r ? r.call(i) : n.get(i)), g = (i, n, r) => n.has(i) ? T("Cannot add the same private member more than once") : n instanceof WeakSet ? n.add(i) : n.set(i, r), o = (i, n, r, d) => (L(i, n, "write to private field"), d ? d.call(i, r) : n.set(i, r), r);
6
6
  import { __esDecorate as h, __runInitializers as u } from "tslib";
7
- import { css as $, LitElement as q, isServer as B, html as G } from "lit";
8
- import { customElement as J, property as A, state as K } from "lit/decorators.js";
9
- import { readConfig as Q } from "../core/config.js";
10
- import { SbbLanguageController as W } from "../core/controllers.js";
11
- import { defaultDateAdapter as X } from "../core/datetime.js";
12
- import { forceType as Y } from "../core/decorators.js";
13
- import { findInput as Z, findReferencedElement as tt } from "../core/dom.js";
14
- import { EventEmitter as E, forwardEvent as et } from "../core/eventing.js";
15
- import { i18nDatePickerPlaceholder as j, i18nDateChangedTo as at } from "../core/i18n.js";
16
- import { SbbDatepickerAssociationHostController as it } from "./common.js";
17
- const st = $`:host{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}`;
18
- function At(i, n) {
7
+ import { css as j, LitElement as $, isServer as H, html as B } from "lit";
8
+ import { customElement as G, property as b, state as J } from "lit/decorators.js";
9
+ import { readConfig as K } from "../core/config.js";
10
+ import { SbbLanguageController as Q } from "../core/controllers.js";
11
+ import { defaultDateAdapter as W } from "../core/datetime.js";
12
+ import { forceType as X } from "../core/decorators.js";
13
+ import { findInput as Y, findReferencedElement as Z } from "../core/dom.js";
14
+ import { EventEmitter as w, forwardEvent as tt } from "../core/eventing.js";
15
+ import { i18nDatePickerPlaceholder as q, i18nDateChangedTo as et } from "../core/i18n.js";
16
+ import { SbbDatepickerAssociationHostController as at } from "./common.js";
17
+ const it = j`:host{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}`;
18
+ function bt(i, n) {
19
19
  var r, d;
20
- return n ? tt(n) : (d = (r = i.closest) == null ? void 0 : r.call(i, "sbb-form-field")) == null ? void 0 : d.querySelector("sbb-datepicker");
20
+ return n ? Z(n) : (d = (r = i.closest) == null ? void 0 : r.call(i, "sbb-form-field")) == null ? void 0 : d.querySelector("sbb-datepicker");
21
21
  }
22
- const Et = () => new CustomEvent("datepickerControlRegistered", {
22
+ const At = () => new CustomEvent("datepickerControlRegistered", {
23
23
  bubbles: !1,
24
24
  composed: !0
25
25
  });
26
- let nt = 0, Dt = (() => {
27
- var c, _, m, v, l;
28
- let i = [J("sbb-datepicker")], n, r = [], d, g = q, D = [], w, y = [], C = [], k, I = [], x = [], F, z = [], U = [], O, M, P, S = [], V = [];
29
- var p = (l = class extends g {
26
+ let st = 0;
27
+ const c = (i) => (i == null ? void 0 : i.localName) === "sbb-date-input";
28
+ let Et = (() => {
29
+ var m, v, f, l;
30
+ let i = [G("sbb-datepicker")], n, r = [], d, y = $, A = [], C, k = [], I = [], x, F, U = [], z = [], O, V, M, P = [], S = [];
31
+ var _ = (l = class extends y {
30
32
  constructor() {
31
33
  var t;
32
34
  super();
33
- f(this, c);
34
- f(this, _);
35
- f(this, m);
36
- f(this, v);
37
- o(this, c, (u(this, D), u(this, y, !1))), o(this, _, (u(this, C), u(this, I, () => !0))), o(this, m, (u(this, x), u(this, z, null))), this._now = u(this, U), o(this, v, u(this, S, null)), this._change = (u(this, V), new E(this, p.events.change, {
35
+ g(this, m);
36
+ g(this, v);
37
+ g(this, f);
38
+ o(this, m, (u(this, A), u(this, k, !1))), this._dateFilter = u(this, I), o(this, v, u(this, U, null)), this._now = u(this, z), o(this, f, u(this, P, null)), this._change = (u(this, S), new w(this, _.events.change, {
38
39
  bubbles: !0
39
- })), this._inputUpdated = new E(this, p.events.inputUpdated, { bubbles: !0, cancelable: !0 }), this._datePickerUpdated = new E(this, p.events.datePickerUpdated, {
40
+ })), this._inputUpdated = new w(this, _.events.inputUpdated, { bubbles: !0, cancelable: !0 }), this._datePickerUpdated = new w(this, _.events.datePickerUpdated, {
40
41
  bubbles: !0,
41
42
  cancelable: !0
42
- }), this._validationChange = new E(this, p.events.validationChange), this._inputElementPlaceholderMutable = !1, this._inputObserver = B ? null : new MutationObserver((e) => {
43
+ }), this._validationChange = new w(this, _.events.validationChange), this._inputElementPlaceholderMutable = !1, this._inputObserver = H ? null : new MutationObserver((e) => {
43
44
  var a;
44
- if (this._emitInputUpdated(), (a = this._associationController) == null || a.updateControls(), this.inputElement && (e != null && e.some((s) => s.attributeName === "value"))) {
45
+ if (this._emitInputUpdated(), (a = this._associationController) == null || a.updateControls(), this.inputElement && !c(this.inputElement) && (e != null && e.some((s) => s.attributeName === "value"))) {
45
46
  const s = this.inputElement.getAttribute("value");
46
47
  this.valueAsDate = this._dateAdapter.parse(s, this.now) ?? s;
47
48
  }
48
- }), this._dateAdapter = ((t = Q().datetime) == null ? void 0 : t.dateAdapter) ?? X, this._language = new W(this).withHandler(() => {
49
- this.inputElement && (this._inputElementPlaceholderMutable && (this.inputElement.placeholder = j[this._language.current]), this.valueAsDate && (this.inputElement.value = this._dateAdapter.format(this.valueAsDate)));
50
- }), this._associationController = new it(this);
49
+ }), this._dateAdapter = ((t = K().datetime) == null ? void 0 : t.dateAdapter) ?? W, this._language = new Q(this), this._associationController = new at(this);
51
50
  }
52
51
  /** If set to true, two months are displayed. */
53
52
  get wide() {
54
- return b(this, c);
53
+ return D(this, m);
55
54
  }
56
55
  set wide(t) {
57
- o(this, c, t);
58
- }
59
- /** A function used to filter out dates. */
60
- get dateFilter() {
61
- return b(this, _);
56
+ o(this, m, t);
62
57
  }
58
+ /**
59
+ * A function used to filter out dates.
60
+ * @deprecated Use dateFilter from SbbDateInputElement.
61
+ */
63
62
  set dateFilter(t) {
64
- o(this, _, t);
63
+ this._dateFilter = t;
64
+ }
65
+ get dateFilter() {
66
+ return this._dateFilter ?? (c(this.inputElement) ? this.inputElement.dateFilter : null) ?? (() => !0);
65
67
  }
66
68
  /**
67
- * Reference of the native input connected to the datepicker.
69
+ * Reference of the sbb-date-input instance or the native input connected to the datepicker.
68
70
  * If given a string, it will be treated as an id reference and an attempt is
69
71
  * made to be resolved for the containing document fragment.
70
72
  * If given a HTMLElement instance, it will be used as is.
71
73
  */
72
74
  get input() {
73
- return b(this, m);
75
+ return D(this, v);
74
76
  }
75
77
  set input(t) {
76
- o(this, m, t);
78
+ o(this, v, t);
77
79
  }
78
80
  /**
79
81
  * A configured date which acts as the current date instead of the real current date.
@@ -85,25 +87,35 @@ let nt = 0, Dt = (() => {
85
87
  get now() {
86
88
  return this._now ?? this._dateAdapter.today();
87
89
  }
88
- /** The currently selected date as a Date or custom date provider instance. */
90
+ /**
91
+ * The currently selected date as a Date or custom date provider instance.
92
+ * @deprecated Use valueAsDate from SbbDateInputElement.
93
+ */
89
94
  set valueAsDate(t) {
95
+ if (c(this.inputElement)) {
96
+ this.inputElement.valueAsDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(t));
97
+ return;
98
+ }
90
99
  this._valueAsDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(t)), this._tryApplyFormatToInput() && this.inputElement.dispatchEvent(new Event("blur", { composed: !0 }));
91
100
  }
92
101
  get valueAsDate() {
93
- return this._valueAsDate ?? null;
102
+ return c(this.inputElement) ? this.inputElement.valueAsDate : this._valueAsDate ?? null;
94
103
  }
95
104
  /** The resolved associated input element, as defined by `input`. */
96
105
  get inputElement() {
97
106
  return this._inputElement;
98
107
  }
99
108
  get _inputElement() {
100
- return b(this, v);
109
+ return D(this, f);
101
110
  }
102
111
  set _inputElement(t) {
103
- o(this, v, t);
112
+ o(this, f, t);
104
113
  }
105
114
  connectedCallback() {
106
- this.id || (this.id = `sbb-datepicker-${++nt}`), super.connectedCallback(), this._attachInput();
115
+ this.id || (this.id = `sbb-datepicker-${++st}`), super.connectedCallback(), this._attachInput();
116
+ }
117
+ requestUpdate(t, e, a) {
118
+ super.requestUpdate(t, e, a), this.hasUpdated && !t && this.inputElement && (this._inputElementPlaceholderMutable && (this.inputElement.placeholder = q[this._language.current]), this.valueAsDate && (this.inputElement.value = this._dateAdapter.format(this.valueAsDate)));
107
119
  }
108
120
  willUpdate(t) {
109
121
  super.willUpdate(t), t.has("input") && this._attachInput(), (t.has("wide") || t.has("dateFilter") || t.has("now")) && this._datePickerUpdated.emit(), t.has("valueAsDate") && this._setAriaLiveMessage();
@@ -123,28 +135,32 @@ let nt = 0, Dt = (() => {
123
135
  return !!this._now;
124
136
  }
125
137
  _attachInput() {
126
- var e, a, s, T;
127
- const t = Z(this, this.input);
128
- if (this.inputElement !== t && (this.inputElement && ((e = this._datePickerController) == null || e.abort(), (a = this._inputObserver) == null || a.disconnect()), this._inputElement = t, t)) {
129
- this._datePickerController = new AbortController(), (s = this._inputObserver) == null || s.observe(t, {
138
+ var a, s, p, E;
139
+ const t = Y(this, this.input, "input,sbb-date-input");
140
+ if (this.inputElement === t)
141
+ return;
142
+ this.inputElement && ((a = this._datePickerController) == null || a.abort(), (s = this._inputObserver) == null || s.disconnect());
143
+ const e = !c(t);
144
+ if (this._inputElement = t, t) {
145
+ this._datePickerController = new AbortController(), (p = this._inputObserver) == null || p.observe(t, {
130
146
  attributeFilter: ["disabled", "readonly", "min", "max", "value"]
131
- }), this._inputElementPlaceholderMutable = !t.placeholder, t.type = "text", this._inputElementPlaceholderMutable && (t.placeholder = j[this._language.current]);
147
+ }), e && (this._inputElementPlaceholderMutable = !t.placeholder, t.type = "text", this._inputElementPlaceholderMutable && (t.placeholder = q[this._language.current]));
132
148
  const N = { signal: this._datePickerController.signal };
133
- t.addEventListener("input", (H) => {
134
- et(H, this), this._parseInput();
135
- }, N), t.addEventListener("change", () => this._handleInputChange(), N), this._parseInput(!0), this._tryApplyFormatToInput(), this._validateDate(), this._emitInputUpdated(), (T = this._associationController) == null || T.updateControls();
149
+ t.addEventListener("input", (R) => {
150
+ tt(R, this), this._parseInput();
151
+ }, N), t.addEventListener("change", () => this._handleInputChange(), N), this._parseInput(!0), this._tryApplyFormatToInput(), this._validateDate(), this._emitInputUpdated(), (E = this._associationController) == null || E.updateControls();
136
152
  }
137
153
  }
138
154
  _emitInputUpdated() {
139
- const { disabled: t, readOnly: e, min: a, max: s } = this.inputElement ?? {};
140
- this._inputUpdated.emit({ disabled: t, readonly: e, min: a, max: s });
155
+ const { disabled: t, readOnly: e, min: a, max: s } = this.inputElement ?? {}, p = a && typeof a != "string" ? this._dateAdapter.toIso8601(a) : a, E = s && typeof s != "string" ? this._dateAdapter.toIso8601(s) : s;
156
+ this._inputUpdated.emit({ disabled: t, readonly: e, min: p, max: E });
141
157
  }
142
158
  _handleInputChange() {
143
159
  var t;
144
160
  this._tryApplyFormatToInput() || (this._validateDate(), this._setAriaLiveMessage(), this._change.emit(), (t = this._associationController) == null || t.updateControls());
145
161
  }
146
162
  _tryApplyFormatToInput() {
147
- if (!this.inputElement)
163
+ if (!this.inputElement || c(this.inputElement))
148
164
  return !1;
149
165
  const t = this.valueAsDate ? this._dateAdapter.format(this.valueAsDate) : "";
150
166
  return t && this.inputElement.value !== t ? (Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, "value").set.call(this.inputElement, t), this.inputElement.dispatchEvent(new InputEvent("input", { bubbles: !0, composed: !0 })), this.inputElement.dispatchEvent(new Event("change", { bubbles: !0, composed: !0 })), !0) : !1;
@@ -156,6 +172,8 @@ let nt = 0, Dt = (() => {
156
172
  this.inputElement.toggleAttribute("data-sbb-invalid", !t), e !== t && this._validationChange.emit({ valid: t });
157
173
  }
158
174
  _parseInput(t = !1) {
175
+ if (c(this.inputElement))
176
+ return;
159
177
  const e = this.inputElement.value;
160
178
  this._valueAsDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.parse(e, this.now)), t && !this._valueAsDate && (this._valueAsDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e)));
161
179
  }
@@ -167,12 +185,12 @@ let nt = 0, Dt = (() => {
167
185
  t.innerText = "";
168
186
  else {
169
187
  const s = this._dateAdapter.format(this.valueAsDate, { weekdayStyle: "long" });
170
- t.innerText = `${at[this._language.current]} ${s}`;
188
+ t.innerText = `${et[this._language.current]} ${s}`;
171
189
  }
172
190
  else return;
173
191
  }
174
192
  render() {
175
- return G`<p id="status-container" role="status"></p>`;
193
+ return B`<p id="status-container" role="status"></p>`;
176
194
  }
177
195
  /**
178
196
  * Calculates the first available date before the given one,
@@ -211,37 +229,37 @@ let nt = 0, Dt = (() => {
211
229
  * and `min` and `max` parameters (e.g. from the self-named input's attributes).
212
230
  */
213
231
  _isDateAvailable() {
214
- var a, s;
232
+ var a, s, p;
215
233
  if (!this.valueAsDate)
216
234
  return !1;
217
235
  const t = this._dateAdapter.deserialize((a = this.inputElement) == null ? void 0 : a.min), e = this._dateAdapter.deserialize((s = this.inputElement) == null ? void 0 : s.max);
218
- return this._dateAdapter.isValid(t) && this._dateAdapter.compareDate(this.valueAsDate, t) < 0 || this._dateAdapter.isValid(e) && this._dateAdapter.compareDate(this.valueAsDate, e) > 0 ? !1 : this.dateFilter ? this.dateFilter(this.valueAsDate) : !0;
236
+ return this._dateAdapter.isValid(t) && this._dateAdapter.compareDate(this.valueAsDate, t) < 0 || this._dateAdapter.isValid(e) && this._dateAdapter.compareDate(this.valueAsDate, e) > 0 ? !1 : ((p = this.dateFilter) == null ? void 0 : p.call(this, this.valueAsDate)) ?? !0;
219
237
  }
220
- }, c = new WeakMap(), _ = new WeakMap(), m = new WeakMap(), v = new WeakMap(), d = l, (() => {
221
- const t = typeof Symbol == "function" && Symbol.metadata ? Object.create(g[Symbol.metadata] ?? null) : void 0;
222
- w = [Y(), A({ type: Boolean })], k = [A({ attribute: !1 })], F = [A()], O = [A()], M = [A({ attribute: !1 })], P = [K()], h(l, null, w, { kind: "accessor", name: "wide", static: !1, private: !1, access: { has: (e) => "wide" in e, get: (e) => e.wide, set: (e, a) => {
238
+ }, m = new WeakMap(), v = new WeakMap(), f = new WeakMap(), d = l, (() => {
239
+ const t = typeof Symbol == "function" && Symbol.metadata ? Object.create(y[Symbol.metadata] ?? null) : void 0;
240
+ C = [X(), b({ type: Boolean })], x = [b({ attribute: !1 })], F = [b()], O = [b()], V = [b({ attribute: !1 })], M = [J()], h(l, null, C, { kind: "accessor", name: "wide", static: !1, private: !1, access: { has: (e) => "wide" in e, get: (e) => e.wide, set: (e, a) => {
223
241
  e.wide = a;
224
- } }, metadata: t }, y, C), h(l, null, k, { kind: "accessor", name: "dateFilter", static: !1, private: !1, access: { has: (e) => "dateFilter" in e, get: (e) => e.dateFilter, set: (e, a) => {
242
+ } }, metadata: t }, k, I), h(l, null, x, { kind: "setter", name: "dateFilter", static: !1, private: !1, access: { has: (e) => "dateFilter" in e, set: (e, a) => {
225
243
  e.dateFilter = a;
226
- } }, metadata: t }, I, x), h(l, null, F, { kind: "accessor", name: "input", static: !1, private: !1, access: { has: (e) => "input" in e, get: (e) => e.input, set: (e, a) => {
244
+ } }, metadata: t }, null, A), h(l, null, F, { kind: "accessor", name: "input", static: !1, private: !1, access: { has: (e) => "input" in e, get: (e) => e.input, set: (e, a) => {
227
245
  e.input = a;
228
- } }, metadata: t }, z, U), h(l, null, O, { kind: "setter", name: "now", static: !1, private: !1, access: { has: (e) => "now" in e, set: (e, a) => {
246
+ } }, metadata: t }, U, z), h(l, null, O, { kind: "setter", name: "now", static: !1, private: !1, access: { has: (e) => "now" in e, set: (e, a) => {
229
247
  e.now = a;
230
- } }, metadata: t }, null, D), h(l, null, M, { kind: "setter", name: "valueAsDate", static: !1, private: !1, access: { has: (e) => "valueAsDate" in e, set: (e, a) => {
248
+ } }, metadata: t }, null, A), h(l, null, V, { kind: "setter", name: "valueAsDate", static: !1, private: !1, access: { has: (e) => "valueAsDate" in e, set: (e, a) => {
231
249
  e.valueAsDate = a;
232
- } }, metadata: t }, null, D), h(l, null, P, { kind: "accessor", name: "_inputElement", static: !1, private: !1, access: { has: (e) => "_inputElement" in e, get: (e) => e._inputElement, set: (e, a) => {
250
+ } }, metadata: t }, null, A), h(l, null, M, { kind: "accessor", name: "_inputElement", static: !1, private: !1, access: { has: (e) => "_inputElement" in e, get: (e) => e._inputElement, set: (e, a) => {
233
251
  e._inputElement = a;
234
- } }, metadata: t }, S, V), h(null, n = { value: d }, i, { kind: "class", name: d.name, metadata: t }, null, r), p = d = n.value, t && Object.defineProperty(d, Symbol.metadata, { enumerable: !0, configurable: !0, writable: !0, value: t });
235
- })(), l.styles = st, l.events = {
252
+ } }, metadata: t }, P, S), h(null, n = { value: d }, i, { kind: "class", name: d.name, metadata: t }, null, r), _ = d = n.value, t && Object.defineProperty(d, Symbol.metadata, { enumerable: !0, configurable: !0, writable: !0, value: t });
253
+ })(), l.styles = it, l.events = {
236
254
  change: "change",
237
255
  inputUpdated: "inputUpdated",
238
256
  datePickerUpdated: "datePickerUpdated",
239
257
  validationChange: "validationChange"
240
258
  }, u(d, r), l);
241
- return p = d;
259
+ return _ = d;
242
260
  })();
243
261
  export {
244
- Dt as SbbDatepickerElement,
245
- Et as datepickerControlRegisteredEventFactory,
246
- At as getDatePicker
262
+ Et as SbbDatepickerElement,
263
+ At as datepickerControlRegisteredEventFactory,
264
+ bt as getDatePicker
247
265
  };
@@ -34,6 +34,7 @@ export declare abstract class SbbAutocompleteBaseElement extends SbbAutocomplete
34
34
  private _openPanelEventsController;
35
35
  private _didLoad;
36
36
  private _isPointerDownEventOnMenu;
37
+ private _sbbEscapableOverlayController;
37
38
  protected abstract get options(): SbbOptionBaseElement[];
38
39
  protected abstract syncNegative(): void;
39
40
  protected abstract setTriggerAttributes(element: HTMLInputElement): void;
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete-base-element.d.ts","sourceRoot":"","sources":["../../../../src/elements/autocomplete/autocomplete-base-element.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autocomplete-base-element.d.ts","sourceRoot":"","sources":["../../../../src/elements/autocomplete/autocomplete-base-element.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete.d.ts","sourceRoot":"","sources":["../../../../src/elements/autocomplete/autocomplete.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAU5E;;;;;;;;;;;GAWG;AACH,qBAKM,sBAAuB,SAAQ,0BAA0B;IAC7D,SAAS,CAAC,SAAS,SAAkC;IACrD,SAAS,CAAC,SAAS,SAAa;IAChC,OAAO,CAAC,gBAAgB,CAAM;IAE9B,SAAS,KAAK,OAAO,IAAI,gBAAgB,EAAE,CAE1C;;IASD,SAAS,CAAC,YAAY,IAAI,IAAI;IAQ9B,SAAS,CAAC,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAsBpE,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAStD,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAqBzD,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAUpC,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;CAGhE;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,kBAAkB,EAAE,sBAAsB,CAAC;KAC5C;CACF"}
1
+ {"version":3,"file":"autocomplete.d.ts","sourceRoot":"","sources":["../../../../src/elements/autocomplete/autocomplete.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAU5E;;;;;;;;;;;GAWG;AACH,qBAKM,sBAAuB,SAAQ,0BAA0B;IAC7D,SAAS,CAAC,SAAS,SAAkC;IACrD,SAAS,CAAC,SAAS,SAAa;IAChC,OAAO,CAAC,gBAAgB,CAAM;IAE9B,SAAS,KAAK,OAAO,IAAI,gBAAgB,EAAE,CAE1C;;IASD,SAAS,CAAC,YAAY,IAAI,IAAI;IAQ9B,SAAS,CAAC,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAqBpE,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAStD,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAqBzD,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAUpC,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;CAGhE;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,kBAAkB,EAAE,sBAAsB,CAAC;KAC5C;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete-grid.d.ts","sourceRoot":"","sources":["../../../../../src/elements/autocomplete-grid/autocomplete-grid/autocomplete-grid.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAQnE,OAAO,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AAWlF;;;;;;;;;;;GAWG;AACH,qBAKM,0BAA2B,SAAQ,0BAA0B;IACjE,SAAS,CAAC,SAAS,SAAuC;IAC1D,SAAS,CAAC,SAAS,SAAU;IAC7B,OAAO,CAAC,gBAAgB,CAAM;IAC9B,OAAO,CAAC,kBAAkB,CAAK;IAE/B,SAAS,KAAK,OAAO,IAAI,gCAAgC,EAAE,CAE1D;IAED,OAAO,KAAK,IAAI,GAMf;;IASD,SAAS,CAAC,YAAY,IAAI,IAAI;IAU9B,SAAS,CAAC,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IA2BpE;;;;;;OAMG;IACH,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IActD,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IA8BzD,OAAO,CAAC,+BAA+B;IAmCvC,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAkBpC,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;CAGhE;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,uBAAuB,EAAE,0BAA0B,CAAC;KACrD;CACF"}
1
+ {"version":3,"file":"autocomplete-grid.d.ts","sourceRoot":"","sources":["../../../../../src/elements/autocomplete-grid/autocomplete-grid/autocomplete-grid.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAQnE,OAAO,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AAWlF;;;;;;;;;;;GAWG;AACH,qBAKM,0BAA2B,SAAQ,0BAA0B;IACjE,SAAS,CAAC,SAAS,SAAuC;IAC1D,SAAS,CAAC,SAAS,SAAU;IAC7B,OAAO,CAAC,gBAAgB,CAAM;IAC9B,OAAO,CAAC,kBAAkB,CAAK;IAE/B,SAAS,KAAK,OAAO,IAAI,gCAAgC,EAAE,CAE1D;IAED,OAAO,KAAK,IAAI,GAMf;;IASD,SAAS,CAAC,YAAY,IAAI,IAAI;IAU9B,SAAS,CAAC,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IA0BpE;;;;;;OAMG;IACH,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IActD,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IA8BzD,OAAO,CAAC,+BAA+B;IAmCvC,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAkBpC,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;CAGhE;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,uBAAuB,EAAE,0BAA0B,CAAC;KACrD;CACF"}
@@ -45,7 +45,6 @@ let SbbAutocompleteGridElement = (() => {
45
45
  return;
46
46
  }
47
47
  switch (event.key) {
48
- case "Escape":
49
48
  case "Tab":
50
49
  this.close();
51
50
  break;
@@ -155,4 +154,4 @@ let SbbAutocompleteGridElement = (() => {
155
154
  export {
156
155
  SbbAutocompleteGridElement
157
156
  };
158
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWdyaWQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9hdXRvY29tcGxldGUtZ3JpZC9hdXRvY29tcGxldGUtZ3JpZC9hdXRvY29tcGxldGUtZ3JpZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBTYmJBdXRvY29tcGxldGVCYXNlRWxlbWVudCB9IGZyb20gJy4uLy4uL2F1dG9jb21wbGV0ZS5qcyc7XG5pbXBvcnQgeyBnZXROZXh0RWxlbWVudEluZGV4IH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGlzU2FmYXJpIH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgc2V0QXJpYUNvbWJvQm94QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRpdmlkZXJFbGVtZW50IH0gZnJvbSAnLi4vLi4vZGl2aWRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYk9wdEdyb3VwRWxlbWVudCB9IGZyb20gJy4uLy4uL29wdGlvbi5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkF1dG9jb21wbGV0ZUdyaWRCdXR0b25FbGVtZW50IH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlLWdyaWQtYnV0dG9uLmpzJztcbmltcG9ydCB7IFNiYkF1dG9jb21wbGV0ZUdyaWRPcHRpb25FbGVtZW50IH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlLWdyaWQtb3B0aW9uLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiQXV0b2NvbXBsZXRlR3JpZFJvd0VsZW1lbnQgfSBmcm9tICcuLi9hdXRvY29tcGxldGUtZ3JpZC1yb3cuanMnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBPbiBTYWZhcmksIHRoZSBhcmlhIHJvbGUgJ2xpc3Rib3gnIG11c3QgYmUgb24gdGhlIGhvc3QgZWxlbWVudCwgb3IgZWxzZSBWb2ljZU92ZXIgd29uJ3Qgd29yayBhdCBhbGwuXG4gKiBPbiB0aGUgb3RoZXIgaGFuZCwgSkFXUyBhbmQgTlZEQSBuZWVkIHRoZSByb2xlIHRvIGJlIFwiY2xvc2VyXCIgdG8gdGhlIG9wdGlvbnMsIG9yIGVsc2Ugb3B0Z3JvdXBzIHdvbid0IHdvcmsuXG4gKi9cbmNvbnN0IGFyaWFSb2xlT25Ib3N0ID0gaXNTYWZhcmk7XG5cbi8qKlxuICogQ29tYmluZWQgd2l0aCBhIG5hdGl2ZSBpbnB1dCwgaXQgZGlzcGxheXMgYSBwYW5lbCB3aXRoIGEgbGlzdCBvZiBhdmFpbGFibGUgb3B0aW9ucyB3aXRoIGNvbm5lY3RlZCBidXR0b25zLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGBzYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93YCBvciBgc2JiLWF1dG9jb21wbGV0ZS1ncmlkLW9wdGdyb3VwYCBlbGVtZW50cyB0byB0aGUgYHNiYi1hdXRvY29tcGxldGUtZ3JpZGAuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsT3BlbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLWF1dG9jb21wbGV0ZS1ncmlkYCBzdGFydHMgdGhlIG9wZW5pbmcgdHJhbnNpdGlvbi4gQ2FuIGJlIGNhbmNlbGVkLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gZGlkT3BlbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLWF1dG9jb21wbGV0ZS1ncmlkYCBpcyBvcGVuZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1hdXRvY29tcGxldGUtZ3JpZGAgYmVnaW5zIHRoZSBjbG9zaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGRpZENsb3NlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItYXV0b2NvbXBsZXRlLWdyaWRgIGlzIGNsb3NlZC5cbiAqIEBjc3Nwcm9wIFstLXNiYi1hdXRvY29tcGxldGUtei1pbmRleD12YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpXSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLiBUaGUgZGVmYXVsdCBgei1pbmRleGAgb2YgdGhlXG4gKiBjb21wb25lbnQgaXMgc2V0IHRvIGB2YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpYCB3aXRoIGEgdmFsdWUgb2YgYDEwMDBgLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItYXV0b2NvbXBsZXRlLWdyaWQnKVxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgcm9sZTogYXJpYVJvbGVPbkhvc3QgPyAnZ3JpZCcgOiBudWxsLFxufSlcbmNsYXNzIFNiYkF1dG9jb21wbGV0ZUdyaWRFbGVtZW50IGV4dGVuZHMgU2JiQXV0b2NvbXBsZXRlQmFzZUVsZW1lbnQge1xuICBwcm90ZWN0ZWQgb3ZlcmxheUlkID0gYHNiYi1hdXRvY29tcGxldGUtZ3JpZC0keysrbmV4dElkfWA7XG4gIHByb3RlY3RlZCBwYW5lbFJvbGUgPSAnZ3JpZCc7XG4gIHByaXZhdGUgX2FjdGl2ZUl0ZW1JbmRleCA9IC0xO1xuICBwcml2YXRlIF9hY3RpdmVDb2x1bW5JbmRleCA9IDA7XG5cbiAgcHJvdGVjdGVkIGdldCBvcHRpb25zKCk6IFNiYkF1dG9jb21wbGV0ZUdyaWRPcHRpb25FbGVtZW50W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbD8uKCdzYmItYXV0b2NvbXBsZXRlLWdyaWQtb3B0aW9uJykgPz8gW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX3JvdygpOiBTYmJBdXRvY29tcGxldGVHcmlkUm93RWxlbWVudFtdIHtcbiAgICByZXR1cm4gKFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/Lignc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdycpKS5maWx0ZXIoXG4gICAgICAgIChyb3cpID0+ICFyb3cuaGFzQXR0cmlidXRlKCdkYXRhLWRpc2FibGVkJyksXG4gICAgICApID8/IFtdXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdhdXRvY29tcGxldGVPcHRpb25TZWxlY3Rpb25DaGFuZ2UnLCAoZTogQ3VzdG9tRXZlbnQ8dm9pZD4pID0+XG4gICAgICB0aGlzLm9uT3B0aW9uU2VsZWN0ZWQoZSksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzeW5jTmVnYXRpdmUoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPy48U2JiRGl2aWRlckVsZW1lbnQgfCBTYmJBdXRvY29tcGxldGVHcmlkQnV0dG9uRWxlbWVudD4oXG4gICAgICAnc2JiLWRpdmlkZXIsIHNiYi1hdXRvY29tcGxldGUtZ3JpZC1idXR0b24nLFxuICAgICkuZm9yRWFjaCgoZSkgPT4gKGUubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlKSk7XG5cbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJBdXRvY29tcGxldGVHcmlkT3B0aW9uRWxlbWVudCB8IFNiYk9wdEdyb3VwRWxlbWVudD4oXG4gICAgICAnc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdywgc2JiLWF1dG9jb21wbGV0ZS1ncmlkLW9wdGlvbiwgc2JiLWF1dG9jb21wbGV0ZS1ncmlkLW9wdGdyb3VwJyxcbiAgICApLmZvckVhY2goKGVsZW1lbnQpID0+IGVsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCdkYXRhLW5lZ2F0aXZlJywgdGhpcy5uZWdhdGl2ZSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9wZW5lZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnb3BlbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICB0aGlzLnNlbGVjdEJ5S2V5Ym9hcmQoZXZlbnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLnNldE5leHRBY3RpdmVPcHRpb24oZXZlbnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICB0aGlzLl9zZXROZXh0SG9yaXpvbnRhbEFjdGl2ZUVsZW1lbnQoZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0IGFuIGVsZW1lbnQgb24gJ0VudGVyJyBrZXlwcmVzcy5cbiAgICpcbiAgICogRHVlIHRvIGtleWJvYXJkIG5hdmlnYXRpb24gY29kZSwgdGhlIGBfYWN0aXZlQ29sdW1uSW5kZXhgIGlzIHplcm8gd2hlbiBhbiBvcHRpb24gaXMgJ2ZvY3VzZWQnXG4gICAqIGFuZCBncmVhdGVyIHRoYW4gemVybyB3aGVuIGEgYnV0dG9uIGlzICdmb2N1c2VkJywgc28gYXNraW5nIGZvciBgcXVlcnlTZWxlY3RvckFsbCguLi4pW3RoaXMuX2FjdGl2ZUNvbHVtbkluZGV4XWBcbiAgICogd291bGQgYWx3YXlzIHJldHVybiBhIGBTYmJBdXRvY29tcGxldGVHcmlkQnV0dG9uRWxlbWVudGAuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0QnlLZXlib2FyZChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBpZiAodGhpcy5fYWN0aXZlQ29sdW1uSW5kZXggIT09IDApIHtcbiAgICAgIChcbiAgICAgICAgdGhpcy5fcm93W3RoaXMuX2FjdGl2ZUl0ZW1JbmRleF0ucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAnc2JiLWF1dG9jb21wbGV0ZS1ncmlkLW9wdGlvbiwgc2JiLWF1dG9jb21wbGV0ZS1ncmlkLWJ1dHRvbicsXG4gICAgICAgIClbdGhpcy5fYWN0aXZlQ29sdW1uSW5kZXhdIGFzIFNiYkF1dG9jb21wbGV0ZUdyaWRCdXR0b25FbGVtZW50XG4gICAgICApLmNsaWNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3B0aW9uc1t0aGlzLl9hY3RpdmVJdGVtSW5kZXhdPy5zZXRTZWxlY3RlZFZpYVVzZXJJbnRlcmFjdGlvbih0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0TmV4dEFjdGl2ZU9wdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIoXG4gICAgICAob3B0KSA9PiAhb3B0LmRpc2FibGVkICYmICFvcHQuaGFzQXR0cmlidXRlKCdkYXRhLWdyb3VwLWRpc2FibGVkJyksXG4gICAgKTtcblxuICAgIC8vIEdldCBhbmQgYWN0aXZhdGUgdGhlIG5leHQgYWN0aXZlIG9wdGlvblxuICAgIGNvbnN0IG5leHQgPSBnZXROZXh0RWxlbWVudEluZGV4KGV2ZW50LCB0aGlzLl9hY3RpdmVJdGVtSW5kZXgsIGZpbHRlcmVkT3B0aW9ucy5sZW5ndGgpO1xuICAgIGlmIChpc05hTihuZXh0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBuZXh0QWN0aXZlT3B0aW9uID0gZmlsdGVyZWRPcHRpb25zW25leHRdO1xuICAgIG5leHRBY3RpdmVPcHRpb24uc2V0QWN0aXZlKHRydWUpO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50JywgbmV4dEFjdGl2ZU9wdGlvbi5pZCk7XG4gICAgbmV4dEFjdGl2ZU9wdGlvbi5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcgfSk7XG5cbiAgICAvLyBSZXNldCB0aGUgcHJldmlvdXMgYWN0aXZlIG9wdGlvbi9idXR0b25cbiAgICBpZiAodGhpcy5fYWN0aXZlQ29sdW1uSW5kZXggIT09IDApIHtcbiAgICAgIHRoaXMuX3Jvd1t0aGlzLl9hY3RpdmVJdGVtSW5kZXhdXG4gICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCdzYmItYXV0b2NvbXBsZXRlLWdyaWQtYnV0dG9uJylcbiAgICAgICAgLmZvckVhY2goKGUpID0+IGUudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWZvY3VzLXZpc2libGUnLCBmYWxzZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsYXN0QWN0aXZlT3B0aW9uID0gZmlsdGVyZWRPcHRpb25zW3RoaXMuX2FjdGl2ZUl0ZW1JbmRleF07XG4gICAgICBpZiAobGFzdEFjdGl2ZU9wdGlvbikge1xuICAgICAgICBsYXN0QWN0aXZlT3B0aW9uLnNldEFjdGl2ZShmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCA9IG5leHQ7XG4gICAgdGhpcy5fYWN0aXZlQ29sdW1uSW5kZXggPSAwO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0TmV4dEhvcml6b250YWxBY3RpdmVFbGVtZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCA8IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50c0luUm93OiAoU2JiQXV0b2NvbXBsZXRlR3JpZE9wdGlvbkVsZW1lbnQgfCBTYmJBdXRvY29tcGxldGVHcmlkQnV0dG9uRWxlbWVudClbXSA9XG4gICAgICBBcnJheS5mcm9tKFxuICAgICAgICB0aGlzLl9yb3dbdGhpcy5fYWN0aXZlSXRlbUluZGV4XS5xdWVyeVNlbGVjdG9yQWxsPFxuICAgICAgICAgIFNiYkF1dG9jb21wbGV0ZUdyaWRPcHRpb25FbGVtZW50IHwgU2JiQXV0b2NvbXBsZXRlR3JpZEJ1dHRvbkVsZW1lbnRcbiAgICAgICAgPignc2JiLWF1dG9jb21wbGV0ZS1ncmlkLW9wdGlvbiwgc2JiLWF1dG9jb21wbGV0ZS1ncmlkLWJ1dHRvbicpLFxuICAgICAgKS5maWx0ZXIoKGVsKSA9PiAhZWwuZGlzYWJsZWQgJiYgIWVsLmhhc0F0dHJpYnV0ZSgnZGF0YS1ncm91cC1kaXNhYmxlZCcpKTtcbiAgICBjb25zdCBuZXh0OiBudW1iZXIgPSBnZXROZXh0RWxlbWVudEluZGV4KGV2ZW50LCB0aGlzLl9hY3RpdmVDb2x1bW5JbmRleCwgZWxlbWVudHNJblJvdy5sZW5ndGgpO1xuICAgIGlmIChpc05hTihuZXh0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBuZXh0RWxlbWVudDogU2JiQXV0b2NvbXBsZXRlR3JpZE9wdGlvbkVsZW1lbnQgfCBTYmJBdXRvY29tcGxldGVHcmlkQnV0dG9uRWxlbWVudCA9XG4gICAgICBlbGVtZW50c0luUm93W25leHRdO1xuICAgIGlmIChuZXh0RWxlbWVudCBpbnN0YW5jZW9mIFNiYkF1dG9jb21wbGV0ZUdyaWRPcHRpb25FbGVtZW50KSB7XG4gICAgICBuZXh0RWxlbWVudC5zZXRBY3RpdmUodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHRFbGVtZW50LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1mb2N1cy12aXNpYmxlJywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgbGFzdEFjdGl2ZUVsZW1lbnQ6IFNiYkF1dG9jb21wbGV0ZUdyaWRPcHRpb25FbGVtZW50IHwgU2JiQXV0b2NvbXBsZXRlR3JpZEJ1dHRvbkVsZW1lbnQgPVxuICAgICAgZWxlbWVudHNJblJvd1t0aGlzLl9hY3RpdmVDb2x1bW5JbmRleF07XG4gICAgaWYgKGxhc3RBY3RpdmVFbGVtZW50IGluc3RhbmNlb2YgU2JiQXV0b2NvbXBsZXRlR3JpZE9wdGlvbkVsZW1lbnQpIHtcbiAgICAgIGxhc3RBY3RpdmVFbGVtZW50LnNldEFjdGl2ZShmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhc3RBY3RpdmVFbGVtZW50LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1mb2N1cy12aXNpYmxlJywgZmFsc2UpO1xuICAgIH1cbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcsIG5leHRFbGVtZW50LmlkKTtcbiAgICBuZXh0RWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcgfSk7XG4gICAgdGhpcy5fYWN0aXZlQ29sdW1uSW5kZXggPSBuZXh0O1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc2V0QWN0aXZlRWxlbWVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fYWN0aXZlQ29sdW1uSW5kZXggIT09IDApIHtcbiAgICAgIHRoaXMuX3Jvd1t0aGlzLl9hY3RpdmVJdGVtSW5kZXhdXG4gICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCdzYmItYXV0b2NvbXBsZXRlLWdyaWQtYnV0dG9uJylcbiAgICAgICAgLmZvckVhY2goKGUpID0+IGUudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWZvY3VzLXZpc2libGUnLCBmYWxzZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gdGhpcy5vcHRpb25zLmZpbHRlcihcbiAgICAgICAgKG9wdCkgPT4gIW9wdC5kaXNhYmxlZCAmJiAhb3B0Lmhhc0F0dHJpYnV0ZSgnZGF0YS1ncm91cC1kaXNhYmxlZCcpLFxuICAgICAgKVt0aGlzLl9hY3RpdmVJdGVtSW5kZXhdO1xuICAgICAgaWYgKGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgYWN0aXZlRWxlbWVudC5zZXRBY3RpdmUoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9hY3RpdmVJdGVtSW5kZXggPSAtMTtcbiAgICB0aGlzLl9hY3RpdmVDb2x1bW5JbmRleCA9IDA7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudD8ucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRUcmlnZ2VyQXR0cmlidXRlcyhlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XG4gICAgc2V0QXJpYUNvbWJvQm94QXR0cmlidXRlcyhlbGVtZW50LCBhcmlhUm9sZU9uSG9zdCA/IHRoaXMuaWQgOiB0aGlzLm92ZXJsYXlJZCwgZmFsc2UsICdncmlkJyk7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1hdXRvY29tcGxldGUtZ3JpZCc6IFNiYkF1dG9jb21wbGV0ZUdyaWRFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBYUEsSUFBSSxTQUFTO0FBTWIsTUFBTSxpQkFBaUI7SUFtQmpCLDhCQUEwQixNQUFBOztBQUovQixNQUFBLG1CQUFBLENBQUEsY0FBYyx1QkFBdUIsR0FDckMsZUFBZTtBQUFBLElBQ2QsTUFBTSxpQkFBaUIsU0FBUztBQUFBLEVBQUEsQ0FDakMsQ0FBQzs7OztvQkFDdUM7QUFBUixFQUFBLG1CQUFRLFlBQTBCO0FBQUEsSUFNakUsSUFBYyxVQUFPOztBQUNuQixhQUFPLE1BQU0sT0FBS0EsTUFBQSxLQUFLLHFCQUFMLGdC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
157
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWdyaWQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9hdXRvY29tcGxldGUtZ3JpZC9hdXRvY29tcGxldGUtZ3JpZC9hdXRvY29tcGxldGUtZ3JpZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBTYmJBdXRvY29tcGxldGVCYXNlRWxlbWVudCB9IGZyb20gJy4uLy4uL2F1dG9jb21wbGV0ZS5qcyc7XG5pbXBvcnQgeyBnZXROZXh0RWxlbWVudEluZGV4IH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGlzU2FmYXJpIH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgc2V0QXJpYUNvbWJvQm94QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRpdmlkZXJFbGVtZW50IH0gZnJvbSAnLi4vLi4vZGl2aWRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYk9wdEdyb3VwRWxlbWVudCB9IGZyb20gJy4uLy4uL29wdGlvbi5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkF1dG9jb21wbGV0ZUdyaWRCdXR0b25FbGVtZW50IH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlLWdyaWQtYnV0dG9uLmpzJztcbmltcG9ydCB7IFNiYkF1dG9jb21wbGV0ZUdyaWRPcHRpb25FbGVtZW50IH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlLWdyaWQtb3B0aW9uLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiQXV0b2NvbXBsZXRlR3JpZFJvd0VsZW1lbnQgfSBmcm9tICcuLi9hdXRvY29tcGxldGUtZ3JpZC1yb3cuanMnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBPbiBTYWZhcmksIHRoZSBhcmlhIHJvbGUgJ2xpc3Rib3gnIG11c3QgYmUgb24gdGhlIGhvc3QgZWxlbWVudCwgb3IgZWxzZSBWb2ljZU92ZXIgd29uJ3Qgd29yayBhdCBhbGwuXG4gKiBPbiB0aGUgb3RoZXIgaGFuZCwgSkFXUyBhbmQgTlZEQSBuZWVkIHRoZSByb2xlIHRvIGJlIFwiY2xvc2VyXCIgdG8gdGhlIG9wdGlvbnMsIG9yIGVsc2Ugb3B0Z3JvdXBzIHdvbid0IHdvcmsuXG4gKi9cbmNvbnN0IGFyaWFSb2xlT25Ib3N0ID0gaXNTYWZhcmk7XG5cbi8qKlxuICogQ29tYmluZWQgd2l0aCBhIG5hdGl2ZSBpbnB1dCwgaXQgZGlzcGxheXMgYSBwYW5lbCB3aXRoIGEgbGlzdCBvZiBhdmFpbGFibGUgb3B0aW9ucyB3aXRoIGNvbm5lY3RlZCBidXR0b25zLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGBzYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93YCBvciBgc2JiLWF1dG9jb21wbGV0ZS1ncmlkLW9wdGdyb3VwYCBlbGVtZW50cyB0byB0aGUgYHNiYi1hdXRvY29tcGxldGUtZ3JpZGAuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsT3BlbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLWF1dG9jb21wbGV0ZS1ncmlkYCBzdGFydHMgdGhlIG9wZW5pbmcgdHJhbnNpdGlvbi4gQ2FuIGJlIGNhbmNlbGVkLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gZGlkT3BlbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLWF1dG9jb21wbGV0ZS1ncmlkYCBpcyBvcGVuZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1hdXRvY29tcGxldGUtZ3JpZGAgYmVnaW5zIHRoZSBjbG9zaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGRpZENsb3NlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItYXV0b2NvbXBsZXRlLWdyaWRgIGlzIGNsb3NlZC5cbiAqIEBjc3Nwcm9wIFstLXNiYi1hdXRvY29tcGxldGUtei1pbmRleD12YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpXSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLiBUaGUgZGVmYXVsdCBgei1pbmRleGAgb2YgdGhlXG4gKiBjb21wb25lbnQgaXMgc2V0IHRvIGB2YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpYCB3aXRoIGEgdmFsdWUgb2YgYDEwMDBgLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItYXV0b2NvbXBsZXRlLWdyaWQnKVxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgcm9sZTogYXJpYVJvbGVPbkhvc3QgPyAnZ3JpZCcgOiBudWxsLFxufSlcbmNsYXNzIFNiYkF1dG9jb21wbGV0ZUdyaWRFbGVtZW50IGV4dGVuZHMgU2JiQXV0b2NvbXBsZXRlQmFzZUVsZW1lbnQge1xuICBwcm90ZWN0ZWQgb3ZlcmxheUlkID0gYHNiYi1hdXRvY29tcGxldGUtZ3JpZC0keysrbmV4dElkfWA7XG4gIHByb3RlY3RlZCBwYW5lbFJvbGUgPSAnZ3JpZCc7XG4gIHByaXZhdGUgX2FjdGl2ZUl0ZW1JbmRleCA9IC0xO1xuICBwcml2YXRlIF9hY3RpdmVDb2x1bW5JbmRleCA9IDA7XG5cbiAgcHJvdGVjdGVkIGdldCBvcHRpb25zKCk6IFNiYkF1dG9jb21wbGV0ZUdyaWRPcHRpb25FbGVtZW50W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbD8uKCdzYmItYXV0b2NvbXBsZXRlLWdyaWQtb3B0aW9uJykgPz8gW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX3JvdygpOiBTYmJBdXRvY29tcGxldGVHcmlkUm93RWxlbWVudFtdIHtcbiAgICByZXR1cm4gKFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/Lignc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdycpKS5maWx0ZXIoXG4gICAgICAgIChyb3cpID0+ICFyb3cuaGFzQXR0cmlidXRlKCdkYXRhLWRpc2FibGVkJyksXG4gICAgICApID8/IFtdXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdhdXRvY29tcGxldGVPcHRpb25TZWxlY3Rpb25DaGFuZ2UnLCAoZTogQ3VzdG9tRXZlbnQ8dm9pZD4pID0+XG4gICAgICB0aGlzLm9uT3B0aW9uU2VsZWN0ZWQoZSksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzeW5jTmVnYXRpdmUoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPy48U2JiRGl2aWRlckVsZW1lbnQgfCBTYmJBdXRvY29tcGxldGVHcmlkQnV0dG9uRWxlbWVudD4oXG4gICAgICAnc2JiLWRpdmlkZXIsIHNiYi1hdXRvY29tcGxldGUtZ3JpZC1idXR0b24nLFxuICAgICkuZm9yRWFjaCgoZSkgPT4gKGUubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlKSk7XG5cbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJBdXRvY29tcGxldGVHcmlkT3B0aW9uRWxlbWVudCB8IFNiYk9wdEdyb3VwRWxlbWVudD4oXG4gICAgICAnc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdywgc2JiLWF1dG9jb21wbGV0ZS1ncmlkLW9wdGlvbiwgc2JiLWF1dG9jb21wbGV0ZS1ncmlkLW9wdGdyb3VwJyxcbiAgICApLmZvckVhY2goKGVsZW1lbnQpID0+IGVsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCdkYXRhLW5lZ2F0aXZlJywgdGhpcy5uZWdhdGl2ZSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9wZW5lZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnb3BlbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdUYWInOlxuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgIHRoaXMuc2VsZWN0QnlLZXlib2FyZChldmVudCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIHRoaXMuc2V0TmV4dEFjdGl2ZU9wdGlvbihldmVudCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIHRoaXMuX3NldE5leHRIb3Jpem9udGFsQWN0aXZlRWxlbWVudChldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3QgYW4gZWxlbWVudCBvbiAnRW50ZXInIGtleXByZXNzLlxuICAgKlxuICAgKiBEdWUgdG8ga2V5Ym9hcmQgbmF2aWdhdGlvbiBjb2RlLCB0aGUgYF9hY3RpdmVDb2x1bW5JbmRleGAgaXMgemVybyB3aGVuIGFuIG9wdGlvbiBpcyAnZm9jdXNlZCdcbiAgICogYW5kIGdyZWF0ZXIgdGhhbiB6ZXJvIHdoZW4gYSBidXR0b24gaXMgJ2ZvY3VzZWQnLCBzbyBhc2tpbmcgZm9yIGBxdWVyeVNlbGVjdG9yQWxsKC4uLilbdGhpcy5fYWN0aXZlQ29sdW1uSW5kZXhdYFxuICAgKiB3b3VsZCBhbHdheXMgcmV0dXJuIGEgYFNiYkF1dG9jb21wbGV0ZUdyaWRCdXR0b25FbGVtZW50YC5cbiAgICovXG4gIHByb3RlY3RlZCBzZWxlY3RCeUtleWJvYXJkKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGlmICh0aGlzLl9hY3RpdmVDb2x1bW5JbmRleCAhPT0gMCkge1xuICAgICAgKFxuICAgICAgICB0aGlzLl9yb3dbdGhpcy5fYWN0aXZlSXRlbUluZGV4XS5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICdzYmItYXV0b2NvbXBsZXRlLWdyaWQtb3B0aW9uLCBzYmItYXV0b2NvbXBsZXRlLWdyaWQtYnV0dG9uJyxcbiAgICAgICAgKVt0aGlzLl9hY3RpdmVDb2x1bW5JbmRleF0gYXMgU2JiQXV0b2NvbXBsZXRlR3JpZEJ1dHRvbkVsZW1lbnRcbiAgICAgICkuY2xpY2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcHRpb25zW3RoaXMuX2FjdGl2ZUl0ZW1JbmRleF0/LnNldFNlbGVjdGVkVmlhVXNlckludGVyYWN0aW9uKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzZXROZXh0QWN0aXZlT3B0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcihcbiAgICAgIChvcHQpID0+ICFvcHQuZGlzYWJsZWQgJiYgIW9wdC5oYXNBdHRyaWJ1dGUoJ2RhdGEtZ3JvdXAtZGlzYWJsZWQnKSxcbiAgICApO1xuXG4gICAgLy8gR2V0IGFuZCBhY3RpdmF0ZSB0aGUgbmV4dCBhY3RpdmUgb3B0aW9uXG4gICAgY29uc3QgbmV4dCA9IGdldE5leHRFbGVtZW50SW5kZXgoZXZlbnQsIHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCwgZmlsdGVyZWRPcHRpb25zLmxlbmd0aCk7XG4gICAgaWYgKGlzTmFOKG5leHQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5leHRBY3RpdmVPcHRpb24gPSBmaWx0ZXJlZE9wdGlvbnNbbmV4dF07XG4gICAgbmV4dEFjdGl2ZU9wdGlvbi5zZXRBY3RpdmUodHJ1ZSk7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudD8uc2V0QXR0cmlidXRlKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnLCBuZXh0QWN0aXZlT3B0aW9uLmlkKTtcbiAgICBuZXh0QWN0aXZlT3B0aW9uLnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICduZWFyZXN0JyB9KTtcblxuICAgIC8vIFJlc2V0IHRoZSBwcmV2aW91cyBhY3RpdmUgb3B0aW9uL2J1dHRvblxuICAgIGlmICh0aGlzLl9hY3RpdmVDb2x1bW5JbmRleCAhPT0gMCkge1xuICAgICAgdGhpcy5fcm93W3RoaXMuX2FjdGl2ZUl0ZW1JbmRleF1cbiAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJ3NiYi1hdXRvY29tcGxldGUtZ3JpZC1idXR0b24nKVxuICAgICAgICAuZm9yRWFjaCgoZSkgPT4gZS50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtZm9jdXMtdmlzaWJsZScsIGZhbHNlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxhc3RBY3RpdmVPcHRpb24gPSBmaWx0ZXJlZE9wdGlvbnNbdGhpcy5fYWN0aXZlSXRlbUluZGV4XTtcbiAgICAgIGlmIChsYXN0QWN0aXZlT3B0aW9uKSB7XG4gICAgICAgIGxhc3RBY3RpdmVPcHRpb24uc2V0QWN0aXZlKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fYWN0aXZlSXRlbUluZGV4ID0gbmV4dDtcbiAgICB0aGlzLl9hY3RpdmVDb2x1bW5JbmRleCA9IDA7XG4gIH1cblxuICBwcml2YXRlIF9zZXROZXh0SG9yaXpvbnRhbEFjdGl2ZUVsZW1lbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fYWN0aXZlSXRlbUluZGV4IDwgMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnRzSW5Sb3c6IChTYmJBdXRvY29tcGxldGVHcmlkT3B0aW9uRWxlbWVudCB8IFNiYkF1dG9jb21wbGV0ZUdyaWRCdXR0b25FbGVtZW50KVtdID1cbiAgICAgIEFycmF5LmZyb20oXG4gICAgICAgIHRoaXMuX3Jvd1t0aGlzLl9hY3RpdmVJdGVtSW5kZXhdLnF1ZXJ5U2VsZWN0b3JBbGw8XG4gICAgICAgICAgU2JiQXV0b2NvbXBsZXRlR3JpZE9wdGlvbkVsZW1lbnQgfCBTYmJBdXRvY29tcGxldGVHcmlkQnV0dG9uRWxlbWVudFxuICAgICAgICA+KCdzYmItYXV0b2NvbXBsZXRlLWdyaWQtb3B0aW9uLCBzYmItYXV0b2NvbXBsZXRlLWdyaWQtYnV0dG9uJyksXG4gICAgICApLmZpbHRlcigoZWwpID0+ICFlbC5kaXNhYmxlZCAmJiAhZWwuaGFzQXR0cmlidXRlKCdkYXRhLWdyb3VwLWRpc2FibGVkJykpO1xuICAgIGNvbnN0IG5leHQ6IG51bWJlciA9IGdldE5leHRFbGVtZW50SW5kZXgoZXZlbnQsIHRoaXMuX2FjdGl2ZUNvbHVtbkluZGV4LCBlbGVtZW50c0luUm93Lmxlbmd0aCk7XG4gICAgaWYgKGlzTmFOKG5leHQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5leHRFbGVtZW50OiBTYmJBdXRvY29tcGxldGVHcmlkT3B0aW9uRWxlbWVudCB8IFNiYkF1dG9jb21wbGV0ZUdyaWRCdXR0b25FbGVtZW50ID1cbiAgICAgIGVsZW1lbnRzSW5Sb3dbbmV4dF07XG4gICAgaWYgKG5leHRFbGVtZW50IGluc3RhbmNlb2YgU2JiQXV0b2NvbXBsZXRlR3JpZE9wdGlvbkVsZW1lbnQpIHtcbiAgICAgIG5leHRFbGVtZW50LnNldEFjdGl2ZSh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dEVsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWZvY3VzLXZpc2libGUnLCB0cnVlKTtcbiAgICB9XG5cbiAgICBjb25zdCBsYXN0QWN0aXZlRWxlbWVudDogU2JiQXV0b2NvbXBsZXRlR3JpZE9wdGlvbkVsZW1lbnQgfCBTYmJBdXRvY29tcGxldGVHcmlkQnV0dG9uRWxlbWVudCA9XG4gICAgICBlbGVtZW50c0luUm93W3RoaXMuX2FjdGl2ZUNvbHVtbkluZGV4XTtcbiAgICBpZiAobGFzdEFjdGl2ZUVsZW1lbnQgaW5zdGFuY2VvZiBTYmJBdXRvY29tcGxldGVHcmlkT3B0aW9uRWxlbWVudCkge1xuICAgICAgbGFzdEFjdGl2ZUVsZW1lbnQuc2V0QWN0aXZlKGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFzdEFjdGl2ZUVsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWZvY3VzLXZpc2libGUnLCBmYWxzZSk7XG4gICAgfVxuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50JywgbmV4dEVsZW1lbnQuaWQpO1xuICAgIG5leHRFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICduZWFyZXN0JyB9KTtcbiAgICB0aGlzLl9hY3RpdmVDb2x1bW5JbmRleCA9IG5leHQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzZXRBY3RpdmVFbGVtZW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9hY3RpdmVDb2x1bW5JbmRleCAhPT0gMCkge1xuICAgICAgdGhpcy5fcm93W3RoaXMuX2FjdGl2ZUl0ZW1JbmRleF1cbiAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJ3NiYi1hdXRvY29tcGxldGUtZ3JpZC1idXR0b24nKVxuICAgICAgICAuZm9yRWFjaCgoZSkgPT4gZS50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtZm9jdXMtdmlzaWJsZScsIGZhbHNlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKFxuICAgICAgICAob3B0KSA9PiAhb3B0LmRpc2FibGVkICYmICFvcHQuaGFzQXR0cmlidXRlKCdkYXRhLWdyb3VwLWRpc2FibGVkJyksXG4gICAgICApW3RoaXMuX2FjdGl2ZUl0ZW1JbmRleF07XG4gICAgICBpZiAoYWN0aXZlRWxlbWVudCkge1xuICAgICAgICBhY3RpdmVFbGVtZW50LnNldEFjdGl2ZShmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCA9IC0xO1xuICAgIHRoaXMuX2FjdGl2ZUNvbHVtbkluZGV4ID0gMDtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldFRyaWdnZXJBdHRyaWJ1dGVzKGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQpOiB2b2lkIHtcbiAgICBzZXRBcmlhQ29tYm9Cb3hBdHRyaWJ1dGVzKGVsZW1lbnQsIGFyaWFSb2xlT25Ib3N0ID8gdGhpcy5pZCA6IHRoaXMub3ZlcmxheUlkLCBmYWxzZSwgJ2dyaWQnKTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWF1dG9jb21wbGV0ZS1ncmlkJzogU2JiQXV0b2NvbXBsZXRlR3JpZEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFhQSxJQUFJLFNBQVM7QUFNYixNQUFNLGlCQUFpQjtJQW1CakIsOEJBQTBCLE1BQUE7O0FBSi9CLE1BQUEsbUJBQUEsQ0FBQSxjQUFjLHVCQUF1QixHQUNyQyxlQUFlO0FBQUEsSUFDZCxNQUFNLGlCQUFpQixTQUFTO0FBQUEsRUFBQSxDQUNqQyxDQUFDOzs7O29CQUN1QztBQUFSLEVBQUEsbUJBQVEsWUFBMEI7QUFBQSxJQU1qRSxJQUFjLFVBQU87O0FBQ25CLGFBQU8sTUFBTSxPQUFLQSxNQUFBLEtBQUsscUJBQUwsZ0JBQUFBLElBQUEsV0FBd0Isb0NBQW1D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