@sbb-esta/lyne-elements 3.10.0 → 3.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/calendar/calendar.component.d.ts +2 -1
  2. package/calendar/calendar.component.d.ts.map +1 -1
  3. package/core/controllers/escapable-overlay-controller.d.ts +3 -0
  4. package/core/controllers/escapable-overlay-controller.d.ts.map +1 -1
  5. package/core/controllers/overlay-position-controller.d.ts +60 -0
  6. package/core/controllers/overlay-position-controller.d.ts.map +1 -0
  7. package/core/controllers/overlay-position-controller.js +224 -0
  8. package/core/controllers.d.ts +1 -0
  9. package/core/controllers.d.ts.map +1 -1
  10. package/core/controllers.js +12 -10
  11. package/core/styles/core.scss +27 -2
  12. package/core.css +21 -2
  13. package/custom-elements.json +1996 -544
  14. package/development/calendar/calendar.component.d.ts +2 -1
  15. package/development/calendar/calendar.component.d.ts.map +1 -1
  16. package/development/calendar/calendar.component.js +1 -1
  17. package/development/core/controllers/escapable-overlay-controller.d.ts +3 -0
  18. package/development/core/controllers/escapable-overlay-controller.d.ts.map +1 -1
  19. package/development/core/controllers/escapable-overlay-controller.js +1 -1
  20. package/development/core/controllers/overlay-position-controller.d.ts +60 -0
  21. package/development/core/controllers/overlay-position-controller.d.ts.map +1 -0
  22. package/development/core/controllers/overlay-position-controller.js +306 -0
  23. package/development/core/controllers.d.ts +1 -0
  24. package/development/core/controllers.d.ts.map +1 -1
  25. package/development/core/controllers.js +3 -1
  26. package/development/mini-calendar/mini-calendar/mini-calendar.component.d.ts +35 -0
  27. package/development/mini-calendar/mini-calendar/mini-calendar.component.d.ts.map +1 -0
  28. package/development/mini-calendar/mini-calendar/mini-calendar.component.js +201 -0
  29. package/development/mini-calendar/mini-calendar-day/mini-calendar-day.component.d.ts +23 -0
  30. package/development/mini-calendar/mini-calendar-day/mini-calendar-day.component.d.ts.map +1 -0
  31. package/development/mini-calendar/mini-calendar-day/mini-calendar-day.component.js +181 -0
  32. package/development/mini-calendar/mini-calendar-day.d.ts +5 -0
  33. package/development/mini-calendar/mini-calendar-day.d.ts.map +1 -0
  34. package/development/mini-calendar/mini-calendar-day.js +5 -0
  35. package/development/mini-calendar/mini-calendar-month/mini-calendar-month.component.d.ts +25 -0
  36. package/development/mini-calendar/mini-calendar-month/mini-calendar-month.component.d.ts.map +1 -0
  37. package/development/mini-calendar/mini-calendar-month/mini-calendar-month.component.js +123 -0
  38. package/development/mini-calendar/mini-calendar-month.d.ts +5 -0
  39. package/development/mini-calendar/mini-calendar-month.d.ts.map +1 -0
  40. package/development/mini-calendar/mini-calendar-month.js +5 -0
  41. package/development/mini-calendar/mini-calendar.d.ts +5 -0
  42. package/development/mini-calendar/mini-calendar.d.ts.map +1 -0
  43. package/development/mini-calendar/mini-calendar.js +5 -0
  44. package/development/mini-calendar.d.ts +7 -0
  45. package/development/mini-calendar.d.ts.map +1 -0
  46. package/development/mini-calendar.js +9 -0
  47. package/development/sidebar/icon-sidebar-button/icon-sidebar-button.component.d.ts +4 -1
  48. package/development/sidebar/icon-sidebar-button/icon-sidebar-button.component.d.ts.map +1 -1
  49. package/development/sidebar/icon-sidebar-button/icon-sidebar-button.component.js +5 -1
  50. package/development/sidebar/icon-sidebar-link/icon-sidebar-link.component.d.ts +4 -1
  51. package/development/sidebar/icon-sidebar-link/icon-sidebar-link.component.d.ts.map +1 -1
  52. package/development/sidebar/icon-sidebar-link/icon-sidebar-link.component.js +5 -1
  53. package/development/tabs/tab/tab.component.d.ts +9 -0
  54. package/development/tabs/tab/tab.component.d.ts.map +1 -1
  55. package/development/tabs/tab/tab.component.js +48 -7
  56. package/development/tabs/tab-group/tab-group.component.d.ts +7 -3
  57. package/development/tabs/tab-group/tab-group.component.d.ts.map +1 -1
  58. package/development/tabs/tab-group/tab-group.component.js +19 -39
  59. package/development/tabs/tab-label/tab-label.component.d.ts.map +1 -1
  60. package/development/tabs/tab-label/tab-label.component.js +4 -3
  61. package/development/tooltip/tooltip.component.d.ts +11 -4
  62. package/development/tooltip/tooltip.component.d.ts.map +1 -1
  63. package/development/tooltip/tooltip.component.js +57 -78
  64. package/index.d.ts +6 -0
  65. package/index.js +6 -0
  66. package/mini-calendar/mini-calendar/mini-calendar.component.d.ts +35 -0
  67. package/mini-calendar/mini-calendar/mini-calendar.component.d.ts.map +1 -0
  68. package/mini-calendar/mini-calendar/mini-calendar.component.js +133 -0
  69. package/mini-calendar/mini-calendar-day/mini-calendar-day.component.d.ts +23 -0
  70. package/mini-calendar/mini-calendar-day/mini-calendar-day.component.d.ts.map +1 -0
  71. package/mini-calendar/mini-calendar-day/mini-calendar-day.component.js +66 -0
  72. package/mini-calendar/mini-calendar-day.d.ts +5 -0
  73. package/mini-calendar/mini-calendar-day.d.ts.map +1 -0
  74. package/mini-calendar/mini-calendar-day.js +4 -0
  75. package/mini-calendar/mini-calendar-month/mini-calendar-month.component.d.ts +25 -0
  76. package/mini-calendar/mini-calendar-month/mini-calendar-month.component.d.ts.map +1 -0
  77. package/mini-calendar/mini-calendar-month/mini-calendar-month.component.js +59 -0
  78. package/mini-calendar/mini-calendar-month.d.ts +5 -0
  79. package/mini-calendar/mini-calendar-month.d.ts.map +1 -0
  80. package/mini-calendar/mini-calendar-month.js +4 -0
  81. package/mini-calendar/mini-calendar.d.ts +5 -0
  82. package/mini-calendar/mini-calendar.d.ts.map +1 -0
  83. package/mini-calendar/mini-calendar.js +4 -0
  84. package/mini-calendar.d.ts +7 -0
  85. package/mini-calendar.d.ts.map +1 -0
  86. package/mini-calendar.js +8 -0
  87. package/off-brand-theme.css +21 -2
  88. package/package.json +21 -1
  89. package/safety-theme.css +21 -2
  90. package/sidebar/icon-sidebar-button/icon-sidebar-button.component.d.ts +4 -1
  91. package/sidebar/icon-sidebar-button/icon-sidebar-button.component.d.ts.map +1 -1
  92. package/sidebar/icon-sidebar-button/icon-sidebar-button.component.js +9 -6
  93. package/sidebar/icon-sidebar-link/icon-sidebar-link.component.d.ts +4 -1
  94. package/sidebar/icon-sidebar-link/icon-sidebar-link.component.d.ts.map +1 -1
  95. package/sidebar/icon-sidebar-link/icon-sidebar-link.component.js +13 -10
  96. package/standard-theme.css +21 -2
  97. package/tabs/tab/tab.component.d.ts +9 -0
  98. package/tabs/tab/tab.component.d.ts.map +1 -1
  99. package/tabs/tab/tab.component.js +37 -18
  100. package/tabs/tab-group/tab-group.component.d.ts +7 -3
  101. package/tabs/tab-group/tab-group.component.d.ts.map +1 -1
  102. package/tabs/tab-group/tab-group.component.js +51 -52
  103. package/tabs/tab-label/tab-label.component.d.ts.map +1 -1
  104. package/tabs/tab-label/tab-label.component.js +12 -12
  105. package/tooltip/tooltip.component.d.ts +11 -4
  106. package/tooltip/tooltip.component.d.ts.map +1 -1
  107. package/tooltip/tooltip.component.js +60 -84
