@sbb-esta/lyne-elements-dev 5.0.0-next.3-dev.1779813787 → 5.0.0-next.3-dev.1779891630

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 (105) hide show
  1. package/{block-link-common-C_rUmc2u.js → block-link-common-BZZ4NhPD.js} +1 -1
  2. package/core.js +24 -25
  3. package/custom-elements.json +1412 -281
  4. package/development/{block-link-common-C0XzZIvS.js → block-link-common-DCKM3jJQ.js} +2 -2
  5. package/development/core.d.ts +0 -1
  6. package/development/core.d.ts.map +1 -1
  7. package/development/core.js +1 -2
  8. package/development/icon/icon-base.js +1 -1
  9. package/development/icon/icon.component.js +1 -1
  10. package/development/icon-base-Cq6DxOUh.js +163 -0
  11. package/development/icon.js +1 -1
  12. package/development/icon.pure.js +1 -1
  13. package/development/link/common/block-link-common.js +1 -1
  14. package/development/link.js +1 -1
  15. package/development/link.pure.js +1 -1
  16. package/development/navigation/common/navigation-action-common.d.ts.map +1 -1
  17. package/development/navigation/navigation/navigation.component.d.ts +0 -1
  18. package/development/navigation/navigation/navigation.component.d.ts.map +1 -1
  19. package/development/navigation/navigation/navigation.component.js +1 -1
  20. package/development/navigation/navigation-section/navigation-section.component.d.ts +0 -1
  21. package/development/navigation/navigation-section/navigation-section.component.d.ts.map +1 -1
  22. package/development/navigation/navigation-section/navigation-section.component.js +1 -1
  23. package/development/navigation-action-common-BdJOaItd.js +1 -1
  24. package/development/{navigation-section.component-DhMQspKb.js → navigation-section.component-34GEIPaN.js} +2 -5
  25. package/development/{navigation.component-BOBqdfXo.js → navigation.component-CqQuaq7V.js} +2 -5
  26. package/development/navigation.js +2 -2
  27. package/development/navigation.pure.js +2 -2
  28. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  29. package/development/overlay/overlay-base-element.js +3 -3
  30. package/development/popover/popover/popover.component.d.ts +54 -0
  31. package/development/popover/popover/popover.component.d.ts.map +1 -0
  32. package/development/popover/popover/popover.component.js +2 -0
  33. package/development/popover/{popover.component.d.ts → popover-base/popover-base.d.ts} +2 -59
  34. package/development/popover/popover-base/popover-base.d.ts.map +1 -0
  35. package/development/popover/popover-base/popover-base.js +2 -0
  36. package/development/popover/popover-close-button/popover-close-button.component.d.ts +21 -0
  37. package/development/popover/popover-close-button/popover-close-button.component.d.ts.map +1 -0
  38. package/development/popover/popover-close-button/popover-close-button.component.js +30 -0
  39. package/development/popover-base-BcIAVXWF.js +288 -0
  40. package/development/popover.component-CMR0eV2t.js +233 -0
  41. package/development/popover.js +6 -3
  42. package/development/popover.pure.d.ts +3 -1
  43. package/development/popover.pure.d.ts.map +1 -1
  44. package/development/popover.pure.js +4 -2
  45. package/development/tag/tag/tag.component.d.ts +1 -0
  46. package/development/tag/tag/tag.component.d.ts.map +1 -1
  47. package/development/tag/tag/tag.component.js +1 -1
  48. package/development/tag/tag-group/tag-group.component.d.ts +6 -1
  49. package/development/tag/tag-group/tag-group.component.d.ts.map +1 -1
  50. package/development/tag/tag-group/tag-group.component.js +1 -1
  51. package/development/tag-group.component-DTff1eBB.js +225 -0
  52. package/development/{tag.component-D6YowucW.js → tag.component-CDDb2fnV.js} +28 -8
  53. package/development/tag.js +2 -2
  54. package/development/tag.pure.js +2 -2
  55. package/development/toast/toast.component.d.ts.map +1 -1
  56. package/development/toast/toast.component.js +1 -1
  57. package/development/{toast.component-DowxkGr4.js → toast.component-BgGWVr4o.js} +3 -4
  58. package/development/toast.js +1 -1
  59. package/development/toast.pure.js +1 -1
  60. package/icon/icon-base.js +1 -1
  61. package/icon/icon.component.js +1 -1
  62. package/{icon-base-CK1oqnO4.js → icon-base-TSCmR5QC.js} +1 -1
  63. package/icon.js +1 -1
  64. package/icon.pure.js +1 -1
  65. package/index.d.ts +2 -1
  66. package/index.js +2 -1
  67. package/link/common/block-link-common.js +1 -1
  68. package/link.js +1 -1
  69. package/link.pure.js +1 -1
  70. package/navigation/navigation/navigation.component.js +1 -1
  71. package/navigation/navigation-section/navigation-section.component.js +1 -1
  72. package/{navigation-section.component-c4XBLFsl.js → navigation-section.component-DPgBlCf8.js} +1 -4
  73. package/{navigation.component-pRBja4z3.js → navigation.component-CY_9Q6dT.js} +1 -4
  74. package/navigation.js +2 -2
  75. package/navigation.pure.js +2 -2
  76. package/overlay/overlay-base-element.js +2 -2
  77. package/package.json +2 -2
  78. package/popover/popover/popover.component.js +2 -0
  79. package/popover/popover-base/popover-base.js +2 -0
  80. package/popover/popover-close-button/popover-close-button.component.js +20 -0
  81. package/popover-base-DlSa-ajc.js +181 -0
  82. package/popover.component-BHg4Qtqd.js +158 -0
  83. package/popover.js +5 -4
  84. package/popover.pure.js +4 -2
  85. package/tag/tag/tag.component.js +1 -1
  86. package/tag/tag-group/tag-group.component.js +1 -1
  87. package/{tag-group.component-ByRxy8UG.js → tag-group.component-CJwbkP70.js} +38 -23
  88. package/{tag.component-BrKoQeIW.js → tag.component-r8diGGP-.js} +14 -5
  89. package/tag.js +2 -2
  90. package/tag.pure.js +2 -2
  91. package/toast/toast.component.js +1 -1
  92. package/{toast.component-Lbh5sa_U.js → toast.component-Dlr0Koxu.js} +22 -23
  93. package/toast.js +1 -1
  94. package/toast.pure.js +1 -1
  95. package/core/eventing/composed-path-has-attribute.js +0 -7
  96. package/development/core/eventing/composed-path-has-attribute.d.ts +0 -10
  97. package/development/core/eventing/composed-path-has-attribute.d.ts.map +0 -1
  98. package/development/core/eventing/composed-path-has-attribute.js +0 -19
  99. package/development/icon-base-Cz7F4MJ9.js +0 -163
  100. package/development/popover/popover.component.d.ts.map +0 -1
  101. package/development/popover/popover.component.js +0 -2
  102. package/development/popover.component-DtIhw37L.js +0 -578
  103. package/development/tag-group.component-jSgluqL-.js +0 -194
  104. package/popover/popover.component.js +0 -2
  105. package/popover.component-DrLx8J07.js +0 -385
