@epigraph/solutions 0.0.5-alpha → 0.1.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.
@@ -1,1426 +0,0 @@
1
- import { v as C, V as R, i as x, x as p, n as r, e as S, r as B, E as b, B as W } from "./three.module-CYfxkCtM.js";
2
- import { b as U, B as _, g as i, D as a, r as H } from "./baseUiComponent-_PPHqnvV.js";
3
- var M = /* @__PURE__ */ ((s) => (s.IMAGE = "image", s.VIDEO = "video", s))(M || {}), v = /* @__PURE__ */ ((s) => (s.LEFT = "left", s.RIGHT = "right", s))(v || {}), D = /* @__PURE__ */ ((s) => (s.DOTS = "DOTS", s))(D || {}), d = /* @__PURE__ */ ((s) => (s.expanded = "expanded", s.collapsed = "collapsed", s))(d || {});
4
- class T {
5
- constructor({
6
- config: t,
7
- appWcRef: o,
8
- hotspotManagerRef: n
9
- }) {
10
- this._cameraDirection = new C(), this.hotspotID = 0, this.header = {
11
- preheadText: "",
12
- headerText: "",
13
- subheadText: "",
14
- media: {
15
- uri: "",
16
- type: M.IMAGE,
17
- mediaCaption: "",
18
- altText: ""
19
- }
20
- }, this.carousel = {
21
- // Limit to eight items in the mediaItems for carousel
22
- mediaItems: [],
23
- indicator: D.DOTS
24
- }, this.details = "", this.position = new C(), this.normals = new C(0, 0, 0), this.screenPosition = new R(), this.camera = {
25
- position: new C(),
26
- target: new C(),
27
- focalLength: 35
28
- }, this.animation = [], this.desktopPlacement = v.LEFT, this.visited = !1, this.appWcRef = o, this.hotspotsManager = n, this.hotspotID = t.hotspotID, this.updateHotspotConfig(t);
29
- }
30
- static {
31
- this.styles = x`
32
- .hotspot-card {
33
- width: 100%;
34
- }
35
-
36
- .hotspot-indicator {
37
- position: absolute;
38
- transform: translate(-50%, -50%);
39
- transition: opacity 0.5s;
40
- }
41
-
42
- .hotspot-indicator.active {
43
- opacity: 0.4;
44
- pointer-events: none;
45
- }
46
-
47
- .hotspot-indicator.inactive {
48
- opacity: 0 !important;
49
- pointer-events: none !important;
50
- }
51
-
52
- .hotspot-indicator.occluded {
53
- opacity: 0.3;
54
- }
55
- `;
56
- }
57
- _updateHotspotNormals() {
58
- const t = new C();
59
- this.appWcRef.dimensionsManager.getCurrentSceneBounds().getCenter(t), this.normals.subVectors(this.position, t);
60
- }
61
- updateHotspotConfig(t) {
62
- this.header = t.header, this.carousel = t.carousel, this.details = t.details, this.position.set(t.position.x, t.position.y, t.position.z), this._updateHotspotNormals(), this.camera.position.set(t.camera.position.x, t.camera.position.y, t.camera.position.z), this.camera.target.set(t.camera.target.x, t.camera.target.y, t.camera.target.z), this.camera.focalLength = t.camera.focalLength, this.animation = t.animation, t.desktopPlacement && (this.desktopPlacement = t.desktopPlacement);
63
- }
64
- onHotspotClick() {
65
- this.hotspotsManager.activeHotspot || (this.visited = !0, this.appWcRef.appEvents.hotspotClickedEvent.fire({ hotspot: this }));
66
- }
67
- _isFacingCamera() {
68
- return this.appWcRef.cameraManager.cameras.main.getWorldDirection(this._cameraDirection), this.normals.angleTo(this._cameraDirection) > Math.PI / 2.2;
69
- }
70
- renderAnnotationTemplate(t) {
71
- this.screenPosition = this.appWcRef.getScreenPositionFromWorld(this.position);
72
- const o = t !== void 0 && t === this.hotspotID, n = t !== void 0 && t !== this.hotspotID;
73
- let e = "top-left";
74
- return this.screenPosition.y > this.appWcRef.getCanvasSize().height * 0.12 ? e = "top" : e = "bottom", this.screenPosition.x > this.appWcRef.getCanvasSize().width * 0.5 ? e += "-right" : e += "-left", p`
75
- <epg-tool-hotspot
76
- class="hotspot-indicator ${n ? "inactive" : ""} ${this._isFacingCamera() ? "" : "occluded"}"
77
- style="left: ${this.screenPosition.x}px; top: ${this.screenPosition.y}px"
78
- hotspot-id=${this.hotspotID}
79
- tooltip-label=${this.header.headerText}
80
- tooltip-placement=${e}
81
- ?active=${o}
82
- ?visited=${this.visited}
83
- @epgonclick=${this.onHotspotClick.bind(this)}
84
- size="medium"
85
- ></epg-tool-hotspot>
86
- `;
87
- }
88
- renderCardTemplate() {
89
- return p`
90
- <epg-card
91
- class="hotspot-card"
92
- .data=${{ ...this }}
93
- .onNextHotspotButtonClick=${this.hotspotsManager.nextHotspot.bind(this.hotspotsManager)}
94
- .onPrevHotspotButtonClick=${this.hotspotsManager.previousHotspot.bind(this.hotspotsManager)}
95
- ></epg-card>
96
- `;
97
- }
98
- }
99
- const P = "epg-button", c = {
100
- ...U,
101
- ariaLabel: {
102
- name: "aria-label",
103
- defaultValue: "Button",
104
- argType: {
105
- control: "text"
106
- }
107
- },
108
- label: {
109
- name: "label",
110
- defaultValue: "Button",
111
- argType: {
112
- control: "text"
113
- }
114
- },
115
- isLoading: {
116
- name: "is-loading",
117
- defaultValue: !1,
118
- argType: {
119
- control: "boolean"
120
- }
121
- },
122
- loadingLabel: {
123
- name: "loading-label",
124
- defaultValue: "Loading...",
125
- argType: {
126
- control: "string"
127
- }
128
- },
129
- leftIcon: {
130
- name: "left-icon",
131
- defaultValue: "3d-select-solid",
132
- argType: {
133
- control: "text"
134
- }
135
- },
136
- rightIcon: {
137
- name: "right-icon",
138
- defaultValue: "3d-select-solid",
139
- argType: {
140
- control: "text"
141
- }
142
- },
143
- fullWidth: {
144
- name: "full-width",
145
- defaultValue: !1,
146
- argType: {
147
- control: "boolean"
148
- }
149
- },
150
- tooltipPlacement: {
151
- name: "tooltip-placement",
152
- defaultValue: "none",
153
- argType: {
154
- control: "select",
155
- options: [
156
- "none",
157
- "left",
158
- "right",
159
- "bottom-left",
160
- "bottom-center",
161
- "bottom-right",
162
- "top-left",
163
- "top-center",
164
- "top-right"
165
- ]
166
- }
167
- },
168
- tooltipLabel: {
169
- name: "tooltip-label",
170
- defaultValue: "",
171
- argType: {
172
- control: "text"
173
- }
174
- }
175
- }, L = "epg-tool-hotspot", $ = {
176
- label: {
177
- name: "label",
178
- defaultValue: "Tool Control"
179
- },
180
- active: {
181
- name: "active"
182
- },
183
- visited: {
184
- name: "visited"
185
- },
186
- togglable: {
187
- name: "togglable"
188
- },
189
- tooltipLabel: {
190
- defaultValue: "HOTSPOT LABEL"
191
- }
192
- }, A = "epg-tooltip", I = {
193
- placement: {
194
- name: "placement",
195
- defaultValue: "none"
196
- },
197
- theme: {
198
- defaultValue: "dark"
199
- }
200
- }, z = "epg-icon", O = {
201
- iconName: {
202
- name: "icon-name",
203
- defaultValue: "trash"
204
- }
205
- };
206
- var X = Object.defineProperty, V = (s, t, o, n) => {
207
- for (var e = void 0, l = s.length - 1, h; l >= 0; l--)
208
- (h = s[l]) && (e = h(t, o, e) || e);
209
- return e && X(t, o, e), e;
210
- };
211
- class E extends _ {
212
- constructor() {
213
- super(...arguments), this.iconName = O.iconName.defaultValue.toString();
214
- }
215
- static {
216
- this.styles = [
217
- super.styles,
218
- x`
219
- :host {
220
- display: inline-block;
221
- vertical-align: middle;
222
- display: flex;
223
- justify-content: center;
224
- align-items: center;
225
- width: 50px;
226
- height: 50px;
227
- aspect-ratio: 1;
228
- }
229
-
230
- .icon-container {
231
- width: 100%;
232
- height: 100%;
233
- }
234
- `
235
- ];
236
- }
237
- hide() {
238
- this.style.display = "none";
239
- }
240
- /**
241
- * Loads an SVG from URL and appends it is a child of this component.
242
- *
243
- * @returns
244
- */
245
- async loadSVG() {
246
- if (!this.iconName) {
247
- this.hide();
248
- return;
249
- }
250
- try {
251
- const t = this._iconContainerRef;
252
- if (!t) {
253
- this.hide();
254
- return;
255
- }
256
- const o = await fetch(
257
- `https://asset.myepigraph.com/design-assets/icons/${this.iconName}.svg`
258
- );
259
- if (!o.ok) {
260
- this.hide();
261
- return;
262
- }
263
- let n = await o.text();
264
- n = n.replace(
265
- /stroke="#?[0-9A-Fa-f]{3,6}"/g,
266
- 'stroke="currentColor"'
267
- ), n = n.replace(/fill="#?[0-9A-Fa-f]{3,6}"/g, 'fill="currentColor"'), t.innerHTML = n;
268
- const e = t.querySelector("svg");
269
- e && (e.setAttribute("width", "100%"), e.setAttribute("height", "100%"), e.setAttribute("role", "img"), e.setAttribute("aria-hidden", this.iconName ? "false" : "true"), e.setAttribute("aria-label", this.iconName));
270
- } catch (t) {
271
- window.epigraph.logger.error(`Error loading SVG: ${this.iconName}`, t), this.hide();
272
- }
273
- }
274
- updated(t) {
275
- t.has("iconName") && this.loadSVG();
276
- }
277
- render() {
278
- return p`
279
- <div
280
- id="iconContainer"
281
- class="icon-container"
282
- role="img"
283
- aria-hidden="${this.iconName ? "false" : "true"}"
284
- aria-label="${this.iconName || ""}"
285
- ></div>
286
- `;
287
- }
288
- }
289
- V([
290
- r({ type: String, attribute: O.iconName.name })
291
- ], E.prototype, "iconName");
292
- V([
293
- S("#iconContainer")
294
- ], E.prototype, "_iconContainerRef");
295
- window.customElements.get(z) || window.customElements.define(z, E);
296
- var j = Object.defineProperty, Y = (s, t, o, n) => {
297
- for (var e = void 0, l = s.length - 1, h; l >= 0; l--)
298
- (h = s[l]) && (e = h(t, o, e) || e);
299
- return e && j(t, o, e), e;
300
- };
301
- class F extends _ {
302
- constructor() {
303
- super(...arguments), this.placement = I.placement.defaultValue.toString(), this.theme = I.theme.defaultValue.toString();
304
- }
305
- static {
306
- this.styles = [
307
- super.styles,
308
- x`
309
- :host {
310
- --pointer-side-margin: 15px;
311
- display: flex;
312
- flex-direction: row;
313
- font-size: 16px;
314
- font-style: normal;
315
- font-weight: 500;
316
- align-items: center;
317
- justify-content: center;
318
- border-radius: 6px;
319
- position: relative;
320
- user-select: none;
321
- width: fit-content;
322
- white-space: nowrap;
323
- filter: drop-shadow(0px 0px 4px rgba(50, 50, 0, 0.5));
324
- }
325
-
326
- :host([disabled]) {
327
- display: none;
328
- }
329
-
330
- :host([theme="light"]) {
331
- --tooltip-background-color: #fff;
332
- --tooltip-color: ${i(a.Color.Text.NeutralSecondary.$value)};
333
- }
334
-
335
- :host([theme="dark"]) {
336
- --tooltip-background-color: #6d6d6e;
337
- --tooltip-color: ${i(a.Color.Text.Invert.$value)};
338
- }
339
-
340
- :host([placement="left"]) {
341
- flex-direction: row-reverse;
342
-
343
- .pointer {
344
- transform: rotate(-90deg);
345
- }
346
- }
347
-
348
- :host([placement="right"]) {
349
- flex-direction: row;
350
-
351
- .pointer {
352
- transform: rotate(90deg);
353
- }
354
- }
355
-
356
- :host([placement="bottom-left"]) {
357
- flex-direction: column;
358
-
359
- .pointer {
360
- align-self: flex-start;
361
- transform: rotate(180deg);
362
- margin-left: var(--pointer-side-margin);
363
- }
364
- }
365
-
366
- :host([placement="bottom-center"]) {
367
- flex-direction: column;
368
-
369
- .pointer {
370
- align-self: center;
371
- transform: rotate(180deg);
372
- }
373
- }
374
-
375
- :host([placement="bottom-right"]) {
376
- flex-direction: column;
377
-
378
- .pointer {
379
- align-self: flex-end;
380
- transform: rotate(180deg);
381
- margin-right: var(--pointer-side-margin);
382
- }
383
- }
384
-
385
- :host([placement="top-left"]) {
386
- flex-direction: column-reverse;
387
-
388
- .pointer {
389
- align-self: flex-start;
390
- margin-left: var(--pointer-side-margin);
391
- }
392
- }
393
-
394
- :host([placement="top-center"]) {
395
- flex-direction: column-reverse;
396
-
397
- .pointer {
398
- align-self: center;
399
- }
400
- }
401
-
402
- :host([placement="top-right"]) {
403
- flex-direction: column-reverse;
404
-
405
- .pointer {
406
- align-self: flex-end;
407
- margin-right: var(--pointer-side-margin);
408
- }
409
- }
410
-
411
- .contents-container {
412
- display: flex;
413
- border-radius: inherit;
414
- padding: 12px;
415
- height: 20px;
416
- gap: 8px;
417
- background-color: var(--tooltip-background-color);
418
- color: var(--tooltip-color);
419
- outline: 3px solid var(--tooltip-background-color);
420
- outline-offset: -2px;
421
- align-items: center;
422
- }
423
-
424
- .pointer {
425
- --pointer-width: 20px;
426
- --pointer-height: 20px;
427
- content: "";
428
- width: var(--pointer-width);
429
- height: var(--pointer-height);
430
- background-color: var(--tooltip-background-color);
431
- clip-path: polygon(100% 0px, 50% 70%, 0 0px);
432
- display: none;
433
- }
434
-
435
- .pointer.visible {
436
- display: block;
437
- }
438
-
439
- .left-icon {
440
- height: 100%;
441
- aspect-ratio: 3.5;
442
- }
443
-
444
- .right-icon {
445
- width: auto;
446
- height: 120%;
447
- aspect-ratio: 3.5;
448
- }
449
- `
450
- ];
451
- }
452
- render() {
453
- return p`
454
- <span class="pointer ${this.placement} ${this.placement !== "none" ? "visible" : ""}"></span>
455
- <div class="contents-container">
456
- <slot name="replace-all">
457
- <div class="label">Powered by</div>
458
- <epg-icon id="rightIcon" class="right-icon" icon-name="epigraph" alt="Right Icon"></epg-icon>
459
- </slot>
460
- </div>
461
- `;
462
- }
463
- }
464
- Y([
465
- r({ attribute: I.placement.name })
466
- ], F.prototype, "placement");
467
- window.customElements.get(A) || window.customElements.define(A, F);
468
- const N = "epg-loader-circle";
469
- class G extends _ {
470
- static {
471
- this.styles = [
472
- super.styles,
473
- x`
474
- :host {
475
- display: flex;
476
- width: 100px;
477
- height: 100px;
478
- justify-content: center;
479
- align-items: center;
480
- }
481
-
482
- .loader {
483
- animation: rotate 1s linear infinite;
484
- }
485
-
486
- .loader-container {
487
- width: 100%;
488
- height: 100%;
489
- }
490
-
491
- .progress {
492
- stroke-dasharray: 251.2; /* Full circle */
493
- stroke-dashoffset: 188.4; /* 1/4 of the circle */
494
- transform: rotate(-90deg);
495
- transform-origin: center;
496
- }
497
-
498
- @keyframes rotate {
499
- 0% {
500
- transform: rotate(0deg);
501
- }
502
- 100% {
503
- transform: rotate(360deg);
504
- }
505
- }
506
- `
507
- ];
508
- }
509
- render() {
510
- return p`
511
- <div class="loader-container" role="status" aria-live="polite" aria-label="Loading...">
512
- <svg
513
- class="loader"
514
- viewBox="0 0 100 100"
515
- focusable="false"
516
- aria-hidden="true"
517
- >
518
- <circle
519
- cx="50"
520
- cy="50"
521
- r="40"
522
- stroke=${this.theme == "light" ? "#0C0C0D1A" : "#FFFFFF66"}
523
- stroke-width="10"
524
- fill="none"
525
- />
526
- <circle
527
- class="progress"
528
- cx="50"
529
- cy="50"
530
- r="40"
531
- stroke=${this.theme == "light" ? "#0C0C0D80" : "#FFFFFFCC"}
532
- stroke-width="10"
533
- fill="none"
534
- stroke-dasharray="251.2"
535
- stroke-dashoffset="188.4"
536
- stroke-linecap="round"
537
- />
538
- </svg>
539
- </div>
540
- `;
541
- }
542
- }
543
- window.customElements.get(N) || window.customElements.define(N, G);
544
- var K = Object.defineProperty, m = (s, t, o, n) => {
545
- for (var e = void 0, l = s.length - 1, h; l >= 0; l--)
546
- (h = s[l]) && (e = h(t, o, e) || e);
547
- return e && K(t, o, e), e;
548
- };
549
- const q = B(
550
- `${i(a.Space.Padding.Small.$value)} ${i(a.Space.Padding.Medium.$value)}`
551
- );
552
- class u extends _ {
553
- constructor() {
554
- super(), this.size = c.size.defaultValue.toString(), this.ariaLabel = c.ariaLabel.defaultValue.toString(), this.label = c.label.defaultValue.toString(), this.isLoading = !1, this.loadingLabel = c.loadingLabel.defaultValue.toString(), this.leftIcon = c.leftIcon.defaultValue.toString(), this.rightIcon = c.rightIcon.defaultValue.toString(), this.fullWidth = !1, this.tooltipPlacement = c.tooltipPlacement.defaultValue.toString(), this.tooltipLabel = c.tooltipLabel.defaultValue.toString(), this._isKeyDown = !1, this.addEventListener("keydown", this.handleKeyDown), this.addEventListener("keyup", this.handleKeyUp), this.addEventListener("click", this.doClick);
555
- }
556
- static {
557
- this.styles = [
558
- super.styles,
559
- x`
560
- :host {
561
- display: flex;
562
- position: relative;
563
- font-family: ${i(a.Font.Family.Body.$value)};
564
- font-size: ${i(a.Size.Text.Large.$value)};
565
- font-style: normal;
566
- font-weight: 400;
567
- letter-spacing: ${i(a.Font.Tracking.Normal.$value)};
568
- width: max-content;
569
- height: fit-content;
570
- justify-content: center;
571
- align-items: center;
572
- user-select: none;
573
- gap: ${i(a.Space.Gap.Small.$value)};
574
- color: ${i(a.Color.Text.Invert.$value)};
575
- padding: ${q};
576
- box-sizing: border-box;
577
- background-color: ${i(a.Color.Fill.Accent.$value)};
578
- border-radius: ${i(a.Size.Radius.Medium.$value)};
579
- cursor: pointer;
580
- outline: none;
581
- }
582
-
583
- :host([full-width]) {
584
- width: 100%;
585
- }
586
-
587
- :host(:hover) {
588
- background-color: ${i(a.Color.Fill.AccentHover.$value)};
589
-
590
- .tooltip {
591
- opacity: 1;
592
- }
593
- }
594
-
595
- :host(:active) {
596
- background-color: ${i(a.Color.Fill.AccentPress.$value)};
597
- }
598
-
599
- :host(:focus-visible) {
600
- outline: revert !important;
601
- }
602
-
603
- :host([disabled]) {
604
- color: ${i(a.Color.Text.Disabled.$value)} !important;
605
- background-color: ${i(a.Color.Fill.Disabled.$value)} !important;
606
- pointer-events: none !important;
607
- }
608
-
609
- :host .tooltip {
610
- opacity: 0;
611
- transition: 0.15s ease-in-out;
612
- }
613
-
614
- :host([size="small"]) {
615
- .icon {
616
- width: ${i(a.Size.Icon.Small.$value)};
617
- height: ${i(a.Size.Icon.Small.$value)};
618
- }
619
-
620
- .label {
621
- font-size: ${i(a.Size.Text.Small.$value)};
622
- height: ${i(a.Size.Icon.Small.$value)};
623
- }
624
- }
625
-
626
- :host([size="medium"]) {
627
- .icon {
628
- width: ${i(a.Size.Icon.Medium.$value)};
629
- height: ${i(a.Size.Icon.Medium.$value)};
630
- }
631
-
632
- .label {
633
- font-size: ${i(a.Size.Text.Medium.$value)};
634
- height: ${i(a.Size.Icon.Medium.$value)};
635
- }
636
- }
637
-
638
- :host([size="large"]) {
639
- .icon {
640
- width: ${i(a.Size.Icon.Large.$value)};
641
- height: ${i(a.Size.Icon.Large.$value)};
642
- }
643
-
644
- .label {
645
- font-size: ${i(a.Size.Text.Large.$value)};
646
- height: ${i(a.Size.Icon.Large.$value)};
647
- }
648
- }
649
-
650
- .tooltip {
651
- position: absolute;
652
- pointer-events: none;
653
- transition: opacity 0.5s ease;
654
- opacity: 1;
655
- z-index: 9999;
656
- }
657
-
658
- .tooltip.right {
659
- right: 0;
660
- transform: translateX(100%);
661
- }
662
-
663
- .tooltip.left {
664
- left: 0;
665
- transform: translateX(-100%);
666
- }
667
-
668
- .tooltip.top-left {
669
- top: 0;
670
- transform: translate(-10px, -100%);
671
- left: 0;
672
- }
673
-
674
- .tooltip.top-center {
675
- top: 0;
676
- transform: translateY(-100%);
677
- }
678
-
679
- .tooltip.top-right {
680
- top: 0;
681
- transform: translate(15px, -100%);
682
- right: 0;
683
- }
684
-
685
- .tooltip.bottom-left {
686
- bottom: 0;
687
- transform: translate(-10px, 100%);
688
- left: 0;
689
- }
690
-
691
- .tooltip.bottom-center {
692
- bottom: 0;
693
- transform: translateY(100%);
694
- }
695
-
696
- .tooltip.bottom-right {
697
- bottom: 0;
698
- transform: translate(15px, 100%);
699
- right: 0;
700
- }
701
- `
702
- ];
703
- }
704
- handleKeyDown(t) {
705
- this._isKeyDown || (this._isKeyDown = !0, (t.key === "Enter" || t.key === " ") && !this.disabled && (t.preventDefault(), this.doClick()));
706
- }
707
- handleKeyUp(t) {
708
- (t.key === "Enter" || t.key === " ") && (this._isKeyDown = !1);
709
- }
710
- defaultContents() {
711
- let t;
712
- return this.isLoading ? t = p` <epg-loader-circle class="icon ${this.size}"></epg-loader-circle>
713
- ${this.loadingLabel ? p`<div class="label ${this.size}">${this.loadingLabel}</div>` : b}` : t = p`
714
- <epg-icon class="icon ${this.size}" icon-name=${this.leftIcon}></epg-icon>
715
- ${this.label ? p`<div class="label ${this.size}">${this.label}</div>` : b}
716
- <epg-icon class="icon ${this.size}" icon-name=${this.rightIcon}></epg-icon>
717
- `, t;
718
- }
719
- _renderTooltip() {
720
- const t = this.tooltipLabel ? p`<div slot="replace-all">${this.tooltipLabel}</div>` : b;
721
- return p`
722
- <epg-tooltip class="tooltip ${this.tooltipPlacement}" ?disabled=${this.tooltipPlacement === "none"} placement=${this.tooltipPlacement}>
723
- ${t}
724
- </epg-tooltip>
725
- `;
726
- }
727
- render() {
728
- return p`
729
- <slot
730
- name="replace-all"
731
- role="button"
732
- tabindex=${this.disabled ? "-1" : "0"}
733
- aria-disabled=${this.disabled}
734
- aria-label=${this.label ?? this.ariaLabel}
735
- >
736
- ${this.defaultContents()}
737
- </slot>
738
- ${this._renderTooltip()}
739
- `;
740
- }
741
- }
742
- m([
743
- r({ attribute: c.ariaLabel.name })
744
- ], u.prototype, "ariaLabel");
745
- m([
746
- r({ attribute: c.label.name })
747
- ], u.prototype, "label");
748
- m([
749
- r({ type: Boolean, attribute: c.isLoading.name })
750
- ], u.prototype, "isLoading");
751
- m([
752
- r({ attribute: c.loadingLabel.name })
753
- ], u.prototype, "loadingLabel");
754
- m([
755
- r({ attribute: c.leftIcon.name })
756
- ], u.prototype, "leftIcon");
757
- m([
758
- r({ attribute: c.rightIcon.name })
759
- ], u.prototype, "rightIcon");
760
- m([
761
- r({ type: Boolean, attribute: c.fullWidth.name })
762
- ], u.prototype, "fullWidth");
763
- m([
764
- r({ attribute: c.tooltipPlacement.name })
765
- ], u.prototype, "tooltipPlacement");
766
- m([
767
- r({ attribute: c.tooltipLabel.name })
768
- ], u.prototype, "tooltipLabel");
769
- m([
770
- H()
771
- ], u.prototype, "_isKeyDown");
772
- window.customElements.get(P) || window.customElements.define(P, u);
773
- var J = Object.defineProperty, w = (s, t, o, n) => {
774
- for (var e = void 0, l = s.length - 1, h; l >= 0; l--)
775
- (h = s[l]) && (e = h(t, o, e) || e);
776
- return e && J(t, o, e), e;
777
- };
778
- class y extends u {
779
- constructor() {
780
- super(...arguments), this.label = $.label.defaultValue.toString(), this.leftIcon = "", this.rightIcon = "", this.togglable = !1, this.visited = !1, this.active = !1, this.showLabel = !1, this.tooltipPlacement = "top-left", this.tooltipLabel = $.tooltipLabel.defaultValue.toString(), this.tooltipLeftIcon = "", this.tooltipRightIcon = "";
781
- }
782
- static {
783
- this.styles = [
784
- super.styles,
785
- x`
786
- :host {
787
- all: unset;
788
- color: #333;
789
- gap: 8px;
790
- padding: 0px;
791
- box-shadow: unset;
792
- background-color: unset;
793
- display: block;
794
- }
795
-
796
- :host(:hover) {
797
- background-color: unset;
798
- cursor: pointer;
799
-
800
- .hotspot-center-circle {
801
- width: 80%;
802
- height: 80%;
803
- }
804
- }
805
-
806
- :host .hotspot-main {
807
- display: flex;
808
- align-items: center;
809
- justify-content: center;
810
- width: 100%;
811
- height: 100%;
812
- border-radius: 50%;
813
- border: 2px solid rgba(204, 204, 204, 1);
814
- background-color: ${i(a.Color.Fill.HotspotSecondary.$value)};
815
- backdrop-filter: blur(3px);
816
- transition: opacity 0.5s ease-in-out;
817
- }
818
-
819
- :host .hotspot-center-circle {
820
- width: 30%;
821
- height: 30%;
822
- border-radius: 50%;
823
- background-color: white;
824
- transition: width 0.2s ease-in-out, height 0.2s ease-in-out, opacity 0.2s ease-in-out;
825
- }
826
-
827
- :host(:disabled) {
828
- color: #b3b3b3;
829
- border-radius: 12px;
830
- background: #ccc;
831
- }
832
-
833
- :host([active]) {
834
- .hotspot-main {
835
- opacity: 0.5;
836
- }
837
-
838
- .hotspot-center-circle {
839
- opacity: 0;
840
- }
841
-
842
- .tooltip {
843
- opacity: 0 !important;
844
- }
845
- }
846
-
847
- :host([size="small"]) {
848
- width: 25px !important;
849
- height: 25px !important;
850
- aspect-ratio: 1 !important;
851
- }
852
-
853
- :host([size="medium"]) {
854
- width: 34px !important;
855
- height: 34px !important;
856
- aspect-ratio: 1 !important;
857
- }
858
-
859
- :host([visited]) {
860
- .hotspot-main {
861
- border-color: transparent !important;
862
- }
863
- }
864
- `
865
- ];
866
- }
867
- doClick() {
868
- if (this.disabled)
869
- return;
870
- this.togglable && (this.active = !this.active), typeof this.onClickCallback == "function" && this.onClickCallback.bind(this);
871
- const t = new CustomEvent("epgonclick");
872
- this.dispatchEvent(t);
873
- }
874
- updated(t) {
875
- super.updated(t), t.has("active") && this.shadowRoot?.host.toggleAttribute("active", this.active);
876
- }
877
- _renderTooltip() {
878
- const t = this.tooltipLabel ? p`<div slot="replace-all">${this.tooltipLabel}</div>` : b;
879
- return p`
880
- <epg-tooltip class="tooltip ${this.tooltipPlacement}" ?disabled=${this.tooltipPlacement === "none"} placement=${this.tooltipPlacement} theme="light">
881
- ${t}
882
- </epg-tooltip>
883
- `;
884
- }
885
- defaultContents() {
886
- return p`
887
- <div class="hotspot-main">
888
- <span class="hotspot-center-circle"></span>
889
- </div>
890
- `;
891
- }
892
- }
893
- w([
894
- r({ attribute: $.label.name })
895
- ], y.prototype, "label");
896
- w([
897
- r({ attribute: !1 })
898
- ], y.prototype, "leftIcon");
899
- w([
900
- r({ attribute: !1 })
901
- ], y.prototype, "rightIcon");
902
- w([
903
- r({ type: Boolean, attribute: $.togglable.name })
904
- ], y.prototype, "togglable");
905
- w([
906
- r({ type: Boolean, attribute: $.visited.name })
907
- ], y.prototype, "visited");
908
- w([
909
- r({
910
- type: Boolean,
911
- attribute: $.active.name
912
- })
913
- ], y.prototype, "active");
914
- window.customElements.get(L) || window.customElements.define(L, y);
915
- var Q = Object.defineProperty, g = (s, t, o, n) => {
916
- for (var e = void 0, l = s.length - 1, h; l >= 0; l--)
917
- (h = s[l]) && (e = h(t, o, e) || e);
918
- return e && Q(t, o, e), e;
919
- };
920
- const f = class k extends W {
921
- constructor() {
922
- super(), this._loggerContext = "HOTSPOTS MANAGER", this.hotspots = /* @__PURE__ */ new Map(), this.activeHotspot = void 0, this.activeHotspotIndex = -1, this.isPortrait = !0, this._cardsState = d.collapsed, this._leftCardContents = b, this._rightCardContents = b, this._allCards = [];
923
- }
924
- static {
925
- this.webComponentName = "hotspots-manager";
926
- }
927
- updateActiveHotspotIndex() {
928
- this.activeHotspot && (this.activeHotspotIndex = this.hotspotsOrder.indexOf(this.activeHotspot?.hotspotID));
929
- }
930
- static {
931
- this.styles = [
932
- T.styles,
933
- x`
934
- :host {
935
- position: absolute;
936
- top: 0;
937
- left: 0;
938
- width: 100%;
939
- height: 100%;
940
- pointer-events: none;
941
- }
942
-
943
- :host * {
944
- pointer-events: auto;
945
- }
946
-
947
- .hotspot-cards-container {
948
- --landscape-cards-offset: 40px;
949
- width: 40%;
950
- min-width: 320px;
951
- height: calc(100% - (var(--landscape-cards-offset)*2));
952
- align-self: anchor-center;
953
- box-sizing: border-box;
954
- position: absolute;
955
- z-index: 1;
956
- opacity: 0;
957
- top: 0;
958
- display: none;
959
- transform: translateX(30%) translateY(30%);
960
- flex-direction: column-reverse;
961
- background-color: rgba(255, 255, 255, 0);
962
- transition: opacity 0.6s ease, display 0.6s ease allow-discrete, transform 0.6s, max-height 0.5s, background-color 1s;
963
-
964
- .close-button {
965
- position: absolute;
966
- top: 20px;
967
- right: 20px;
968
- z-index: 1;
969
- }
970
-
971
- .collapse-card-button {
972
- position: absolute;
973
- top: var(--landscape-cards-offset);
974
- right: var(--landscape-cards-offset);
975
- z-index: 6;
976
- transition: opacity 0.5s;
977
- }
978
-
979
-
980
- &.left {
981
- left: var(--landscape-cards-offset);
982
- transform: translateX(-30%) translateY(0%);
983
- }
984
-
985
- &.right {
986
- right: var(--landscape-cards-offset);
987
- transform: translateX(30%) translateY(0%);
988
- }
989
- }
990
-
991
- :host([is-portrait]) {
992
- .hotspot-cards-container {
993
- &.carousel {
994
- width: 100%;
995
- height: 100%;
996
- gap: 0px;
997
- top: unset;
998
- bottom: 0px;
999
- transition: transform 0.5s, opacity 0.5s, max-height 0.5s;
1000
- box-sizing: border-box;
1001
- align-self: end;
1002
- transform: translateX(0%) translateY(30%);
1003
-
1004
- &.show {
1005
- opacity: 1;
1006
- display: flex;
1007
- transition: transform 0.5s, opacity 0.5s, max-height 0.5s;
1008
- transform: translateX(0%) translateY(0%);
1009
- }
1010
-
1011
- .close-button {
1012
- position: unset;
1013
- }
1014
-
1015
- .expand-overlay {
1016
- width: 100%;
1017
- height: 100%;
1018
- display: flex;
1019
- flex-direction: column;
1020
- padding-bottom: 15px;
1021
- transition: padding 0.5s;
1022
- }
1023
-
1024
- .cards-carousel-top-panel {
1025
- display: flex;
1026
- justify-content: space-between;
1027
- align-items: center;
1028
- z-index: 3;
1029
- position: unset;
1030
- padding-left: 40px;
1031
- padding-right: 40px;
1032
- transition: height 0.5s, opacity 0.5s;
1033
- z-index: 2;
1034
- }
1035
-
1036
- .cards-carousel-top-panel .page-indicator {
1037
- display: flex;
1038
- position: relative;
1039
- font-style: normal;
1040
- font-weight: 400;
1041
- justify-content: center;
1042
- align-items: center;
1043
- padding: 12px 16px;
1044
- box-sizing: border-box;
1045
- background-color: rgba(248, 248, 248, 0.8000);
1046
- border-radius: 12px;
1047
- pointer-events: none;
1048
- }
1049
-
1050
- &.collapsed {
1051
- gap: 10px;
1052
- max-height: 500px;
1053
-
1054
- ::part(epg-card-expand-button-span) {
1055
- opacity: 1;
1056
- }
1057
-
1058
- .collapse-card-button {
1059
- opacity: 0;
1060
- pointer-events: none;
1061
- }
1062
- }
1063
-
1064
- &.expanded {
1065
- max-height: 100%;
1066
- background-color: rgba(255, 255, 255, 1);
1067
-
1068
- ::part(epg-card-expand-button-span) {
1069
- opacity: 0;
1070
- pointer-events: none;
1071
- height: 0px;
1072
- }
1073
-
1074
- .cards-carousel-top-panel {
1075
- opacity: 0;
1076
- height: 0px;
1077
- pointer-events: none;
1078
- }
1079
-
1080
- .expand-overlay {
1081
- pointer-events: none;
1082
- padding-bottom: 0px;
1083
- z-index: 4;
1084
- }
1085
-
1086
- ::part(swiper-slide) {
1087
- transform: scaleX(0.9) scaleY(0.98);
1088
- }
1089
- }
1090
- }
1091
- }
1092
- }
1093
-
1094
- .hotspot-cards-container.show {
1095
- opacity: 1;
1096
- display: flex;
1097
-
1098
- &.carousel {
1099
- transform: translateX(0%) translateY(0%);
1100
- }
1101
-
1102
- &.left {
1103
- transform: translateX(0%) translateY(0%);
1104
- }
1105
-
1106
- &.right {
1107
- transform: translateX(0%) translateY(0%);
1108
- }
1109
- }
1110
-
1111
- @starting-style {
1112
- .hotspot-cards-container.show {
1113
- opacity: 0;
1114
-
1115
- &.carousel {
1116
- transform: translateX(0%) translateY(30%);
1117
- }
1118
-
1119
- &.left {
1120
- transform: translateX(-30%) translateY(0%);
1121
- }
1122
-
1123
- &.right {
1124
- transform: translateX(30%) translateY(0%);
1125
- }
1126
- }
1127
-
1128
- }
1129
- `
1130
- ];
1131
- }
1132
- /**
1133
- * Since we do not want to define these web component at all times,
1134
- * this method needs to be explicitly called before usage.
1135
- */
1136
- static setupWebComponent() {
1137
- window.customElements.get(k.webComponentName) || window.customElements.define(k.webComponentName, k);
1138
- }
1139
- firstUpdated() {
1140
- this._setupEventListeners();
1141
- }
1142
- createHotspots(t) {
1143
- for (const o of t) {
1144
- const n = new T({ config: o, appWcRef: this.appWcRef, hotspotManagerRef: this });
1145
- this.hotspots.set(n.hotspotID, n);
1146
- }
1147
- this.updateHotspotsOrder(Array.from(this.hotspots.keys()));
1148
- }
1149
- stepHotspots(t) {
1150
- const o = this.activeHotspotIndex;
1151
- if (o === null)
1152
- return;
1153
- const n = this.hotspotsOrder.length;
1154
- let e = o;
1155
- t === "next" ? (e = o + 1, e >= n && (e = 0)) : t === "prev" && (e = o - 1, e < 0 && (e = n - 1));
1156
- const l = this.hotspotsOrder[e];
1157
- this.setActiveHotspot({ hotspotId: l });
1158
- }
1159
- nextHotspot() {
1160
- return this.stepHotspots("next"), this.appWcRef.appEvents.hotspotNextEvent.fire({ hotspot: this.activeHotspot }), this.activeHotspot;
1161
- }
1162
- previousHotspot() {
1163
- return this.stepHotspots("prev"), this.appWcRef.appEvents.hotspotPreviousEvent.fire({ hotspot: this.activeHotspot }), this.activeHotspot;
1164
- }
1165
- updateHotspots(t) {
1166
- for (const o of t) {
1167
- const n = this.hotspots.get(o.hotspotID);
1168
- n && n.updateHotspotConfig(o);
1169
- }
1170
- this._resolveHotspotCardContents();
1171
- }
1172
- updateHotspotsOrder(t) {
1173
- this.hotspotsOrder = t;
1174
- }
1175
- removeHotspots(t) {
1176
- this.activeHotspot && this.closeActiveHotspot();
1177
- for (const o of t)
1178
- this.hotspots.delete(o);
1179
- this.updateHotspotsOrder(Array.from(this.hotspots.keys()));
1180
- }
1181
- removeAllHotspots() {
1182
- this.removeHotspots(Array.from(this.hotspots.keys()));
1183
- }
1184
- setActiveHotspotByIndex(t) {
1185
- const o = this.hotspotsOrder[t];
1186
- this.setActiveHotspot({ hotspotId: o, state: this._cardsState });
1187
- }
1188
- setActiveHotspot({
1189
- hotspotId: t,
1190
- state: o = this._cardsState
1191
- }) {
1192
- if (this.activeHotspot?.hotspotID === t)
1193
- return;
1194
- if (t === null) {
1195
- this.activeHotspot = void 0, this.updateActiveHotspotIndex(), this.appWcRef.cameraManager.resetCurrentCameraTransformsToLastSavedState();
1196
- return;
1197
- }
1198
- this.enabled === !1 && (this.enabled = !0);
1199
- const n = !this.activeHotspot;
1200
- if (this.activeHotspot = this.hotspots.get(t), this.updateActiveHotspotIndex(), this.setActiveHotspotState(o), this._resolveHotspotCardContents(), this.appWcRef.appEvents.cameraMoveToTransform.fire({ cameraTransforms: this.activeHotspot?.camera, saveFirst: n }), this.appWcRef.isPortraitOrientation) {
1201
- let e = 0;
1202
- this.activeHotspot?.desktopPlacement === v.LEFT ? e = 0.2 : this.activeHotspot?.desktopPlacement === v.RIGHT && (e = -0.2), this.appWcRef.cameraManager.mainCameraControls.setFocalOffset(e, 0.2, 0, !0);
1203
- }
1204
- }
1205
- _resolveHotspotCardContents() {
1206
- this._allCards = [];
1207
- for (const t of this.hotspots.values()) {
1208
- const o = p`
1209
- <swiper-slide part="swiper-slide">
1210
- <style>
1211
- .expand-button {
1212
- position: absolute;
1213
- width: 100%;
1214
- height: 100%;
1215
- border-radius: 25px;
1216
- transition: opacity 0.8s, height 0.5s;
1217
- background-color: #f9f9f9;
1218
- z-index: 3;
1219
- font-family: "Helvetica Neue";
1220
- font-weight: 400;
1221
- display: flex;
1222
- flex-direction: column;
1223
- }
1224
-
1225
- .expand-button span {
1226
- height: 60px;
1227
- width: 100%;
1228
- display: flex;
1229
- align-items: center;
1230
- justify-content: center;
1231
- transition: opacity 0.5s, height 0.5s;
1232
- transition-delay: 0.25s;
1233
- }
1234
-
1235
- epg-card {
1236
- box-shadow: unset;
1237
- }
1238
-
1239
- swiper-slide {
1240
- box-shadow: 0px 0px 3px 3px rgba(12, 12, 13, 0.20);
1241
- height: calc(100% - 15px) !important;
1242
- align-self: center;
1243
- transition: transform 0.5s;
1244
- }
1245
- </style>
1246
-
1247
- <div class="expand-button" part="epg-card-expand-button">
1248
- ${t.renderCardTemplate()}
1249
- <span part="epg-card-expand-button-span">EXPAND</span>
1250
- </div>
1251
- </swiper-slide>
1252
- `;
1253
- this._allCards.push(o);
1254
- }
1255
- this.activeHotspot?.desktopPlacement === v.LEFT ? this._leftCardContents = this.activeHotspot.renderCardTemplate() : this.activeHotspot?.desktopPlacement === v.RIGHT && (this._rightCardContents = this.activeHotspot.renderCardTemplate());
1256
- }
1257
- expandCards() {
1258
- this._cardsState = d.expanded;
1259
- }
1260
- collapseCards() {
1261
- this._cardsState = d.collapsed;
1262
- }
1263
- setActiveHotspotState(t = d.collapsed) {
1264
- if (this.activeHotspot)
1265
- switch (t) {
1266
- case d.collapsed:
1267
- this.collapseCards();
1268
- break;
1269
- case d.expanded:
1270
- this.expandCards();
1271
- break;
1272
- }
1273
- }
1274
- openHotspot({ hotspotId: t, state: o }) {
1275
- this.setActiveHotspot({ hotspotId: t, state: o }), this.appWcRef.appEvents.hotspotOpenEvent.fire({ hotspot: this.activeHotspot });
1276
- }
1277
- closeActiveHotspot() {
1278
- const t = this.activeHotspot?.hotspotID;
1279
- this.setActiveHotspot({ hotspotId: null }), this.appWcRef.appEvents.hotspotClosedEvent.fire({ hotspotId: t });
1280
- }
1281
- recalculateHotspotPositions() {
1282
- this.requestUpdate();
1283
- }
1284
- _renderHotspotIndicatorTemplates() {
1285
- return Array.from(this.hotspots.values()).map(
1286
- (t) => t.renderAnnotationTemplate(
1287
- this.activeHotspot?.hotspotID
1288
- )
1289
- );
1290
- }
1291
- _onCardsCarouselSlideChange(t) {
1292
- this.setActiveHotspotByIndex(t.detail.newSlideIndex);
1293
- }
1294
- _onExpandButtonClicked(t) {
1295
- t.stopPropagation(), t.preventDefault(), this.setActiveHotspotState(d.expanded);
1296
- }
1297
- _renderMobileHotspotCardTemplates() {
1298
- const t = this._cardsState === d.expanded ? d.expanded : d.collapsed;
1299
- return p`
1300
- <div
1301
- id="mobileHotspotCardsContainer"
1302
- class="hotspot-cards-container carousel ${this.activeHotspot ? "show" : ""} ${t}"
1303
- >
1304
- <div class="expand-overlay" @click=${this._onExpandButtonClicked}>
1305
- <epg-carousel
1306
- nested
1307
- hide-pagination
1308
- ?swipe-only-interaction=${this._cardsState === d.collapsed}
1309
- .data=${this._allCards}
1310
- current-index=${this.activeHotspotIndex}
1311
- @slide-changed=${this._onCardsCarouselSlideChange}
1312
- slides-per-view=${this._cardsState === d.collapsed ? 1.2 : 1}
1313
- space-between=${this._cardsState === d.collapsed ? 20 : 0}
1314
- centered-slides
1315
- disable-interactions=${this._cardsState === d.expanded ? "true" : "false"}
1316
- auto-height="false"
1317
- ></epg-carousel>
1318
- </div>
1319
-
1320
- <div class="cards-carousel-top-panel">
1321
- <div class="page-indicator">${this.activeHotspotIndex + 1} / ${this._allCards.length}</div>
1322
- <epg-button-icon
1323
- id="closeButton"
1324
- aria-label="Close Card"
1325
- class="close-button"
1326
- left-icon="cancel"
1327
- @epgonclick=${this.closeActiveHotspot}
1328
- ></epg-button-icon>
1329
- </div>
1330
-
1331
- <epg-button-icon
1332
- id="collapseCardButton"
1333
- aria-label="Collapse Card Card"
1334
- class="collapse-card-button"
1335
- left-icon="cancel"
1336
- @epgonclick=${this.collapseCards}
1337
- part="collapse-card-button"
1338
- ></epg-button-icon>
1339
- </div>
1340
- `;
1341
- }
1342
- _renderDesktopHotspotCardTemplates() {
1343
- const t = `hotspot-cards-container left ${this.activeHotspot?.desktopPlacement === v.LEFT ? "show" : ""}`, o = `hotspot-cards-container right ${this.activeHotspot?.desktopPlacement === v.RIGHT ? "show" : ""}`;
1344
- return p`
1345
- <div id="leftHotspotCardsContainer" class=${t}>
1346
- <div class="cards-carousel-top-panel">
1347
- <epg-button-icon
1348
- id="closeButton"
1349
- aria-label="Close Card"
1350
- class="close-button"
1351
- left-icon="cancel"
1352
- @epgonclick=${this.closeActiveHotspot}
1353
- ></epg-button-icon>
1354
- </div>
1355
- ${this._leftCardContents}
1356
- </div>
1357
- <div id="rightHotspotCardsContainer" class=${o}>
1358
- <div class="cards-carousel-top-panel">
1359
- <epg-button-icon
1360
- id="closeButton"
1361
- aria-label="Close Card"
1362
- class="close-button"
1363
- left-icon="cancel"
1364
- @epgonclick=${this.closeActiveHotspot}
1365
- ></epg-button-icon>
1366
- </div>
1367
- ${this._rightCardContents}
1368
- </div>
1369
- `;
1370
- }
1371
- _setupEventListeners() {
1372
- this.appWcRef.addEventListener(
1373
- this.appWcRef.appEvents.hotspotClickedEvent.name,
1374
- (t) => {
1375
- this.openHotspot({ hotspotId: t.detail.hotspot.hotspotID });
1376
- }
1377
- );
1378
- }
1379
- render() {
1380
- return this.enabled ? (this.isPortrait = this.appWcRef.isPortraitOrientation, p`
1381
- ${this._renderHotspotIndicatorTemplates()}
1382
-
1383
- ${this.appWcRef.isPortraitOrientation ? this._renderMobileHotspotCardTemplates() : this._renderDesktopHotspotCardTemplates()}
1384
- `) : b;
1385
- }
1386
- };
1387
- g([
1388
- r({ attribute: !1 })
1389
- ], f.prototype, "hotspots");
1390
- g([
1391
- r({ attribute: !1 })
1392
- ], f.prototype, "hotspotsOrder");
1393
- g([
1394
- r({ attribute: !1 })
1395
- ], f.prototype, "activeHotspot");
1396
- g([
1397
- r({ attribute: !1 })
1398
- ], f.prototype, "activeHotspotIndex");
1399
- g([
1400
- r({ type: Boolean, attribute: "is-portrait", reflect: !0 })
1401
- ], f.prototype, "isPortrait");
1402
- g([
1403
- H()
1404
- ], f.prototype, "_cardsState");
1405
- g([
1406
- H()
1407
- ], f.prototype, "_leftCardContents");
1408
- g([
1409
- H()
1410
- ], f.prototype, "_rightCardContents");
1411
- g([
1412
- H()
1413
- ], f.prototype, "_allCards");
1414
- g([
1415
- S("#leftHotspotCardsContainer")
1416
- ], f.prototype, "leftHotspotCardsContainerElem");
1417
- g([
1418
- S("#rightHotspotCardsContainer")
1419
- ], f.prototype, "rightHotspotCardsContainerElem");
1420
- let et = f;
1421
- export {
1422
- u as E,
1423
- et as H,
1424
- M,
1425
- c as U
1426
- };