@@ -85,7 +85,7 @@ const style = css`*,
85
85
  }
86
86
  }
87
87
 
88
- :host(:is([data-active], :active)) {
88
+ :host(:active) {
89
89
  --sbb-tab-label-color: var(--sbb-color-3);
90
90
  }
91
91
 
@@ -290,7 +290,6 @@ let SbbTabLabelElement = (() => {
290
290
  super.willUpdate(changedProperties);
291
291
  if (changedProperties.has("active")) {
292
292
  this.internals.ariaSelected = `${this.active}`;
293
- this.tab?.toggleAttribute("data-active", this.active);
294
293
  if (this.active && !this.disabled) {
295
294
  this.activate();
296
295
  } else {
@@ -308,6 +307,7 @@ let SbbTabLabelElement = (() => {
308
307
  /** Deactivate the tab. */
309
308
  deactivate() {
310
309
  this.active = false;
310
+ this.tab?.["deactivate"]();
311
311
  this._selected = false;
312
312
  this.tabIndex = -1;
313
313
  }
@@ -324,6 +324,7 @@ let SbbTabLabelElement = (() => {
324
324
  if (prevActiveTabLabel !== this) {
325
325
  prevActiveTabLabel?.deactivate();
326
326
  this.active = true;
327
+ this.tab?.["activate"]();
327
328
  this._selected = true;
328
329
  this.tabIndex = 0;
329
330
  this.tab?.dispatchEvent(new Event("active", { bubbles: true, composed: true }));
@@ -394,4 +395,4 @@ let SbbTabLabelElement = (() => {
394
395
  export {
395
396
  SbbTabLabelElement
396
397
  };
397
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWxhYmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3RhYnMvdGFiLWxhYmVsL3RhYi1sYWJlbC5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IExpdEVsZW1lbnQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBodG1sLCB1bnNhZmVTdGF0aWMgfSBmcm9tICdsaXQvc3RhdGljLWh0bWwuanMnO1xuXG5pbXBvcnQgeyBmb3JjZVR5cGUsIG9taXRFbXB0eUNvbnZlcnRlciwgc2xvdFN0YXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IFNiYkRpc2FibGVkTWl4aW4sIFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbiB9IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB7IFNiYkljb25OYW1lTWl4aW4gfSBmcm9tICcuLi8uLi9pY29uLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiVGl0bGVMZXZlbCB9IGZyb20gJy4uLy4uL3RpdGxlLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiVGFiRWxlbWVudCB9IGZyb20gJy4uL3RhYi90YWIuY29tcG9uZW50LmpzJztcbmltcG9ydCB0eXBlIHsgU2JiVGFiQ2hhbmdlZEV2ZW50RGV0YWlscywgU2JiVGFiR3JvdXBFbGVtZW50IH0gZnJvbSAnLi4vdGFiLWdyb3VwLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vdGFiLWxhYmVsLnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogQ29tYmluZWQgd2l0aCBhIGBzYmItdGFiLWdyb3VwYCwgaXQgZGlzcGxheXMgYSB0YWIncyB0aXRsZS5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBjb250ZW50IHRvIHRoZSB0YWIgdGl0bGUuXG4gKiBAc2xvdCBpY29uIC0gVXNlIHRoaXMgc2xvdCB0byBkaXNwbGF5IGFuIGljb24gdG8gdGhlIGxlZnQgb2YgdGhlIHRpdGxlLCBieSBwcm92aWRpbmcgdGhlIGBzYmItaWNvbmAgY29tcG9uZW50LlxuICogQHNsb3QgYW1vdW50IC0gUHJvdmlkZSBhIG51bWJlciB0byBzaG93IGFuIGFtb3VudCB0byB0aGUgcmlnaHQgb2YgdGhlIHRpdGxlLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItdGFiLWxhYmVsJylcbkBzbG90U3RhdGUoKVxuY2xhc3MgU2JiVGFiTGFiZWxFbGVtZW50IGV4dGVuZHMgU2JiRGlzYWJsZWRNaXhpbihcbiAgU2JiSWNvbk5hbWVNaXhpbihTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4oTGl0RWxlbWVudCkpLFxuKSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcm9sZSA9ICd0YWInO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogV2hldGhlciB0aGUgdGFiIGlzIHNlbGVjdGVkLiAqL1xuICBwcml2YXRlIF9zZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbGV2ZWwgd2lsbCBjb3JyZXNwb25kIHRvIHRoZSBoZWFkaW5nIHRhZyBnZW5lcmF0ZWQgaW4gdGhlIHRpdGxlLlxuICAgKiBVc2UgdGhpcyBwcm9wZXJ0eSB0byBnZW5lcmF0ZSB0aGUgYXBwcm9wcmlhdGUgaGVhZGVyIHRhZywgdGFraW5nIFNFTyBpbnRvIGNvbnNpZGVyYXRpb24uXG4gICAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgYWNjZXNzb3IgbGV2ZWw6IFNiYlRpdGxlTGV2ZWwgPSAnMSc7XG5cbiAgLyoqIEFjdGl2ZSB0YWIgc3RhdGUuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBhY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogQW1vdW50IGRpc3BsYXllZCBpbnNpZGUgdGhlIHRhYi4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUsIGNvbnZlcnRlcjogb21pdEVtcHR5Q29udmVydGVyIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBhbW91bnQ6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBHZXQgdGhlIGBzYmItdGFiYCByZWxhdGVkIHRvIHRoZSBgc2JiLXRhYi1sYWJlbGAuICovXG4gIHB1YmxpYyBnZXQgdGFiKCk6IFNiYlRhYkVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5uZXh0RWxlbWVudFNpYmxpbmc/LmxvY2FsTmFtZSA9PT0gJ3NiYi10YWInXG4gICAgICA/ICh0aGlzLm5leHRFbGVtZW50U2libGluZyBhcyBTYmJUYWJFbGVtZW50KVxuICAgICAgOiBudWxsO1xuICB9XG5cbiAgLyoqIEdldCB0aGUgcGFyZW50IGBzYmItdGFiLWdyb3VwYC4gKi9cbiAgcHVibGljIGdldCBncm91cCgpOiBTYmJUYWJHcm91cEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jbG9zZXN0KCdzYmItdGFiLWdyb3VwJyk7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB0aGlzLmFjdGl2YXRlKCkpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5zbG90ID0gJ3RhYi1iYXInO1xuICAgIHRoaXMudGFiSW5kZXggPSB0aGlzLmFjdGl2ZSA/IDAgOiAtMTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnYWN0aXZlJykpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFTZWxlY3RlZCA9IGAke3RoaXMuYWN0aXZlfWA7XG4gICAgICB0aGlzLnRhYj8udG9nZ2xlQXR0cmlidXRlKCdkYXRhLWFjdGl2ZScsIHRoaXMuYWN0aXZlKTtcblxuICAgICAgaWYgKHRoaXMuYWN0aXZlICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuYWN0aXZhdGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Rpc2FibGVkJykgJiYgdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy50YWJJbmRleCA9IC0xO1xuICAgICAgaWYgKHRoaXMuYWN0aXZlKSB7XG4gICAgICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xuICAgICAgICB0aGlzLmdyb3VwPy5hY3RpdmF0ZVRhYigwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogRGVhY3RpdmF0ZSB0aGUgdGFiLiAqL1xuICBwdWJsaWMgZGVhY3RpdmF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3NlbGVjdGVkID0gZmFsc2U7XG4gICAgdGhpcy50YWJJbmRleCA9IC0xO1xuICB9XG5cbiAgLyoqIFNlbGVjdCB0aGUgdGFiLCBkZWFjdGl2YXRpbmcgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgb25lLCBhbmQgZGlzcGF0Y2ggdGhlIHRhYmNoYW5nZSBldmVudC4gKi9cbiAgcHVibGljIGFjdGl2YXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICBpZiAoaW1wb3J0Lm1ldGEuZW52LkRFVikge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1lvdSBjYW5ub3QgYWN0aXZhdGUgYSBkaXNhYmxlZCB0YWInKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0YWJMYWJlbHM6IFNiYlRhYkxhYmVsRWxlbWVudFtdID0gdGhpcy5ncm91cD8ubGFiZWxzIHx8IFtdO1xuICAgIGNvbnN0IHByZXZBY3RpdmVUYWJMYWJlbCA9IHRhYkxhYmVscy5maW5kKChlKSA9PiBlLl9zZWxlY3RlZCk7XG4gICAgaWYgKHByZXZBY3RpdmVUYWJMYWJlbCAhPT0gdGhpcykge1xuICAgICAgcHJldkFjdGl2ZVRhYkxhYmVsPy5kZWFjdGl2YXRlKCk7XG4gICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgICB0aGlzLl9zZWxlY3RlZCA9IHRydWU7XG4gICAgICB0aGlzLnRhYkluZGV4ID0gMDtcbiAgICAgIHRoaXMudGFiPy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnYWN0aXZlJywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KSk7XG4gICAgICB0aGlzLmdyb3VwPy5kaXNwYXRjaEV2ZW50KFxuICAgICAgICBuZXcgQ3VzdG9tRXZlbnQ8U2JiVGFiQ2hhbmdlZEV2ZW50RGV0YWlscz4oJ3RhYmNoYW5nZScsIHtcbiAgICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICAgIGNvbXBvc2VkOiB0cnVlLFxuICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgYWN0aXZlSW5kZXg6IHRhYkxhYmVscy5maW5kSW5kZXgoKGUpID0+IGUgPT09IHRoaXMpLFxuICAgICAgICAgICAgYWN0aXZlVGFiTGFiZWw6IHRoaXMsXG4gICAgICAgICAgICBhY3RpdmVUYWI6IHRoaXMudGFiIGFzIFNiYlRhYkVsZW1lbnQsXG4gICAgICAgICAgICBwcmV2aW91c0luZGV4OiB0YWJMYWJlbHMuZmluZEluZGV4KChlKSA9PiBlID09PSBwcmV2QWN0aXZlVGFiTGFiZWwpLFxuICAgICAgICAgICAgcHJldmlvdXNUYWJMYWJlbDogcHJldkFjdGl2ZVRhYkxhYmVsLFxuICAgICAgICAgICAgcHJldmlvdXNUYWI6IHByZXZBY3RpdmVUYWJMYWJlbD8udGFiIGFzIFNiYlRhYkVsZW1lbnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBsaW5rVG9UYWIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRhYikge1xuICAgICAgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBNaXNzaW5nIGNvbnRlbnQ6IHlvdSBzaG91bGQgcHJvdmlkZSBhIHJlbGF0ZWQgY29udGVudCBmb3IgdGhlIHRhYiAke3RoaXMub3V0ZXJIVE1MfS5gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmludGVybmFscy5hcmlhQ29udHJvbHNFbGVtZW50cyA9IFt0aGlzLnRhYl07XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICBjb25zdCBUQUdOQU1FID0gYGgke051bWJlcih0aGlzLmxldmVsKSA8IDcgPyB0aGlzLmxldmVsIDogJzEnfWA7XG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBsaXQvYmluZGluZy1wb3NpdGlvbnMgKi9cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItdGFiLWxhYmVsX193cmFwcGVyXCI+XG4gICAgICAgIDwke3Vuc2FmZVN0YXRpYyhUQUdOQU1FKX0gY2xhc3M9XCJzYmItdGFiLWxhYmVsXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItdGFiLWxhYmVsX19pY29uXCI+XG4gICAgICAgICAgICAke3RoaXMucmVuZGVySWNvblNsb3QoKX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItdGFiLWxhYmVsX190ZXh0XCI+XG4gICAgICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXRhYi1sYWJlbF9fYW1vdW50XCI+XG4gICAgICAgICAgICA8c2xvdCBuYW1lPVwiYW1vdW50XCI+JHt0aGlzLmFtb3VudH08L3Nsb3Q+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8LyR7dW5zYWZlU3RhdGljKFRBR05BTUUpfT5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi10YWItbGFiZWwnOiBTYmJUYWJMYWJlbEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUF3Qk0sc0JBQWtCLE1BQUE7O0FBRnZCLE1BQUEsbUJBQUEsQ0FBQSxjQUFjLGVBQWUsR0FDN0IsV0FBVzs7OztvQkFDcUIsaUJBQy9C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
398
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWxhYmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3RhYnMvdGFiLWxhYmVsL3RhYi1sYWJlbC5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IExpdEVsZW1lbnQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBodG1sLCB1bnNhZmVTdGF0aWMgfSBmcm9tICdsaXQvc3RhdGljLWh0bWwuanMnO1xuXG5pbXBvcnQgeyBmb3JjZVR5cGUsIG9taXRFbXB0eUNvbnZlcnRlciwgc2xvdFN0YXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IFNiYkRpc2FibGVkTWl4aW4sIFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbiB9IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB7IFNiYkljb25OYW1lTWl4aW4gfSBmcm9tICcuLi8uLi9pY29uLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiVGl0bGVMZXZlbCB9IGZyb20gJy4uLy4uL3RpdGxlLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiVGFiRWxlbWVudCB9IGZyb20gJy4uL3RhYi90YWIuY29tcG9uZW50LmpzJztcbmltcG9ydCB0eXBlIHsgU2JiVGFiQ2hhbmdlZEV2ZW50RGV0YWlscywgU2JiVGFiR3JvdXBFbGVtZW50IH0gZnJvbSAnLi4vdGFiLWdyb3VwLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vdGFiLWxhYmVsLnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogQ29tYmluZWQgd2l0aCBhIGBzYmItdGFiLWdyb3VwYCwgaXQgZGlzcGxheXMgYSB0YWIncyB0aXRsZS5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBjb250ZW50IHRvIHRoZSB0YWIgdGl0bGUuXG4gKiBAc2xvdCBpY29uIC0gVXNlIHRoaXMgc2xvdCB0byBkaXNwbGF5IGFuIGljb24gdG8gdGhlIGxlZnQgb2YgdGhlIHRpdGxlLCBieSBwcm92aWRpbmcgdGhlIGBzYmItaWNvbmAgY29tcG9uZW50LlxuICogQHNsb3QgYW1vdW50IC0gUHJvdmlkZSBhIG51bWJlciB0byBzaG93IGFuIGFtb3VudCB0byB0aGUgcmlnaHQgb2YgdGhlIHRpdGxlLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItdGFiLWxhYmVsJylcbkBzbG90U3RhdGUoKVxuY2xhc3MgU2JiVGFiTGFiZWxFbGVtZW50IGV4dGVuZHMgU2JiRGlzYWJsZWRNaXhpbihcbiAgU2JiSWNvbk5hbWVNaXhpbihTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4oTGl0RWxlbWVudCkpLFxuKSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcm9sZSA9ICd0YWInO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogV2hldGhlciB0aGUgdGFiIGlzIHNlbGVjdGVkLiAqL1xuICBwcml2YXRlIF9zZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbGV2ZWwgd2lsbCBjb3JyZXNwb25kIHRvIHRoZSBoZWFkaW5nIHRhZyBnZW5lcmF0ZWQgaW4gdGhlIHRpdGxlLlxuICAgKiBVc2UgdGhpcyBwcm9wZXJ0eSB0byBnZW5lcmF0ZSB0aGUgYXBwcm9wcmlhdGUgaGVhZGVyIHRhZywgdGFraW5nIFNFTyBpbnRvIGNvbnNpZGVyYXRpb24uXG4gICAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgYWNjZXNzb3IgbGV2ZWw6IFNiYlRpdGxlTGV2ZWwgPSAnMSc7XG5cbiAgLyoqIEFjdGl2ZSB0YWIgc3RhdGUuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBhY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogQW1vdW50IGRpc3BsYXllZCBpbnNpZGUgdGhlIHRhYi4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUsIGNvbnZlcnRlcjogb21pdEVtcHR5Q29udmVydGVyIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBhbW91bnQ6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBHZXQgdGhlIGBzYmItdGFiYCByZWxhdGVkIHRvIHRoZSBgc2JiLXRhYi1sYWJlbGAuICovXG4gIHB1YmxpYyBnZXQgdGFiKCk6IFNiYlRhYkVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5uZXh0RWxlbWVudFNpYmxpbmc/LmxvY2FsTmFtZSA9PT0gJ3NiYi10YWInXG4gICAgICA/ICh0aGlzLm5leHRFbGVtZW50U2libGluZyBhcyBTYmJUYWJFbGVtZW50KVxuICAgICAgOiBudWxsO1xuICB9XG5cbiAgLyoqIEdldCB0aGUgcGFyZW50IGBzYmItdGFiLWdyb3VwYC4gKi9cbiAgcHVibGljIGdldCBncm91cCgpOiBTYmJUYWJHcm91cEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jbG9zZXN0KCdzYmItdGFiLWdyb3VwJyk7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB0aGlzLmFjdGl2YXRlKCkpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5zbG90ID0gJ3RhYi1iYXInO1xuICAgIHRoaXMudGFiSW5kZXggPSB0aGlzLmFjdGl2ZSA/IDAgOiAtMTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnYWN0aXZlJykpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFTZWxlY3RlZCA9IGAke3RoaXMuYWN0aXZlfWA7XG5cbiAgICAgIGlmICh0aGlzLmFjdGl2ZSAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLmFjdGl2YXRlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlYWN0aXZhdGUoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkaXNhYmxlZCcpICYmIHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMudGFiSW5kZXggPSAtMTtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZSkge1xuICAgICAgICB0aGlzLmRlYWN0aXZhdGUoKTtcbiAgICAgICAgdGhpcy5ncm91cD8uYWN0aXZhdGVUYWIoMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIERlYWN0aXZhdGUgdGhlIHRhYi4gKi9cbiAgcHVibGljIGRlYWN0aXZhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICB0aGlzLnRhYj8uWydkZWFjdGl2YXRlJ10oKTtcbiAgICB0aGlzLl9zZWxlY3RlZCA9IGZhbHNlO1xuICAgIHRoaXMudGFiSW5kZXggPSAtMTtcbiAgfVxuXG4gIC8qKiBTZWxlY3QgdGhlIHRhYiwgZGVhY3RpdmF0aW5nIHRoZSBjdXJyZW50IHNlbGVjdGVkIG9uZSwgYW5kIGRpc3BhdGNoIHRoZSB0YWJjaGFuZ2UgZXZlbnQuICovXG4gIHB1YmxpYyBhY3RpdmF0ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdZb3UgY2Fubm90IGFjdGl2YXRlIGEgZGlzYWJsZWQgdGFiJyk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGFiTGFiZWxzOiBTYmJUYWJMYWJlbEVsZW1lbnRbXSA9IHRoaXMuZ3JvdXA/LmxhYmVscyB8fCBbXTtcbiAgICBjb25zdCBwcmV2QWN0aXZlVGFiTGFiZWwgPSB0YWJMYWJlbHMuZmluZCgoZSkgPT4gZS5fc2VsZWN0ZWQpO1xuICAgIGlmIChwcmV2QWN0aXZlVGFiTGFiZWwgIT09IHRoaXMpIHtcbiAgICAgIHByZXZBY3RpdmVUYWJMYWJlbD8uZGVhY3RpdmF0ZSgpO1xuICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgICAgdGhpcy50YWI/LlsnYWN0aXZhdGUnXSgpO1xuICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy50YWJJbmRleCA9IDA7XG4gICAgICB0aGlzLnRhYj8uZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2FjdGl2ZScsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgdGhpcy5ncm91cD8uZGlzcGF0Y2hFdmVudChcbiAgICAgICAgbmV3IEN1c3RvbUV2ZW50PFNiYlRhYkNoYW5nZWRFdmVudERldGFpbHM+KCd0YWJjaGFuZ2UnLCB7XG4gICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICBjb21wb3NlZDogdHJ1ZSxcbiAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgIGFjdGl2ZUluZGV4OiB0YWJMYWJlbHMuZmluZEluZGV4KChlKSA9PiBlID09PSB0aGlzKSxcbiAgICAgICAgICAgIGFjdGl2ZVRhYkxhYmVsOiB0aGlzLFxuICAgICAgICAgICAgYWN0aXZlVGFiOiB0aGlzLnRhYiBhcyBTYmJUYWJFbGVtZW50LFxuICAgICAgICAgICAgcHJldmlvdXNJbmRleDogdGFiTGFiZWxzLmZpbmRJbmRleCgoZSkgPT4gZSA9PT0gcHJldkFjdGl2ZVRhYkxhYmVsKSxcbiAgICAgICAgICAgIHByZXZpb3VzVGFiTGFiZWw6IHByZXZBY3RpdmVUYWJMYWJlbCxcbiAgICAgICAgICAgIHByZXZpb3VzVGFiOiBwcmV2QWN0aXZlVGFiTGFiZWw/LnRhYiBhcyBTYmJUYWJFbGVtZW50LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgbGlua1RvVGFiKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy50YWIpIHtcbiAgICAgIGlmIChpbXBvcnQubWV0YS5lbnYuREVWKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgTWlzc2luZyBjb250ZW50OiB5b3Ugc2hvdWxkIHByb3ZpZGUgYSByZWxhdGVkIGNvbnRlbnQgZm9yIHRoZSB0YWIgJHt0aGlzLm91dGVySFRNTH0uYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pbnRlcm5hbHMuYXJpYUNvbnRyb2xzRWxlbWVudHMgPSBbdGhpcy50YWJdO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgVEFHTkFNRSA9IGBoJHtOdW1iZXIodGhpcy5sZXZlbCkgPCA3ID8gdGhpcy5sZXZlbCA6ICcxJ31gO1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgbGl0L2JpbmRpbmctcG9zaXRpb25zICovXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLXRhYi1sYWJlbF9fd3JhcHBlclwiPlxuICAgICAgICA8JHt1bnNhZmVTdGF0aWMoVEFHTkFNRSl9IGNsYXNzPVwic2JiLXRhYi1sYWJlbFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXRhYi1sYWJlbF9faWNvblwiPlxuICAgICAgICAgICAgJHt0aGlzLnJlbmRlckljb25TbG90KCl9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXRhYi1sYWJlbF9fdGV4dFwiPlxuICAgICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi10YWItbGFiZWxfX2Ftb3VudFwiPlxuICAgICAgICAgICAgPHNsb3QgbmFtZT1cImFtb3VudFwiPiR7dGhpcy5hbW91bnR9PC9zbG90PlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC8ke3Vuc2FmZVN0YXRpYyhUQUdOQU1FKX0+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItdGFiLWxhYmVsJzogU2JiVGFiTGFiZWxFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBd0JNLHNCQUFrQixNQUFBOztBQUZ2QixNQUFBLG1CQUFBLENBQUEsY0FBYyxlQUFlLEdBQzdCLFdBQVc7Ozs7b0JBQ3FCLGlC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
@@ -1,10 +1,19 @@
1
1
  import { CSSResultGroup, TemplateResult, PropertyDeclaration, PropertyValues } from 'lit';
2
2
  import { SbbOpenCloseBaseElement } from '../core/base-elements.js';
3
+ /**
4
+ * Defines the default position for the tooltip if this element is used as a trigger.
5
+ */
6
+ export interface SbbTooltipDefaultPositions {
7
+ readonly tooltipPositions: string[];
8
+ }
3
9
  declare const SbbTooltipElement_base: import('../core/mixins.js').AbstractConstructor<import('../core/mixins.js').SbbDisabledMixinType> & typeof SbbOpenCloseBaseElement;
4
10
  /**
5
11
  * It displays text content within a tooltip.
6
12
  *
7
13
  * @slot - Use the unnamed slot to add the text into the tooltip.
14
+ * @cssprop [--sbb-overlay-position-area=block-end] - The primary position for the tooltip.
15
+ * @cssprop [--sbb-overlay-position-try-fallbacks=block-end span-inline-end, block-end span-inline-start, block-start, block-start span-inline-end, block-start span-inline-start] -
16
+ * The list of fallback positions, separated by ',', for the tooltip
8
17
  * @cssprop [--sbb-tooltip-z-index=var(--sbb-overlay-default-z-index)] - To specify a custom stack order,
9
18
  * the `z-index` can be overridden by defining this CSS variable. The default `z-index` of the
10
19
  * component is set to `var(--sbb-overlay-default-z-index)` with a value of `1000`.
@@ -14,7 +23,7 @@ export declare class SbbTooltipElement extends SbbTooltipElement_base {
14
23
  static styles: CSSResultGroup;
15
24
  private static _tooltipOutlet;
16
25
  /**
17
- * The element that will trigger the popover overlay.
26
+ * The element that will trigger the tooltip overlay.
18
27
  *
19
28
  * For attribute usage, provide an id reference.
20
29
  */
@@ -46,11 +55,11 @@ export declare class SbbTooltipElement extends SbbTooltipElement_base {
46
55
  set longPressCloseDelay(value: number);
47
56
  get longPressCloseDelay(): number;
48
57
  private _longPressCloseDelay?;
49
- protected overlay?: HTMLDivElement;
50
58
  private _triggerElement;
51
59
  private _triggerAbortController?;
52
60
  private _openStateController;
53
61
  private _escapableOverlayController;
62
+ private _overlayController;
54
63
  private _openTimeout?;
55
64
  private _closeTimeout?;
56
65
  private _longPressOpenTimeout?;
@@ -73,9 +82,7 @@ export declare class SbbTooltipElement extends SbbTooltipElement_base {
73
82
  private _attach;
74
83
  private _detach;
75
84
  private _destroy;
76
- private _setTooltipPosition;
77
85
  private _addTriggerEventHandlers;
78
- private _attachWindowEvents;
79
86
  private _isZeroAnimationDuration;
80
87
  private _resetOpenCloseTimeout;
81
88
  protected render(): TemplateResult;
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/tooltip/tooltip.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAIb,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;;AA6BnE;;;;;;;GAOG;AACH,qBAEM,iBAAkB,SAAQ,sBAAyC;IACvE,gBAAgC,IAAI,aAAa;IACjD,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,OAAO,CAAC,MAAM,CAAC,cAAc,CAAU;IAUvC;;;;OAIG;IACH,SAEgB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAQ;IAEnD;;;;;OAKG;IACH,IACW,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAExC;IACD,IAAW,SAAS,IAAI,MAAM,CAE7B;IACD,OAAO,CAAC,UAAU,CAAuB;IAEzC;;;;;OAKG;IACH,IACW,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAEzC;IACD,IAAW,UAAU,IAAI,MAAM,CAE9B;IACD,OAAO,CAAC,WAAW,CAAuB;IAE1C;;;;;OAKG;IACH,IACW,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAE3C;IACD,IAAW,mBAAmB,IAAI,MAAM,CAEvC;IACD,OAAO,CAAC,oBAAoB,CAAC,CAAS;IAEtC,SAAS,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;IAEnC,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,uBAAuB,CAAC,CAAkB;IAClD,OAAO,CAAC,oBAAoB,CAAmB;IAC/C,OAAO,CAAC,2BAA2B,CAA2C;IAC9E,OAAO,CAAC,YAAY,CAAC,CAAgC;IACrD,OAAO,CAAC,aAAa,CAAC,CAAgC;IACtD,OAAO,CAAC,qBAAqB,CAAC,CAAgC;IAC9D,OAAO,CAAC,sBAAsB,CAAC,CAAgC;;IAwB/D,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAmCvC,OAAO,CAAC,MAAM,CAAC,6BAA6B;IAM5C,OAAO,CAAC,MAAM,CAAC,qBAAqB;IA2BpB,iBAAiB,IAAI,IAAI;IAYzB,oBAAoB,IAAI,IAAI;IAM5B,aAAa,CAC3B,IAAI,CAAC,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI;cAWY,YAAY,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAKjE,IAAI,IAAI,IAAI;IAsBZ,KAAK,IAAI,IAAI;IAgBpB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,OAAO;IAcf,OAAO,CAAC,OAAO;IAgBf,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,wBAAwB;IA0DhC,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,sBAAsB;cAKX,MAAM,IAAI,cAAc;CAW5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,aAAa,EAAE,iBAAiB,CAAC;KAClC;CACF"}
1
+ {"version":3,"file":"tooltip.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/tooltip/tooltip.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAGb,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAoBnE;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;CACrC;;AAYD;;;;;;;;;;GAUG;AACH,qBAEM,iBAAkB,SAAQ,sBAAyC;IACvE,gBAAgC,IAAI,aAAa;IACjD,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,OAAO,CAAC,MAAM,CAAC,cAAc,CAAU;IAUvC;;;;OAIG;IACH,SAEgB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAQ;IAEnD;;;;;OAKG;IACH,IACW,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAExC;IACD,IAAW,SAAS,IAAI,MAAM,CAE7B;IACD,OAAO,CAAC,UAAU,CAAuB;IAEzC;;;;;OAKG;IACH,IACW,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAEzC;IACD,IAAW,UAAU,IAAI,MAAM,CAE9B;IACD,OAAO,CAAC,WAAW,CAAuB;IAE1C;;;;;OAKG;IACH,IACW,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAE3C;IACD,IAAW,mBAAmB,IAAI,MAAM,CAEvC;IACD,OAAO,CAAC,oBAAoB,CAAC,CAAS;IAEtC,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,uBAAuB,CAAC,CAAkB;IAClD,OAAO,CAAC,oBAAoB,CAAmB;IAC/C,OAAO,CAAC,2BAA2B,CAA2C;IAC9E,OAAO,CAAC,kBAAkB,CAA0C;IACpE,OAAO,CAAC,YAAY,CAAC,CAAgC;IACrD,OAAO,CAAC,aAAa,CAAC,CAAgC;IACtD,OAAO,CAAC,qBAAqB,CAAC,CAAgC;IAC9D,OAAO,CAAC,sBAAsB,CAAC,CAAgC;;IA0B/D,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAkCvC,OAAO,CAAC,MAAM,CAAC,6BAA6B;IAM5C,OAAO,CAAC,MAAM,CAAC,qBAAqB;IA8CpB,iBAAiB,IAAI,IAAI;IAYzB,oBAAoB,IAAI,IAAI;IAM5B,aAAa,CAC3B,IAAI,CAAC,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI;cAWY,YAAY,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAKjE,IAAI,IAAI,IAAI;IAsBZ,KAAK,IAAI,IAAI;IAgBpB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,OAAO;IAcf,OAAO,CAAC,OAAO;IAgBf,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,wBAAwB;IA0DhC,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,sBAAsB;cAKX,MAAM,IAAI,cAAc;CAO5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,aAAa,EAAE,iBAAiB,CAAC;KAClC;CACF"}
@@ -8,14 +8,13 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
8
8
  import { __esDecorate, __runInitializers } from "tslib";
9
9
  import { css, isServer, html } from "lit";
10
10
  import { customElement, property } from "lit/decorators.js";
11
- import { ref } from "lit/directives/ref.js";
12
11
  import { SbbOpenCloseBaseElement } from "../core/base-elements.js";
13
12
  import { readConfig } from "../core/config.js";
14
- import { SbbEscapableOverlayController } from "../core/controllers.js";
13
+ import { SbbEscapableOverlayController, SbbOverlayPositionController } from "../core/controllers.js";
15
14
  import { idReference } from "../core/decorators.js";
16
15
  import { queueDomContentLoaded, addToListAttribute, removeFromListAttribute, isZeroAnimationDuration, isAndroid, isIOS } from "../core/dom.js";
17
16
  import { SbbDisabledMixin } from "../core/mixins.js";
18
- import { sbbOverlayOutsidePointerEventListener, getElementPosition } from "../core/overlay.js";
17
+ import { sbbOverlayOutsidePointerEventListener } from "../core/overlay.js";
19
18
  const style = css`*,