@@ -0,0 +1,233 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { html, isServer, unsafeCSS } from "lit";
3
+ import { property, state } from "lit/decorators.js";
4
+ import { SbbMediaQueryPointerCoarse, forceType, isFakeMousedownFromScreenReader, readConfig, sbbInputModalityDetector, scrollbarStyles, ɵstateController } from "./core.js";
5
+ import { SbbPopoverBaseElement } from "./popover/popover-base/popover-base.js";
6
+ //#region src/elements/popover/popover/popover.scss?inline
7
+ var popover_default = ":host {\n --_sbb-popover-half-padding: calc(0.5 * var(--sbb-popover-padding));\n position: relative;\n}\n\n:host(:is(:state(has-close-button),[state--has-close-button])) {\n --_sbb-popover-close-button-min-height: calc(\n var(--sbb-button-min-height-size-s) + 2 * var(--sbb-popover-padding)\n );\n --_sbb-popover-close-button-min-width: calc(\n var(--_sbb-popover-close-button-min-height) - var(--_sbb-popover-half-padding)\n );\n}\n\n.sbb-popover__content {\n padding-block: var(--_sbb-popover-half-padding);\n padding-inline: var(--_sbb-popover-half-padding) var(--_sbb-popover-close-button-min-width, var(--_sbb-popover-half-padding));\n min-height: var(--_sbb-popover-close-button-min-height);\n}\n\n.sbb-popover__scrollable-content {\n display: block;\n padding-inline: var(--_sbb-popover-half-padding);\n padding-block: var(--_sbb-popover-half-padding);\n max-height: calc(var(--_sbb-popover-max-height) - var(--sbb-spacing-fixed-1x));\n overflow: auto;\n}\n\n::slotted(sbb-popover-close-button) {\n position: absolute;\n inset: var(--sbb-popover-padding) var(--sbb-popover-padding) auto auto;\n}";
8
+ //#endregion
9
+ //#region src/elements/popover/popover/popover.component.ts
10
+ var pointerCoarse = isServer ? false : matchMedia(SbbMediaQueryPointerCoarse).matches;
11
+ /**
12
+ * It displays contextual information within a popover.
13
+ *
14
+ * @slot - Use the unnamed slot to add the `sbb-popover-close-button` and content into the popover.
15
+ * @cssprop [--sbb-popover-z-index=var(--sbb-overlay-default-z-index)] - To specify a custom stack order,
16
+ * the `z-index` can be overridden by defining this CSS variable. The default `z-index` of the
17
+ * component is set to `var(--sbb-overlay-default-z-index)` with a value of `1000`.
18
+ */
19
+ var SbbPopoverElement = (() => {
20
+ let _classSuper = SbbPopoverBaseElement;
21
+ let _instanceExtraInitializers = [];
22
+ let _hoverTrigger_decorators;
23
+ let _hoverTrigger_initializers = [];
24
+ let _hoverTrigger_extraInitializers = [];
25
+ let _set_openDelay_decorators;
26
+ let _set_closeDelay_decorators;
27
+ let __hoverTrigger_decorators;
28
+ let __hoverTrigger_initializers = [];
29
+ let __hoverTrigger_extraInitializers = [];
30
+ return class SbbPopoverElement extends _classSuper {
31
+ constructor() {
32
+ super(...arguments);
33
+ this.#hoverTrigger_accessor_storage = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _hoverTrigger_initializers, false));
34
+ this._openDelay = __runInitializers(this, _hoverTrigger_extraInitializers);
35
+ this.#_hoverTrigger_accessor_storage = __runInitializers(this, __hoverTrigger_initializers, false);
36
+ this._openTimeout = __runInitializers(this, __hoverTrigger_extraInitializers);
37
+ this._overlayAbortController = null;
38
+ this._onTriggerMouseEnter = () => {
39
+ if (this.state === "closed" || this.state === "closing") this._openTimeout = setTimeout(() => {
40
+ sbbInputModalityDetector.reset();
41
+ this.open();
42
+ }, this.openDelay);
43
+ else clearTimeout(this.closeTimeout);
44
+ };
45
+ this._onTriggerMouseLeave = () => {
46
+ if (this.state === "opened" || this.state === "opening") this.closeTimeout = setTimeout(() => this.close(), this.closeDelay);
47
+ else clearTimeout(this._openTimeout);
48
+ };
49
+ this._onOverlayMouseEnter = () => {
50
+ if (this.state !== "opening") clearTimeout(this.closeTimeout);
51
+ };
52
+ this._onOverlayMouseLeave = () => {
53
+ if (this.state !== "opening") this.closeTimeout = setTimeout(() => this.close(), this.closeDelay);
54
+ };
55
+ }
56
+ static {
57
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
58
+ _hoverTrigger_decorators = [forceType(), property({
59
+ attribute: "hover-trigger",
60
+ type: Boolean
61
+ })];
62
+ _set_openDelay_decorators = [property({
63
+ attribute: "open-delay",
64
+ type: Number
65
+ })];
66
+ _set_closeDelay_decorators = [property({
67
+ attribute: "close-delay",
68
+ type: Number
69
+ })];
70
+ __hoverTrigger_decorators = [state()];
71
+ __esDecorate(this, null, _hoverTrigger_decorators, {
72
+ kind: "accessor",
73
+ name: "hoverTrigger",
74
+ static: false,
75
+ private: false,
76
+ access: {
77
+ has: (obj) => "hoverTrigger" in obj,
78
+ get: (obj) => obj.hoverTrigger,
79
+ set: (obj, value) => {
80
+ obj.hoverTrigger = value;
81
+ }
82
+ },
83
+ metadata: _metadata
84
+ }, _hoverTrigger_initializers, _hoverTrigger_extraInitializers);
85
+ __esDecorate(this, null, _set_openDelay_decorators, {
86
+ kind: "setter",
87
+ name: "openDelay",
88
+ static: false,
89
+ private: false,
90
+ access: {
91
+ has: (obj) => "openDelay" in obj,
92
+ set: (obj, value) => {
93
+ obj.openDelay = value;
94
+ }
95
+ },
96
+ metadata: _metadata
97
+ }, null, _instanceExtraInitializers);
98
+ __esDecorate(this, null, _set_closeDelay_decorators, {
99
+ kind: "setter",
100
+ name: "closeDelay",
101
+ static: false,
102
+ private: false,
103
+ access: {
104
+ has: (obj) => "closeDelay" in obj,
105
+ set: (obj, value) => {
106
+ obj.closeDelay = value;
107
+ }
108
+ },
109
+ metadata: _metadata
110
+ }, null, _instanceExtraInitializers);
111
+ __esDecorate(this, null, __hoverTrigger_decorators, {
112
+ kind: "accessor",
113
+ name: "_hoverTrigger",
114
+ static: false,
115
+ private: false,
116
+ access: {
117
+ has: (obj) => "_hoverTrigger" in obj,
118
+ get: (obj) => obj._hoverTrigger,
119
+ set: (obj, value) => {
120
+ obj._hoverTrigger = value;
121
+ }
122
+ },
123
+ metadata: _metadata
124
+ }, __hoverTrigger_initializers, __hoverTrigger_extraInitializers);
125
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, {
126
+ enumerable: true,
127
+ configurable: true,
128
+ writable: true,
129
+ value: _metadata
130
+ });
131
+ }
132
+ static {
133
+ this.elementName = "sbb-popover";
134
+ }
135
+ static {
136
+ this.styles = [scrollbarStyles, unsafeCSS(popover_default)];
137
+ }
138
+ #hoverTrigger_accessor_storage;
139
+ /** Whether the popover should be triggered on hover. */
140
+ get hoverTrigger() {
141
+ return this.#hoverTrigger_accessor_storage;
142
+ }
143
+ set hoverTrigger(value) {
144
+ this.#hoverTrigger_accessor_storage = value;
145
+ }
146
+ /**
147
+ * Open the popover after a given delay in milliseconds.
148
+ * Global configuration is used as default, if not set.
149
+ *
150
+ * @default 0
151
+ */
152
+ set openDelay(value) {
153
+ this._openDelay = +value;
154
+ }
155
+ get openDelay() {
156
+ return this._openDelay ?? readConfig().popover?.openDelay ?? 0;
157
+ }
158
+ /**
159
+ * Close the popover after a given delay in milliseconds.
160
+ * Global configuration is used as default, if not set.
161
+ *
162
+ * @default 0
163
+ */
164
+ set closeDelay(value) {
165
+ this._closeDelay = +value;
166
+ }
167
+ get closeDelay() {
168
+ return this._closeDelay ?? readConfig().popover?.closeDelay ?? 0;
169
+ }
170
+ #_hoverTrigger_accessor_storage;
171
+ get _hoverTrigger() {
172
+ return this.#_hoverTrigger_accessor_storage;
173
+ }
174
+ set _hoverTrigger(value) {
175
+ this.#_hoverTrigger_accessor_storage = value;
176
+ }
177
+ configureTrigger(oldTrigger) {
178
+ const hoverTrigger = this.hoverTrigger && !pointerCoarse;
179
+ if (this.trigger === oldTrigger && hoverTrigger === this._hoverTrigger) return;
180
+ if (this._hoverTrigger !== hoverTrigger) {
181
+ this._hoverTrigger = hoverTrigger;
182
+ this.toggleState("hover-trigger", this._hoverTrigger);
183
+ this._registerOverlayListeners();
184
+ }
185
+ super.configureTrigger(oldTrigger);
186
+ }
187
+ _registerOverlayListeners() {
188
+ this._overlayAbortController?.abort();
189
+ if (this._hoverTrigger) {
190
+ this._overlayAbortController = new AbortController();
191
+ this.overlay?.addEventListener("mouseenter", () => this._onOverlayMouseEnter(), { signal: this._overlayAbortController.signal });
192
+ this.overlay?.addEventListener("mouseleave", () => this._onOverlayMouseLeave(), { signal: this._overlayAbortController.signal });
193
+ }
194
+ }
195
+ registerTriggerListeners(signal) {
196
+ if (this._hoverTrigger && this.trigger) {
197
+ this.trigger.addEventListener("mouseenter", this._onTriggerMouseEnter, { signal });
198
+ this.trigger.addEventListener("mouseleave", this._onTriggerMouseLeave, { signal });
199
+ this.trigger.addEventListener("keydown", (evt) => {
200
+ if (evt.code === "Space" || evt.code === "Enter") this.open();
201
+ }, { signal });
202
+ this.trigger.addEventListener("mousedown", (evt) => {
203
+ if (isFakeMousedownFromScreenReader(evt)) this.open();
204
+ }, { signal });
205
+ } else super.registerTriggerListeners(signal);
206
+ }
207
+ firstUpdated(changedProperties) {
208
+ super.firstUpdated(changedProperties);
209
+ this._registerOverlayListeners();
210
+ }
211
+ open() {
212
+ super.open();
213
+ if (this.hoverTrigger && this.trigger) ɵstateController(this.trigger).add("force-hover");
214
+ }
215
+ close() {
216
+ super.close();
217
+ ɵstateController(this.trigger)?.delete("force-hover");
218
+ }
219
+ renderContent() {
220
+ return html`
221
+ <span class="sbb-popover__scrollable-content sbb-scrollbar">
222
+ <slot
223
+ @slotchange=${() => this.toggleState("has-close-button", !!this.querySelector("sbb-popover-close-button"))}
224
+ ></slot>
225
+ </span>
226
+ `;
227
+ }
228
+ };
229
+ })();
230
+ //#endregion
231
+ export { SbbPopoverElement as t };
232
+
233
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQtQ01SMGVWMnQuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3BvcG92ZXIvcG9wb3Zlci9wb3BvdmVyLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3BvcG92ZXIvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdCB7XG4gIC0tX3NiYi1wb3BvdmVyLWhhbGYtcGFkZGluZzogY2FsYygwLjUgKiB2YXIoLS1zYmItcG9wb3Zlci1wYWRkaW5nKSk7XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG46aG9zdCg6c3RhdGUoaGFzLWNsb3NlLWJ1dHRvbikpIHtcbiAgLS1fc2JiLXBvcG92ZXItY2xvc2UtYnV0dG9uLW1pbi1oZWlnaHQ6IGNhbGMoXG4gICAgdmFyKC0tc2JiLWJ1dHRvbi1taW4taGVpZ2h0LXNpemUtcykgKyAyICogdmFyKC0tc2JiLXBvcG92ZXItcGFkZGluZylcbiAgKTtcbiAgLS1fc2JiLXBvcG92ZXItY2xvc2UtYnV0dG9uLW1pbi13aWR0aDogY2FsYyhcbiAgICB2YXIoLS1fc2JiLXBvcG92ZXItY2xvc2UtYnV0dG9uLW1pbi1oZWlnaHQpIC0gdmFyKC0tX3NiYi1wb3BvdmVyLWhhbGYtcGFkZGluZylcbiAgKTtcbn1cblxuLnNiYi1wb3BvdmVyX19jb250ZW50IHtcbiAgLy8gV2UgdXNlIGhhbGYgb2YgdGhlIHBhZGRpbmcgb24gdGhlIGNvbnRhaW5lciBhbmQgaGFsZiBvbiB0aGUgc2Nyb2xsIGNvbnRleHQuXG4gIC8vIFdpdGggdGhhdCwgdGhlIGZvY3VzIG91dGxpbmUgaXMgbm90IGN1dCBhbmQgdGhlIHNjcm9sbGFibGUgY29udGV4dCBkb2Vzbid0IHRvdWNoIHRoZSBib3JkZXJzLlxuICBwYWRkaW5nLWJsb2NrOiB2YXIoLS1fc2JiLXBvcG92ZXItaGFsZi1wYWRkaW5nKTtcbiAgcGFkZGluZy1pbmxpbmU6IHZhcigtLV9zYmItcG9wb3Zlci1oYWxmLXBhZGRpbmcpXG4gICAgdmFyKC0tX3NiYi1wb3BvdmVyLWNsb3NlLWJ1dHRvbi1taW4td2lkdGgsIHZhcigtLV9zYmItcG9wb3Zlci1oYWxmLXBhZGRpbmcpKTtcbiAgbWluLWhlaWdodDogdmFyKC0tX3NiYi1wb3BvdmVyLWNsb3NlLWJ1dHRvbi1taW4taGVpZ2h0KTtcbn1cblxuLnNiYi1wb3BvdmVyX19zY3JvbGxhYmxlLWNvbnRlbnQge1xuICBkaXNwbGF5OiBibG9jaztcblxuICAvLyBXZSB1c2UgaGFsZiBvZiB0aGUgcGFkZGluZyBvbiB0aGUgY29udGFpbmVyIGFuZCBoYWxmIG9uIHRoZSBzY3JvbGwgY29udGV4dC5cbiAgLy8gV2l0aCB0aGF0LCB0aGUgZm9jdXMgb3V0bGluZSBpcyBub3QgY3V0IGFuZCB0aGUgc2Nyb2xsYWJsZSBjb250ZXh0IGRvZXNuJ3QgdG91Y2ggdGhlIGJvcmRlcnMuXG4gIHBhZGRpbmctaW5saW5lOiB2YXIoLS1fc2JiLXBvcG92ZXItaGFsZi1wYWRkaW5nKTtcbiAgcGFkZGluZy1ibG9jazogdmFyKC0tX3NiYi1wb3BvdmVyLWhhbGYtcGFkZGluZyk7XG4gIG1heC1oZWlnaHQ6IGNhbGModmFyKC0tX3NiYi1wb3BvdmVyLW1heC1oZWlnaHQpIC0gdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtMXgpKTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbjo6c2xvdHRlZChzYmItcG9wb3Zlci1jbG9zZS1idXR0b24pIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogdmFyKC0tc2JiLXBvcG92ZXItcGFkZGluZykgdmFyKC0tc2JiLXBvcG92ZXItcGFkZGluZykgYXV0byBhdXRvO1xufVxuIiwiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgaXNTZXJ2ZXIsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG4gIHVuc2FmZUNTUyxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHtcbiAgZm9yY2VUeXBlLFxuICBpc0Zha2VNb3VzZWRvd25Gcm9tU2NyZWVuUmVhZGVyLFxuICByZWFkQ29uZmlnLFxuICBzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IsXG4gIFNiYk1lZGlhUXVlcnlQb2ludGVyQ29hcnNlLFxuICBzY3JvbGxiYXJTdHlsZXMsXG4gIMm1c3RhdGVDb250cm9sbGVyLFxufSBmcm9tICcuLi8uLi9jb3JlLnRzJztcbmltcG9ydCB7IFNiYlBvcG92ZXJCYXNlRWxlbWVudCB9IGZyb20gJy4uL3BvcG92ZXItYmFzZS9wb3BvdmVyLWJhc2UudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9wb3BvdmVyLnNjc3M/aW5saW5lJztcblxuY29uc3QgcG9pbnRlckNvYXJzZSA9IGlzU2VydmVyID8gZmFsc2UgOiBtYXRjaE1lZGlhKFNiYk1lZGlhUXVlcnlQb2ludGVyQ29hcnNlKS5tYXRjaGVzO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGNvbnRleHR1YWwgaW5mb3JtYXRpb24gd2l0aGluIGEgcG9wb3Zlci5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCB0aGUgYHNiYi1wb3BvdmVyLWNsb3NlLWJ1dHRvbmAgYW5kIGNvbnRlbnQgaW50byB0aGUgcG9wb3Zlci5cbiAqIEBjc3Nwcm9wIFstLXNiYi1wb3BvdmVyLXotaW5kZXg9dmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KV0gLSBUbyBzcGVjaWZ5IGEgY3VzdG9tIHN0YWNrIG9yZGVyLFxuICogdGhlIGB6LWluZGV4YCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyB0aGlzIENTUyB2YXJpYWJsZS4gVGhlIGRlZmF1bHQgYHotaW5kZXhgIG9mIHRoZVxuICogY29tcG9uZW50IGlzIHNldCB0byBgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KWAgd2l0aCBhIHZhbHVlIG9mIGAxMDAwYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYlBvcG92ZXJFbGVtZW50IGV4dGVuZHMgU2JiUG9wb3ZlckJhc2VFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBlbGVtZW50TmFtZTogc3RyaW5nID0gJ3NiYi1wb3BvdmVyJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW3Njcm9sbGJhclN0eWxlcywgdW5zYWZlQ1NTKHN0eWxlKV07XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHBvcG92ZXIgc2hvdWxkIGJlIHRyaWdnZXJlZCBvbiBob3Zlci4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2hvdmVyLXRyaWdnZXInLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBob3ZlclRyaWdnZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogT3BlbiB0aGUgcG9wb3ZlciBhZnRlciBhIGdpdmVuIGRlbGF5IGluIG1pbGxpc2Vjb25kcy5cbiAgICogR2xvYmFsIGNvbmZpZ3VyYXRpb24gaXMgdXNlZCBhcyBkZWZhdWx0LCBpZiBub3Qgc2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdvcGVuLWRlbGF5JywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBzZXQgb3BlbkRlbGF5KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9vcGVuRGVsYXkgPSArdmFsdWU7XG4gIH1cbiAgcHVibGljIGdldCBvcGVuRGVsYXkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fb3BlbkRlbGF5ID8/IHJlYWRDb25maWcoKS5wb3BvdmVyPy5vcGVuRGVsYXkgPz8gMDtcbiAgfVxuICBwcml2YXRlIF9vcGVuRGVsYXk/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENsb3NlIHRoZSBwb3BvdmVyIGFmdGVyIGEgZ2l2ZW4gZGVsYXkgaW4gbWlsbGlzZWNvbmRzLlxuICAgKiBHbG9iYWwgY29uZmlndXJhdGlvbiBpcyB1c2VkIGFzIGRlZmF1bHQsIGlmIG5vdCBzZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2Nsb3NlLWRlbGF5JywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBzZXQgY2xvc2VEZWxheSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fY2xvc2VEZWxheSA9ICt2YWx1ZTtcbiAgfVxuICBwdWJsaWMgZ2V0IGNsb3NlRGVsYXkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY2xvc2VEZWxheSA/PyByZWFkQ29uZmlnKCkucG9wb3Zlcj8uY2xvc2VEZWxheSA/PyAwO1xuICB9XG4gIHByaXZhdGUgX2Nsb3NlRGVsYXk/OiBudW1iZXI7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfaG92ZXJUcmlnZ2VyID0gZmFsc2U7XG4gIHByaXZhdGUgX29wZW5UaW1lb3V0PzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgX292ZXJsYXlBYm9ydENvbnRyb2xsZXI6IEFib3J0Q29udHJvbGxlciB8IG51bGwgPSBudWxsO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBjb25maWd1cmVUcmlnZ2VyKG9sZFRyaWdnZXI6IEhUTUxFbGVtZW50IHwgbnVsbCk6IHZvaWQge1xuICAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIHRyaWdnZXIgY2FuIGJlIGhvdmVyZWQuIFNvbWUgZGV2aWNlcyBtaWdodCBpbnRlcnByZXQgdGhlIG1lZGlhIHF1ZXJ5IChob3ZlcjogaG92ZXIpIGRpZmZlcmVudGx5LFxuICAgIC8vIGFuZCBub3QgcmVzcGVjdCB0aGUgZmFsbGJhY2sgbWVjaGFuaXNtIG9uIHRoZSBjbGljay4gVGhlcmVmb3JlLCB0aGUgZm9sbG93aW5nIGlzIHByZWZlcnJlZCB0byBpZGVudGlmeVxuICAgIC8vIGFsbCBub24tdG91Y2hzY3JlZW4gZGV2aWNlcy5cbiAgICBjb25zdCBob3ZlclRyaWdnZXIgPSB0aGlzLmhvdmVyVHJpZ2dlciAmJiAhcG9pbnRlckNvYXJzZTtcblxuICAgIGlmICh0aGlzLnRyaWdnZXIgPT09IG9sZFRyaWdnZXIgJiYgaG92ZXJUcmlnZ2VyID09PSB0aGlzLl9ob3ZlclRyaWdnZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faG92ZXJUcmlnZ2VyICE9PSBob3ZlclRyaWdnZXIpIHtcbiAgICAgIHRoaXMuX2hvdmVyVHJpZ2dlciA9IGhvdmVyVHJpZ2dlcjtcbiAgICAgIHRoaXMudG9nZ2xlU3RhdGUoJ2hvdmVyLXRyaWdnZXInLCB0aGlzLl9ob3ZlclRyaWdnZXIpO1xuICAgICAgdGhpcy5fcmVnaXN0ZXJPdmVybGF5TGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgc3VwZXIuY29uZmlndXJlVHJpZ2dlcihvbGRUcmlnZ2VyKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlZ2lzdGVyT3ZlcmxheUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICB0aGlzLl9vdmVybGF5QWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuXG4gICAgaWYgKHRoaXMuX2hvdmVyVHJpZ2dlcikge1xuICAgICAgdGhpcy5fb3ZlcmxheUFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgIHRoaXMub3ZlcmxheT8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsICgpID0+IHRoaXMuX29uT3ZlcmxheU1vdXNlRW50ZXIoKSwge1xuICAgICAgICBzaWduYWw6IHRoaXMuX292ZXJsYXlBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSk7XG4gICAgICB0aGlzLm92ZXJsYXk/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoKSA9PiB0aGlzLl9vbk92ZXJsYXlNb3VzZUxlYXZlKCksIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9vdmVybGF5QWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZWdpc3RlclRyaWdnZXJMaXN0ZW5lcnMoc2lnbmFsOiBBYm9ydFNpZ25hbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9ob3ZlclRyaWdnZXIgJiYgdGhpcy50cmlnZ2VyKSB7XG4gICAgICB0aGlzLnRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIHRoaXMuX29uVHJpZ2dlck1vdXNlRW50ZXIsIHsgc2lnbmFsIH0pO1xuICAgICAgdGhpcy50cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCB0aGlzLl9vblRyaWdnZXJNb3VzZUxlYXZlLCB7IHNpZ25hbCB9KTtcbiAgICAgIHRoaXMudHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAna2V5ZG93bicsXG4gICAgICAgIChldnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAoZXZ0LmNvZGUgPT09ICdTcGFjZScgfHwgZXZ0LmNvZGUgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgeyBzaWduYWwgfSxcbiAgICAgICk7XG4gICAgICB0aGlzLnRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ21vdXNlZG93bicsXG4gICAgICAgIChldnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBXaXRob3V0IHRoaXMgY2hlY2ssIE5WREEgY2FuJ3Qgb3BlbiB0aGUgcG9wb3ZlciBvbiBrZXlib2FyZCBpbnRlcmFjdGlvbi5cbiAgICAgICAgICBpZiAoaXNGYWtlTW91c2Vkb3duRnJvbVNjcmVlblJlYWRlcihldnQpKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHsgc2lnbmFsIH0sXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdXBlci5yZWdpc3RlclRyaWdnZXJMaXN0ZW5lcnMoc2lnbmFsKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICB0aGlzLl9yZWdpc3Rlck92ZXJsYXlMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvcGVuKCk6IHZvaWQge1xuICAgIHN1cGVyLm9wZW4oKTtcblxuICAgIGlmICh0aGlzLmhvdmVyVHJpZ2dlciAmJiB0aGlzLnRyaWdnZXIpIHtcbiAgICAgIMm1c3RhdGVDb250cm9sbGVyKHRoaXMudHJpZ2dlcikuYWRkKCdmb3JjZS1ob3ZlcicpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjbG9zZSgpOiB2b2lkIHtcbiAgICBzdXBlci5jbG9zZSgpO1xuXG4gICAgybVzdGF0ZUNvbnRyb2xsZXIodGhpcy50cmlnZ2VyKT8uZGVsZXRlKCdmb3JjZS1ob3ZlcicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25UcmlnZ2VyTW91c2VFbnRlciA9ICgpOiB2b2lkID0+IHtcbiAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ2Nsb3NlZCcgfHwgdGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnKSB7XG4gICAgICB0aGlzLl9vcGVuVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAvLyBJZiB0aGUgdHJpZ2dlciBpcyBmb2N1c2VkIGJ5IGtleWJvYXJkIGFuZCBob3ZlcmVkIHdpdGggdGhlIG1vdXNlLCB0aGUgb3V0bGluZSB3b3VsZCBiZSB2aXNpYmxlLlxuICAgICAgICAvLyBTbyB3ZSByZXNldCB0aGUgaW5wdXQgbW9kYWxpdHkgdG8gaGlkZSB0aGUgb3V0bGluZS5cbiAgICAgICAgc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yLnJlc2V0KCk7XG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgfSwgdGhpcy5vcGVuRGVsYXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5jbG9zZVRpbWVvdXQpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIF9vblRyaWdnZXJNb3VzZUxlYXZlID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmICh0aGlzLnN0YXRlID09PSAnb3BlbmVkJyB8fCB0aGlzLnN0YXRlID09PSAnb3BlbmluZycpIHtcbiAgICAgIHRoaXMuY2xvc2VUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLmNsb3NlKCksIHRoaXMuY2xvc2VEZWxheSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9vcGVuVGltZW91dCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgX29uT3ZlcmxheU1vdXNlRW50ZXIgPSAoKTogdm9pZCA9PiB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvcGVuaW5nJykge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2xvc2VUaW1lb3V0KTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfb25PdmVybGF5TW91c2VMZWF2ZSA9ICgpOiB2b2lkID0+IHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ29wZW5pbmcnKSB7XG4gICAgICB0aGlzLmNsb3NlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbG9zZSgpLCB0aGlzLmNsb3NlRGVsYXkpO1xuICAgIH1cbiAgfTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyQ29udGVudCgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c3BhbiBjbGFzcz1cInNiYi1wb3BvdmVyX19zY3JvbGxhYmxlLWNvbnRlbnQgc2JiLXNjcm9sbGJhclwiPlxuICAgICAgICA8c2xvdFxuICAgICAgICAgIEBzbG90Y2hhbmdlPSR7KCkgPT5cbiAgICAgICAgICAgIHRoaXMudG9nZ2xlU3RhdGUoJ2hhcy1jbG9zZS1idXR0b24nLCAhIXRoaXMucXVlcnlTZWxlY3Rvcignc2JiLXBvcG92ZXItY2xvc2UtYnV0dG9uJykpfVxuICAgICAgICA+PC9zbG90PlxuICAgICAgPC9zcGFuPlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1wb3BvdmVyJzogU2JiUG9wb3ZlckVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FDdUJBLElBQU0sZ0JBQWdCLFdBQVcsUUFBUSxXQUFXLDBCQUEwQixFQUFFOzs7Ozs7Ozs7SUFVbkUsMkJBQWlCO21CQUFTOzs7Ozs7Ozs7O2NBQTFCLDBCQUEwQixZQUFxQjs7O0dBTzFDLEtBQUEsa0NBUEwsa0JBQUEsTUFBQSwwQkFBQSxHQUFpQixrQkFBQSxNQUFBLDRCQU9ZLEtBQUs7R0FlckMsS0FBQSxhQUFVLGtCQUFBLE1BQUEsK0JBQUE7R0FpQlEsS0FBQSxrQ0FBQSxrQkFBQSxNQUFBLDZCQUFnQixLQUFLO0dBQ3ZDLEtBQUEsZUFBWSxrQkFBQSxNQUFBLGdDQUFBO0dBQ1osS0FBQSwwQkFBa0Q7R0FtRmxELEtBQUEsNkJBQWtDO0lBQ3hDLElBQUksS0FBSyxVQUFVLFlBQVksS0FBSyxVQUFVLFdBQzVDLEtBQUssZUFBZSxpQkFBZ0I7S0FHbEMseUJBQXlCLE1BQUs7S0FDOUIsS0FBSyxLQUFJO0lBQ1gsR0FBRyxLQUFLLFNBQVM7U0FFakIsYUFBYSxLQUFLLFlBQVk7R0FFbEM7R0FFUSxLQUFBLDZCQUFr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
@@ -1,9 +1,12 @@
1
- import { n as SbbPopoverCloseEvent, r as SbbPopoverElement, t as SbbPopoverBaseElement } from "./popover.component-DtIhw37L.js";
1
+ import { n as SbbPopoverCloseEvent, t as SbbPopoverBaseElement } from "./popover-base-BcIAVXWF.js";
2
+ import { t as SbbPopoverElement } from "./popover.component-CMR0eV2t.js";
3
+ import { SbbPopoverCloseButtonElement } from "./popover/popover-close-button/popover-close-button.component.js";
2
4
  import "./popover.pure.js";