20
19
  ::before,
21
20
  ::after {
@@ -23,13 +22,11 @@ const style = css`*,
23
22
  }
24
23
 
25
24
  :host {
26
- --sbb-tooltip-position: absolute;
27
- --sbb-tooltip-position-x: 0;
28
- --sbb-tooltip-position-y: 0;
29
25
  --sbb-tooltip-pointer-events: all;
26
+ --sbb-tooltip-min-width: var(--sbb-spacing-fixed-8x);
30
27
  --sbb-tooltip-max-width: min(
31
28
  25rem,
32
- calc(100% - var(--sbb-spacing-fixed-2x))
29
+ calc(100vw - var(--sbb-spacing-fixed-2x))
33
30
  );
34
31
  --sbb-tooltip-border-color: var(--sbb-background-color-1-inverted);
35
32
  --sbb-tooltip-border-radius: var(--sbb-border-radius-8x);
@@ -42,10 +39,25 @@ const style = css`*,
42
39
  );
43
40
  --sbb-tooltip-animation-easing: ease-out;
44
41
  --sbb-tooltip-animation-translate: 0 var(--sbb-spacing-fixed-2x);
42
+ --sbb-tooltip-gap: var(--sbb-spacing-fixed-2x);
43
+ --sbb-overlay-position-area: block-start;
44
+ --sbb-overlay-position-try-fallbacks:
45
+ block-start span-inline-end, block-start span-inline-start, block-end,
46
+ block-end span-inline-end, block-end span-inline-start;
47
+ position-area: var(--sbb-overlay-position-area);
48
+ position-try-fallbacks: var(--sbb-overlay-position-try-fallbacks);
45
49
  display: none;
46
50
  position: fixed;
47
- inset: 0;
51
+ background-color: transparent;
52
+ pointer-events: var(--sbb-tooltip-pointer-events);
48
53
  z-index: var(--sbb-tooltip-z-index, var(--sbb-overlay-default-z-index));
54
+ animation-name: var(--sbb-tooltip-animation-name);
55
+ animation-duration: var(--sbb-tooltip-animation-duration);
56
+ animation-timing-function: var(--sbb-tooltip-animation-easing);
57
+ border: none;
58
+ inset: initial;
59
+ padding: 0;
60
+ margin: 0;
49
61
  }
50
62
 