3
5
  //#region src/elements/popover.ts
4
6
  /** @entrypoint */
5
7
  SbbPopoverElement.define();
8
+ SbbPopoverCloseButtonElement.define();
6
9
  //#endregion
7
- export { SbbPopoverBaseElement, SbbPopoverCloseEvent, SbbPopoverElement };
10
+ export { SbbPopoverBaseElement, SbbPopoverCloseButtonElement, SbbPopoverCloseEvent, SbbPopoverElement };
8
11
 
9
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvcG9wb3Zlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGVudHJ5cG9pbnQgKi9cbmltcG9ydCB7IFNiYlBvcG92ZXJFbGVtZW50IH0gZnJvbSAnLi9wb3BvdmVyLnB1cmUudHMnO1xuXG5leHBvcnQgKiBmcm9tICcuL3BvcG92ZXIucHVyZS50cyc7XG5cblNiYlBvcG92ZXJFbGVtZW50LmRlZmluZSgpO1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBS0Esa0JBQWtCLE9BQU0ifQ==
12
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvcG9wb3Zlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGVudHJ5cG9pbnQgKi9cbmltcG9ydCB7IFNiYlBvcG92ZXJDbG9zZUJ1dHRvbkVsZW1lbnQsIFNiYlBvcG92ZXJFbGVtZW50IH0gZnJvbSAnLi9wb3BvdmVyLnB1cmUudHMnO1xuXG5leHBvcnQgKiBmcm9tICcuL3BvcG92ZXIucHVyZS50cyc7XG5cblNiYlBvcG92ZXJFbGVtZW50LmRlZmluZSgpO1xuU2JiUG9wb3ZlckNsb3NlQnV0dG9uRWxlbWVudC5kZWZpbmUoKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBS0Esa0JBQWtCLE9BQU07QUFDeEIsNkJBQTZCLE9BQU0ifQ==
@@ -1,3 +1,5 @@
1
1
  /** @entrypoint */
2
- export * from './popover/popover.component.ts';
2
+ export * from './popover/popover-base/popover-base.ts';
3
+ export * from './popover/popover/popover.component.ts';
4
+ export * from './popover/popover-close-button/popover-close-button.component.ts';
3
5
  //# sourceMappingURL=popover.pure.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"popover.pure.d.ts","sourceRoot":"","sources":["../../../src/elements/popover.pure.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,cAAc,gCAAgC,CAAC"}
1
+ {"version":3,"file":"popover.pure.d.ts","sourceRoot":"","sources":["../../../src/elements/popover.pure.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,kEAAkE,CAAC"}
@@ -1,2 +1,4 @@
1
- import { n as SbbPopoverCloseEvent, r as SbbPopoverElement, t as SbbPopoverBaseElement } from "./popover.component-DtIhw37L.js";
2
- export { SbbPopoverBaseElement, SbbPopoverCloseEvent, SbbPopoverElement };
1
+ import { n as SbbPopoverCloseEvent, t as SbbPopoverBaseElement } from "./popover-base-BcIAVXWF.js";
2
+ import { t as SbbPopoverElement } from "./popover.component-CMR0eV2t.js";
3
+ import { SbbPopoverCloseButtonElement } from "./popover/popover-close-button/popover-close-button.component.js";
4
+ export { SbbPopoverBaseElement, SbbPopoverCloseButtonElement, SbbPopoverCloseEvent, SbbPopoverElement };
@@ -30,6 +30,7 @@ export declare class SbbTagElement<T = string> extends SbbTagElement_base {
30
30
  accessor size: 's' | 'm' | null;
31
31
  constructor();
32
32
  private _tagGroup;
33
+ private _updateAriaRole;
33
34
  protected isDisabledExternally(): boolean;
34
35
  /** Method triggered on button click. Inverts the checked value and emits events. */
35
36
  private _handleClick;
@@ -1 +1 @@
1
- {"version":3,"file":"tag.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/tag/tag/tag.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,KAAK,CAAC;AAGb,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAErB,wBAAwB,EAGzB,MAAM,eAAe,CAAC;;AAMvB;;;;;;;GAOG;AACH,qBAAa,aAAa,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,kBAE9C;IACC,gBAAgC,WAAW,EAAE,MAAM,CAAa;IAChE,OAAuB,MAAM,EAAE,cAAc,CAAsB;IACnE,gBAAuB,MAAM;;;;MAIlB;IAEX,iCAAiC;IACjC,SACgB,KAAK,EAAE,CAAC,GAAG,IAAI,CAAQ;IAEvC,uCAAuC;IACvC,SAEgB,MAAM,EAAE,MAAM,CAAM;IAEpC,kCAAkC;IAClC,SAEgB,OAAO,EAAE,OAAO,CAAS;IAEzC;;;OAGG;IACH,SACgB,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAQ;;IAc9C,OAAO,CAAC,SAAS;cAIE,oBAAoB,IAAI,OAAO;IAIlD,oFAAoF;IACpF,OAAO,CAAC,YAAY;cAkCD,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAe5E;;OAEG;IACa,iBAAiB,IAAI,IAAI;IAIzC;;OAEG;IACa,wBAAwB,CACtC,KAAK,EAAE,gBAAgB,GAAG,IAAI,EAC9B,OAAO,EAAE,iBAAiB,GACzB,IAAI;cAMY,eAAe,IAAI,IAAI;cAQvB,SAAS,IAAI,gBAAgB;cAI7B,cAAc,IAAI,cAAc;CAWpD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,SAAS,EAAE,aAAa,CAAC;KAC1B;CACF"}
1
+ {"version":3,"file":"tag.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/tag/tag/tag.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,KAAK,CAAC;AAGb,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAErB,wBAAwB,EAGzB,MAAM,eAAe,CAAC;;AAMvB;;;;;;;GAOG;AACH,qBAAa,aAAa,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,kBAE9C;IACC,gBAAgC,WAAW,EAAE,MAAM,CAAa;IAChE,OAAuB,MAAM,EAAE,cAAc,CAAsB;IACnE,gBAAuB,MAAM;;;;MAIlB;IAEX,iCAAiC;IACjC,SACgB,KAAK,EAAE,CAAC,GAAG,IAAI,CAAQ;IAEvC,uCAAuC;IACvC,SAEgB,MAAM,EAAE,MAAM,CAAM;IAEpC,kCAAkC;IAClC,SAEgB,OAAO,EAAE,OAAO,CAAS;IAEzC;;;OAGG;IACH,SACgB,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAQ;;IAe9C,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,eAAe;cAaJ,oBAAoB,IAAI,OAAO;IAIlD,oFAAoF;IACpF,OAAO,CAAC,YAAY;cAgCD,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAsB5E;;OAEG;IACa,iBAAiB,IAAI,IAAI;IAIzC;;OAEG;IACa,wBAAwB,CACtC,KAAK,EAAE,gBAAgB,GAAG,IAAI,EAC9B,OAAO,EAAE,iBAAiB,GACzB,IAAI;cAMY,eAAe,IAAI,IAAI;cAQvB,SAAS,IAAI,gBAAgB;cAI7B,cAAc,IAAI,cAAc;CAWpD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,SAAS,EAAE,aAAa,CAAC;KAC1B;CACF"}
@@ -1,2 +1,2 @@
1
- import { t as SbbTagElement } from "../../tag.component-D6YowucW.js";
1
+ import { t as SbbTagElement } from "../../tag.component-CDDb2fnV.js";
2
2
  export { SbbTagElement };
@@ -15,7 +15,7 @@ export declare class SbbTagGroupElement<T = string> extends SbbTagGroupElement_b
15
15
  /**
16
16
  * This will be forwarded as aria-label to the inner list.
17
17
  */
18
- accessor listAccessibilityLabel: string;
18
+ accessor accessibilityLabel: string;
19
19
  /**
20
20
  * If set multiple to false, the selection is exclusive and the value is a string (or null).
21
21
  * If set multiple to true, the selection can have multiple values and therefore value is an array.
@@ -37,7 +37,12 @@ export declare class SbbTagGroupElement<T = string> extends SbbTagGroupElement_b
37
37
  private _value;
38
38
  /** The child instances of sbb-tag as an array. */
39
39
  get tags(): SbbTagElement<T>[];
40
+ constructor();
40
41
  protected willUpdate(changedProperties: PropertyValues<WithListChildren<this>>): void;
42
+ private _enabledTags;
43
+ /** In exclusive mode, only the checked tag (or the first non-disabled tag) should be focusable. */
44
+ protected updateExclusiveTabIndex(): void;
45
+ private _handleArrowKeyDown;
41
46
  private _applyValueToTags;
42
47
  protected render(): TemplateResult;
43
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tag-group.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/tag/tag-group/tag-group.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,KAAK,CAAC;AAGb,OAAO,EAGL,UAAU,EAEV,KAAK,gBAAgB,EACtB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;;AAI7D;;;;;GAKG;AACH,qBAAa,kBAAkB,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,uBAEnD;IACC,gBAAgC,WAAW,EAAE,MAAM,CAAmB;IACtE,OAAuB,MAAM,EAAE,cAAc,CAAsB;IAEnE,mBAA4B,mBAAmB,WAAsB;IAErE;;OAEG;IACH,SAEgB,sBAAsB,EAAE,MAAM,CAAM;IAEpD;;;;;OAKG;IACH,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C;;OAEG;IACH,SAA6C,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAQ;IAEhF;;;;OAIG;IACH,IACW,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,EAM9C;IACD,IAAW,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAM1C;IACD,OAAO,CAAC,MAAM,CAAiC;IAE/C,kDAAkD;IAClD,IAAW,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAEpC;cAEkB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI;IA2B9F,OAAO,CAAC,iBAAiB;cA0BN,MAAM,IAAI,cAAc;CAQ5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,eAAe,EAAE,kBAAkB,CAAC;KACrC;CACF"}
1
+ {"version":3,"file":"tag-group.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/tag/tag-group/tag-group.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,KAAK,CAAC;AAGb,OAAO,EAKL,UAAU,EAEV,KAAK,gBAAgB,EACtB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;;AAI7D;;;;;GAKG;AACH,qBAAa,kBAAkB,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,uBAEnD;IACC,gBAAgC,WAAW,EAAE,MAAM,CAAmB;IACtE,OAAuB,MAAM,EAAE,cAAc,CAAsB;IAEnE,mBAA4B,mBAAmB,WAAsB;IAErE;;OAEG;IACH,SAEgB,kBAAkB,EAAE,MAAM,CAAM;IAEhD;;;;;OAKG;IACH,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C;;OAEG;IACH,SAA6C,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAQ;IAEhF;;;;OAIG;IACH,IACW,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,EAM9C;IACD,IAAW,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAM1C;IACD,OAAO,CAAC,MAAM,CAAiC;IAE/C,kDAAkD;IAClD,IAAW,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAEpC;;cAOkB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI;IAqC9F,OAAO,CAAC,YAAY;IAIpB,mGAAmG;IACnG,SAAS,CAAC,uBAAuB,IAAI,IAAI;IAMzC,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,iBAAiB;cA0BN,MAAM,IAAI,cAAc;CAQ5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,eAAe,EAAE,kBAAkB,CAAC;KACrC;CACF"}
@@ -1,2 +1,2 @@
1
- import { t as SbbTagGroupElement } from "../../tag-group.component-jSgluqL-.js";
1
+ import { t as SbbTagGroupElement } from "../../tag-group.component-DTff1eBB.js";
2
2
  export { SbbTagGroupElement };
@@ -0,0 +1,225 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { html, isServer, unsafeCSS } from "lit";
3
+ import { property } from "lit/decorators.js";
4
+ import { SbbDisabledMixin, SbbElement, SbbNamedSlotListMixin, forceType, getNextElementIndex, isArrowKeyPressed } from "./core.js";
5
+ //#region src/elements/tag/tag-group/tag-group.scss?inline
6
+ var tag_group_default = ":host {\n display: block;\n}\n\n.sbb-tag-group__list {\n display: flex;\n flex-wrap: wrap;\n gap: var(--sbb-spacing-fixed-3x);\n}\n\n.sbb-tag-group__list > :is(li, span) {\n display: flex;\n max-width: 100%;\n}";
7
+ //#endregion
8
+ //#region src/elements/tag/tag-group/tag-group.component.ts
9
+ /**
10
+ * It can be used as a container for one or more `sbb-tag`.
11
+ *
12
+ * @slot - Use the unnamed slot to add one or more 'sbb-tag' elements to the `sbb-tag-group`.
13
+ * @overrideType value - (T = string | (string | null)[]) | null
14
+ */
15
+ var SbbTagGroupElement = (() => {
16
+ let _classSuper = SbbDisabledMixin(SbbNamedSlotListMixin(SbbElement));
17
+ let _instanceExtraInitializers = [];
18
+ let _accessibilityLabel_decorators;
19
+ let _accessibilityLabel_initializers = [];
20
+ let _accessibilityLabel_extraInitializers = [];
21
+ let _multiple_decorators;
22
+ let _multiple_initializers = [];
23
+ let _multiple_extraInitializers = [];
24
+ let _size_decorators;
25
+ let _size_initializers = [];
26
+ let _size_extraInitializers = [];
27
+ let _set_value_decorators;
28
+ return class SbbTagGroupElement extends _classSuper {
29
+ static {
30
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
31
+ _accessibilityLabel_decorators = [forceType(), property({ attribute: "accessibility-label" })];
32
+ _multiple_decorators = [forceType(), property({ type: Boolean })];
33
+ _size_decorators = [property({ reflect: true })];
34
+ _set_value_decorators = [property()];
35
+ __esDecorate(this, null, _accessibilityLabel_decorators, {
36
+ kind: "accessor",
37
+ name: "accessibilityLabel",
38
+ static: false,
39
+ private: false,
40
+ access: {
41
+ has: (obj) => "accessibilityLabel" in obj,
42
+ get: (obj) => obj.accessibilityLabel,
43
+ set: (obj, value) => {
44
+ obj.accessibilityLabel = value;
45
+ }
46
+ },
47
+ metadata: _metadata
48
+ }, _accessibilityLabel_initializers, _accessibilityLabel_extraInitializers);
49
+ __esDecorate(this, null, _multiple_decorators, {
50
+ kind: "accessor",
51
+ name: "multiple",
52
+ static: false,
53
+ private: false,
54
+ access: {
55
+ has: (obj) => "multiple" in obj,
56
+ get: (obj) => obj.multiple,
57
+ set: (obj, value) => {
58
+ obj.multiple = value;
59
+ }
60
+ },
61
+ metadata: _metadata
62
+ }, _multiple_initializers, _multiple_extraInitializers);
63
+ __esDecorate(this, null, _size_decorators, {
64
+ kind: "accessor",
65
+ name: "size",
66
+ static: false,
67
+ private: false,
68
+ access: {
69
+ has: (obj) => "size" in obj,
70
+ get: (obj) => obj.size,
71
+ set: (obj, value) => {
72
+ obj.size = value;
73
+ }
74
+ },
75
+ metadata: _metadata
76
+ }, _size_initializers, _size_extraInitializers);
77
+ __esDecorate(this, null, _set_value_decorators, {
78
+ kind: "setter",
79
+ name: "value",
80
+ static: false,
81
+ private: false,
82
+ access: {
83
+ has: (obj) => "value" in obj,
84
+ set: (obj, value) => {
85
+ obj.value = value;
86
+ }
87
+ },
88
+ metadata: _metadata
89
+ }, null, _instanceExtraInitializers);
90
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, {
91
+ enumerable: true,
92
+ configurable: true,
93
+ writable: true,
94
+ value: _metadata
95
+ });
96
+ }
97
+ static {
98
+ this.elementName = "sbb-tag-group";
99
+ }
100
+ static {
101
+ this.styles = [unsafeCSS(tag_group_default)];
102
+ }
103
+ #accessibilityLabel_accessor_storage;
104
+ /**
105
+ * This will be forwarded as aria-label to the inner list.
106
+ */
107
+ get accessibilityLabel() {
108
+ return this.#accessibilityLabel_accessor_storage;
109
+ }
110
+ set accessibilityLabel(value) {
111
+ this.#accessibilityLabel_accessor_storage = value;
112
+ }
113
+ #multiple_accessor_storage;
114
+ /**
115
+ * If set multiple to false, the selection is exclusive and the value is a string (or null).
116
+ * If set multiple to true, the selection can have multiple values and therefore value is an array.
117
+ *
118
+ * Changing multiple during run time is not supported.
119
+ */
120
+ get multiple() {
121
+ return this.#multiple_accessor_storage;
122
+ }
123
+ set multiple(value) {
124
+ this.#multiple_accessor_storage = value;
125
+ }
126
+ #size_accessor_storage;
127
+ /**
128
+ * Tag group size, either s (lean theme default) or m (standard theme default).
129
+ */
130
+ get size() {
131
+ return this.#size_accessor_storage;
132
+ }
133
+ set size(value) {
134
+ this.#size_accessor_storage = value;
135
+ }
136
+ /**
137
+ * Value of the sbb-tag-group.
138
+ * If set multiple to false, the value is a string (or null).
139
+ * If set multiple to true, the value is an array.
140
+ */
141
+ set value(value) {
142
+ if (isServer || !this.hasUpdated) {
143
+ this._value = value;
144
+ return;
145
+ }
146
+ this._applyValueToTags(value);
147
+ }
148
+ get value() {
149
+ return isServer || !this.hasUpdated ? this._value : this.multiple ? this.tags.filter((t) => t.checked).map((t) => t.value) : this.tags.find((t) => t.checked)?.value ?? null;
150
+ }
151
+ /** The child instances of sbb-tag as an array. */
152
+ get tags() {
153
+ return Array.from(this.querySelectorAll?.("sbb-tag") ?? []);
154
+ }
155
+ constructor() {
156
+ super();
157
+ this.listChildLocalNames = (__runInitializers(this, _instanceExtraInitializers), ["sbb-tag", "div"]);
158
+ this.#accessibilityLabel_accessor_storage = __runInitializers(this, _accessibilityLabel_initializers, "");
159
+ this.#multiple_accessor_storage = (__runInitializers(this, _accessibilityLabel_extraInitializers), __runInitializers(this, _multiple_initializers, false));
160
+ this.#size_accessor_storage = (__runInitializers(this, _multiple_extraInitializers), __runInitializers(this, _size_initializers, null));
161
+ this._value = (__runInitializers(this, _size_extraInitializers), null);
162
+ this.addEventListener?.("keydown", (e) => this._handleArrowKeyDown(e));
163
+ }
164
+ willUpdate(changedProperties) {
165
+ super.willUpdate(changedProperties);
166
+ if (changedProperties.has("value") && !this.hasUpdated && this._value) this._applyValueToTags(this.value);
167
+ if (changedProperties.has("disabled")) this.tags.forEach((r) => r.requestUpdate?.("disabled"));
168
+ if (changedProperties.has("listChildren") || changedProperties.has("multiple")) {
169
+ if (!this.multiple) {
170
+ this.tags.filter((tag) => tag.checked).slice(1).forEach((tag) => tag.checked = false);
171
+ this.updateExclusiveTabIndex();
172
+ } else if (changedProperties.has("multiple")) this._enabledTags().forEach((t) => t.tabIndex = 0);
173
+ }
174
+ if (changedProperties.has("accessibilityLabel") || changedProperties.has("multiple")) if (this.multiple) {
175
+ this.internals.role = this.accessibilityLabel ? null : "group";
176
+ this.internals.ariaLabel = null;
177
+ } else {
178
+ this.internals.role = "radiogroup";
179
+ this.internals.ariaLabel = this.accessibilityLabel;
180
+ }
181
+ }
182
+ _enabledTags() {
183
+ return this.tags.filter((t) => !t.disabled);
184
+ }
185
+ /** In exclusive mode, only the checked tag (or the first non-disabled tag) should be focusable. */
186
+ updateExclusiveTabIndex() {
187
+ const enabledTags = this._enabledTags();
188
+ const focusTarget = enabledTags.find((t) => t.checked) ?? enabledTags[0];
189
+ enabledTags.forEach((t) => t.tabIndex = t === focusTarget ? 0 : -1);
190
+ }
191
+ _handleArrowKeyDown(evt) {
192
+ if (this.multiple || !isArrowKeyPressed(evt)) return;
193
+ evt.preventDefault();
194
+ const enabledTags = this._enabledTags();
195
+ const current = enabledTags.indexOf(evt.target);
196
+ if (current === -1) return;
197
+ const nextTag = enabledTags[getNextElementIndex(evt, current, enabledTags.length)];
198
+ enabledTags.forEach((t) => t.tabIndex = t === nextTag ? 0 : -1);
199
+ nextTag.focus();
200
+ }
201
+ _applyValueToTags(value) {
202
+ const tags = this.tags;
203
+ if (value === null) tags.forEach((t) => t.checked = false);
204
+ else if (this.multiple) {
205
+ if (!Array.isArray(value) && tags.every((t) => t.value !== value)) try {
206
+ value = JSON.parse(value);
207
+ } catch {}
208
+ const valueAsArray = Array.isArray(value) ? value : [value];
209
+ tags.forEach((t) => t.checked = valueAsArray.includes(t.value));
210
+ } else if (!Array.isArray(value)) tags.forEach((t) => t.checked = t.value === value);
211
+ }
212
+ render() {
213
+ return html`
214
+ ${this.renderList({
215
+ class: "sbb-tag-group__list",
216
+ ariaLabel: this.multiple ? this.accessibilityLabel : void 0
217
+ })}
218
+ `;
219
+ }
220
+ };
221
+ })();
222
+ //#endregion
223
+ export { SbbTagGroupElement as t };
224
+
225
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLWdyb3VwLmNvbXBvbmVudC1EVGZmMWVCQi5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvdGFnL3RhZy1ncm91cC90YWctZ3JvdXAuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvdGFnL3RhZy1ncm91cC90YWctZ3JvdXAuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5zYmItdGFnLWdyb3VwX19saXN0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBnYXA6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTN4KTtcbn1cblxuLy8gVXNpbmcgLi4uIGxpIHNlbGVjdG9yLCBiZWNhdXNlIHRoZSBsaSBnZW5lcmF0aW9uXG4vLyBpcyBoYW5kbGVkIGluIHRoZSBjb21wb25lbnQgYmFzZSBjbGFzcy5cbi5zYmItdGFnLWdyb3VwX19saXN0ID4gOmlzKGxpLCBzcGFuKSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1heC13aWR0aDogMTAwJTtcbn1cbiIsImltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxuICB1bnNhZmVDU1MsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHtcbiAgZm9yY2VUeXBlLFxuICBnZXROZXh0RWxlbWVudEluZGV4LFxuICBpc0Fycm93S2V5UHJlc3NlZCxcbiAgU2JiRGlzYWJsZWRNaXhpbixcbiAgU2JiRWxlbWVudCxcbiAgU2JiTmFtZWRTbG90TGlzdE1peGluLFxuICB0eXBlIFdpdGhMaXN0Q2hpbGRyZW4sXG59IGZyb20gJy4uLy4uL2NvcmUudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJUYWdFbGVtZW50IH0gZnJvbSAnLi4vdGFnL3RhZy5jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi90YWctZ3JvdXAuc2Nzcz9pbmxpbmUnO1xuXG4vKipcbiAqIEl0IGNhbiBiZSB1c2VkIGFzIGEgY29udGFpbmVyIGZvciBvbmUgb3IgbW9yZSBgc2JiLXRhZ2AuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgb25lIG9yIG1vcmUgJ3NiYi10YWcnIGVsZW1lbnRzIHRvIHRoZSBgc2JiLXRhZy1ncm91cGAuXG4gKiBAb3ZlcnJpZGVUeXBlIHZhbHVlIC0gKFQgPSBzdHJpbmcgfCAoc3RyaW5nIHwgbnVsbClbXSkgfCBudWxsXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJUYWdHcm91cEVsZW1lbnQ8VCA9IHN0cmluZz4gZXh0ZW5kcyBTYmJEaXNhYmxlZE1peGluKFxuICBTYmJOYW1lZFNsb3RMaXN0TWl4aW48U2JiVGFnRWxlbWVudCwgdHlwZW9mIFNiYkVsZW1lbnQ+KFNiYkVsZW1lbnQpLFxuKSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItdGFnLWdyb3VwJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW3Vuc2FmZUNTUyhzdHlsZSldO1xuICAvLyBESVYgaXMgYWRkZWQgaGVyZSBkdWUgdG8gc3BlY2lhbCByZXF1aXJlbWVudHMgZnJvbSBzYmIuY2guXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBsaXN0Q2hpbGRMb2NhbE5hbWVzID0gWydzYmItdGFnJywgJ2RpdiddO1xuXG4gIC8qKlxuICAgKiBUaGlzIHdpbGwgYmUgZm9yd2FyZGVkIGFzIGFyaWEtbGFiZWwgdG8gdGhlIGlubmVyIGxpc3QuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWNjZXNzaWJpbGl0eS1sYWJlbCcgfSlcbiAgcHVibGljIGFjY2Vzc29yIGFjY2Vzc2liaWxpdHlMYWJlbDogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIElmIHNldCBtdWx0aXBsZSB0byBmYWxzZSwgdGhlIHNlbGVjdGlvbiBpcyBleGNsdXNpdmUgYW5kIHRoZSB2YWx1ZSBpcyBhIHN0cmluZyAob3IgbnVsbCkuXG4gICAqIElmIHNldCBtdWx0aXBsZSB0byB0cnVlLCB0aGUgc2VsZWN0aW9uIGNhbiBoYXZlIG11bHRpcGxlIHZhbHVlcyBhbmQgdGhlcmVmb3JlIHZhbHVlIGlzIGFuIGFycmF5LlxuICAgKlxuICAgKiBDaGFuZ2luZyBtdWx0aXBsZSBkdXJpbmcgcnVuIHRpbWUgaXMgbm90IHN1cHBvcnRlZC5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUYWcgZ3JvdXAgc2l6ZSwgZWl0aGVyIHMgKGxlYW4gdGhlbWUgZGVmYXVsdCkgb3IgbSAoc3RhbmRhcmQgdGhlbWUgZGVmYXVsdCkuXG4gICAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciBzaXplOiBTYmJUYWdFbGVtZW50WydzaXplJ10gPSBudWxsO1xuXG4gIC8qKlxuICAgKiBWYWx1ZSBvZiB0aGUgc2JiLXRhZy1ncm91cC5cbiAgICogSWYgc2V0IG11bHRpcGxlIHRvIGZhbHNlLCB0aGUgdmFsdWUgaXMgYSBzdHJpbmcgKG9yIG51bGwpLlxuICAgKiBJZiBzZXQgbXVsdGlwbGUgdG8gdHJ1ZSwgdGhlIHZhbHVlIGlzIGFuIGFycmF5LlxuICAgKi9cbiAgQHByb3BlcnR5KClcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogVCB8IChUIHwgbnVsbClbXSB8IG51bGwpIHtcbiAgICBpZiAoaXNTZXJ2ZXIgfHwgIXRoaXMuaGFzVXBkYXRlZCkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fYXBwbHlWYWx1ZVRvVGFncyh2YWx1ZSk7XG4gIH1cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBUIHwgKFQgfCBudWxsKVtdIHwgbnVsbCB7XG4gICAgcmV0dXJuIGlzU2VydmVyIHx8ICF0aGlzLmhhc1VwZGF0ZWRcbiAgICAgID8gdGhpcy5fdmFsdWVcbiAgICAgIDogdGhpcy5tdWx0aXBsZVxuICAgICAgICA/IHRoaXMudGFncy5maWx0ZXIoKHQpID0+IHQuY2hlY2tlZCkubWFwKCh0KSA9PiB0LnZhbHVlKVxuICAgICAgICA6ICh0aGlzLnRhZ3MuZmluZCgodCkgPT4gdC5jaGVja2VkKT8udmFsdWUgPz8gbnVsbCk7XG4gIH1cbiAgcHJpdmF0ZSBfdmFsdWU6IFQgfCAoVCB8IG51bGwpW10gfCBudWxsID0gbnVsbDtcblxuICAvKiogVGhlIGNoaWxkIGluc3RhbmNlcyBvZiBzYmItdGFnIGFzIGFuIGFycmF5LiAqL1xuICBwdWJsaWMgZ2V0IHRhZ3MoKTogU2JiVGFnRWxlbWVudDxUPltdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJUYWdFbGVtZW50PFQ+Pignc2JiLXRhZycpID8/IFtdKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdrZXlkb3duJywgKGUpID0+IHRoaXMuX2hhbmRsZUFycm93S2V5RG93bihlKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8V2l0aExpc3RDaGlsZHJlbjx0aGlzPj4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3ZhbHVlJykgJiYgIXRoaXMuaGFzVXBkYXRlZCAmJiB0aGlzLl92YWx1ZSkge1xuICAgICAgdGhpcy5fYXBwbHlWYWx1ZVRvVGFncyh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkaXNhYmxlZCcpKSB7XG4gICAgICB0aGlzLnRhZ3MuZm9yRWFjaCgocikgPT4gci5yZXF1ZXN0VXBkYXRlPy4oJ2Rpc2FibGVkJykpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2xpc3RDaGlsZHJlbicpIHx8IGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbXVsdGlwbGUnKSkge1xuICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIC8vIEVuc3VyZSBvbmx5IG9uZSB0YWcgY2hlY2tlZFxuICAgICAgICB0aGlzLnRhZ3NcbiAgICAgICAgICAuZmlsdGVyKCh0YWcpID0+IHRhZy5jaGVja2VkKVxuICAgICAgICAgIC5zbGljZSgxKVxuICAgICAgICAgIC5mb3JFYWNoKCh0YWcpID0+ICh0YWcuY2hlY2tlZCA9IGZhbHNlKSk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVFeGNsdXNpdmVUYWJJbmRleCgpO1xuICAgICAgfSBlbHNlIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ211bHRpcGxlJykpIHtcbiAgICAgICAgLy8gSW4gbXVsdGlwbGUgbW9kZSBhbGwgZW5hYmxlZCB0YWdzIHNob3VsZCBiZSBmb2N1c2FibGVcbiAgICAgICAgdGhpcy5fZW5hYmxlZFRhZ3MoKS5mb3JFYWNoKCh0KSA9PiAodC50YWJJbmRleCA9IDApKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdhY2Nlc3NpYmlsaXR5TGFiZWwnKSB8fCBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ211bHRpcGxlJykpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxzLnJvbGUgPSB0aGlzLmFjY2Vzc2liaWxpdHlMYWJlbCA/IG51bGwgOiAnZ3JvdXAnO1xuICAgICAgICB0aGlzLmludGVybmFscy5hcmlhTGFiZWwgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbHMucm9sZSA9ICdyYWRpb2dyb3VwJztcbiAgICAgICAgdGhpcy5pbnRlcm5hbHMuYXJpYUxhYmVsID0gdGhpcy5hY2Nlc3NpYmlsaXR5TGFiZWw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZW5hYmxlZFRhZ3MoKTogU2JiVGFnRWxlbWVudDxUPltdIHtcbiAgICByZXR1cm4gdGhpcy50YWdzLmZpbHRlcigodCkgPT4gIXQuZGlzYWJsZWQpO1xuICB9XG5cbiAgLyoqIEluIGV4Y2x1c2l2ZSBtb2RlLCBvbmx5IHRoZSBjaGVja2VkIHRhZyAob3IgdGhlIGZpcnN0IG5vbi1kaXNhYmxlZCB0YWcpIHNob3VsZCBiZSBmb2N1c2FibGUuICovXG4gIHByb3RlY3RlZCB1cGRhdGVFeGNsdXNpdmVUYWJJbmRleCgpOiB2b2lkIHtcbiAgICBjb25zdCBlbmFibGVkVGFncyA9IHRoaXMuX2VuYWJsZWRUYWdzKCk7XG4gICAgY29uc3QgZm9jdXNUYXJnZXQgPSBlbmFibGVkVGFncy5maW5kKCh0KSA9PiB0LmNoZWNrZWQpID8/IGVuYWJsZWRUYWdzWzBdO1xuICAgIGVuYWJsZWRUYWdzLmZvckVhY2goKHQpID0+ICh0LnRhYkluZGV4ID0gdCA9PT0gZm9jdXNUYXJnZXQgPyAwIDogLTEpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUFycm93S2V5RG93bihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSB8fCAhaXNBcnJvd0tleVByZXNzZWQoZXZ0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IGVuYWJsZWRUYWdzID0gdGhpcy5fZW5hYmxlZFRhZ3MoKTtcbiAgICBjb25zdCBjdXJyZW50ID0gZW5hYmxlZFRhZ3MuaW5kZXhPZihldnQudGFyZ2V0IGFzIFNiYlRhZ0VsZW1lbnQ8VD4pO1xuICAgIGlmIChjdXJyZW50ID09PSAtMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5leHRJbmRleCA9IGdldE5leHRFbGVtZW50SW5kZXgoZXZ0LCBjdXJyZW50LCBlbmFibGVkVGFncy5sZW5ndGgpO1xuICAgIGNvbnN0IG5leHRUYWcgPSBlbmFibGVkVGFnc1tuZXh0SW5kZXhdO1xuXG4gICAgLy8gT25seSBtb3ZlIGZvY3VzLCBkbyBub3Qgc2VsZWN0LiBTZWxlY3Rpb24gaGFwcGVucyB2aWEgY2xpY2sgb3IgU3BhY2UvRW50ZXIuXG4gICAgZW5hYmxlZFRhZ3MuZm9yRWFjaCgodCkgPT4gKHQudGFiSW5kZXggPSB0ID09PSBuZXh0VGFnID8gMCA6IC0xKSk7XG4gICAgbmV4dFRhZy5mb2N1cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXBwbHlWYWx1ZVRvVGFncyh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgdGFncyA9IHRoaXMudGFncztcblxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgdGFncy5mb3JFYWNoKCh0KSA9PiAodC5jaGVja2VkID0gZmFsc2UpKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdGFncy5ldmVyeSgodCkgPT4gdC52YWx1ZSAhPT0gdmFsdWUpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gSWYgaXQgaXMgbXVsdGlwbGUgbW9kZSBhbmQgbm8gdGFnIG1hdGNoZXMgdGhlIHZhbHVlLCB3ZSB0cnkgdG8gcGFyc2UgdGhlIHZhbHVlIGFzIEpTT04uXG4gICAgICAgICAgLy8gVGhpcyBhbGxvd3Mgc2VydmVyIHNpZGUgcmVuZGVyaW5nIHRvIHVzZSBhcnJheSB2YWx1ZXMgdG8gYmUgcGFzc2VkIHRvIHRoZSBjbGllbnQgc2lkZS5cbiAgICAgICAgICB2YWx1ZSA9IEpTT04ucGFyc2UodmFsdWUgYXMgc3RyaW5nKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLyogZW1wdHkgKi9cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgdmFsdWVBc0FycmF5ID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgICB0YWdzLmZvckVhY2goKHQpID0+ICh0LmNoZWNrZWQgPSB2YWx1ZUFzQXJyYXkuaW5jbHVkZXModC52YWx1ZSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICB0YWdzLmZvckVhY2goKHQpID0+ICh0LmNoZWNrZWQgPSB0LnZhbHVlID09PSB2YWx1ZSkpO1xuICAgICAgfSBlbHNlIGlmIChpbXBvcnQubWV0YS5lbnYuREVWKSB7XG4gICAgICAgIGNvbnNvbGUud2FybigndmFsdWUgbXVzdCBub3QgYmUgc2V0IGFzIGFuIGFycmF5IGluIHNpbmd1bGFyIG1vZGUuJywgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgJHt0aGlzLnJlbmRlckxpc3Qoe1xuICAgICAgICBjbGFzczogJ3NiYi10YWctZ3JvdXBfX2xpc3QnLFxuICAgICAgICBhcmlhTGFiZWw6IHRoaXMubXVsdGlwbGUgPyB0aGlzLmFjY2Vzc2liaWxpdHlMYWJlbCA6IHVuZGVmaW5lZCxcbiAgICAgIH0pfVxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi10YWctZ3JvdXAnOiBTYmJUYWdHcm91cEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7SUM2QmEsNEJBQWtCO21CQUFxQixpQkFDbEQsc0JBQXdELFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7O2NBRHhELDJCQUF1QyxZQUVuRDs7O3FDQVNFLFVBQVMsR0FDVCxTQUFTLEVBQUUsV0FBVyxzQkFBcUIsQ0FBRSxDQUFDOzJCQVM5QyxVQUFTLEdBQ1QsU0FBUyxFQUFFLE1BQU0sUUFBTyxDQUFFLENBQUM7dUJBTTNCLFNBQVMsRUFBRSxTQUFTLEtBQUksQ0FBRSxDQUFDOzRCQU8zQixTQUFRLENBQUU7R0F0QlgsYUFBQSxNQUFBLE1BQUEsZ0NBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFBQTtLQUFBLE1BQUEsUUFBQSx3QkFBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFrQixNQUFBLEtBQUEsVUFBQTtNQUFBLElBQWxCLHFCQUFrQjtLQUFBO0lBQUE7SUFBQSxVQUFBO0dBQUEsR0FBQSxrQ0FBQSxxQ0FBQTtHQVVsQyxhQUFBLE1BQUEsTUFBQSxzQkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLGNBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBUSxNQUFBLEtBQUEsVUFBQTtNQUFBLElBQVIsV0FBUTtLQUFBO0lBQUE7SUFBQSxVQUFBO0dBQUEsR0FBQSx3QkFBQSwyQkFBQTtHQUtLLGFBQUEsTUFBQSxNQUFBLGtCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsVUFBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFJLE1BQUEsS0FBQSxVQUFBO01BQUEsSUFBSixPQUFJO0tBQUE7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