51
63
  :host([data-state]:not([data-state=closed])) {
@@ -58,12 +70,21 @@ const style = css`*,
58
70
  --sbb-tooltip-pointer-events: none;
59
71
  }
60
72
 
61
- :host([data-position=below]) {
62
- --sbb-tooltip-hover-patch-inset: calc(-1 * var(--sbb-spacing-fixed-4x)) 0;
73
+ :host(:is([data-position~=block-end], [data-position~=bottom], [data-position^=end])) {
74
+ padding-block-start: var(--sbb-tooltip-gap);
75
+ }
76
+
77
+ :host(:is([data-position~=block-start], [data-position~=top], [data-position^=start])) {
78
+ padding-block-end: var(--sbb-tooltip-gap);
63
79
  }
64
80
 
65
- :host([data-position=above]) {
66
- --sbb-tooltip-hover-patch-inset: 0 calc(-1 * var(--sbb-spacing-fixed-4x));
81
+ :host(:is([data-position~=inline-start],
82
+ [data-position~=inline-end],
83
+ [data-position~=left],
84
+ [data-position~=right],
85
+ [data-position$=" start"],
86
+ [data-position$=" end"])) {
87
+ padding-inline: var(--sbb-tooltip-gap);
67
88
  }
68
89
 
69
90
  .sbb-tooltip {
@@ -74,32 +95,13 @@ const style = css`*,
74
95
  line-height: var(--sbb-typo-line-height-body-text);
75
96
  letter-spacing: var(--sbb-typo-letter-spacing-body-text);
76
97
  font-size: var(--sbb-text-font-size);
77
- position: var(--sbb-tooltip-position);
78
- pointer-events: var(--sbb-tooltip-pointer-events);
79
- top: var(--sbb-tooltip-position-y);
80
- bottom: unset;
81
- left: var(--sbb-tooltip-position-x);
82
- right: unset;
83
98
  border: var(--sbb-border-width-1x) solid var(--sbb-tooltip-border-color);
84
99
  border-radius: var(--sbb-tooltip-border-radius);
85
100
  padding: var(--sbb-tooltip-padding);
86
- max-width: var(--sbb-tooltip-max-width);
87
- width: max-content;
88
101
  color: var(--sbb-tooltip-color);
89
102
  background-color: var(--sbb-tooltip-background-color);
90
- outline: none;
91
- animation-name: var(--sbb-tooltip-animation-name);
92
- animation-duration: var(--sbb-tooltip-animation-duration);
93
- animation-timing-function: var(--sbb-tooltip-animation-easing);
94
- }
95
- .sbb-tooltip::before {
96
- content: "";
97
- display: block;
98
- position: absolute;
99
- inset: 0;
100
- z-index: -1;
101
- background-color: transparent;
102
- inset-block: var(--sbb-tooltip-hover-patch-inset);
103
+ min-width: var(--sbb-tooltip-min-width);
104
+ max-width: var(--sbb-tooltip-max-width);
103
105
  }
104
106
 
105
107
  @keyframes open {
@@ -123,8 +125,6 @@ const style = css`*,
123
125
  }
124
126
  }`;
125
127
  const LONGPRESS_DELAY = 500;
126
- const VERTICAL_OFFSET = 8;
127
- const HORIZONTAL_OFFSET = 16;
128
128
  const isMobile = isAndroid || isIOS;
129
129
  const tooltipTriggers = /* @__PURE__ */ new WeakMap();
130
130
  let nextId = 0;
@@ -151,15 +151,17 @@ let SbbTooltipElement = (() => {
151
151
  this._closeDelay = null;
152
152
  this._triggerElement = null;
153
153
  this._escapableOverlayController = new SbbEscapableOverlayController(this);
154
+ this._overlayController = new SbbOverlayPositionController(this);
154
155
  this.addEventListener("mouseleave", (event) => {
155
156
  if ((this.state === "opened" || this.state === "opening") && (!event.relatedTarget || !this._triggerElement?.contains(event.relatedTarget))) {
156
157
  this._delayedClose();
157
158
  }
158
159
  }, { passive: true });
159
160
  this.addEventListener("overlayOutsidePointer", () => this.close(), { passive: true });
161
+ this.addEventListener("animationend", (e) => this._onTooltipAnimationEnd(e), { passive: true });
160
162
  }
161
163
  /**
162
- * The element that will trigger the popover overlay.
164
+ * The element that will trigger the tooltip overlay.
163
165
  *
164
166
  * For attribute usage, provide an id reference.
165
167
  */
@@ -209,10 +211,6 @@ let SbbTooltipElement = (() => {
209
211
  this._tooltipOutlet = document.createElement("div");
210
212
  this._tooltipOutlet.classList.add("sbb-overlay-outlet");
211
213
  document.body.appendChild(this._tooltipOutlet);
212
- const attributeMap = /* @__PURE__ */ new Map([
213
- ["sbb-tooltip-open-delay", "open-delay"],
214
- ["sbb-tooltip-close-delay", "close-delay"]
215
- ]);
216
214
  new MutationObserver((mutations) => {
217
215
  for (const mutation of mutations) {
218
216
  if (mutation.type === "attributes") {
@@ -225,7 +223,12 @@ let SbbTooltipElement = (() => {
225
223
  }
226
224
  }
227
225
  }).observe(document.documentElement, {
228
- attributeFilter: ["sbb-tooltip", ...attributeMap.keys()],
226
+ attributeFilter: [
227
+ "sbb-tooltip",
228
+ "sbb-tooltip-open-delay",
229
+ "sbb-tooltip-close-delay",
230
+ "sbb-tooltip-position"
231
+ ],
229
232
  childList: true,
230
233
  subtree: true
231
234
  });
@@ -247,6 +250,14 @@ let SbbTooltipElement = (() => {
247
250
  tooltip.textContent = tooltipMessage;
248
251
  tooltip.openDelay = triggerElement.hasAttribute("sbb-tooltip-open-delay") ? +triggerElement.getAttribute("sbb-tooltip-open-delay") : null;
249
252
  tooltip.closeDelay = triggerElement.hasAttribute("sbb-tooltip-close-delay") ? +triggerElement.getAttribute("sbb-tooltip-close-delay") : null;
253
+ const positions = triggerElement.hasAttribute("sbb-tooltip-position") ? triggerElement.getAttribute("sbb-tooltip-position").split(",").map((p) => p.trim()) : triggerElement.tooltipPositions;
254
+ if (positions && positions.length > 0) {
255
+ tooltip.style.setProperty("--sbb-overlay-position-area", positions[0]);
256
+ tooltip.style.setProperty("--sbb-overlay-position-try-fallbacks", positions.slice(1).join(", "));
257
+ } else {
258
+ tooltip.style.removeProperty("--sbb-overlay-position-area");
259
+ tooltip.style.removeProperty("--sbb-overlay-position-try-fallbacks");
260
+ }
250
261
  } else if (tooltip) {
251
262
  tooltipTriggers.delete(triggerElement);
252
263
  tooltip._destroy();
@@ -282,12 +293,12 @@ let SbbTooltipElement = (() => {
282
293
  }
283
294
  open() {
284
295
  this._resetOpenCloseTimeout();
285
- if (this.state !== "closed" && this.state !== "closing" || this.disabled || !this.overlay || !this.dispatchBeforeOpenEvent()) {
296
+ if (this.state !== "closed" && this.state !== "closing" || this.disabled || !this.trigger || !this.dispatchBeforeOpenEvent()) {
286
297
  return;
287
298
  }
288
299
  this.showPopover?.();
289
300
  this.state = "opening";
290
- this._setTooltipPosition();
301
+ this._overlayController.connect(this.trigger);
291
302
  if (this._isZeroAnimationDuration()) {
292
303
  this._handleOpening();
293
304
  }
@@ -309,7 +320,6 @@ let SbbTooltipElement = (() => {
309
320
  }
310
321
  _handleOpening() {
311
322
  this.state = "opened";
312
- this._attachWindowEvents();
313
323
  this._escapableOverlayController.connect();
314
324
  this.dispatchOpenEvent();
315
325
  }
@@ -320,6 +330,7 @@ let SbbTooltipElement = (() => {
320
330
  _handleClosing() {
321
331
  this.state = "closed";
322
332
  this.hidePopover?.();
333
+ this._overlayController.disconnect();
323
334
  this._escapableOverlayController.disconnect();
324
335
  this.dispatchCloseEvent();
325
336
  this._openStateController?.abort();
@@ -358,20 +369,6 @@ let SbbTooltipElement = (() => {
358
369
  this._detach();
359
370
  this.remove();
360
371
  }
361
- _setTooltipPosition() {
362
- if (!this.overlay || !this._triggerElement) {
363
- return;
364
- }
365
- const position = getElementPosition(this.overlay, this._triggerElement, this, {
366
- verticalOffset: VERTICAL_OFFSET,
367
- horizontalOffset: HORIZONTAL_OFFSET,
368
- centered: true,
369
- responsiveHeight: true
370
- });
371
- this.setAttribute("data-position", position.alignment.vertical);
372
- this.style.setProperty("--sbb-tooltip-position-x", `${position.left}px`);
373
- this.style.setProperty("--sbb-tooltip-position-y", `${position.top}px`);
374
- }
375
372
  _addTriggerEventHandlers() {
376
373
  const trigger = this._triggerElement;
377
374
  if (!trigger) {
@@ -407,20 +404,6 @@ let SbbTooltipElement = (() => {
407
404
  clearTimeout(this._longPressOpenTimeout);
408
405
  }, options);
409
406
  }
410
- _attachWindowEvents() {
411
- this._openStateController = new AbortController();
412
- document.addEventListener("scroll", () => this._setTooltipPosition(), {
413
- passive: true,
414
- signal: this._openStateController.signal,
415
- // Without capture, other scroll contexts would not bubble to this event listener.
416
- // Capture allows us to react to all scroll contexts in this DOM.
417
- capture: true
418
- });
419
- window.addEventListener("resize", () => this._setTooltipPosition(), {
420
- passive: true,
421
- signal: this._openStateController.signal
422
- });
423
- }
424
407
  _isZeroAnimationDuration() {
425
408
  return isZeroAnimationDuration(this, "--sbb-tooltip-animation-duration");
426
409
  }
@@ -430,11 +413,7 @@ let SbbTooltipElement = (() => {
430
413
  }
431
414
  render() {
432
415
  return html`
433
- <div
434
- @animationend=${this._onTooltipAnimationEnd}
435
- class="sbb-tooltip"
436
- ${ref((el) => this.overlay = el)}
437
- >
416
+ <div class="sbb-tooltip">
438
417
  <slot></slot>
439
418
  </div>
440
419
  `;
@@ -470,4 +449,4 @@ let SbbTooltipElement = (() => {
470
449
  export {
471
450
  SbbTooltipElement
472
451
  };
473
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxuICB0eXBlIFByb3BlcnR5RGVjbGFyYXRpb24sXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5cbmltcG9ydCB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vY29yZS9iYXNlLWVsZW1lbnRzLmpzJztcbmltcG9ydCB7IHJlYWRDb25maWcgfSBmcm9tICcuLi9jb3JlL2NvbmZpZy5qcyc7XG5pbXBvcnQgeyBTYmJFc2NhcGFibGVPdmVybGF5Q29udHJvbGxlciB9IGZyb20gJy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgaWRSZWZlcmVuY2UgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHtcbiAgYWRkVG9MaXN0QXR0cmlidXRlLFxuICBpc0FuZHJvaWQsXG4gIGlzSU9TLFxuICBpc1plcm9BbmltYXRpb25EdXJhdGlvbixcbiAgcXVldWVEb21Db250ZW50TG9hZGVkLFxuICByZW1vdmVGcm9tTGlzdEF0dHJpYnV0ZSxcbn0gZnJvbSAnLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgU2JiRGlzYWJsZWRNaXhpbiB9IGZyb20gJy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB7IGdldEVsZW1lbnRQb3NpdGlvbiwgc2JiT3ZlcmxheU91dHNpZGVQb2ludGVyRXZlbnRMaXN0ZW5lciB9IGZyb20gJy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3Rvb2x0aXAuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBUaW1lIGJldHdlZW4gdGhlIHVzZXIgcHV0dGluZyB0aGUgcG9pbnRlciBvbiBhIHRvb2x0aXBcbiAqIHRyaWdnZXIgYW5kIHRoZSBsb25nIHByZXNzIGV2ZW50IGJlaW5nIGZpcmVkLlxuICovXG5jb25zdCBMT05HUFJFU1NfREVMQVkgPSA1MDA7XG5jb25zdCBWRVJUSUNBTF9PRkZTRVQgPSA4O1xuY29uc3QgSE9SSVpPTlRBTF9PRkZTRVQgPSAxNjtcblxuY29uc3QgaXNNb2JpbGUgPSBpc0FuZHJvaWQgfHwgaXNJT1M7XG5jb25zdCB0b29sdGlwVHJpZ2dlcnMgPSBuZXcgV2Vha01hcDxIVE1MRWxlbWVudCwgU2JiVG9vbHRpcEVsZW1lbnQ+KCk7XG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyB0ZXh0IGNvbnRlbnQgd2l0aGluIGEgdG9vbHRpcC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCB0aGUgdGV4dCBpbnRvIHRoZSB0b29sdGlwLlxuICogQGNzc3Byb3AgWy0tc2JiLXRvb2x0aXAtei1pbmRleD12YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpXSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLiBUaGUgZGVmYXVsdCBgei1pbmRleGAgb2YgdGhlXG4gKiBjb21wb25lbnQgaXMgc2V0IHRvIGB2YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpYCB3aXRoIGEgdmFsdWUgb2YgYDEwMDBgLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItdG9vbHRpcCcpXG5jbGFzcyBTYmJUb29sdGlwRWxlbWVudCBleHRlbmRzIFNiYkRpc2FibGVkTWl4aW4oU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSByb2xlID0gJ3Rvb2x0aXAnO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICBwcml2YXRlIHN0YXRpYyBfdG9vbHRpcE91dGxldDogRWxlbWVudDtcblxuICBzdGF0aWMge1xuICAgIGlmICghaXNTZXJ2ZXIpIHtcbiAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gYmxvY2sgZXhlY3V0aW9uIGZvciBpbml0aWFsaXphdGlvbixcbiAgICAgIC8vIHNvIHdlIGRlZmVyIGl0IHVudGlsIHRoZSBET00gY29udGVudCBpcyBsb2FkZWQuXG4gICAgICBxdWV1ZURvbUNvbnRlbnRMb2FkZWQoKCkgPT4gdGhpcy5faW5pdGlhbGl6ZVRvb2x0aXBPdXRsZXQoKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoYXQgd2lsbCB0cmlnZ2VyIHRoZSBwb3BvdmVyIG92ZXJsYXkuXG4gICAqXG4gICAqIEZvciBhdHRyaWJ1dGUgdXNhZ2UsIHByb3ZpZGUgYW4gaWQgcmVmZXJlbmNlLlxuICAgKi9cbiAgQGlkUmVmZXJlbmNlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIHRyaWdnZXI6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIE9wZW4gdGhlIHRvb2x0aXAgYWZ0ZXIgYSBnaXZlbiBkZWxheSBpbiBtaWxsaXNlY29uZHMuXG4gICAqIEdsb2JhbCBjb25maWd1cmF0aW9uIGlzIHVzZWQgYXMgZGVmYXVsdCwgaWYgbm90IHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnb3Blbi1kZWxheScsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgc2V0IG9wZW5EZWxheSh2YWx1ZTogbnVtYmVyIHwgbnVsbCkge1xuICAgIHRoaXMuX29wZW5EZWxheSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyBnZXQgb3BlbkRlbGF5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX29wZW5EZWxheSA/PyByZWFkQ29uZmlnKCkudG9vbHRpcD8ub3BlbkRlbGF5ID8/IDA7XG4gIH1cbiAgcHJpdmF0ZSBfb3BlbkRlbGF5OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQ2xvc2UgdGhlIHRvb2x0aXAgYWZ0ZXIgYSBnaXZlbiBkZWxheSBpbiBtaWxsaXNlY29uZHMuXG4gICAqIEdsb2JhbCBjb25maWd1cmF0aW9uIGlzIHVzZWQgYXMgZGVmYXVsdCwgaWYgbm90IHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnY2xvc2UtZGVsYXknLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIHNldCBjbG9zZURlbGF5KHZhbHVlOiBudW1iZXIgfCBudWxsKSB7XG4gICAgdGhpcy5fY2xvc2VEZWxheSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyBnZXQgY2xvc2VEZWxheSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jbG9zZURlbGF5ID8/IHJlYWRDb25maWcoKS50b29sdGlwPy5jbG9zZURlbGF5ID8/IDA7XG4gIH1cbiAgcHJpdmF0ZSBfY2xvc2VEZWxheTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgY2xvc2UgdGhlIHRvb2x0aXAgYWZ0ZXIgaXQgaGFzIGJlZW4gb3BlbiBieSBsb25nIHByZXNzLlxuICAgKiBHbG9iYWwgY29uZmlndXJhdGlvbiBpcyB1c2VkIGFzIGRlZmF1bHQsIGlmIG5vdCBzZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDE1MDBcbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2xvbmctcHJlc3MtY2xvc2UtZGVsYXknLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIHNldCBsb25nUHJlc3NDbG9zZURlbGF5KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9sb25nUHJlc3NDbG9zZURlbGF5ID0gK3ZhbHVlO1xuICB9XG4gIHB1YmxpYyBnZXQgbG9uZ1ByZXNzQ2xvc2VEZWxheSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9sb25nUHJlc3NDbG9zZURlbGF5ID8/IHJlYWRDb25maWcoKS50b29sdGlwPy5sb25nUHJlc3NDbG9zZURlbGF5ID8/IDE1MDA7XG4gIH1cbiAgcHJpdmF0ZSBfbG9uZ1ByZXNzQ2xvc2VEZWxheT86IG51bWJlcjtcblxuICBwcm90ZWN0ZWQgb3ZlcmxheT86IEhUTUxEaXZFbGVtZW50O1xuXG4gIHByaXZhdGUgX3RyaWdnZXJFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF90cmlnZ2VyQWJvcnRDb250cm9sbGVyPzogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9vcGVuU3RhdGVDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9lc2NhcGFibGVPdmVybGF5Q29udHJvbGxlciA9IG5ldyBTYmJFc2NhcGFibGVPdmVybGF5Q29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfb3BlblRpbWVvdXQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcbiAgcHJpdmF0ZSBfY2xvc2VUaW1lb3V0PzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgX2xvbmdQcmVzc09wZW5UaW1lb3V0PzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgX2xvbmdQcmVzc0Nsb3NlVGltZW91dD86IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgLy8gVW50aWwgdGhlIG1vdXNlIGhvdmVycyB0aGUgdG9vbHRpcCwgaXQgc3RheXMgb3Blbi5cbiAgICAvLyBPbiAnbW91c2VsZWF2ZScgKGlmIHRoZSBtb3VzZSBpcyBub3QgbW92ZWQgb250byB0aGUgdHJpZ2dlciBhZ2FpbiksIGNsb3NlIGl0LlxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdtb3VzZWxlYXZlJyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKHRoaXMuc3RhdGUgPT09ICdvcGVuZWQnIHx8IHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJykgJiZcbiAgICAgICAgICAoIWV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgIXRoaXMuX3RyaWdnZXJFbGVtZW50Py5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0IGFzIE5vZGUpKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLl9kZWxheWVkQ2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgcGFzc2l2ZTogdHJ1ZSB9LFxuICAgICk7XG5cbiAgICAvLyBBbnkgdXNlciBpbnRlcmFjdGlvbiBvdXRzaWRlIHRoZSB0b29sdGlwLCBjbG9zZXMgaXQgaW1tZWRpYXRlbHlcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ292ZXJsYXlPdXRzaWRlUG9pbnRlcicsICgpID0+IHRoaXMuY2xvc2UoKSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2luaXRpYWxpemVUb29sdGlwT3V0bGV0KCk6IHZvaWQge1xuICAgIHRoaXMuX3Rvb2x0aXBPdXRsZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLl90b29sdGlwT3V0bGV0LmNsYXNzTGlzdC5hZGQoJ3NiYi1vdmVybGF5LW91dGxldCcpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5fdG9vbHRpcE91dGxldCk7XG5cbiAgICAvLyBLZXk6IHRyaWdnZXIgYXR0cmlidXRlLCB2YWx1ZTogdG9vbHRpcCBhdHRyaWJ1dGVcbiAgICBjb25zdCBhdHRyaWJ1dGVNYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXG4gICAgICBbJ3NiYi10b29sdGlwLW9wZW4tZGVsYXknLCAnb3Blbi1kZWxheSddLFxuICAgICAgWydzYmItdG9vbHRpcC1jbG9zZS1kZWxheScsICdjbG9zZS1kZWxheSddLFxuICAgIF0pO1xuXG4gICAgLy8gV2UgYXJlIHVzaW5nIE11dGF0aW9uT2JzZXJ2ZXIgZGlyZWN0bHkgaGVyZSwgYXMgaXQgd2lsbCBvbmx5IGJlIGNhbGxlZCBvbiBjbGllbnQgc2lkZSxcbiAgICAvLyBhbmQgd2UgZG8gbm90IG5lZWQgdG8gZGlzY29ubmVjdCBpdCwgYXMgd2Ugd2FudCBpdCB0byB3b3JrIGR1cmluZyB0aGUgZnVsbCBsaWZldGltZVxuICAgIC8vIG9mIHRoZSBwYWdlLlxuICAgIG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHtcbiAgICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25zKSB7XG4gICAgICAgIGlmIChtdXRhdGlvbi50eXBlID09PSAnYXR0cmlidXRlcycpIHtcbiAgICAgICAgICB0aGlzLl9oYW5kbGVUb29sdGlwVHJpZ2dlcihtdXRhdGlvbi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKG11dGF0aW9uLnR5cGUgPT09ICdjaGlsZExpc3QnKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIFsuLi5tdXRhdGlvbi5hZGRlZE5vZGVzLCAuLi5tdXRhdGlvbi5yZW1vdmVkTm9kZXNdLmZpbHRlcihcbiAgICAgICAgICAgIChuKTogbiBpcyBIVE1MRWxlbWVudCA9PiBuLm5vZGVUeXBlID09PSBuLkVMRU1FTlRfTk9ERSxcbiAgICAgICAgICApKSB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVUb29sdGlwVHJpZ2dlcihub2RlKTtcbiAgICAgICAgICAgIHRoaXMuX2ZpbmRBbmRIYW5kbGVUb29sdGlwVHJpZ2dlcnMobm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHtcbiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydzYmItdG9vbHRpcCcsIC4uLmF0dHJpYnV0ZU1hcC5rZXlzKCldLFxuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB0aGlzLl9maW5kQW5kSGFuZGxlVG9vbHRpcFRyaWdnZXJzKGRvY3VtZW50LmJvZHkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2ZpbmRBbmRIYW5kbGVUb29sdGlwVHJpZ2dlcnMocm9vdDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICByb290XG4gICAgICAucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJ1tzYmItdG9vbHRpcF0nKVxuICAgICAgLmZvckVhY2goKGUpID0+IHRoaXMuX2hhbmRsZVRvb2x0aXBUcmlnZ2VyKGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIF9oYW5kbGVUb29sdGlwVHJpZ2dlcih0cmlnZ2VyRWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0b29sdGlwTWVzc2FnZSA9IHRyaWdnZXJFbGVtZW50LmdldEF0dHJpYnV0ZSgnc2JiLXRvb2x0aXAnKTtcbiAgICBsZXQgdG9vbHRpcCA9IHRvb2x0aXBUcmlnZ2Vycy5nZXQodHJpZ2dlckVsZW1lbnQpO1xuXG4gICAgaWYgKHRvb2x0aXBNZXNzYWdlICYmIHRyaWdnZXJFbGVtZW50LmlzQ29ubmVjdGVkKSB7XG4gICAgICBpZiAoIXRvb2x0aXApIHtcbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IHNiYi10b29sdGlwIGluIHRoZSBvdXRsZXQgYW5kIGF0dGFjaCBpdCB0byB0aGUgdHJpZ2dlclxuICAgICAgICB0b29sdGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2JiLXRvb2x0aXAnKTtcbiAgICAgICAgdG9vbHRpcFRyaWdnZXJzLnNldCh0cmlnZ2VyRWxlbWVudCwgdG9vbHRpcCk7XG4gICAgICAgIHRoaXMuX3Rvb2x0aXBPdXRsZXQuYXBwZW5kQ2hpbGQodG9vbHRpcCk7XG4gICAgICAgIHRvb2x0aXAudHJpZ2dlciA9IHRyaWdnZXJFbGVtZW50O1xuICAgICAgfVxuXG4gICAgICB0b29sdGlwLnRleHRDb250ZW50ID0gdG9vbHRpcE1lc3NhZ2U7XG4gICAgICB0b29sdGlwLm9wZW5EZWxheSA9IHRyaWdnZXJFbGVtZW50Lmhhc0F0dHJpYnV0ZSgnc2JiLXRvb2x0aXAtb3Blbi1kZWxheScpXG4gICAgICAgID8gK3RyaWdnZXJFbGVtZW50LmdldEF0dHJpYnV0ZSgnc2JiLXRvb2x0aXAtb3Blbi1kZWxheScpIVxuICAgICAgICA6IG51bGw7XG4gICAgICB0b29sdGlwLmNsb3NlRGVsYXkgPSB0cmlnZ2VyRWxlbWVudC5oYXNBdHRyaWJ1dGUoJ3NiYi10b29sdGlwLWNsb3NlLWRlbGF5JylcbiAgICAgICAgPyArdHJpZ2dlckVsZW1lbnQuZ2V0QXR0cmlidXRlKCdzYmItdG9vbHRpcC1jbG9zZS1kZWxheScpIVxuICAgICAgICA6IG51bGw7XG4gICAgfSBlbHNlIGlmICh0b29sdGlwKSB7XG4gICAgICAvLyBUaGUgdHJpZ2dlciBvciB0aGUgYXR0cmlidXRlIGhhcyBiZWVuIGRlbGV0ZWQgPT4gZGVsZXRlIHRoZSBjb25uZWN0ZWQgdG9vbHRpcFxuICAgICAgdG9vbHRpcFRyaWdnZXJzLmRlbGV0ZSh0cmlnZ2VyRWxlbWVudCk7XG4gICAgICB0b29sdGlwLl9kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5wb3BvdmVyID0gJ21hbnVhbCc7XG4gICAgdGhpcy5pZCB8fD0gYHNiYi10b29sdGlwLSR7KytuZXh0SWR9YDtcbiAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgc2JiT3ZlcmxheU91dHNpZGVQb2ludGVyRXZlbnRMaXN0ZW5lci5jb25uZWN0KHRoaXMpO1xuXG4gICAgaWYgKHRoaXMuaGFzVXBkYXRlZCAmJiB0aGlzLnRyaWdnZXIpIHtcbiAgICAgIHRoaXMuX2F0dGFjaCh0aGlzLnRyaWdnZXIpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHNiYk92ZXJsYXlPdXRzaWRlUG9pbnRlckV2ZW50TGlzdGVuZXIuZGlzY29ubmVjdCh0aGlzKTtcbiAgICB0aGlzLl9kZXRhY2goKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgoIW5hbWUgfHwgbmFtZSA9PT0gJ3RyaWdnZXInKSAmJiB0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHRoaXMuX2F0dGFjaCh0aGlzLnRyaWdnZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzKTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICB0aGlzLl9hdHRhY2godGhpcy50cmlnZ2VyKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgIHRoaXMuX3Jlc2V0T3BlbkNsb3NlVGltZW91dCgpO1xuICAgIGlmIChcbiAgICAgICh0aGlzLnN0YXRlICE9PSAnY2xvc2VkJyAmJiB0aGlzLnN0YXRlICE9PSAnY2xvc2luZycpIHx8XG4gICAgICB0aGlzLmRpc2FibGVkIHx8XG4gICAgICAhdGhpcy5vdmVybGF5IHx8XG4gICAgICAhdGhpcy5kaXNwYXRjaEJlZm9yZU9wZW5FdmVudCgpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93UG9wb3Zlcj8uKCk7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuaW5nJztcbiAgICB0aGlzLl9zZXRUb29sdGlwUG9zaXRpb24oKTtcblxuICAgIC8vIElmIHRoZSBhbmltYXRpb24gZHVyYXRpb24gaXMgemVybywgdGhlIGFuaW1hdGlvbmVuZCBldmVudCBpcyBub3QgYWx3YXlzIGZpcmVkIHJlbGlhYmx5LlxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkaXJlY3RseSBzZXQgdGhlIGBvcGVuZWRgIHN0YXRlLlxuICAgIGlmICh0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3Jlc2V0T3BlbkNsb3NlVGltZW91dCgpO1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnb3BlbmVkJyAmJiB0aGlzLnN0YXRlICE9PSAnb3BlbmluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRpc3BhdGNoQmVmb3JlQ2xvc2VFdmVudCgpO1xuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2luZyc7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgY2xvc2VkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlQ2xvc2luZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2RlbGF5ZWRPcGVuKCk6IHZvaWQge1xuICAgIHRoaXMuX3Jlc2V0T3BlbkNsb3NlVGltZW91dCgpO1xuICAgIHRoaXMuX29wZW5UaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLm9wZW4oKSwgdGhpcy5vcGVuRGVsYXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlT3BlbmluZygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ29wZW5lZCc7XG4gICAgdGhpcy5fYXR0YWNoV2luZG93RXZlbnRzKCk7XG4gICAgdGhpcy5fZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIuY29ubmVjdCgpO1xuICAgIHRoaXMuZGlzcGF0Y2hPcGVuRXZlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2RlbGF5ZWRDbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXNldE9wZW5DbG9zZVRpbWVvdXQoKTtcbiAgICB0aGlzLl9jbG9zZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2xvc2UoKSwgdGhpcy5jbG9zZURlbGF5KTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUNsb3NpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIHRoaXMuaGlkZVBvcG92ZXI/LigpO1xuXG4gICAgdGhpcy5fZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuZGlzcGF0Y2hDbG9zZUV2ZW50KCk7XG4gICAgdGhpcy5fb3BlblN0YXRlQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uVG9vbHRpcEFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ29wZW4nICYmIHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJykge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2godHJpZ2dlcjogSFRNTEVsZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RyaWdnZXJFbGVtZW50KSB7XG4gICAgICAvLyBFdmVudHVhbGx5IGRldGFjaCBmcm9tIHRoZSBvbGQgdHJpZ2dlclxuICAgICAgdGhpcy5fZGV0YWNoKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSB0cmlnZ2VyO1xuICAgIGlmICghdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYWRkVG9MaXN0QXR0cmlidXRlKHRoaXMuX3RyaWdnZXJFbGVtZW50LCAnYXJpYS1kZXNjcmliZWRieScsIHRoaXMuaWQpO1xuICAgIHRoaXMuX2FkZFRyaWdnZXJFdmVudEhhbmRsZXJzKCk7XG4gIH1cblxuICBwcml2YXRlIF9kZXRhY2goKTogdm9pZCB7XG4gICAgdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9vcGVuU3RhdGVDb250cm9sbGVyPy5hYm9ydCgpO1xuXG4gICAgLy8gY2xlYXIgdGltZW91dHNcbiAgICB0aGlzLl9yZXNldE9wZW5DbG9zZVRpbWVvdXQoKTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fbG9uZ1ByZXNzT3BlblRpbWVvdXQpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9sb25nUHJlc3NDbG9zZVRpbWVvdXQpO1xuXG4gICAgaWYgKCF0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZW1vdmVGcm9tTGlzdEF0dHJpYnV0ZSh0aGlzLl90cmlnZ2VyRWxlbWVudCwgJ2FyaWEtZGVzY3JpYmVkYnknLCB0aGlzLmlkKTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9kZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2RldGFjaCgpO1xuICAgIHRoaXMucmVtb3ZlKCk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRUb29sdGlwUG9zaXRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm92ZXJsYXkgfHwgIXRoaXMuX3RyaWdnZXJFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcG9zaXRpb24gPSBnZXRFbGVtZW50UG9zaXRpb24odGhpcy5vdmVybGF5LCB0aGlzLl90cmlnZ2VyRWxlbWVudCwgdGhpcywge1xuICAgICAgdmVydGljYWxPZmZzZXQ6IFZFUlRJQ0FMX09GRlNFVCxcbiAgICAgIGhvcml6b250YWxPZmZzZXQ6IEhPUklaT05UQUxfT0ZGU0VULFxuICAgICAgY2VudGVyZWQ6IHRydWUsXG4gICAgICByZXNwb25zaXZlSGVpZ2h0OiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKCdkYXRhLXBvc2l0aW9uJywgcG9zaXRpb24uYWxpZ25tZW50LnZlcnRpY2FsKTtcblxuICAgIHRoaXMuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLXRvb2x0aXAtcG9zaXRpb24teCcsIGAke3Bvc2l0aW9uLmxlZnR9cHhgKTtcbiAgICB0aGlzLnN0eWxlLnNldFByb3BlcnR5KCctLXNiYi10b29sdGlwLXBvc2l0aW9uLXknLCBgJHtwb3NpdGlvbi50b3B9cHhgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FkZFRyaWdnZXJFdmVudEhhbmRsZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IHRyaWdnZXIgPSB0aGlzLl90cmlnZ2VyRWxlbWVudDtcbiAgICBpZiAoIXRyaWdnZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgY29uc3Qgb3B0aW9uczogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7XG4gICAgICBzaWduYWw6IHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICB9O1xuXG4gICAgaWYgKCFpc01vYmlsZSkge1xuICAgICAgdHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT4gdGhpcy5fZGVsYXllZE9wZW4oKSwgb3B0aW9ucyk7XG4gICAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdtb3VzZWxlYXZlJyxcbiAgICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3VGFyZ2V0ID0gZXZlbnQucmVsYXRlZFRhcmdldCBhcyBOb2RlIHwgbnVsbDtcbiAgICAgICAgICBpZiAoIW5ld1RhcmdldCB8fCBuZXdUYXJnZXQgIT09IHRoaXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2RlbGF5ZWRDbG9zZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICk7XG5cbiAgICAgIC8vICdibHVycycgaW1tZWRpYXRlbHkgY2xvc2UgdGhlIHRvb2x0aXAgYmVjYXVzZSBpdCBpcyBjb25zaWRlcmVkIGFuICdpbnRlcmFjdGlvbiB3aXRoIG90aGVyIGVsZW1lbnRzJ1xuICAgICAgdHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4gdGhpcy5jbG9zZSgpLCBvcHRpb25zKTtcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoKSA9PiB0aGlzLl9kZWxheWVkT3BlbigpLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvLyBMb25nLXByZXNzIGV2ZW50IGhhbmRsaW5nIChtYWlubHkgZm9yIG1vYmlsZSB1c2VycylcbiAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAndG91Y2hzdGFydCcsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9sb25nUHJlc3NPcGVuVGltZW91dCk7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9sb25nUHJlc3NDbG9zZVRpbWVvdXQpO1xuICAgICAgICB0aGlzLl9sb25nUHJlc3NPcGVuVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5vcGVuKCksIExPTkdQUkVTU19ERUxBWSk7XG4gICAgICB9LFxuICAgICAgb3B0aW9ucyxcbiAgICApO1xuICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICd0b3VjaGVuZCcsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9sb25nUHJlc3NPcGVuVGltZW91dCk7XG4gICAgICAgIHRoaXMuX2xvbmdQcmVzc0Nsb3NlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbG9zZSgpLCB0aGlzLmxvbmdQcmVzc0Nsb3NlRGVsYXkpO1xuICAgICAgfSxcbiAgICAgIG9wdGlvbnMsXG4gICAgKTtcbiAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAndG91Y2hjYW5jZWwnLFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbG9uZ1ByZXNzT3BlblRpbWVvdXQpO1xuICAgICAgfSxcbiAgICAgIG9wdGlvbnMsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2F0dGFjaFdpbmRvd0V2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl9vcGVuU3RhdGVDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsICgpID0+IHRoaXMuX3NldFRvb2x0aXBQb3NpdGlvbigpLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuU3RhdGVDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIC8vIFdpdGhvdXQgY2FwdHVyZSwgb3RoZXIgc2Nyb2xsIGNvbnRleHRzIHdvdWxkIG5vdCBidWJibGUgdG8gdGhpcyBldmVudCBsaXN0ZW5lci5cbiAgICAgIC8vIENhcHR1cmUgYWxsb3dzIHVzIHRvIHJlYWN0IHRvIGFsbCBzY3JvbGwgY29udGV4dHMgaW4gdGhpcyBET00uXG4gICAgICBjYXB0dXJlOiB0cnVlLFxuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB0aGlzLl9zZXRUb29sdGlwUG9zaXRpb24oKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblN0YXRlQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24odGhpcywgJy0tc2JiLXRvb2x0aXAtYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICBwcml2YXRlIF9yZXNldE9wZW5DbG9zZVRpbWVvdXQoKTogdm9pZCB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX29wZW5UaW1lb3V0KTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fY2xvc2VUaW1lb3V0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdlxuICAgICAgICBAYW5pbWF0aW9uZW5kPSR7dGhpcy5fb25Ub29sdGlwQW5pbWF0aW9uRW5kfVxuICAgICAgICBjbGFzcz1cInNiYi10b29sdGlwXCJcbiAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCkgPT4gKHRoaXMub3ZlcmxheSA9IGVsIGFzIEhUTUxEaXZFbGVtZW50KSl9XG4gICAgICA+XG4gICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi10b29sdGlwJzogU2JiVG9vbHRpcEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0NBLE1BQU0sa0JBQWtCO0FBQ3hCLE1BQU0sa0JBQWtCO0FBQ3hCLE1BQU0sb0JBQW9CO0FBRTFCLE1BQU0sV0FBVyxhQUFhO0FBQzlCLE1BQU0sc0NBQXNCLFFBQUE7QUFDNUIsSUFBSSxTQUFTO0lBWVAscUJBQWlCLE1BQUE7OzBCQUR0QixjQUFjLGFBQWEsQ0FBQzs7OztvQkFDRyxpQkFBaUIsdUJBQXVCOzs7Ozs7OztBQUFoRCxFQUFBLG1CQUFRLFlBQXlDO0FBQUEsSUErRXZFLGNBQUE7QUFDRSxZQUFBO0FBM0RGO0FBQWdCLHlCQUFBLDRCQXJCWixrQkFBQSxNQUFBLDBCQUFBLEdBQWlCLGtCQUFBLE1BQUEsdUJBcUJ5QixJQUFJO0FBZTFDLFdBQUEsY0FBVSxrQkFBQSxNQUFBLDBCQUFBLEdBQWtCO0FBZTVCLFdBQUEsY0FBNkI7QUFtQjdCLFdBQUEsa0JBQXNDO0FBR3RD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
452
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxuICB0eXBlIFByb3BlcnR5RGVjbGFyYXRpb24sXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi9jb3JlL2Jhc2UtZWxlbWVudHMuanMnO1xuaW1wb3J0IHsgcmVhZENvbmZpZyB9IGZyb20gJy4uL2NvcmUvY29uZmlnLmpzJztcbmltcG9ydCB7XG4gIFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLFxuICBTYmJPdmVybGF5UG9zaXRpb25Db250cm9sbGVyLFxufSBmcm9tICcuLi9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGlkUmVmZXJlbmNlIH0gZnJvbSAnLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7XG4gIGFkZFRvTGlzdEF0dHJpYnV0ZSxcbiAgaXNBbmRyb2lkLFxuICBpc0lPUyxcbiAgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24sXG4gIHF1ZXVlRG9tQ29udGVudExvYWRlZCxcbiAgcmVtb3ZlRnJvbUxpc3RBdHRyaWJ1dGUsXG59IGZyb20gJy4uL2NvcmUvZG9tLmpzJztcbmltcG9ydCB7IFNiYkRpc2FibGVkTWl4aW4gfSBmcm9tICcuLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgeyBzYmJPdmVybGF5T3V0c2lkZVBvaW50ZXJFdmVudExpc3RlbmVyIH0gZnJvbSAnLi4vY29yZS9vdmVybGF5LmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vdG9vbHRpcC5zY3NzP2xpdCZpbmxpbmUnO1xuXG4vKipcbiAqIERlZmluZXMgdGhlIGRlZmF1bHQgcG9zaXRpb24gZm9yIHRoZSB0b29sdGlwIGlmIHRoaXMgZWxlbWVudCBpcyB1c2VkIGFzIGEgdHJpZ2dlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYmJUb29sdGlwRGVmYXVsdFBvc2l0aW9ucyB7XG4gIHJlYWRvbmx5IHRvb2x0aXBQb3NpdGlvbnM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRpbWUgYmV0d2VlbiB0aGUgdXNlciBwdXR0aW5nIHRoZSBwb2ludGVyIG9uIGEgdG9vbHRpcFxuICogdHJpZ2dlciBhbmQgdGhlIGxvbmcgcHJlc3MgZXZlbnQgYmVpbmcgZmlyZWQuXG4gKi9cbmNvbnN0IExPTkdQUkVTU19ERUxBWSA9IDUwMDtcblxuY29uc3QgaXNNb2JpbGUgPSBpc0FuZHJvaWQgfHwgaXNJT1M7XG5jb25zdCB0b29sdGlwVHJpZ2dlcnMgPSBuZXcgV2Vha01hcDxIVE1MRWxlbWVudCwgU2JiVG9vbHRpcEVsZW1lbnQ+KCk7XG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyB0ZXh0IGNvbnRlbnQgd2l0aGluIGEgdG9vbHRpcC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCB0aGUgdGV4dCBpbnRvIHRoZSB0b29sdGlwLlxuICogQGNzc3Byb3AgWy0tc2JiLW92ZXJsYXktcG9zaXRpb24tYXJlYT1ibG9jay1lbmRdIC0gVGhlIHByaW1hcnkgcG9zaXRpb24gZm9yIHRoZSB0b29sdGlwLlxuICogQGNzc3Byb3AgWy0tc2JiLW92ZXJsYXktcG9zaXRpb24tdHJ5LWZhbGxiYWNrcz1ibG9jay1lbmQgc3Bhbi1pbmxpbmUtZW5kLCBibG9jay1lbmQgc3Bhbi1pbmxpbmUtc3RhcnQsIGJsb2NrLXN0YXJ0LCBibG9jay1zdGFydCBzcGFuLWlubGluZS1lbmQsIGJsb2NrLXN0YXJ0IHNwYW4taW5saW5lLXN0YXJ0XSAtXG4gKiBUaGUgbGlzdCBvZiBmYWxsYmFjayBwb3NpdGlvbnMsIHNlcGFyYXRlZCBieSAnLCcsIGZvciB0aGUgdG9vbHRpcFxuICogQGNzc3Byb3AgWy0tc2JiLXRvb2x0aXAtei1pbmRleD12YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpXSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLiBUaGUgZGVmYXVsdCBgei1pbmRleGAgb2YgdGhlXG4gKiBjb21wb25lbnQgaXMgc2V0IHRvIGB2YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpYCB3aXRoIGEgdmFsdWUgb2YgYDEwMDBgLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItdG9vbHRpcCcpXG5jbGFzcyBTYmJUb29sdGlwRWxlbWVudCBleHRlbmRzIFNiYkRpc2FibGVkTWl4aW4oU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSByb2xlID0gJ3Rvb2x0aXAnO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICBwcml2YXRlIHN0YXRpYyBfdG9vbHRpcE91dGxldDogRWxlbWVudDtcblxuICBzdGF0aWMge1xuICAgIGlmICghaXNTZXJ2ZXIpIHtcbiAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gYmxvY2sgZXhlY3V0aW9uIGZvciBpbml0aWFsaXphdGlvbixcbiAgICAgIC8vIHNvIHdlIGRlZmVyIGl0IHVudGlsIHRoZSBET00gY29udGVudCBpcyBsb2FkZWQuXG4gICAgICBxdWV1ZURvbUNvbnRlbnRMb2FkZWQoKCkgPT4gdGhpcy5faW5pdGlhbGl6ZVRvb2x0aXBPdXRsZXQoKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoYXQgd2lsbCB0cmlnZ2VyIHRoZSB0b29sdGlwIG92ZXJsYXkuXG4gICAqXG4gICAqIEZvciBhdHRyaWJ1dGUgdXNhZ2UsIHByb3ZpZGUgYW4gaWQgcmVmZXJlbmNlLlxuICAgKi9cbiAgQGlkUmVmZXJlbmNlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIHRyaWdnZXI6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIE9wZW4gdGhlIHRvb2x0aXAgYWZ0ZXIgYSBnaXZlbiBkZWxheSBpbiBtaWxsaXNlY29uZHMuXG4gICAqIEdsb2JhbCBjb25maWd1cmF0aW9uIGlzIHVzZWQgYXMgZGVmYXVsdCwgaWYgbm90IHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnb3Blbi1kZWxheScsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgc2V0IG9wZW5EZWxheSh2YWx1ZTogbnVtYmVyIHwgbnVsbCkge1xuICAgIHRoaXMuX29wZW5EZWxheSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyBnZXQgb3BlbkRlbGF5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX29wZW5EZWxheSA/PyByZWFkQ29uZmlnKCkudG9vbHRpcD8ub3BlbkRlbGF5ID8/IDA7XG4gIH1cbiAgcHJpdmF0ZSBfb3BlbkRlbGF5OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQ2xvc2UgdGhlIHRvb2x0aXAgYWZ0ZXIgYSBnaXZlbiBkZWxheSBpbiBtaWxsaXNlY29uZHMuXG4gICAqIEdsb2JhbCBjb25maWd1cmF0aW9uIGlzIHVzZWQgYXMgZGVmYXVsdCwgaWYgbm90IHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnY2xvc2UtZGVsYXknLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIHNldCBjbG9zZURlbGF5KHZhbHVlOiBudW1iZXIgfCBudWxsKSB7XG4gICAgdGhpcy5fY2xvc2VEZWxheSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyBnZXQgY2xvc2VEZWxheSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jbG9zZURlbGF5ID8/IHJlYWRDb25maWcoKS50b29sdGlwPy5jbG9zZURlbGF5ID8/IDA7XG4gIH1cbiAgcHJpdmF0ZSBfY2xvc2VEZWxheTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgY2xvc2UgdGhlIHRvb2x0aXAgYWZ0ZXIgaXQgaGFzIGJlZW4gb3BlbiBieSBsb25nIHByZXNzLlxuICAgKiBHbG9iYWwgY29uZmlndXJhdGlvbiBpcyB1c2VkIGFzIGRlZmF1bHQsIGlmIG5vdCBzZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDE1MDBcbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2xvbmctcHJlc3MtY2xvc2UtZGVsYXknLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIHNldCBsb25nUHJlc3NDbG9zZURlbGF5KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9sb25nUHJlc3NDbG9zZURlbGF5ID0gK3ZhbHVlO1xuICB9XG4gIHB1YmxpYyBnZXQgbG9uZ1ByZXNzQ2xvc2VEZWxheSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9sb25nUHJlc3NDbG9zZURlbGF5ID8/IHJlYWRDb25maWcoKS50b29sdGlwPy5sb25nUHJlc3NDbG9zZURlbGF5ID8/IDE1MDA7XG4gIH1cbiAgcHJpdmF0ZSBfbG9uZ1ByZXNzQ2xvc2VEZWxheT86IG51bWJlcjtcblxuICBwcml2YXRlIF90cmlnZ2VyRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfdHJpZ2dlckFib3J0Q29udHJvbGxlcj86IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfb3BlblN0YXRlQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIgPSBuZXcgU2JiRXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX292ZXJsYXlDb250cm9sbGVyID0gbmV3IFNiYk92ZXJsYXlQb3NpdGlvbkNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX29wZW5UaW1lb3V0PzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgX2Nsb3NlVGltZW91dD86IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuICBwcml2YXRlIF9sb25nUHJlc3NPcGVuVGltZW91dD86IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuICBwcml2YXRlIF9sb25nUHJlc3NDbG9zZVRpbWVvdXQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIC8vIFVudGlsIHRoZSBtb3VzZSBob3ZlcnMgdGhlIHRvb2x0aXAsIGl0IHN0YXlzIG9wZW4uXG4gICAgLy8gT24gJ21vdXNlbGVhdmUnIChpZiB0aGUgbW91c2UgaXMgbm90IG1vdmVkIG9udG8gdGhlIHRyaWdnZXIgYWdhaW4pLCBjbG9zZSBpdC5cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnbW91c2VsZWF2ZScsXG4gICAgICAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICh0aGlzLnN0YXRlID09PSAnb3BlbmVkJyB8fCB0aGlzLnN0YXRlID09PSAnb3BlbmluZycpICYmXG4gICAgICAgICAgKCFldmVudC5yZWxhdGVkVGFyZ2V0IHx8ICF0aGlzLl90cmlnZ2VyRWxlbWVudD8uY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCBhcyBOb2RlKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5fZGVsYXllZENsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IHBhc3NpdmU6IHRydWUgfSxcbiAgICApO1xuXG4gICAgLy8gQW55IHVzZXIgaW50ZXJhY3Rpb24gb3V0c2lkZSB0aGUgdG9vbHRpcCBjbG9zZXMgaXQgaW1tZWRpYXRlbHlcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ292ZXJsYXlPdXRzaWRlUG9pbnRlcicsICgpID0+IHRoaXMuY2xvc2UoKSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCAoZSkgPT4gdGhpcy5fb25Ub29sdGlwQW5pbWF0aW9uRW5kKGUpLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfaW5pdGlhbGl6ZVRvb2x0aXBPdXRsZXQoKTogdm9pZCB7XG4gICAgdGhpcy5fdG9vbHRpcE91dGxldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMuX3Rvb2x0aXBPdXRsZXQuY2xhc3NMaXN0LmFkZCgnc2JiLW92ZXJsYXktb3V0bGV0Jyk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLl90b29sdGlwT3V0bGV0KTtcblxuICAgIC8vIFdlIGFyZSB1c2luZyBNdXRhdGlvbk9ic2VydmVyIGRpcmVjdGx5IGhlcmUsIGFzIGl0IHdpbGwgb25seSBiZSBjYWxsZWQgb24gY2xpZW50IHNpZGUsXG4gICAgLy8gYW5kIHdlIGRvIG5vdCBuZWVkIHRvIGRpc2Nvbm5lY3QgaXQsIGFzIHdlIHdhbnQgaXQgdG8gd29yayBkdXJpbmcgdGhlIGZ1bGwgbGlmZXRpbWVcbiAgICAvLyBvZiB0aGUgcGFnZS5cbiAgICBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBpZiAobXV0YXRpb24udHlwZSA9PT0gJ2F0dHJpYnV0ZXMnKSB7XG4gICAgICAgICAgdGhpcy5faGFuZGxlVG9vbHRpcFRyaWdnZXIobXV0YXRpb24udGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChtdXRhdGlvbi50eXBlID09PSAnY2hpbGRMaXN0Jykge1xuICAgICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBbLi4ubXV0YXRpb24uYWRkZWROb2RlcywgLi4ubXV0YXRpb24ucmVtb3ZlZE5vZGVzXS5maWx0ZXIoXG4gICAgICAgICAgICAobik6IG4gaXMgSFRNTEVsZW1lbnQgPT4gbi5ub2RlVHlwZSA9PT0gbi5FTEVNRU5UX05PREUsXG4gICAgICAgICAgKSkge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlVG9vbHRpcFRyaWdnZXIobm9kZSk7XG4gICAgICAgICAgICB0aGlzLl9maW5kQW5kSGFuZGxlVG9vbHRpcFRyaWdnZXJzKG5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB7XG4gICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFtcbiAgICAgICAgJ3NiYi10b29sdGlwJyxcbiAgICAgICAgJ3NiYi10b29sdGlwLW9wZW4tZGVsYXknLFxuICAgICAgICAnc2JiLXRvb2x0aXAtY2xvc2UtZGVsYXknLFxuICAgICAgICAnc2JiLXRvb2x0aXAtcG9zaXRpb24nLFxuICAgICAgXSxcbiAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy5fZmluZEFuZEhhbmRsZVRvb2x0aXBUcmlnZ2Vycyhkb2N1bWVudC5ib2R5KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIF9maW5kQW5kSGFuZGxlVG9vbHRpcFRyaWdnZXJzKHJvb3Q6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgcm9vdFxuICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KCdbc2JiLXRvb2x0aXBdJylcbiAgICAgIC5mb3JFYWNoKChlKSA9PiB0aGlzLl9oYW5kbGVUb29sdGlwVHJpZ2dlcihlKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfaGFuZGxlVG9vbHRpcFRyaWdnZXIodHJpZ2dlckVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgY29uc3QgdG9vbHRpcE1lc3NhZ2UgPSB0cmlnZ2VyRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3NiYi10b29sdGlwJyk7XG4gICAgbGV0IHRvb2x0aXAgPSB0b29sdGlwVHJpZ2dlcnMuZ2V0KHRyaWdnZXJFbGVtZW50KTtcblxuICAgIGlmICh0b29sdGlwTWVzc2FnZSAmJiB0cmlnZ2VyRWxlbWVudC5pc0Nvbm5lY3RlZCkge1xuICAgICAgaWYgKCF0b29sdGlwKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBzYmItdG9vbHRpcCBpbiB0aGUgb3V0bGV0IGFuZCBhdHRhY2ggaXQgdG8gdGhlIHRyaWdnZXJcbiAgICAgICAgdG9vbHRpcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NiYi10b29sdGlwJyk7XG4gICAgICAgIHRvb2x0aXBUcmlnZ2Vycy5zZXQodHJpZ2dlckVsZW1lbnQsIHRvb2x0aXApO1xuICAgICAgICB0aGlzLl90b29sdGlwT3V0bGV0LmFwcGVuZENoaWxkKHRvb2x0aXApO1xuICAgICAgICB0b29sdGlwLnRyaWdnZXIgPSB0cmlnZ2VyRWxlbWVudDtcbiAgICAgIH1cblxuICAgICAgdG9vbHRpcC50ZXh0Q29udGVudCA9IHRvb2x0aXBNZXNzYWdlO1xuICAgICAgdG9vbHRpcC5vcGVuRGVsYXkgPSB0cmlnZ2VyRWxlbWVudC5oYXNBdHRyaWJ1dGUoJ3NiYi10b29sdGlwLW9wZW4tZGVsYXknKVxuICAgICAgICA/ICt0cmlnZ2VyRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3NiYi10b29sdGlwLW9wZW4tZGVsYXknKSFcbiAgICAgICAgOiBudWxsO1xuICAgICAgdG9vbHRpcC5jbG9zZURlbGF5ID0gdHJpZ2dlckVsZW1lbnQuaGFzQXR0cmlidXRlKCdzYmItdG9vbHRpcC1jbG9zZS1kZWxheScpXG4gICAgICAgID8gK3RyaWdnZXJFbGVtZW50LmdldEF0dHJpYnV0ZSgnc2JiLXRvb2x0aXAtY2xvc2UtZGVsYXknKSFcbiAgICAgICAgOiBudWxsO1xuXG4gICAgICAvLyBSZWFkIHRoZSBwb3NpdGlvbnMgZnJvbSB0aGUgdHJpZ2dlciAoZWl0aGVyIGZyb20gdGhlIGF0dHJpYnV0ZSBvciB0aGUgcHJvcGVydHkpXG4gICAgICBjb25zdCBwb3NpdGlvbnMgPSB0cmlnZ2VyRWxlbWVudC5oYXNBdHRyaWJ1dGUoJ3NiYi10b29sdGlwLXBvc2l0aW9uJylcbiAgICAgICAgPyB0cmlnZ2VyRWxlbWVudFxuICAgICAgICAgICAgLmdldEF0dHJpYnV0ZSgnc2JiLXRvb2x0aXAtcG9zaXRpb24nKSFcbiAgICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgICAubWFwKChwKSA9PiBwLnRyaW0oKSlcbiAgICAgICAgOiAodHJpZ2dlckVsZW1lbnQgYXMgdW5rbm93biBhcyBTYmJUb29sdGlwRGVmYXVsdFBvc2l0aW9ucykudG9vbHRpcFBvc2l0aW9ucztcblxuICAgICAgaWYgKHBvc2l0aW9ucyAmJiBwb3NpdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0b29sdGlwLnN0eWxlLnNldFByb3BlcnR5KCctLXNiYi1vdmVybGF5LXBvc2l0aW9uLWFyZWEnLCBwb3NpdGlvbnNbMF0pO1xuICAgICAgICB0b29sdGlwLnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICAgICctLXNiYi1vdmVybGF5LXBvc2l0aW9uLXRyeS1mYWxsYmFja3MnLFxuICAgICAgICAgIHBvc2l0aW9ucy5zbGljZSgxKS5qb2luKCcsICcpLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG9vbHRpcC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1zYmItb3ZlcmxheS1wb3NpdGlvbi1hcmVhJyk7XG4gICAgICAgIHRvb2x0aXAuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2JiLW92ZXJsYXktcG9zaXRpb24tdHJ5LWZhbGxiYWNrcycpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodG9vbHRpcCkge1xuICAgICAgLy8gVGhlIHRyaWdnZXIgb3IgdGhlIGF0dHJpYnV0ZSBoYXMgYmVlbiBkZWxldGVkID0+IGRlbGV0ZSB0aGUgY29ubmVjdGVkIHRvb2x0aXBcbiAgICAgIHRvb2x0aXBUcmlnZ2Vycy5kZWxldGUodHJpZ2dlckVsZW1lbnQpO1xuICAgICAgdG9vbHRpcC5fZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMucG9wb3ZlciA9ICdtYW51YWwnO1xuICAgIHRoaXMuaWQgfHw9IGBzYmItdG9vbHRpcC0keysrbmV4dElkfWA7XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIHNiYk92ZXJsYXlPdXRzaWRlUG9pbnRlckV2ZW50TGlzdGVuZXIuY29ubmVjdCh0aGlzKTtcblxuICAgIGlmICh0aGlzLmhhc1VwZGF0ZWQgJiYgdGhpcy50cmlnZ2VyKSB7XG4gICAgICB0aGlzLl9hdHRhY2godGhpcy50cmlnZ2VyKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBzYmJPdmVybGF5T3V0c2lkZVBvaW50ZXJFdmVudExpc3RlbmVyLmRpc2Nvbm5lY3QodGhpcyk7XG4gICAgdGhpcy5fZGV0YWNoKCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVxdWVzdFVwZGF0ZShcbiAgICBuYW1lPzogUHJvcGVydHlLZXksXG4gICAgb2xkVmFsdWU/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICApOiB2b2lkIHtcbiAgICBzdXBlci5yZXF1ZXN0VXBkYXRlKG5hbWUsIG9sZFZhbHVlLCBvcHRpb25zKTtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoKCFuYW1lIHx8IG5hbWUgPT09ICd0cmlnZ2VyJykgJiYgdGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICB0aGlzLl9hdHRhY2godGhpcy50cmlnZ2VyKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlcyk6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgdGhpcy5fYXR0YWNoKHRoaXMudHJpZ2dlcik7XG4gIH1cblxuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXNldE9wZW5DbG9zZVRpbWVvdXQoKTtcbiAgICBpZiAoXG4gICAgICAodGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcgJiYgdGhpcy5zdGF0ZSAhPT0gJ2Nsb3NpbmcnKSB8fFxuICAgICAgdGhpcy5kaXNhYmxlZCB8fFxuICAgICAgIXRoaXMudHJpZ2dlciB8fFxuICAgICAgIXRoaXMuZGlzcGF0Y2hCZWZvcmVPcGVuRXZlbnQoKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd1BvcG92ZXI/LigpO1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG4gICAgdGhpcy5fb3ZlcmxheUNvbnRyb2xsZXIuY29ubmVjdCh0aGlzLnRyaWdnZXIpO1xuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYG9wZW5lZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCkpIHtcbiAgICAgIHRoaXMuX2hhbmRsZU9wZW5pbmcoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVzZXRPcGVuQ2xvc2VUaW1lb3V0KCk7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnICYmIHRoaXMuc3RhdGUgIT09ICdvcGVuaW5nJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZGlzcGF0Y2hCZWZvcmVDbG9zZUV2ZW50KCk7XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zaW5nJztcblxuICAgIC8vIElmIHRoZSBhbmltYXRpb24gZHVyYXRpb24gaXMgemVybywgdGhlIGFuaW1hdGlvbmVuZCBldmVudCBpcyBub3QgYWx3YXlzIGZpcmVkIHJlbGlhYmx5LlxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkaXJlY3RseSBzZXQgdGhlIGBjbG9zZWRgIHN0YXRlLlxuICAgIGlmICh0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVsYXllZE9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy5fcmVzZXRPcGVuQ2xvc2VUaW1lb3V0KCk7XG4gICAgdGhpcy5fb3BlblRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMub3BlbigpLCB0aGlzLm9wZW5EZWxheSk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVPcGVuaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmVkJztcbiAgICB0aGlzLl9lc2NhcGFibGVPdmVybGF5Q29udHJvbGxlci5jb25uZWN0KCk7XG4gICAgdGhpcy5kaXNwYXRjaE9wZW5FdmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGVsYXllZENsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3Jlc2V0T3BlbkNsb3NlVGltZW91dCgpO1xuICAgIHRoaXMuX2Nsb3NlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbG9zZSgpLCB0aGlzLmNsb3NlRGVsYXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlQ2xvc2luZygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgdGhpcy5oaWRlUG9wb3Zlcj8uKCk7XG4gICAgdGhpcy5fb3ZlcmxheUNvbnRyb2xsZXIuZGlzY29ubmVjdCgpO1xuXG4gICAgdGhpcy5fZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuZGlzcGF0Y2hDbG9zZUV2ZW50KCk7XG4gICAgdGhpcy5fb3BlblN0YXRlQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uVG9vbHRpcEFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ29wZW4nICYmIHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJykge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2godHJpZ2dlcjogSFRNTEVsZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RyaWdnZXJFbGVtZW50KSB7XG4gICAgICAvLyBFdmVudHVhbGx5IGRldGFjaCBmcm9tIHRoZSBvbGQgdHJpZ2dlclxuICAgICAgdGhpcy5fZGV0YWNoKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSB0cmlnZ2VyO1xuICAgIGlmICghdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYWRkVG9MaXN0QXR0cmlidXRlKHRoaXMuX3RyaWdnZXJFbGVtZW50LCAnYXJpYS1kZXNjcmliZWRieScsIHRoaXMuaWQpO1xuICAgIHRoaXMuX2FkZFRyaWdnZXJFdmVudEhhbmRsZXJzKCk7XG4gIH1cblxuICBwcml2YXRlIF9kZXRhY2goKTogdm9pZCB7XG4gICAgdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9vcGVuU3RhdGVDb250cm9sbGVyPy5hYm9ydCgpO1xuXG4gICAgLy8gY2xlYXIgdGltZW91dHNcbiAgICB0aGlzLl9yZXNldE9wZW5DbG9zZVRpbWVvdXQoKTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fbG9uZ1ByZXNzT3BlblRpbWVvdXQpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9sb25nUHJlc3NDbG9zZVRpbWVvdXQpO1xuXG4gICAgaWYgKCF0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZW1vdmVGcm9tTGlzdEF0dHJpYnV0ZSh0aGlzLl90cmlnZ2VyRWxlbWVudCwgJ2FyaWEtZGVzY3JpYmVkYnknLCB0aGlzLmlkKTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9kZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2RldGFjaCgpO1xuICAgIHRoaXMucmVtb3ZlKCk7XG4gIH1cblxuICBwcml2YXRlIF9hZGRUcmlnZ2VyRXZlbnRIYW5kbGVycygpOiB2b2lkIHtcbiAgICBjb25zdCB0cmlnZ2VyID0gdGhpcy5fdHJpZ2dlckVsZW1lbnQ7XG4gICAgaWYgKCF0cmlnZ2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGNvbnN0IG9wdGlvbnM6IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zID0ge1xuICAgICAgc2lnbmFsOiB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgfTtcblxuICAgIGlmICghaXNNb2JpbGUpIHtcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsICgpID0+IHRoaXMuX2RlbGF5ZWRPcGVuKCksIG9wdGlvbnMpO1xuICAgICAgdHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnbW91c2VsZWF2ZScsXG4gICAgICAgIChldmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld1RhcmdldCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQgYXMgTm9kZSB8IG51bGw7XG4gICAgICAgICAgaWYgKCFuZXdUYXJnZXQgfHwgbmV3VGFyZ2V0ICE9PSB0aGlzKSB7XG4gICAgICAgICAgICB0aGlzLl9kZWxheWVkQ2xvc2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApO1xuXG4gICAgICAvLyAnYmx1cnMnIGltbWVkaWF0ZWx5IGNsb3NlIHRoZSB0b29sdGlwIGJlY2F1c2UgaXQgaXMgY29uc2lkZXJlZCBhbiAnaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBlbGVtZW50cydcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHRoaXMuY2xvc2UoKSwgb3B0aW9ucyk7XG4gICAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4gdGhpcy5fZGVsYXllZE9wZW4oKSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLy8gTG9uZy1wcmVzcyBldmVudCBoYW5kbGluZyAobWFpbmx5IGZvciBtb2JpbGUgdXNlcnMpXG4gICAgdHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ3RvdWNoc3RhcnQnLFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbG9uZ1ByZXNzT3BlblRpbWVvdXQpO1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbG9uZ1ByZXNzQ2xvc2VUaW1lb3V0KTtcbiAgICAgICAgdGhpcy5fbG9uZ1ByZXNzT3BlblRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMub3BlbigpLCBMT05HUFJFU1NfREVMQVkpO1xuICAgICAgfSxcbiAgICAgIG9wdGlvbnMsXG4gICAgKTtcbiAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAndG91Y2hlbmQnLFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbG9uZ1ByZXNzT3BlblRpbWVvdXQpO1xuICAgICAgICB0aGlzLl9sb25nUHJlc3NDbG9zZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2xvc2UoKSwgdGhpcy5sb25nUHJlc3NDbG9zZURlbGF5KTtcbiAgICAgIH0sXG4gICAgICBvcHRpb25zLFxuICAgICk7XG4gICAgdHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ3RvdWNoY2FuY2VsJyxcbiAgICAgICgpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2xvbmdQcmVzc09wZW5UaW1lb3V0KTtcbiAgICAgIH0sXG4gICAgICBvcHRpb25zLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24odGhpcywgJy0tc2JiLXRvb2x0aXAtYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICBwcml2YXRlIF9yZXNldE9wZW5DbG9zZVRpbWVvdXQoKTogdm9pZCB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX29wZW5UaW1lb3V0KTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fY2xvc2VUaW1lb3V0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi10b29sdGlwXCI+XG4gICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi10b29sdGlwJzogU2JiVG9vbHRpcEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5Q0EsTUFBTSxrQkFBa0I7QUFFeEIsTUFBTSxXQUFXLGFBQWE7QUFDOUIsTUFBTSxzQ0FBc0IsUUFBQTtBQUM1QixJQUFJLFNBQVM7SUFlUCxxQkFBaUIsTUFBQTs7MEJBRHRCLGNBQWMsYUFBYSxDQUFDOzs7O29CQUNHLGlCQUFpQix1QkFBdUI7Ozs7Ozs7O0FBQWhELEVBQUEsbUJBQVEsWUFBeUM7QUFBQSxJQThFdkUsY0FBQTtBQUNFLFlBQUE7QUExREY7QUFBZ0IseUJBQUEsNEJBckJaLGtCQUFBLE1BQUEsMEJBQUEsR0FBaUIsa0JBQUEsTUFBQSx1QkFxQnlCLElBQUk7QUFlMUMsV0FBQSxjQUFVLGtCQUFBLE1BQUEsMEJBQUEsR0FBa0I7QUFlNUIsV0FBQSxjQUE2QjtBQWlCN0IsV0FBQSxrQkFBc0M7QUFHdEMsV0FBQSw4QkFBOEIsSUFBSSw4QkFBOEIsSUFBSTtBQUNw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
package/index.d.ts CHANGED
@@ -65,6 +65,9 @@ import { SbbNavigationListElement } from "./navigation/navigation-list/navigatio
65
65
  import { SbbNavigationLinkElement } from "./navigation/navigation-link/navigation-link.component.js";
66
66
  import { SbbNavigationButtonElement } from "./navigation/navigation-button/navigation-button.component.js";
67
67
  import { SbbNavigationElement } from "./navigation/navigation/navigation.component.js";
68
+ import { SbbMiniCalendarMonthElement } from "./mini-calendar/mini-calendar-month/mini-calendar-month.component.js";
69
+ import { SbbMiniCalendarDayElement } from "./mini-calendar/mini-calendar-day/mini-calendar-day.component.js";
70
+ import { SbbMiniCalendarElement } from "./mini-calendar/mini-calendar/mini-calendar.component.js";
68
71
  import { SbbMessageElement } from "./message/message.component.js";
69
72
  import { SbbMenuLinkElement } from "./menu/menu-link/menu-link.component.js";
70
73
  import { SbbMenuButtonElement } from "./menu/menu-button/menu-button.component.js";
@@ -250,6 +253,9 @@ declare global {
250
253
  var SbbMessageElement: SbbMessageElement;
251
254
  var SbbMiniButtonElement: SbbMiniButtonElement;
252
255
  var SbbMiniButtonGroupElement: SbbMiniButtonGroupElement;
256
+ var SbbMiniCalendarDayElement: SbbMiniCalendarDayElement;
257
+ var SbbMiniCalendarElement: SbbMiniCalendarElement;
258
+ var SbbMiniCalendarMonthElement: SbbMiniCalendarMonthElement;
253
259
  var SbbNavigationButtonElement: SbbNavigationButtonElement;
254
260
  var SbbNavigationElement: SbbNavigationElement;
255
261
  var SbbNavigationLinkElement: SbbNavigationLinkElement;
package/index.js CHANGED
@@ -65,6 +65,9 @@ import { SbbNavigationListElement } from "./navigation/navigation-list/navigatio
65
65
  import { SbbNavigationLinkElement } from "./navigation/navigation-link/navigation-link.component.js";
66
66
  import { SbbNavigationButtonElement } from "./navigation/navigation-button/navigation-button.component.js";
67
67
  import { SbbNavigationElement } from "./navigation/navigation/navigation.component.js";
68
+ import { SbbMiniCalendarMonthElement } from "./mini-calendar/mini-calendar-month/mini-calendar-month.component.js";
69
+ import { SbbMiniCalendarDayElement } from "./mini-calendar/mini-calendar-day/mini-calendar-day.component.js";
70
+ import { SbbMiniCalendarElement } from "./mini-calendar/mini-calendar/mini-calendar.component.js";
68
71
  import { SbbMessageElement } from "./message/message.component.js";
69
72
  import { SbbMenuLinkElement } from "./menu/menu-link/menu-link.component.js";
70
73
  import { SbbMenuButtonElement } from "./menu/menu-button/menu-button.component.js";
@@ -249,6 +252,9 @@ globalThis.SbbMenuLinkElement = SbbMenuLinkElement;
249
252
  globalThis.SbbMessageElement = SbbMessageElement;
250
253
  globalThis.SbbMiniButtonElement = SbbMiniButtonElement;
251
254
  globalThis.SbbMiniButtonGroupElement = SbbMiniButtonGroupElement;
255
+ globalThis.SbbMiniCalendarDayElement = SbbMiniCalendarDayElement;
256
+ globalThis.SbbMiniCalendarElement = SbbMiniCalendarElement;
257
+ globalThis.SbbMiniCalendarMonthElement = SbbMiniCalendarMonthElement;
252
258
  globalThis.SbbNavigationButtonElement = SbbNavigationButtonElement;
253
259
  globalThis.SbbNavigationElement = SbbNavigationElement;
254
260
  globalThis.SbbNavigationLinkElement = SbbNavigationLinkElement;