js-cloudimage-hotspot 1.1.2 → 1.1.4

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,5 +1,5 @@
1
1
  import { jsxs as rt, Fragment as N, jsx as W } from "react/jsx-runtime";
2
- import at, { useRef as S, useEffect as O, forwardRef as ct, useImperativeHandle as lt } from "react";
2
+ import at, { useRef as P, useEffect as O, forwardRef as ct, useImperativeHandle as lt } from "react";
3
3
  import { createPortal as ht } from "react-dom";
4
4
  const pt = {
5
5
  alt: "",
@@ -15,6 +15,8 @@ const pt = {
15
15
  sceneTransition: "fade",
16
16
  scrollHint: !0,
17
17
  invertMarkerTheme: !1,
18
+ markerTheme: "default",
19
+ brandColor: "#00aaff",
18
20
  fullscreenButton: !0,
19
21
  zoomControlsPosition: "bottom-right"
20
22
  }, dt = {
@@ -41,6 +43,8 @@ const pt = {
41
43
  "data-ci-hotspot-scene-transition": { key: "sceneTransition", type: "string" },
42
44
  "data-ci-hotspot-scene-aspect-ratio": { key: "sceneAspectRatio", type: "string" },
43
45
  "data-ci-hotspot-invert-marker-theme": { key: "invertMarkerTheme", type: "boolean" },
46
+ "data-ci-hotspot-marker-theme": { key: "markerTheme", type: "string" },
47
+ "data-ci-hotspot-brand-color": { key: "brandColor", type: "string" },
44
48
  "data-ci-hotspot-fullscreen-button": { key: "fullscreenButton", type: "boolean" },
45
49
  "data-ci-hotspot-zoom-controls-position": { key: "zoomControlsPosition", type: "string" }
46
50
  };
@@ -85,7 +89,7 @@ function j(i) {
85
89
  hotspots: i.hotspots || []
86
90
  };
87
91
  }
88
- function B(i) {
92
+ function V(i) {
89
93
  if (i.scenes && i.scenes.length > 0) {
90
94
  const t = /* @__PURE__ */ new Set();
91
95
  for (const e of i.scenes) {
@@ -103,7 +107,7 @@ function B(i) {
103
107
  } else if (!i.src)
104
108
  throw new Error('CIHotspot: "src" is required');
105
109
  }
106
- const V = "ci-hotspot-styles";
110
+ const B = "ci-hotspot-styles";
107
111
  function ot() {
108
112
  return typeof window < "u" && typeof document < "u";
109
113
  }
@@ -122,16 +126,16 @@ function v(i, t, e) {
122
126
  o.setAttribute(s, c);
123
127
  return o;
124
128
  }
125
- function g(i, ...t) {
129
+ function m(i, ...t) {
126
130
  i.classList.add(...t);
127
131
  }
128
- function k(i, ...t) {
132
+ function y(i, ...t) {
129
133
  i.classList.remove(...t);
130
134
  }
131
135
  function gt(i) {
132
- if (!ot() || document.getElementById(V)) return;
136
+ if (!ot() || document.getElementById(B)) return;
133
137
  const t = document.createElement("style");
134
- t.id = V, t.textContent = i, document.head.appendChild(t);
138
+ t.id = B, t.textContent = i, document.head.appendChild(t);
135
139
  }
136
140
  function _(i) {
137
141
  if (typeof i == "string") {
@@ -159,10 +163,10 @@ function vt(i, t) {
159
163
  });
160
164
  if (e.style.left = `${i.x}%`, e.style.top = `${i.y}%`, i.className) {
161
165
  const o = i.className.trim().split(/\s+/).filter(Boolean);
162
- o.length && g(e, ...o);
166
+ o.length && m(e, ...o);
163
167
  }
164
- if (i.hidden && g(e, "ci-hotspot-marker--hidden"), t && g(e, "ci-hotspot-marker--pulse"), i.icon && wt(e, i.icon), i.markerStyle === "dot-label" && i.label) {
165
- g(e, "ci-hotspot-marker--dot-label");
168
+ if (i.hidden && m(e, "ci-hotspot-marker--hidden"), t && m(e, "ci-hotspot-marker--pulse"), i.icon && kt(e, i.icon), i.markerStyle === "dot-label" && i.label) {
169
+ m(e, "ci-hotspot-marker--dot-label");
166
170
  const o = v("span", "ci-hotspot-marker-label");
167
171
  o.textContent = i.label, e.appendChild(o);
168
172
  }
@@ -202,7 +206,7 @@ function it(i) {
202
206
  it(t);
203
207
  }
204
208
  }
205
- function wt(i, t) {
209
+ function kt(i, t) {
206
210
  const e = t.trim();
207
211
  if (/^<svg[\s>]/i.test(e) || /^<\?xml/i.test(e))
208
212
  i.innerHTML = bt(t);
@@ -218,47 +222,47 @@ function wt(i, t) {
218
222
  i.appendChild(o);
219
223
  }
220
224
  }
221
- function m(i, t) {
222
- t ? (g(i, "ci-hotspot-marker--active"), i.setAttribute("aria-expanded", "true")) : (k(i, "ci-hotspot-marker--active"), i.setAttribute("aria-expanded", "false"));
225
+ function g(i, t) {
226
+ t ? (m(i, "ci-hotspot-marker--active"), i.setAttribute("aria-expanded", "true")) : (y(i, "ci-hotspot-marker--active"), i.setAttribute("aria-expanded", "false"));
223
227
  }
224
- function kt(i, t) {
225
- t ? g(i, "ci-hotspot-marker--hidden") : k(i, "ci-hotspot-marker--hidden");
228
+ function wt(i, t) {
229
+ t ? m(i, "ci-hotspot-marker--hidden") : y(i, "ci-hotspot-marker--hidden");
226
230
  }
227
- function A(i) {
231
+ function F(i) {
228
232
  i.remove();
229
233
  }
230
234
  function xt(i, t, e, o) {
231
- const s = i.getBoundingClientRect(), c = e.getBoundingClientRect(), n = t.offsetWidth, r = t.offsetHeight, a = s.left + s.width / 2 - c.left, l = s.top + s.height / 2 - c.top, d = s.top - c.top, h = s.bottom - c.top, p = s.left - c.left, u = s.right - c.left, w = e.offsetWidth, b = e.offsetHeight, y = 8, M = {
232
- top: d - y,
233
- bottom: b - h - y,
234
- left: p - y,
235
- right: w - u - y
235
+ const s = i.getBoundingClientRect(), c = e.getBoundingClientRect(), n = t.offsetWidth, r = t.offsetHeight, a = s.left + s.width / 2 - c.left, l = s.top + s.height / 2 - c.top, d = s.top - c.top, h = s.bottom - c.top, p = s.left - c.left, u = s.right - c.left, w = e.offsetWidth, b = e.offsetHeight, k = 8, L = {
236
+ top: d - k,
237
+ bottom: b - h - k,
238
+ left: p - k,
239
+ right: w - u - k
236
240
  };
237
241
  let E = o.placement;
238
- E === "auto" && (E = Et(M)), E = zt(E, n, r, M);
239
- let z, T, $ = 0;
242
+ E === "auto" && (E = Et(L)), E = zt(E, n, r, L);
243
+ let z, T, X = 0;
240
244
  switch (E) {
241
245
  case "top":
242
- z = a - n / 2, T = d - y - r;
246
+ z = a - n / 2, T = d - k - r;
243
247
  break;
244
248
  case "bottom":
245
- z = a - n / 2, T = h + y;
249
+ z = a - n / 2, T = h + k;
246
250
  break;
247
251
  case "left":
248
- z = p - y - n, T = l - r / 2;
252
+ z = p - k - n, T = l - r / 2;
249
253
  break;
250
254
  case "right":
251
- z = u + y, T = l - r / 2;
255
+ z = u + k, T = l - r / 2;
252
256
  break;
253
257
  default:
254
- z = a - n / 2, T = d - y - r;
258
+ z = a - n / 2, T = d - k - r;
255
259
  }
256
- const L = Tt(z, T, n, r, w, b);
257
- return $ = E === "top" || E === "bottom" ? z - L.x : T - L.y, {
258
- x: L.x,
259
- y: L.y,
260
+ const A = Tt(z, T, n, r, w, b);
261
+ return X = E === "top" || E === "bottom" ? z - A.x : T - A.y, {
262
+ x: A.x,
263
+ y: A.y,
260
264
  placement: E,
261
- arrowOffset: $
265
+ arrowOffset: X
262
266
  };
263
267
  }
264
268
  function Et(i) {
@@ -315,7 +319,7 @@ const Ct = /* @__PURE__ */ new Set([
315
319
  "title",
316
320
  "target",
317
321
  "rel"
318
- ]), Ht = /^(?:https?:|mailto:)/i, Pt = /^(?:https?:|data:image\/(?!svg[+%]))/i, Mt = /* @__PURE__ */ new Set([
322
+ ]), Pt = /^(?:https?:|mailto:)/i, Ht = /^(?:https?:|data:image\/(?!svg[+%]))/i, Mt = /* @__PURE__ */ new Set([
319
323
  "noopener",
320
324
  "noreferrer",
321
325
  "nofollow",
@@ -354,9 +358,9 @@ function st(i) {
354
358
  o.removeAttribute(n.name);
355
359
  continue;
356
360
  }
357
- if (r === "href" && !Ht.test(n.value.trim()))
361
+ if (r === "href" && !Pt.test(n.value.trim()))
358
362
  o.removeAttribute(n.name);
359
- else if (r === "src" && !Pt.test(n.value.trim()))
363
+ else if (r === "src" && !Ht.test(n.value.trim()))
360
364
  o.removeAttribute(n.name);
361
365
  else if (r === "rel") {
362
366
  const a = n.value.trim().toLowerCase().split(/\s+/).filter((l) => Mt.has(l));
@@ -369,16 +373,21 @@ function st(i) {
369
373
  }
370
374
  function At(i) {
371
375
  const t = [];
372
- i.image && t.push(`<div class="ci-hotspot-popover-image-wrapper"><img class="ci-hotspot-popover-image" src="${R(i.image)}" alt="${R(i.title || "")}"></div>`);
376
+ i.image && t.push(`<div class="ci-hotspot-popover-image-wrapper"><img class="ci-hotspot-popover-image" src="${S(i.image)}" alt="${S(i.title || "")}"></div>`);
373
377
  const e = [];
374
378
  if (i.title && e.push(`<h3 class="ci-hotspot-popover-title">${C(i.title)}</h3>`), i.originalPrice || i.price) {
375
379
  let o = "";
376
380
  i.originalPrice && (o += `<span class="ci-hotspot-popover-original-price">${C(i.originalPrice)}</span>`), i.price && (o += `<span class="ci-hotspot-popover-price">${C(i.price)}</span>`), e.push(`<div class="ci-hotspot-popover-price-row">${o}</div>`);
377
381
  }
378
382
  if (i.description && e.push(`<p class="ci-hotspot-popover-description">${C(i.description)}</p>`), i.url && Dt(i.url)) {
383
+ const o = i.ctaText || "View details", s = i.id ? ` data-product-id="${S(i.id)}"` : "";
384
+ e.push(
385
+ `<a class="ci-hotspot-popover-cta" href="${S(i.url)}"${s}>${C(String(o))}</a>`
386
+ );
387
+ } else if (i.id) {
379
388
  const o = i.ctaText || "View details";
380
389
  e.push(
381
- `<a class="ci-hotspot-popover-cta" href="${R(i.url)}">${C(String(o))}</a>`
390
+ `<button class="ci-hotspot-popover-cta" data-product-id="${S(i.id)}">${C(String(o))}</button>`
382
391
  );
383
392
  }
384
393
  return e.length > 0 && t.push(`<div class="ci-hotspot-popover-body">${e.join("")}</div>`), t.join("");
@@ -393,7 +402,7 @@ function Dt(i) {
393
402
  const t = i.replace(/[\s\x00-\x1f]/g, "");
394
403
  return /^https?:\/\//i.test(t) || /^\/(?!\/)/.test(t) || /^#/.test(t);
395
404
  }
396
- function R(i) {
405
+ function S(i) {
397
406
  return i.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/'/g, "&#39;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
398
407
  }
399
408
  class q {
@@ -408,7 +417,16 @@ class q {
408
417
  ...o && t.label ? { "aria-label": t.label } : {}
409
418
  }), this.arrowEl = v("div", "ci-hotspot-popover-arrow"), this.contentEl = v("div", "ci-hotspot-popover-content"), this.element.appendChild(this.arrowEl), this.element.appendChild(this.contentEl);
410
419
  const s = Ft(t, e.renderFn);
411
- if (typeof s == "string" ? this.contentEl.innerHTML = s : s instanceof HTMLElement && this.contentEl.appendChild(s), e.triggerMode === "hover") {
420
+ if (typeof s == "string" ? this.contentEl.innerHTML = s : s instanceof HTMLElement && this.contentEl.appendChild(s), e.onProductClick) {
421
+ const c = (n) => {
422
+ const r = n.target.closest(".ci-hotspot-popover-cta[data-product-id]");
423
+ if (!r) return;
424
+ const a = r.dataset.productId;
425
+ e.onProductClick(a, t);
426
+ };
427
+ this.contentEl.addEventListener("click", c), this.hoverCleanups.push(() => this.contentEl.removeEventListener("click", c));
428
+ }
429
+ if (e.triggerMode === "hover") {
412
430
  const c = () => this.clearHideTimer(), n = () => this.scheduleHide();
413
431
  this.element.addEventListener("mouseenter", c), this.element.addEventListener("mouseleave", n), this.hoverCleanups.push(
414
432
  () => this.element.removeEventListener("mouseenter", c),
@@ -423,7 +441,7 @@ class q {
423
441
  /** Show the popover */
424
442
  show() {
425
443
  var t, e;
426
- this.clearHideTimer(), !this.visible && (this.visible = !0, g(this.element, "ci-hotspot-popover--visible"), this.element.setAttribute("aria-hidden", "false"), this.updatePosition(), (e = (t = this.options).onOpen) == null || e.call(t, this.hotspot));
444
+ this.clearHideTimer(), !this.visible && (this.visible = !0, m(this.element, "ci-hotspot-popover--visible"), this.element.setAttribute("aria-hidden", "false"), this.updatePosition(), (e = (t = this.options).onOpen) == null || e.call(t, this.hotspot));
427
445
  }
428
446
  /** Schedule hide with delay (for hover mode) */
429
447
  scheduleHide(t = 200) {
@@ -434,7 +452,7 @@ class q {
434
452
  /** Hide the popover immediately */
435
453
  hide() {
436
454
  var t, e;
437
- this.clearHideTimer(), this.visible && (this.visible = !1, k(this.element, "ci-hotspot-popover--visible"), this.element.setAttribute("aria-hidden", "true"), (e = (t = this.options).onClose) == null || e.call(t, this.hotspot));
455
+ this.clearHideTimer(), this.visible && (this.visible = !1, y(this.element, "ci-hotspot-popover--visible"), this.element.setAttribute("aria-hidden", "true"), (e = (t = this.options).onClose) == null || e.call(t, this.hotspot));
438
456
  }
439
457
  /** Clear any pending hide timer */
440
458
  clearHideTimer() {
@@ -548,13 +566,13 @@ class Rt {
548
566
  };
549
567
  this.container.addEventListener("dblclick", e), this.cleanups.push(() => this.container.removeEventListener("dblclick", e));
550
568
  const o = (n) => {
551
- !this.enabled || this.zoom <= 1 || n.button === 0 && (this.isDragging = !0, this.dragStartX = n.clientX, this.dragStartY = n.clientY, this.lastPanX = this.panX, this.lastPanY = this.panY, g(this.viewport, "ci-hotspot-viewport--dragging"), this.container.style.cursor = "grabbing", n.preventDefault());
569
+ !this.enabled || this.zoom <= 1 || n.button === 0 && (this.isDragging = !0, this.dragStartX = n.clientX, this.dragStartY = n.clientY, this.lastPanX = this.panX, this.lastPanY = this.panY, m(this.viewport, "ci-hotspot-viewport--dragging"), this.container.style.cursor = "grabbing", n.preventDefault());
552
570
  }, s = (n) => {
553
571
  if (!this.isDragging) return;
554
572
  const r = (n.clientX - this.dragStartX) / this.zoom, a = (n.clientY - this.dragStartY) / this.zoom;
555
573
  this.panX = this.lastPanX + r, this.panY = this.lastPanY + a, this.clampPan(), this.applyTransform();
556
574
  }, c = () => {
557
- this.isDragging && (this.isDragging = !1, k(this.viewport, "ci-hotspot-viewport--dragging"), this.container.style.cursor = this.zoom > 1 ? "grab" : "");
575
+ this.isDragging && (this.isDragging = !1, y(this.viewport, "ci-hotspot-viewport--dragging"), this.container.style.cursor = this.zoom > 1 ? "grab" : "");
558
576
  };
559
577
  this.container.addEventListener("mousedown", o), document.addEventListener("mousemove", s), document.addEventListener("mouseup", c), this.cleanups.push(
560
578
  () => this.container.removeEventListener("mousedown", o),
@@ -673,7 +691,7 @@ function Zt(i, t, e) {
673
691
  };
674
692
  }
675
693
  const Yt = "Ctrl + scroll or pinch to zoom", Ot = 1500;
676
- class Xt {
694
+ class $t {
677
695
  constructor(t) {
678
696
  this.hideTimer = null, this.el = document.createElement("div"), this.el.className = "ci-hotspot-scroll-hint", this.el.textContent = Yt, this.el.setAttribute("aria-hidden", "true"), t.appendChild(this.el);
679
697
  }
@@ -686,21 +704,21 @@ class Xt {
686
704
  this.hideTimer !== null && (clearTimeout(this.hideTimer), this.hideTimer = null), this.el.remove();
687
705
  }
688
706
  }
689
- const $t = "cloudimg.io", Nt = "v7", I = 100;
690
- function Wt(i, t = I) {
707
+ const Xt = "cloudimg.io", Nt = "v7", R = 100;
708
+ function Wt(i, t = R) {
691
709
  return Math.ceil(i / t) * t;
692
710
  }
693
- function nt(i, t = 1, e = 1, o = I) {
711
+ function nt(i, t = 1, e = 1, o = R) {
694
712
  const s = i * t * e;
695
713
  return Wt(s, o);
696
714
  }
697
715
  function H(i, t, e, o = 1, s = 1) {
698
- const c = t.domain || $t, n = t.apiVersion || Nt, r = t.limitFactor || I, a = nt(e, s, o, r), l = encodeURI(i);
716
+ const c = t.domain || Xt, n = t.apiVersion || Nt, r = t.limitFactor || R, a = nt(e, s, o, r), l = encodeURI(i);
699
717
  let d = `https://${t.token}.${c}/${n}/${l}?width=${a}`;
700
718
  return t.params && (d += `&${t.params}`), d;
701
719
  }
702
720
  function jt(i, t, e, o) {
703
- const s = e.limitFactor || I;
721
+ const s = e.limitFactor || R;
704
722
  let c = 0;
705
723
  const n = new ResizeObserver((r) => {
706
724
  for (const a of r) {
@@ -715,8 +733,8 @@ function jt(i, t, e, o) {
715
733
  destroy: () => n.disconnect()
716
734
  };
717
735
  }
718
- const F = 50, K = 0.5;
719
- class Bt {
736
+ const D = 50, K = 0.5;
737
+ class Vt {
720
738
  constructor(t) {
721
739
  this.cleanups = [];
722
740
  const { container: e, getZoomPan: o, onEscape: s, onFullscreenToggle: c } = t, n = f(e, "keydown", (r) => {
@@ -729,16 +747,16 @@ class Bt {
729
747
  s == null || s();
730
748
  break;
731
749
  case "ArrowUp":
732
- l && l.getZoom() > 1 && (r.preventDefault(), l.pan(0, F));
750
+ l && l.getZoom() > 1 && (r.preventDefault(), l.pan(0, D));
733
751
  break;
734
752
  case "ArrowDown":
735
- l && l.getZoom() > 1 && (r.preventDefault(), l.pan(0, -F));
753
+ l && l.getZoom() > 1 && (r.preventDefault(), l.pan(0, -D));
736
754
  break;
737
755
  case "ArrowLeft":
738
- l && l.getZoom() > 1 && (r.preventDefault(), l.pan(F, 0));
756
+ l && l.getZoom() > 1 && (r.preventDefault(), l.pan(D, 0));
739
757
  break;
740
758
  case "ArrowRight":
741
- l && l.getZoom() > 1 && (r.preventDefault(), l.pan(-F, 0));
759
+ l && l.getZoom() > 1 && (r.preventDefault(), l.pan(-D, 0));
742
760
  break;
743
761
  case "+":
744
762
  case "=":
@@ -761,9 +779,9 @@ class Bt {
761
779
  this.cleanups.forEach((t) => t()), this.cleanups = [];
762
780
  }
763
781
  }
764
- const Vt = 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])';
782
+ const Bt = 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])';
765
783
  function U(i) {
766
- return Array.from(i.querySelectorAll(Vt));
784
+ return Array.from(i.querySelectorAll(Bt));
767
785
  }
768
786
  function J(i, t) {
769
787
  let e = !1, o = null;
@@ -787,7 +805,7 @@ function J(i, t) {
787
805
  }
788
806
  return { activate: s, deactivate: c, destroy: n };
789
807
  }
790
- let x = null, D = 0;
808
+ let x = null, I = 0;
791
809
  function _t(i) {
792
810
  ot() && (x || (x = v("div", void 0, {
793
811
  "aria-live": "polite",
@@ -798,10 +816,10 @@ function _t(i) {
798
816
  }));
799
817
  }
800
818
  function Q() {
801
- D++;
819
+ I++;
802
820
  }
803
821
  function Gt() {
804
- D = Math.max(0, D - 1), D === 0 && x && (x.remove(), x = null);
822
+ I = Math.max(0, I - 1), I === 0 && x && (x.remove(), x = null);
805
823
  }
806
824
  const tt = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 3 21 3 21 9"/><polyline points="9 21 3 21 3 15"/><line x1="21" x2="14" y1="3" y2="10"/><line x1="3" x2="10" y1="21" y2="14"/></svg>', qt = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="4 14 10 14 10 20"/><polyline points="20 10 14 10 14 4"/><line x1="14" x2="21" y1="10" y2="3"/><line x1="3" x2="10" y1="21" y2="14"/></svg>';
807
825
  function Kt() {
@@ -831,7 +849,7 @@ function Jt(i, t = {}) {
831
849
  function c() {
832
850
  var u;
833
851
  const p = s();
834
- e.innerHTML = p ? qt : tt, e.setAttribute("aria-label", p ? "Exit fullscreen" : "Enter fullscreen"), e.setAttribute("aria-pressed", String(p)), p ? g(i, "ci-hotspot-container--fullscreen") : k(i, "ci-hotspot-container--fullscreen"), (u = t.onChange) == null || u.call(t, p);
852
+ e.innerHTML = p ? qt : tt, e.setAttribute("aria-label", p ? "Exit fullscreen" : "Enter fullscreen"), e.setAttribute("aria-pressed", String(p)), p ? m(i, "ci-hotspot-container--fullscreen") : y(i, "ci-hotspot-container--fullscreen"), (u = t.onChange) == null || u.call(t, p);
835
853
  }
836
854
  function n() {
837
855
  s() ? Z().catch(() => {
@@ -854,7 +872,7 @@ function Jt(i, t = {}) {
854
872
  o.push(d), i.appendChild(e);
855
873
  function h() {
856
874
  s() && Z().catch(() => {
857
- }), k(i, "ci-hotspot-container--fullscreen"), o.forEach((p) => p()), o.length = 0, e.remove();
875
+ }), y(i, "ci-hotspot-container--fullscreen"), o.forEach((p) => p()), o.length = 0, e.remove();
858
876
  }
859
877
  return {
860
878
  element: e,
@@ -865,9 +883,9 @@ function Jt(i, t = {}) {
865
883
  destroy: h
866
884
  };
867
885
  }
868
- const Qt = '.ci-hotspot-container{--ci-hotspot-marker-size: 24px;--ci-hotspot-marker-color: #ffffff;--ci-hotspot-marker-bg: rgba(0, 0, 0, .6);--ci-hotspot-marker-border-width: 2px;--ci-hotspot-marker-border-color: rgba(255, 255, 255, .8);--ci-hotspot-marker-border: var(--ci-hotspot-marker-border-width) solid var(--ci-hotspot-marker-border-color);--ci-hotspot-marker-border-radius: 50%;--ci-hotspot-marker-shadow: 0 2px 8px rgba(0, 0, 0, .3);--ci-hotspot-pulse-color: rgba(0, 0, 0, .2);--ci-hotspot-pulse-size: 40px;--ci-hotspot-pulse-duration: 1.8s;--ci-hotspot-popover-bg: #ffffff;--ci-hotspot-popover-color: #1a1a1a;--ci-hotspot-popover-border: 1px solid rgba(0, 0, 0, .1);--ci-hotspot-popover-border-radius: 12px;--ci-hotspot-popover-shadow: 0 8px 32px rgba(0, 0, 0, .12);--ci-hotspot-popover-padding: 16px;--ci-hotspot-popover-max-width: 320px;--ci-hotspot-popover-max-height: 400px;--ci-hotspot-popover-font-family: inherit;--ci-hotspot-popover-font-size: 14px;--ci-hotspot-popover-line-height: 1.5;--ci-hotspot-popover-z-index: 1000;--ci-hotspot-arrow-size: 8px;--ci-hotspot-arrow-color: var(--ci-hotspot-popover-bg);--ci-hotspot-title-font-size: 16px;--ci-hotspot-title-font-weight: 600;--ci-hotspot-title-color: #1a1a1a;--ci-hotspot-price-color: #2d8c3c;--ci-hotspot-price-font-size: 18px;--ci-hotspot-price-font-weight: 700;--ci-hotspot-description-color: #666666;--ci-hotspot-cta-bg: #0058a3;--ci-hotspot-cta-color: #ffffff;--ci-hotspot-cta-border-radius: 8px;--ci-hotspot-cta-padding: 8px 16px;--ci-hotspot-original-price-color: #999999;--ci-hotspot-popover-text-align: left;--ci-hotspot-hover-transition: .2s ease;--ci-hotspot-popover-transition: .3s ease;--ci-hotspot-scene-transition-duration: .4s;--ci-hotspot-zoom-controls-bg: rgba(255, 255, 255, .9);--ci-hotspot-zoom-controls-color: #333333;--ci-hotspot-zoom-controls-border-radius: 8px;--ci-hotspot-zoom-controls-shadow: 0 2px 8px rgba(0, 0, 0, .15)}.ci-hotspot-container *,.ci-hotspot-container *:before,.ci-hotspot-container *:after{box-sizing:border-box}.ci-hotspot-container{position:relative;overflow:hidden;width:100%;line-height:0;user-select:none;-webkit-user-select:none}.ci-hotspot-viewport{position:relative;width:100%;transform-origin:0 0;will-change:transform;transition:transform .3s ease}.ci-hotspot-viewport--dragging{transition:none}.ci-hotspot-image{display:block;width:100%;height:auto;pointer-events:none}.ci-hotspot-markers{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.ci-hotspot-marker{position:absolute;width:var(--ci-hotspot-marker-size);height:var(--ci-hotspot-marker-size);padding:0;border:var(--ci-hotspot-marker-border);border-radius:var(--ci-hotspot-marker-border-radius);background:var(--ci-hotspot-marker-bg);color:var(--ci-hotspot-marker-color);box-shadow:var(--ci-hotspot-marker-shadow);cursor:pointer;pointer-events:auto;transform:translate(-50%,-50%) scale(calc(1 / var(--zoom, 1)));transition:transform var(--ci-hotspot-hover-transition),box-shadow var(--ci-hotspot-hover-transition);z-index:1;display:flex;align-items:center;justify-content:center;font-size:12px;line-height:1;outline:none}.ci-hotspot-marker:hover{transform:translate(-50%,-50%) scale(calc(1.2 / var(--zoom, 1)));box-shadow:0 4px 12px #0006}.ci-hotspot-marker:focus-visible{outline:3px solid var(--ci-hotspot-focus-ring, #4A90D9);outline-offset:2px}.ci-hotspot-marker--active{transform:translate(-50%,-50%) scale(calc(1.2 / var(--zoom, 1)));z-index:2}.ci-hotspot-marker--hidden{display:none}.ci-hotspot-marker--dot-label{overflow:visible}.ci-hotspot-marker-label{position:absolute;left:calc(50% + var(--ci-hotspot-marker-size) / 2 + 4px);top:50%;transform:translateY(-50%);padding:3px 10px;font-size:11px;font-weight:600;white-space:nowrap;color:var(--ci-hotspot-marker-color);background:var(--ci-hotspot-marker-bg);border:var(--ci-hotspot-marker-border);border-radius:100px;box-shadow:var(--ci-hotspot-marker-shadow)}.ci-hotspot-marker--dot-label.ci-hotspot-marker--pulse{animation:none}.ci-hotspot-marker--pulse:before{content:"";position:absolute;top:50%;left:50%;width:var(--ci-hotspot-pulse-size);height:var(--ci-hotspot-pulse-size);border-radius:50%;background:var(--ci-hotspot-pulse-color);transform:translate(-50%,-50%) scale(1);animation:ci-hotspot-pulse var(--ci-hotspot-pulse-duration) ease-out infinite;pointer-events:none}@keyframes ci-hotspot-pulse{0%{transform:translate(-50%,-50%) scale(1);opacity:1}to{transform:translate(-50%,-50%) scale(1.8);opacity:0}}.ci-hotspot-marker--pulse{animation:ci-hotspot-breathe 2.4s ease-in-out infinite}.ci-hotspot-marker--pulse:hover,.ci-hotspot-marker--pulse.ci-hotspot-marker--active{animation:none}@keyframes ci-hotspot-breathe{0%,to{transform:translate(-50%,-50%) scale(calc(1 / var(--zoom, 1)))}50%{transform:translate(-50%,-50%) scale(calc(1.15 / var(--zoom, 1)))}}.ci-hotspot-popover{position:absolute;z-index:var(--ci-hotspot-popover-z-index);max-width:var(--ci-hotspot-popover-max-width);background:var(--ci-hotspot-popover-bg);color:var(--ci-hotspot-popover-color);border:var(--ci-hotspot-popover-border);border-radius:var(--ci-hotspot-popover-border-radius);box-shadow:var(--ci-hotspot-popover-shadow);font-family:var(--ci-hotspot-popover-font-family);font-size:var(--ci-hotspot-popover-font-size);line-height:var(--ci-hotspot-popover-line-height);opacity:0;pointer-events:none;transform:translateY(4px);transition:opacity var(--ci-hotspot-popover-transition),transform var(--ci-hotspot-popover-transition)}.ci-hotspot-popover--visible{opacity:1;pointer-events:auto;transform:translateY(0);animation:ci-hotspot-popover-in var(--ci-hotspot-popover-transition) forwards}@keyframes ci-hotspot-popover-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.ci-hotspot-popover-arrow{position:absolute;width:calc(var(--ci-hotspot-arrow-size) * 2);height:calc(var(--ci-hotspot-arrow-size) * 2);background:var(--ci-hotspot-arrow-color);transform:rotate(45deg);pointer-events:none}.ci-hotspot-popover[data-placement=top] .ci-hotspot-popover-arrow{bottom:calc(var(--ci-hotspot-arrow-size) * -1)}.ci-hotspot-popover[data-placement=bottom] .ci-hotspot-popover-arrow{top:calc(var(--ci-hotspot-arrow-size) * -1)}.ci-hotspot-popover[data-placement=left] .ci-hotspot-popover-arrow{right:calc(var(--ci-hotspot-arrow-size) * -1)}.ci-hotspot-popover[data-placement=right] .ci-hotspot-popover-arrow{left:calc(var(--ci-hotspot-arrow-size) * -1)}.ci-hotspot-popover-content{padding:var(--ci-hotspot-popover-padding);max-height:var(--ci-hotspot-popover-max-height);overflow-y:auto;overflow-x:hidden;border-radius:var(--ci-hotspot-popover-border-radius)}.ci-hotspot-popover-image-wrapper{aspect-ratio:16 / 9;overflow:hidden;border-radius:calc(var(--ci-hotspot-popover-border-radius) - 4px) calc(var(--ci-hotspot-popover-border-radius) - 4px) 0 0;margin:calc(var(--ci-hotspot-popover-padding) * -1);margin-bottom:12px;width:calc(100% + var(--ci-hotspot-popover-padding) * 2)}.ci-hotspot-popover-image{display:block;width:100%;height:100%;object-fit:cover}.ci-hotspot-popover-body{line-height:1.5;text-align:var(--ci-hotspot-popover-text-align)}.ci-hotspot-popover-title{margin:0 0 4px;font-size:var(--ci-hotspot-title-font-size);font-weight:var(--ci-hotspot-title-font-weight);color:var(--ci-hotspot-title-color)}.ci-hotspot-popover-price{display:inline-block;margin-bottom:8px;font-size:var(--ci-hotspot-price-font-size);font-weight:var(--ci-hotspot-price-font-weight);color:var(--ci-hotspot-price-color)}.ci-hotspot-popover-price-row{display:inline-flex;align-items:baseline;gap:6px;margin-bottom:8px;flex-wrap:wrap}.ci-hotspot-popover-price-row .ci-hotspot-popover-price{margin-bottom:0}.ci-hotspot-popover-original-price{font-size:calc(var(--ci-hotspot-price-font-size) - 2px);font-weight:500;color:var(--ci-hotspot-original-price-color);text-decoration:line-through}.ci-hotspot-popover-description{margin:0 0 12px;color:var(--ci-hotspot-description-color)}.ci-hotspot-popover-cta{display:inline-block;padding:var(--ci-hotspot-cta-padding);background:var(--ci-hotspot-cta-bg);color:var(--ci-hotspot-cta-color);border-radius:var(--ci-hotspot-cta-border-radius);text-decoration:none;font-weight:600;font-size:14px;transition:opacity .2s ease}.ci-hotspot-popover-cta:hover{opacity:.9}.ci-hotspot-popover-cta:focus-visible{outline:3px solid var(--ci-hotspot-focus-ring, #4A90D9);outline-offset:2px}.ci-hotspot-zoom-controls{position:absolute;display:flex;gap:2px;background:var(--ci-hotspot-zoom-controls-bg);border-radius:var(--ci-hotspot-zoom-controls-border-radius);box-shadow:var(--ci-hotspot-zoom-controls-shadow);z-index:10;overflow:hidden}.ci-hotspot-zoom-controls button{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:transparent;color:var(--ci-hotspot-zoom-controls-color);cursor:pointer;font-size:18px;line-height:1;padding:0;transition:background .15s ease}.ci-hotspot-zoom-controls button:hover{background:#0000000d}.ci-hotspot-zoom-controls button:disabled{opacity:.3;cursor:default}.ci-hotspot-zoom-controls button:disabled:hover{background:transparent}.ci-hotspot-zoom-controls button svg{width:18px;height:18px}.ci-hotspot-zoom-controls button:focus-visible{outline:3px solid var(--ci-hotspot-focus-ring, #4A90D9);outline-offset:-3px}.ci-hotspot-zoom-controls[data-position=bottom-right]{bottom:16px;right:16px}.ci-hotspot-zoom-controls[data-position=bottom-left]{bottom:16px;left:16px}.ci-hotspot-zoom-controls[data-position=bottom-center]{bottom:16px;left:50%;transform:translate(-50%)}.ci-hotspot-zoom-controls[data-position=top-right]{top:16px;right:16px}.ci-hotspot-zoom-controls[data-position=top-left]{top:16px;left:16px}.ci-hotspot-zoom-controls[data-position=top-center]{top:16px;left:50%;transform:translate(-50%)}.ci-hotspot-zoom-controls[data-position=top-right]~.ci-hotspot-fullscreen-btn{right:136px}.ci-hotspot-cluster{position:absolute;display:flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 8px;border-radius:16px;border:2px solid rgba(255,255,255,.8);background:var(--ci-hotspot-marker-bg);color:var(--ci-hotspot-marker-color);font-size:13px;font-weight:700;cursor:pointer;pointer-events:auto;transform:translate(-50%,-50%) scale(calc(1 / var(--zoom, 1)));box-shadow:var(--ci-hotspot-marker-shadow)}.ci-hotspot-loading .ci-hotspot-image{opacity:0;transition:opacity .3s ease}.ci-hotspot-loading .ci-hotspot-markers{display:none}.ci-hotspot-theme-dark{--ci-hotspot-marker-bg: rgba(255, 255, 255, .8);--ci-hotspot-marker-color: #1a1a1a;--ci-hotspot-marker-border-color: rgba(255, 255, 255, .4);--ci-hotspot-pulse-color: rgba(255, 255, 255, .2);--ci-hotspot-popover-bg: #1a1a1a;--ci-hotspot-popover-color: #f0f0f0;--ci-hotspot-popover-border: 1px solid rgba(255, 255, 255, .1);--ci-hotspot-popover-shadow: 0 8px 32px rgba(0, 0, 0, .4);--ci-hotspot-title-color: #f0f0f0;--ci-hotspot-description-color: #aaaaaa;--ci-hotspot-original-price-color: #777777;--ci-hotspot-zoom-controls-bg: rgba(30, 30, 30, .9);--ci-hotspot-zoom-controls-color: #f0f0f0}.ci-hotspot-marker-inverted{--ci-hotspot-marker-bg: rgba(255, 255, 255, .8);--ci-hotspot-marker-color: #1a1a1a;--ci-hotspot-marker-border-color: rgba(0, 0, 0, .3);--ci-hotspot-marker-shadow: 0 2px 8px rgba(0, 0, 0, .15);--ci-hotspot-pulse-color: rgba(0, 0, 0, .15)}.ci-hotspot-theme-dark.ci-hotspot-marker-inverted{--ci-hotspot-marker-bg: rgba(0, 0, 0, .6);--ci-hotspot-marker-color: #ffffff;--ci-hotspot-marker-border-color: rgba(255, 255, 255, .3);--ci-hotspot-pulse-color: rgba(255, 255, 255, .15)}.ci-hotspot-scroll-hint{position:absolute;bottom:16px;left:50%;transform:translate(-50%) translateY(4px);padding:8px 16px;border-radius:20px;background:#000000b3;color:#fff;font-size:13px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1;white-space:nowrap;z-index:100;opacity:0;pointer-events:none;transition:opacity .3s ease,transform .3s ease}.ci-hotspot-scroll-hint--visible{opacity:1;transform:translate(-50%) translateY(0)}.ci-hotspot-container--fixed-ratio .ci-hotspot-viewport{overflow:hidden;height:0}.ci-hotspot-container--fixed-ratio .ci-hotspot-image{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain}.ci-hotspot-container--fixed-ratio .ci-hotspot-markers{z-index:1}.ci-hotspot-scene-incoming{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain;pointer-events:none;z-index:0}.ci-hotspot-scene-fade-in{animation:ci-hotspot-scene-fade-in var(--ci-hotspot-scene-transition-duration) ease forwards;z-index:1}.ci-hotspot-scene-fade-out{animation:ci-hotspot-scene-fade-out var(--ci-hotspot-scene-transition-duration) ease forwards}@keyframes ci-hotspot-scene-fade-in{0%{opacity:0}to{opacity:1}}@keyframes ci-hotspot-scene-fade-out{0%{opacity:1}to{opacity:0}}.ci-hotspot-scene-slide-in{animation:ci-hotspot-scene-slide-in var(--ci-hotspot-scene-transition-duration) ease forwards;z-index:1}.ci-hotspot-scene-slide-out{animation:ci-hotspot-scene-slide-out var(--ci-hotspot-scene-transition-duration) ease forwards}@keyframes ci-hotspot-scene-slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes ci-hotspot-scene-slide-out{0%{transform:translate(0)}to{transform:translate(-100%)}}.ci-hotspot-scene-slide-in-reverse{animation:ci-hotspot-scene-slide-in-reverse var(--ci-hotspot-scene-transition-duration) ease forwards;z-index:1}.ci-hotspot-scene-slide-out-reverse{animation:ci-hotspot-scene-slide-out-reverse var(--ci-hotspot-scene-transition-duration) ease forwards}@keyframes ci-hotspot-scene-slide-in-reverse{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes ci-hotspot-scene-slide-out-reverse{0%{transform:translate(0)}to{transform:translate(100%)}}.ci-hotspot-scene-slide-in-up{animation:ci-hotspot-scene-slide-in-up var(--ci-hotspot-scene-transition-duration) ease forwards;z-index:1}.ci-hotspot-scene-slide-out-up{animation:ci-hotspot-scene-slide-out-up var(--ci-hotspot-scene-transition-duration) ease forwards}@keyframes ci-hotspot-scene-slide-in-up{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes ci-hotspot-scene-slide-out-up{0%{transform:translateY(0)}to{transform:translateY(100%)}}.ci-hotspot-scene-slide-in-down{animation:ci-hotspot-scene-slide-in-down var(--ci-hotspot-scene-transition-duration) ease forwards;z-index:1}.ci-hotspot-scene-slide-out-down{animation:ci-hotspot-scene-slide-out-down var(--ci-hotspot-scene-transition-duration) ease forwards}@keyframes ci-hotspot-scene-slide-in-down{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes ci-hotspot-scene-slide-out-down{0%{transform:translateY(0)}to{transform:translateY(-100%)}}.ci-hotspot-marker--navigate{--ci-hotspot-marker-bg: rgba(0, 88, 163, .7)}.ci-hotspot-navigate-icon{width:75%;height:75%;display:block}.ci-hotspot-scene-transitioning .ci-hotspot-markers{opacity:0;pointer-events:none;transition:opacity .1s ease}.ci-hotspot-scene-loading:after{content:"";position:absolute;top:50%;left:50%;width:32px;height:32px;margin:-16px 0 0 -16px;border:3px solid rgba(0,0,0,.1);border-top-color:#00000080;border-radius:50%;animation:ci-hotspot-spin .6s linear infinite;z-index:10;pointer-events:none}.ci-hotspot-theme-dark .ci-hotspot-scene-loading:after,.ci-hotspot-scene-loading.ci-hotspot-theme-dark:after{border-color:#ffffff1a;border-top-color:#ffffff80}@keyframes ci-hotspot-spin{to{transform:rotate(360deg)}}.ci-hotspot-fullscreen-btn{position:absolute;top:16px;right:16px;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:var(--ci-hotspot-zoom-controls-border-radius);background:var(--ci-hotspot-zoom-controls-bg);color:var(--ci-hotspot-zoom-controls-color);box-shadow:var(--ci-hotspot-zoom-controls-shadow);cursor:pointer;padding:0;z-index:10;transition:background .15s ease}.ci-hotspot-fullscreen-btn:hover{background:#e6e6e6f2}.ci-hotspot-fullscreen-btn svg{width:18px;height:18px}.ci-hotspot-fullscreen-btn:focus-visible{outline:3px solid var(--ci-hotspot-focus-ring, #4A90D9);outline-offset:2px}.ci-hotspot-container--fullscreen{background:#000;width:100vw;height:100vh;display:flex;align-items:center;justify-content:center}.ci-hotspot-container--fullscreen .ci-hotspot-viewport{width:fit-content;max-width:100%;max-height:100%}.ci-hotspot-container--fullscreen .ci-hotspot-image{max-height:100vh;width:auto;max-width:100%;object-fit:contain}.ci-hotspot-container--fullscreen.ci-hotspot-container--fixed-ratio .ci-hotspot-viewport{width:100%;height:100%;padding-bottom:0}.ci-hotspot-container--fullscreen.ci-hotspot-container--fixed-ratio .ci-hotspot-image{width:100%;height:100%;max-height:none}.ci-hotspot-theme-dark .ci-hotspot-fullscreen-btn,.ci-hotspot-container--fullscreen .ci-hotspot-fullscreen-btn{background:#1e1e1ee6;color:#f0f0f0}.ci-hotspot-theme-dark .ci-hotspot-fullscreen-btn:hover,.ci-hotspot-container--fullscreen .ci-hotspot-fullscreen-btn:hover{background:#3c3c3cf2}@media (prefers-reduced-motion: reduce){.ci-hotspot-marker,.ci-hotspot-marker:before,.ci-hotspot-popover{animation:none!important;transition-duration:.01ms!important}.ci-hotspot-viewport,.ci-hotspot-scroll-hint{transition-duration:.01ms!important}.ci-hotspot-scene-fade-in,.ci-hotspot-scene-fade-out,.ci-hotspot-scene-slide-in,.ci-hotspot-scene-slide-out,.ci-hotspot-scene-slide-in-reverse,.ci-hotspot-scene-slide-out-reverse,.ci-hotspot-scene-slide-in-up,.ci-hotspot-scene-slide-out-up,.ci-hotspot-scene-slide-in-down,.ci-hotspot-scene-slide-out-down{animation-duration:.01ms!important}.ci-hotspot-scene-transitioning .ci-hotspot-markers{transition-duration:.01ms!important}.ci-hotspot-scene-loading:after{animation-duration:.01ms!important}.ci-hotspot-fullscreen-btn{transition-duration:.01ms!important}}', P = class P {
886
+ const Qt = '.ci-hotspot-container{--ci-hotspot-marker-size: 24px;--ci-hotspot-marker-color: #1a1a1a;--ci-hotspot-marker-bg: rgba(255, 255, 255, .8);--ci-hotspot-marker-border-width: 2px;--ci-hotspot-marker-border-color: rgba(255, 255, 255, .4);--ci-hotspot-marker-border: var(--ci-hotspot-marker-border-width) solid var(--ci-hotspot-marker-border-color);--ci-hotspot-marker-border-radius: 50%;--ci-hotspot-marker-shadow: 0 2px 8px rgba(0, 0, 0, .15);--ci-hotspot-pulse-color: rgba(0, 0, 0, .15);--ci-hotspot-pulse-size: 40px;--ci-hotspot-pulse-duration: 1.8s;--ci-hotspot-popover-bg: #ffffff;--ci-hotspot-popover-color: #1a1a1a;--ci-hotspot-popover-border: 1px solid rgba(0, 0, 0, .1);--ci-hotspot-popover-border-radius: 12px;--ci-hotspot-popover-shadow: 0 8px 32px rgba(0, 0, 0, .12);--ci-hotspot-popover-padding: 16px;--ci-hotspot-popover-max-width: 320px;--ci-hotspot-popover-max-height: 400px;--ci-hotspot-popover-font-family: inherit;--ci-hotspot-popover-font-size: 14px;--ci-hotspot-popover-line-height: 1.5;--ci-hotspot-popover-z-index: 1000;--ci-hotspot-arrow-size: 8px;--ci-hotspot-arrow-color: var(--ci-hotspot-popover-bg);--ci-hotspot-title-font-size: 16px;--ci-hotspot-title-font-weight: 600;--ci-hotspot-title-color: #1a1a1a;--ci-hotspot-price-color: #2d8c3c;--ci-hotspot-price-font-size: 18px;--ci-hotspot-price-font-weight: 700;--ci-hotspot-description-color: #666666;--ci-hotspot-cta-bg: #0058a3;--ci-hotspot-cta-color: #ffffff;--ci-hotspot-cta-border-radius: 8px;--ci-hotspot-cta-padding: 8px 16px;--ci-hotspot-original-price-color: #999999;--ci-hotspot-popover-text-align: left;--ci-hotspot-hover-transition: .2s ease;--ci-hotspot-popover-transition: .3s ease;--ci-hotspot-scene-transition-duration: .4s;--ci-hotspot-zoom-controls-bg: rgba(255, 255, 255, .9);--ci-hotspot-zoom-controls-color: #333333;--ci-hotspot-zoom-controls-border-radius: 8px;--ci-hotspot-zoom-controls-shadow: 0 2px 8px rgba(0, 0, 0, .15)}.ci-hotspot-container *,.ci-hotspot-container *:before,.ci-hotspot-container *:after{box-sizing:border-box}.ci-hotspot-container{position:relative;overflow:hidden;width:100%;line-height:0;user-select:none;-webkit-user-select:none}.ci-hotspot-viewport{position:relative;width:100%;transform-origin:0 0;will-change:transform;transition:transform .3s ease}.ci-hotspot-viewport--dragging{transition:none}.ci-hotspot-image{display:block;width:100%;height:auto;pointer-events:none}.ci-hotspot-markers{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.ci-hotspot-marker{position:absolute;width:var(--ci-hotspot-marker-size);height:var(--ci-hotspot-marker-size);padding:0;border:var(--ci-hotspot-marker-border);border-radius:var(--ci-hotspot-marker-border-radius);background:var(--ci-hotspot-marker-bg);color:var(--ci-hotspot-marker-color);box-shadow:var(--ci-hotspot-marker-shadow);cursor:pointer;pointer-events:auto;transform:translate(-50%,-50%) scale(calc(1 / var(--zoom, 1)));transition:transform var(--ci-hotspot-hover-transition),box-shadow var(--ci-hotspot-hover-transition);z-index:1;display:flex;align-items:center;justify-content:center;font-size:12px;line-height:1;outline:none}.ci-hotspot-marker:hover{transform:translate(-50%,-50%) scale(calc(1.2 / var(--zoom, 1)));box-shadow:0 4px 12px #0006}.ci-hotspot-marker:focus-visible{outline:3px solid var(--ci-hotspot-focus-ring, #4A90D9);outline-offset:2px}.ci-hotspot-marker--active{transform:translate(-50%,-50%) scale(calc(1.2 / var(--zoom, 1)));z-index:2}.ci-hotspot-marker--hidden{display:none}.ci-hotspot-marker--dot-label{overflow:visible}.ci-hotspot-marker-label{position:absolute;left:calc(50% + var(--ci-hotspot-marker-size) / 2 + 4px);top:50%;transform:translateY(-50%);padding:3px 10px;font-size:11px;font-weight:600;white-space:nowrap;color:var(--ci-hotspot-marker-color);background:var(--ci-hotspot-marker-bg);border:var(--ci-hotspot-marker-border);border-radius:100px;box-shadow:var(--ci-hotspot-marker-shadow)}.ci-hotspot-marker--dot-label.ci-hotspot-marker--pulse{animation:none}.ci-hotspot-marker--pulse:before{content:"";position:absolute;top:50%;left:50%;width:var(--ci-hotspot-pulse-size);height:var(--ci-hotspot-pulse-size);border-radius:50%;background:var(--ci-hotspot-pulse-color);transform:translate(-50%,-50%) scale(1);animation:ci-hotspot-pulse var(--ci-hotspot-pulse-duration) ease-out infinite;pointer-events:none}@keyframes ci-hotspot-pulse{0%{transform:translate(-50%,-50%) scale(1);opacity:1}to{transform:translate(-50%,-50%) scale(1.8);opacity:0}}.ci-hotspot-marker--pulse{animation:ci-hotspot-breathe 2.4s ease-in-out infinite}.ci-hotspot-marker--pulse:hover,.ci-hotspot-marker--pulse.ci-hotspot-marker--active{animation:none}@keyframes ci-hotspot-breathe{0%,to{transform:translate(-50%,-50%) scale(calc(1 / var(--zoom, 1)))}50%{transform:translate(-50%,-50%) scale(calc(1.15 / var(--zoom, 1)))}}.ci-hotspot-popover{position:absolute;z-index:var(--ci-hotspot-popover-z-index);max-width:var(--ci-hotspot-popover-max-width);background:var(--ci-hotspot-popover-bg);color:var(--ci-hotspot-popover-color);border:var(--ci-hotspot-popover-border);border-radius:var(--ci-hotspot-popover-border-radius);box-shadow:var(--ci-hotspot-popover-shadow);font-family:var(--ci-hotspot-popover-font-family);font-size:var(--ci-hotspot-popover-font-size);line-height:var(--ci-hotspot-popover-line-height);opacity:0;pointer-events:none;transform:translateY(4px);transition:opacity var(--ci-hotspot-popover-transition),transform var(--ci-hotspot-popover-transition)}.ci-hotspot-popover--visible{opacity:1;pointer-events:auto;transform:translateY(0);animation:ci-hotspot-popover-in var(--ci-hotspot-popover-transition) forwards}@keyframes ci-hotspot-popover-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.ci-hotspot-popover-arrow{position:absolute;width:calc(var(--ci-hotspot-arrow-size) * 2);height:calc(var(--ci-hotspot-arrow-size) * 2);background:var(--ci-hotspot-arrow-color);transform:rotate(45deg);pointer-events:none}.ci-hotspot-popover[data-placement=top] .ci-hotspot-popover-arrow{bottom:calc(var(--ci-hotspot-arrow-size) * -1)}.ci-hotspot-popover[data-placement=bottom] .ci-hotspot-popover-arrow{top:calc(var(--ci-hotspot-arrow-size) * -1)}.ci-hotspot-popover[data-placement=left] .ci-hotspot-popover-arrow{right:calc(var(--ci-hotspot-arrow-size) * -1)}.ci-hotspot-popover[data-placement=right] .ci-hotspot-popover-arrow{left:calc(var(--ci-hotspot-arrow-size) * -1)}.ci-hotspot-popover-content{padding:var(--ci-hotspot-popover-padding);max-height:var(--ci-hotspot-popover-max-height);overflow-y:auto;overflow-x:hidden;border-radius:var(--ci-hotspot-popover-border-radius)}.ci-hotspot-popover-image-wrapper{aspect-ratio:16 / 9;overflow:hidden;border-radius:calc(var(--ci-hotspot-popover-border-radius) - 4px) calc(var(--ci-hotspot-popover-border-radius) - 4px) 0 0;margin:calc(var(--ci-hotspot-popover-padding) * -1);margin-bottom:12px;width:calc(100% + var(--ci-hotspot-popover-padding) * 2)}.ci-hotspot-popover-image{display:block;width:100%;height:100%;object-fit:cover}.ci-hotspot-popover-body{line-height:1.5;text-align:var(--ci-hotspot-popover-text-align)}.ci-hotspot-popover-title{margin:0 0 4px;font-size:var(--ci-hotspot-title-font-size);font-weight:var(--ci-hotspot-title-font-weight);color:var(--ci-hotspot-title-color)}.ci-hotspot-popover-price{display:inline-block;margin-bottom:8px;font-size:var(--ci-hotspot-price-font-size);font-weight:var(--ci-hotspot-price-font-weight);color:var(--ci-hotspot-price-color)}.ci-hotspot-popover-price-row{display:inline-flex;align-items:baseline;gap:6px;margin-bottom:8px;flex-wrap:wrap}.ci-hotspot-popover-price-row .ci-hotspot-popover-price{margin-bottom:0}.ci-hotspot-popover-original-price{font-size:calc(var(--ci-hotspot-price-font-size) - 2px);font-weight:500;color:var(--ci-hotspot-original-price-color);text-decoration:line-through}.ci-hotspot-popover-description{margin:0 0 12px;color:var(--ci-hotspot-description-color)}.ci-hotspot-popover-cta{display:inline-block;padding:var(--ci-hotspot-cta-padding);background:var(--ci-hotspot-cta-bg);color:var(--ci-hotspot-cta-color);border-radius:var(--ci-hotspot-cta-border-radius);text-decoration:none;font-weight:600;font-size:14px;transition:opacity .2s ease}.ci-hotspot-popover-cta:hover{opacity:.9}button.ci-hotspot-popover-cta{cursor:pointer;border:none;font:inherit;width:100%}.ci-hotspot-popover-cta:focus-visible{outline:3px solid var(--ci-hotspot-focus-ring, #4A90D9);outline-offset:2px}.ci-hotspot-zoom-controls{position:absolute;display:flex;gap:2px;background:var(--ci-hotspot-zoom-controls-bg);border-radius:var(--ci-hotspot-zoom-controls-border-radius);box-shadow:var(--ci-hotspot-zoom-controls-shadow);z-index:10;overflow:hidden}.ci-hotspot-zoom-controls button{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:transparent;color:var(--ci-hotspot-zoom-controls-color);cursor:pointer;font-size:18px;line-height:1;padding:0;transition:background .15s ease}.ci-hotspot-zoom-controls button:hover{background:#0000000d}.ci-hotspot-zoom-controls button:disabled{opacity:.3;cursor:default}.ci-hotspot-zoom-controls button:disabled:hover{background:transparent}.ci-hotspot-zoom-controls button svg{width:18px;height:18px}.ci-hotspot-zoom-controls button:focus-visible{outline:3px solid var(--ci-hotspot-focus-ring, #4A90D9);outline-offset:-3px}.ci-hotspot-zoom-controls[data-position=bottom-right]{bottom:16px;right:16px}.ci-hotspot-zoom-controls[data-position=bottom-left]{bottom:16px;left:16px}.ci-hotspot-zoom-controls[data-position=bottom-center]{bottom:16px;left:50%;transform:translate(-50%)}.ci-hotspot-zoom-controls[data-position=top-right]{top:16px;right:16px}.ci-hotspot-zoom-controls[data-position=top-left]{top:16px;left:16px}.ci-hotspot-zoom-controls[data-position=top-center]{top:16px;left:50%;transform:translate(-50%)}.ci-hotspot-zoom-controls[data-position=top-right]~.ci-hotspot-fullscreen-btn{right:136px}.ci-hotspot-cluster{position:absolute;display:flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 8px;border-radius:16px;border:2px solid rgba(255,255,255,.8);background:var(--ci-hotspot-marker-bg);color:var(--ci-hotspot-marker-color);font-size:13px;font-weight:700;cursor:pointer;pointer-events:auto;transform:translate(-50%,-50%) scale(calc(1 / var(--zoom, 1)));box-shadow:var(--ci-hotspot-marker-shadow)}.ci-hotspot-loading .ci-hotspot-image{opacity:0;transition:opacity .3s ease}.ci-hotspot-loading .ci-hotspot-markers{display:none}.ci-hotspot-theme-dark{--ci-hotspot-marker-bg: rgba(0, 0, 0, .6);--ci-hotspot-marker-color: #ffffff;--ci-hotspot-marker-border-color: rgba(255, 255, 255, .6);--ci-hotspot-pulse-color: rgba(255, 255, 255, .15);--ci-hotspot-popover-bg: #1a1a1a;--ci-hotspot-popover-color: #f0f0f0;--ci-hotspot-popover-border: 1px solid rgba(255, 255, 255, .1);--ci-hotspot-popover-shadow: 0 8px 32px rgba(0, 0, 0, .4);--ci-hotspot-title-color: #f0f0f0;--ci-hotspot-description-color: #aaaaaa;--ci-hotspot-original-price-color: #777777;--ci-hotspot-zoom-controls-bg: rgba(30, 30, 30, .9);--ci-hotspot-zoom-controls-color: #f0f0f0}.ci-hotspot-marker-inverted{--ci-hotspot-marker-bg: rgba(0, 0, 0, .6);--ci-hotspot-marker-color: #ffffff;--ci-hotspot-marker-border-color: rgba(255, 255, 255, .8);--ci-hotspot-marker-shadow: 0 2px 8px rgba(0, 0, 0, .3);--ci-hotspot-pulse-color: rgba(0, 0, 0, .2)}.ci-hotspot-theme-dark.ci-hotspot-marker-inverted{--ci-hotspot-marker-bg: rgba(255, 255, 255, .8);--ci-hotspot-marker-color: #1a1a1a;--ci-hotspot-marker-border-color: rgba(255, 255, 255, .4);--ci-hotspot-pulse-color: rgba(255, 255, 255, .2)}.ci-hotspot-marker-brand{--ci-hotspot-marker-bg: var(--ci-hotspot-brand-color, #00aaff);--ci-hotspot-marker-color: #ffffff;--ci-hotspot-marker-border-color: rgba(255, 255, 255, .9);--ci-hotspot-marker-shadow: 0 2px 8px rgba(0, 0, 0, .25);--ci-hotspot-pulse-color: var(--ci-hotspot-brand-color, #00aaff)}.ci-hotspot-scroll-hint{position:absolute;bottom:16px;left:50%;transform:translate(-50%) translateY(4px);padding:8px 16px;border-radius:20px;background:#000000b3;color:#fff;font-size:13px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1;white-space:nowrap;z-index:100;opacity:0;pointer-events:none;transition:opacity .3s ease,transform .3s ease}.ci-hotspot-scroll-hint--visible{opacity:1;transform:translate(-50%) translateY(0)}.ci-hotspot-container--fixed-ratio .ci-hotspot-viewport{overflow:hidden;height:0}.ci-hotspot-container--fixed-ratio .ci-hotspot-image{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain}.ci-hotspot-container--fixed-ratio .ci-hotspot-markers{z-index:1}.ci-hotspot-scene-incoming{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain;pointer-events:none;z-index:0}.ci-hotspot-scene-fade-in{animation:ci-hotspot-scene-fade-in var(--ci-hotspot-scene-transition-duration) ease forwards;z-index:1}.ci-hotspot-scene-fade-out{animation:ci-hotspot-scene-fade-out var(--ci-hotspot-scene-transition-duration) ease forwards}@keyframes ci-hotspot-scene-fade-in{0%{opacity:0}to{opacity:1}}@keyframes ci-hotspot-scene-fade-out{0%{opacity:1}to{opacity:0}}.ci-hotspot-scene-slide-in{animation:ci-hotspot-scene-slide-in var(--ci-hotspot-scene-transition-duration) ease forwards;z-index:1}.ci-hotspot-scene-slide-out{animation:ci-hotspot-scene-slide-out var(--ci-hotspot-scene-transition-duration) ease forwards}@keyframes ci-hotspot-scene-slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes ci-hotspot-scene-slide-out{0%{transform:translate(0)}to{transform:translate(-100%)}}.ci-hotspot-scene-slide-in-reverse{animation:ci-hotspot-scene-slide-in-reverse var(--ci-hotspot-scene-transition-duration) ease forwards;z-index:1}.ci-hotspot-scene-slide-out-reverse{animation:ci-hotspot-scene-slide-out-reverse var(--ci-hotspot-scene-transition-duration) ease forwards}@keyframes ci-hotspot-scene-slide-in-reverse{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes ci-hotspot-scene-slide-out-reverse{0%{transform:translate(0)}to{transform:translate(100%)}}.ci-hotspot-scene-slide-in-up{animation:ci-hotspot-scene-slide-in-up var(--ci-hotspot-scene-transition-duration) ease forwards;z-index:1}.ci-hotspot-scene-slide-out-up{animation:ci-hotspot-scene-slide-out-up var(--ci-hotspot-scene-transition-duration) ease forwards}@keyframes ci-hotspot-scene-slide-in-up{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes ci-hotspot-scene-slide-out-up{0%{transform:translateY(0)}to{transform:translateY(100%)}}.ci-hotspot-scene-slide-in-down{animation:ci-hotspot-scene-slide-in-down var(--ci-hotspot-scene-transition-duration) ease forwards;z-index:1}.ci-hotspot-scene-slide-out-down{animation:ci-hotspot-scene-slide-out-down var(--ci-hotspot-scene-transition-duration) ease forwards}@keyframes ci-hotspot-scene-slide-in-down{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes ci-hotspot-scene-slide-out-down{0%{transform:translateY(0)}to{transform:translateY(-100%)}}.ci-hotspot-navigate-icon{width:75%;height:75%;display:block}.ci-hotspot-scene-transitioning .ci-hotspot-markers{opacity:0;pointer-events:none;transition:opacity .1s ease}.ci-hotspot-scene-loading:after{content:"";position:absolute;top:50%;left:50%;width:32px;height:32px;margin:-16px 0 0 -16px;border:3px solid rgba(0,0,0,.1);border-top-color:#00000080;border-radius:50%;animation:ci-hotspot-spin .6s linear infinite;z-index:10;pointer-events:none}.ci-hotspot-theme-dark .ci-hotspot-scene-loading:after,.ci-hotspot-scene-loading.ci-hotspot-theme-dark:after{border-color:#ffffff1a;border-top-color:#ffffff80}@keyframes ci-hotspot-spin{to{transform:rotate(360deg)}}.ci-hotspot-fullscreen-btn{position:absolute;top:16px;right:16px;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:var(--ci-hotspot-zoom-controls-border-radius);background:var(--ci-hotspot-zoom-controls-bg);color:var(--ci-hotspot-zoom-controls-color);box-shadow:var(--ci-hotspot-zoom-controls-shadow);cursor:pointer;padding:0;z-index:10;transition:background .15s ease}.ci-hotspot-fullscreen-btn:hover{background:#e6e6e6f2}.ci-hotspot-fullscreen-btn svg{width:18px;height:18px}.ci-hotspot-fullscreen-btn:focus-visible{outline:3px solid var(--ci-hotspot-focus-ring, #4A90D9);outline-offset:2px}.ci-hotspot-container--fullscreen{background:#000;width:100vw;height:100vh;display:flex;align-items:center;justify-content:center}.ci-hotspot-container--fullscreen .ci-hotspot-viewport{width:fit-content;max-width:100%;max-height:100%}.ci-hotspot-container--fullscreen .ci-hotspot-image{max-height:100vh;width:auto;max-width:100%;object-fit:contain}.ci-hotspot-container--fullscreen.ci-hotspot-container--fixed-ratio .ci-hotspot-viewport{width:100%;height:100%;padding-bottom:0!important}.ci-hotspot-container--fullscreen.ci-hotspot-container--fixed-ratio .ci-hotspot-image{width:100%;height:100%;max-height:none;object-fit:contain}.ci-hotspot-theme-dark .ci-hotspot-fullscreen-btn,.ci-hotspot-container--fullscreen .ci-hotspot-fullscreen-btn{background:#1e1e1ee6;color:#f0f0f0}.ci-hotspot-theme-dark .ci-hotspot-fullscreen-btn:hover,.ci-hotspot-container--fullscreen .ci-hotspot-fullscreen-btn:hover{background:#3c3c3cf2}@media (prefers-reduced-motion: reduce){.ci-hotspot-marker,.ci-hotspot-marker:before,.ci-hotspot-popover{animation:none!important;transition-duration:.01ms!important}.ci-hotspot-viewport,.ci-hotspot-scroll-hint{transition-duration:.01ms!important}.ci-hotspot-scene-fade-in,.ci-hotspot-scene-fade-out,.ci-hotspot-scene-slide-in,.ci-hotspot-scene-slide-out,.ci-hotspot-scene-slide-in-reverse,.ci-hotspot-scene-slide-out-reverse,.ci-hotspot-scene-slide-in-up,.ci-hotspot-scene-slide-out-up,.ci-hotspot-scene-slide-in-down,.ci-hotspot-scene-slide-out-down{animation-duration:.01ms!important}.ci-hotspot-scene-transitioning .ci-hotspot-markers{transition-duration:.01ms!important}.ci-hotspot-scene-loading:after{animation-duration:.01ms!important}.ci-hotspot-fullscreen-btn{transition-duration:.01ms!important}}', M = class M {
869
887
  constructor(t, e) {
870
- this.markers = /* @__PURE__ */ new Map(), this.popovers = /* @__PURE__ */ new Map(), this.normalizedHotspots = /* @__PURE__ */ new Map(), this.scrollHint = null, this.zoomPan = null, this.zoomControls = null, this.cloudimageHandler = null, this.resizeObserver = null, this.keyboardHandler = null, this.fullscreenControl = null, this.focusTraps = /* @__PURE__ */ new Map(), this.cleanups = [], this.hotspotCleanups = /* @__PURE__ */ new Map(), this.imageLoaded = !1, this.destroyed = !1, this.scenesMap = /* @__PURE__ */ new Map(), this.isTransitioning = !1, this.activeTimers = /* @__PURE__ */ new Set(), this.sceneHotspotOverrides = /* @__PURE__ */ new Map(), this.preloadedScenes = /* @__PURE__ */ new Set(), this.rootEl = mt(t), this.config = j(e), B(this.config), this.config.scenes && this.config.scenes.length > 0 && this.initScenes(), Q(), gt(Qt), this.buildDOM(), this.applyTheme(), this.setupImage(), this.initHotspots(), this.config.zoom && this.initZoom(), this.initKeyboard(), this.initFullscreen(), this.setupResponsive();
888
+ this.markers = /* @__PURE__ */ new Map(), this.popovers = /* @__PURE__ */ new Map(), this.normalizedHotspots = /* @__PURE__ */ new Map(), this.scrollHint = null, this.zoomPan = null, this.zoomControls = null, this.cloudimageHandler = null, this.resizeObserver = null, this.keyboardHandler = null, this.fullscreenControl = null, this.focusTraps = /* @__PURE__ */ new Map(), this.cleanups = [], this.hotspotCleanups = /* @__PURE__ */ new Map(), this.imageLoaded = !1, this.destroyed = !1, this.scenesMap = /* @__PURE__ */ new Map(), this.isTransitioning = !1, this.activeTimers = /* @__PURE__ */ new Set(), this.sceneHotspotOverrides = /* @__PURE__ */ new Map(), this.preloadedScenes = /* @__PURE__ */ new Set(), this.rootEl = mt(t), this.config = j(e), V(this.config), this.config.scenes && this.config.scenes.length > 0 && this.initScenes(), Q(), gt(Qt), this.buildDOM(), this.applyTheme(), this.setupImage(), this.initHotspots(), this.config.zoom && this.initZoom(), this.initKeyboard(), this.initFullscreen(), this.setupResponsive();
871
889
  }
872
890
  /** Auto-initialize all elements with data-ci-hotspot-src or data-ci-hotspot-scenes attribute */
873
891
  static autoInit(t) {
@@ -876,7 +894,7 @@ const Qt = '.ci-hotspot-container{--ci-hotspot-marker-size: 24px;--ci-hotspot-ma
876
894
  ), s = [];
877
895
  return o.forEach((c) => {
878
896
  const n = ut(c);
879
- (n.src || n.scenes) && s.push(new P(c, n));
897
+ (n.src || n.scenes) && s.push(new M(c, n));
880
898
  }), s;
881
899
  }
882
900
  buildDOM() {
@@ -884,18 +902,20 @@ const Qt = '.ci-hotspot-container{--ci-hotspot-marker-size: 24px;--ci-hotspot-ma
884
902
  alt: this.config.alt || "",
885
903
  draggable: "false"
886
904
  }), this.markersEl = v("div", "ci-hotspot-markers"), this.viewportEl.appendChild(this.imgEl), this.viewportEl.appendChild(this.markersEl), this.containerEl.appendChild(this.viewportEl), this.containerEl.setAttribute("role", "group"), this.containerEl.setAttribute("aria-label", this.config.alt || "Image with hotspots"), this.config.sceneAspectRatio) {
887
- g(this.containerEl, "ci-hotspot-container--fixed-ratio");
905
+ m(this.containerEl, "ci-hotspot-container--fixed-ratio");
888
906
  const t = this.config.sceneAspectRatio.split(/[:/\s]+/).map(Number);
889
907
  t.length >= 2 && t[0] > 0 && t[1] > 0 && (this.viewportEl.style.paddingBottom = `${t[1] / t[0] * 100}%`);
890
908
  }
891
- this.rootEl.innerHTML = "", this.rootEl.appendChild(this.containerEl), this.config.lazyLoad && g(this.containerEl, "ci-hotspot-loading");
909
+ this.rootEl.innerHTML = "", this.rootEl.appendChild(this.containerEl), this.config.lazyLoad && m(this.containerEl, "ci-hotspot-loading");
892
910
  }
893
911
  applyTheme() {
894
- this.config.theme === "dark" && g(this.containerEl, "ci-hotspot-theme-dark"), this.config.invertMarkerTheme && g(this.containerEl, "ci-hotspot-marker-inverted");
912
+ this.config.theme === "dark" ? m(this.containerEl, "ci-hotspot-theme-dark") : y(this.containerEl, "ci-hotspot-theme-dark");
913
+ const t = this.config.markerTheme && this.config.markerTheme !== "default" ? this.config.markerTheme : this.config.invertMarkerTheme ? "inverted" : "default";
914
+ y(this.containerEl, "ci-hotspot-marker-inverted"), y(this.containerEl, "ci-hotspot-marker-brand"), this.containerEl.style.removeProperty("--ci-hotspot-brand-color"), t === "inverted" ? m(this.containerEl, "ci-hotspot-marker-inverted") : t === "brand" && (m(this.containerEl, "ci-hotspot-marker-brand"), this.config.brandColor && this.containerEl.style.setProperty("--ci-hotspot-brand-color", this.config.brandColor));
895
915
  }
896
916
  setupImage() {
897
917
  const t = () => {
898
- k(this.containerEl, "ci-hotspot-loading"), this.imageLoaded = !0, this.renormalizePixelCoordinates(), this.syncMarkersToImage(), this.showLoadTriggerPopovers();
918
+ y(this.containerEl, "ci-hotspot-loading"), this.imageLoaded = !0, this.renormalizePixelCoordinates(), this.syncMarkersToImage(), this.showLoadTriggerPopovers();
899
919
  };
900
920
  if (this.imgEl.addEventListener("load", t), this.cleanups.push(() => this.imgEl.removeEventListener("load", t)), this.config.lazyLoad && typeof IntersectionObserver < "u") {
901
921
  const e = new IntersectionObserver(
@@ -942,7 +962,7 @@ const Qt = '.ci-hotspot-container{--ci-hotspot-marker-size: 24px;--ci-hotspot-ma
942
962
  var d, h;
943
963
  if (this.markers.has(t.id)) {
944
964
  const p = this.markers.get(t.id);
945
- A(p), this.markers.delete(t.id), (d = this.popovers.get(t.id)) == null || d.destroy(), this.popovers.delete(t.id);
965
+ F(p), this.markers.delete(t.id), (d = this.popovers.get(t.id)) == null || d.destroy(), this.popovers.delete(t.id);
946
966
  const u = this.hotspotCleanups.get(t.id);
947
967
  u && (u.forEach((b) => b()), this.hotspotCleanups.delete(t.id));
948
968
  const w = this.focusTraps.get(t.id);
@@ -966,7 +986,8 @@ const Qt = '.ci-hotspot-container{--ci-hotspot-marker-size: 24px;--ci-hotspot-ma
966
986
  triggerMode: "hover",
967
987
  renderFn: this.config.renderPopover,
968
988
  onOpen: this.config.onOpen,
969
- onClose: this.config.onClose
989
+ onClose: this.config.onClose,
990
+ onProductClick: this.config.onProductClick
970
991
  });
971
992
  this.popovers.set(t.id, b), b.mount(this.containerEl, n), this.bindNavigateTrigger(t, n, b);
972
993
  } else
@@ -978,9 +999,10 @@ const Qt = '.ci-hotspot-container{--ci-hotspot-marker-size: 24px;--ci-hotspot-ma
978
999
  triggerMode: r,
979
1000
  renderFn: this.config.renderPopover,
980
1001
  onOpen: this.config.onOpen,
981
- onClose: this.config.onClose
1002
+ onClose: this.config.onClose,
1003
+ onProductClick: this.config.onProductClick
982
1004
  });
983
- this.popovers.set(t.id, l), l.mount(this.containerEl, n), this.bindTrigger(t, n, l, r), r === "load" && this.imageLoaded && (this.closeAll(), l.show(), m(n, !0), this.ensureFocusTrap(t.id, l.element, n), (h = this.focusTraps.get(t.id)) == null || h.activate());
1005
+ this.popovers.set(t.id, l), l.mount(this.containerEl, n), this.bindTrigger(t, n, l, r), r === "load" && this.imageLoaded && (this.closeAll(), l.show(), g(n, !0), this.ensureFocusTrap(t.id, l.element, n), (h = this.focusTraps.get(t.id)) == null || h.activate());
984
1006
  }
985
1007
  /** For navigateTo hotspots without explicit data/content, generate popover content from the destination scene */
986
1008
  enrichNavigateHotspot(t) {
@@ -992,24 +1014,24 @@ const Qt = '.ci-hotspot-container{--ci-hotspot-marker-size: 24px;--ci-hotspot-ma
992
1014
  } : t;
993
1015
  }
994
1016
  bindNavigateTrigger(t, e, o) {
995
- if (g(e, "ci-hotspot-marker--navigate"), e.innerHTML = P.NAVIGATE_ARROW_SVG, t.arrowDirection != null) {
1017
+ if (m(e, "ci-hotspot-marker--navigate"), e.innerHTML = M.NAVIGATE_ARROW_SVG, t.arrowDirection != null) {
996
1018
  const r = e.querySelector("svg");
997
1019
  r && (r.style.transform = `rotate(${t.arrowDirection}deg)`);
998
1020
  }
999
1021
  const s = t.label || t.navigateTo;
1000
1022
  if (e.setAttribute("aria-label", `Navigate to ${s}`), e.setAttribute("aria-roledescription", "navigation hotspot"), o) {
1001
1023
  const r = f(e, "mouseenter", () => {
1002
- this.preloadSceneImage(t.navigateTo), o.clearHideTimer(), o.show(), m(e, !0);
1024
+ this.preloadSceneImage(t.navigateTo), o.clearHideTimer(), o.show(), g(e, !0);
1003
1025
  }), a = () => {
1004
1026
  this.trackedTimeout(() => {
1005
- o.isVisible() || m(e, !1);
1027
+ o.isVisible() || g(e, !1);
1006
1028
  }, 250);
1007
1029
  }, l = f(e, "mouseleave", () => {
1008
1030
  o.scheduleHide(200), a();
1009
1031
  }), d = f(o.element, "mouseleave", () => {
1010
1032
  a();
1011
1033
  }), h = f(e, "focus", () => {
1012
- this.preloadSceneImage(t.navigateTo), o.clearHideTimer(), o.show(), m(e, !0);
1034
+ this.preloadSceneImage(t.navigateTo), o.clearHideTimer(), o.show(), g(e, !0);
1013
1035
  }), p = f(e, "blur", () => {
1014
1036
  o.scheduleHide(200), a();
1015
1037
  });
@@ -1024,10 +1046,10 @@ const Qt = '.ci-hotspot-container{--ci-hotspot-marker-size: 24px;--ci-hotspot-ma
1024
1046
  }
1025
1047
  const c = f(e, "click", (r) => {
1026
1048
  var a, l, d;
1027
- r.stopPropagation(), o == null || o.hide(), m(e, !1), (l = (a = this.config).onClick) == null || l.call(a, r, t), (d = t.onClick) == null || d.call(t, r, t), this.goToScene(t.navigateTo);
1049
+ r.stopPropagation(), o == null || o.hide(), g(e, !1), (l = (a = this.config).onClick) == null || l.call(a, r, t), (d = t.onClick) == null || d.call(t, r, t), this.goToScene(t.navigateTo);
1028
1050
  }), n = f(e, "keydown", (r) => {
1029
1051
  var a, l, d;
1030
- (r.key === "Enter" || r.key === " ") && (r.preventDefault(), o == null || o.hide(), m(e, !1), (l = (a = this.config).onClick) == null || l.call(a, r, t), (d = t.onClick) == null || d.call(t, r, t), this.goToScene(t.navigateTo));
1052
+ (r.key === "Enter" || r.key === " ") && (r.preventDefault(), o == null || o.hide(), g(e, !1), (l = (a = this.config).onClick) == null || l.call(a, r, t), (d = t.onClick) == null || d.call(t, r, t), this.goToScene(t.navigateTo));
1031
1053
  });
1032
1054
  this.addHotspotCleanups(t.id, c, n);
1033
1055
  }
@@ -1036,10 +1058,10 @@ const Qt = '.ci-hotspot-container{--ci-hotspot-marker-size: 24px;--ci-hotspot-ma
1036
1058
  }
1037
1059
  bindHoverTrigger(t, e, o) {
1038
1060
  const s = f(e, "mouseenter", () => {
1039
- o.clearHideTimer(), o.show(), m(e, !0);
1061
+ o.clearHideTimer(), o.show(), g(e, !0);
1040
1062
  }), c = () => {
1041
1063
  this.trackedTimeout(() => {
1042
- o.isVisible() || m(e, !1);
1064
+ o.isVisible() || g(e, !1);
1043
1065
  }, 250);
1044
1066
  }, n = f(e, "mouseleave", () => {
1045
1067
  o.scheduleHide(200), c();
@@ -1053,22 +1075,22 @@ const Qt = '.ci-hotspot-container{--ci-hotspot-marker-size: 24px;--ci-hotspot-ma
1053
1075
  this.focusTraps.set(t.id, s);
1054
1076
  const c = f(e, "click", (r) => {
1055
1077
  var a, l, d;
1056
- r.stopPropagation(), (l = (a = this.config).onClick) == null || l.call(a, r, t), (d = t.onClick) == null || d.call(t, r, t), o.isVisible() ? (o.hide(), m(e, !1), s.deactivate()) : (this.closeAll(), o.show(), m(e, !0), s.activate());
1078
+ r.stopPropagation(), (l = (a = this.config).onClick) == null || l.call(a, r, t), (d = t.onClick) == null || d.call(t, r, t), o.isVisible() ? (o.hide(), g(e, !1), s.deactivate()) : (this.closeAll(), o.show(), g(e, !0), s.activate());
1057
1079
  }), n = f(this.containerEl, "click", (r) => {
1058
- o.isVisible() && !t.keepOpen && !o.element.contains(r.target) && !e.contains(r.target) && (o.hide(), m(e, !1), s.deactivate());
1080
+ o.isVisible() && !t.keepOpen && !o.element.contains(r.target) && !e.contains(r.target) && (o.hide(), g(e, !1), s.deactivate());
1059
1081
  });
1060
1082
  this.addHotspotCleanups(t.id, c, n);
1061
1083
  }
1062
1084
  bindKeyboardTrigger(t, e, o, s) {
1063
1085
  const c = f(e, "focus", () => {
1064
- s === "hover" && (o.clearHideTimer(), o.show(), m(e, !0));
1086
+ s === "hover" && (o.clearHideTimer(), o.show(), g(e, !0));
1065
1087
  }), n = f(e, "blur", () => {
1066
1088
  s === "hover" && (o.scheduleHide(200), this.trackedTimeout(() => {
1067
- o.isVisible() || m(e, !1);
1089
+ o.isVisible() || g(e, !1);
1068
1090
  }, 250));
1069
1091
  }), r = f(e, "keydown", (a) => {
1070
1092
  var l, d, h, p, u;
1071
- a.key === "Enter" || a.key === " " ? (a.preventDefault(), (d = (l = this.config).onClick) == null || d.call(l, a, t), o.isVisible() ? (o.hide(), m(e, !1), (h = this.focusTraps.get(t.id)) == null || h.deactivate()) : (this.closeAll(), o.show(), m(e, !0), this.ensureFocusTrap(t.id, o.element, e), (p = this.focusTraps.get(t.id)) == null || p.activate())) : a.key === "Escape" && o.isVisible() && (o.hide(), m(e, !1), (u = this.focusTraps.get(t.id)) == null || u.deactivate(), e.focus());
1093
+ a.key === "Enter" || a.key === " " ? (a.preventDefault(), (d = (l = this.config).onClick) == null || d.call(l, a, t), o.isVisible() ? (o.hide(), g(e, !1), (h = this.focusTraps.get(t.id)) == null || h.deactivate()) : (this.closeAll(), o.show(), g(e, !0), this.ensureFocusTrap(t.id, o.element, e), (p = this.focusTraps.get(t.id)) == null || p.activate())) : a.key === "Escape" && o.isVisible() && (o.hide(), g(e, !1), (u = this.focusTraps.get(t.id)) == null || u.deactivate(), e.focus());
1072
1094
  });
1073
1095
  this.addHotspotCleanups(t.id, c, n, r);
1074
1096
  }
@@ -1091,13 +1113,13 @@ const Qt = '.ci-hotspot-container{--ci-hotspot-marker-size: 24px;--ci-hotspot-ma
1091
1113
  if (((s == null ? void 0 : s.trigger) || this.config.trigger || "hover") === "load" && !o.isVisible()) {
1092
1114
  o.show();
1093
1115
  const n = this.markers.get(e);
1094
- n && (m(n, !0), this.ensureFocusTrap(e, o.element, n), (t = this.focusTraps.get(e)) == null || t.activate());
1116
+ n && (g(n, !0), this.ensureFocusTrap(e, o.element, n), (t = this.focusTraps.get(e)) == null || t.activate());
1095
1117
  break;
1096
1118
  }
1097
1119
  }
1098
1120
  }
1099
1121
  initZoom() {
1100
- this.config.scrollHint !== !1 && (this.scrollHint = new Xt(this.containerEl)), this.zoomPan = new Rt(this.viewportEl, this.containerEl, {
1122
+ this.config.scrollHint !== !1 && (this.scrollHint = new $t(this.containerEl)), this.zoomPan = new Rt(this.viewportEl, this.containerEl, {
1101
1123
  zoomMin: this.config.zoomMin || 1,
1102
1124
  zoomMax: this.config.zoomMax || 4,
1103
1125
  onZoom: (t) => {
@@ -1129,7 +1151,7 @@ const Qt = '.ci-hotspot-container{--ci-hotspot-marker-size: 24px;--ci-hotspot-ma
1129
1151
  const c = this.markers.get(o);
1130
1152
  if (!c) continue;
1131
1153
  const n = s.responsive.maxWidth && e > s.responsive.maxWidth || s.responsive.minWidth && e < s.responsive.minWidth;
1132
- kt(c, !!n);
1154
+ wt(c, !!n);
1133
1155
  }
1134
1156
  }));
1135
1157
  }), this.cleanups.push(() => {
@@ -1155,7 +1177,7 @@ const Qt = '.ci-hotspot-container{--ci-hotspot-marker-size: 24px;--ci-hotspot-ma
1155
1177
  this.config.src = e.src, this.config.alt = e.alt || "", this.config.hotspots = [...e.hotspots], this.currentSceneId = t;
1156
1178
  }
1157
1179
  initKeyboard() {
1158
- this.keyboardHandler = new Bt({
1180
+ this.keyboardHandler = new Vt({
1159
1181
  container: this.containerEl,
1160
1182
  getZoomPan: () => this.zoomPan,
1161
1183
  onEscape: () => {
@@ -1222,7 +1244,7 @@ const Qt = '.ci-hotspot-container{--ci-hotspot-marker-size: 24px;--ci-hotspot-ma
1222
1244
  t.destroy();
1223
1245
  this.popovers.clear();
1224
1246
  for (const [, t] of this.markers)
1225
- A(t);
1247
+ F(t);
1226
1248
  this.markers.clear(), this.normalizedHotspots.clear();
1227
1249
  for (const [, t] of this.focusTraps)
1228
1250
  t.destroy();
@@ -1241,7 +1263,7 @@ const Qt = '.ci-hotspot-container{--ci-hotspot-marker-size: 24px;--ci-hotspot-ma
1241
1263
  return;
1242
1264
  }
1243
1265
  const c = this.getSceneTransitionDuration();
1244
- g(this.containerEl, "ci-hotspot-scene-transitioning");
1266
+ m(this.containerEl, "ci-hotspot-scene-transitioning");
1245
1267
  const n = v("img", "ci-hotspot-scene-incoming", {
1246
1268
  alt: t.alt || "",
1247
1269
  draggable: "false"
@@ -1252,19 +1274,19 @@ const Qt = '.ci-hotspot-container{--ci-hotspot-marker-size: 24px;--ci-hotspot-ma
1252
1274
  } else
1253
1275
  n.src = t.src;
1254
1276
  const r = () => {
1255
- this.destroyed || (e === "fade" ? (g(n, "ci-hotspot-scene-fade-in"), g(this.imgEl, "ci-hotspot-scene-fade-out")) : e === "slide" && (g(n, `ci-hotspot-scene-slide-in${o}`), g(this.imgEl, `ci-hotspot-scene-slide-out${o}`)), this.viewportEl.insertBefore(n, this.markersEl), this.transitionTimer = setTimeout(() => {
1277
+ this.destroyed || (e === "fade" ? (m(n, "ci-hotspot-scene-fade-in"), m(this.imgEl, "ci-hotspot-scene-fade-out")) : e === "slide" && (m(n, `ci-hotspot-scene-slide-in${o}`), m(this.imgEl, `ci-hotspot-scene-slide-out${o}`)), this.viewportEl.insertBefore(n, this.markersEl), this.transitionTimer = setTimeout(() => {
1256
1278
  if (this.transitionTimer = void 0, this.destroyed) return;
1257
1279
  this.clearHotspots(), this.switchToScene(t);
1258
1280
  const l = () => {
1259
- n.remove(), k(this.imgEl, "ci-hotspot-scene-fade-out"), k(this.imgEl, `ci-hotspot-scene-slide-out${o}`), k(this.containerEl, "ci-hotspot-scene-transitioning"), s();
1281
+ n.remove(), y(this.imgEl, "ci-hotspot-scene-fade-out"), y(this.imgEl, `ci-hotspot-scene-slide-out${o}`), y(this.containerEl, "ci-hotspot-scene-transitioning"), s();
1260
1282
  };
1261
1283
  this.imgEl.complete && this.imgEl.naturalWidth > 0 ? l() : (this.imgEl.addEventListener("load", l, { once: !0 }), this.imgEl.addEventListener("error", l, { once: !0 }));
1262
1284
  }, c));
1263
1285
  };
1264
- n.complete ? r() : (g(this.containerEl, "ci-hotspot-scene-loading"), n.onload = () => {
1265
- k(this.containerEl, "ci-hotspot-scene-loading"), r();
1286
+ n.complete ? r() : (m(this.containerEl, "ci-hotspot-scene-loading"), n.onload = () => {
1287
+ y(this.containerEl, "ci-hotspot-scene-loading"), r();
1266
1288
  }, n.onerror = () => {
1267
- this.destroyed || (k(this.containerEl, "ci-hotspot-scene-loading"), n.remove(), k(this.containerEl, "ci-hotspot-scene-transitioning"), this.clearHotspots(), this.switchToScene(t), s());
1289
+ this.destroyed || (y(this.containerEl, "ci-hotspot-scene-loading"), n.remove(), y(this.containerEl, "ci-hotspot-scene-transitioning"), this.clearHotspots(), this.switchToScene(t), s());
1268
1290
  });
1269
1291
  }
1270
1292
  switchToScene(t) {
@@ -1294,13 +1316,13 @@ const Qt = '.ci-hotspot-container{--ci-hotspot-marker-size: 24px;--ci-hotspot-ma
1294
1316
  var s;
1295
1317
  if (this.destroyed) return;
1296
1318
  const e = this.popovers.get(t), o = this.markers.get(t);
1297
- !e || !o || e.isVisible() || (this.closeAll(), e.show(), m(o, !0), (s = this.focusTraps.get(t)) == null || s.activate());
1319
+ !e || !o || e.isVisible() || (this.closeAll(), e.show(), g(o, !0), (s = this.focusTraps.get(t)) == null || s.activate());
1298
1320
  }
1299
1321
  close(t) {
1300
1322
  var s;
1301
1323
  if (this.destroyed) return;
1302
1324
  const e = this.popovers.get(t), o = this.markers.get(t);
1303
- e && o && (e.hide(), m(o, !1), (s = this.focusTraps.get(t)) == null || s.deactivate());
1325
+ e && o && (e.hide(), g(o, !1), (s = this.focusTraps.get(t)) == null || s.deactivate());
1304
1326
  }
1305
1327
  closeAll() {
1306
1328
  var t;
@@ -1309,7 +1331,7 @@ const Qt = '.ci-hotspot-container{--ci-hotspot-marker-size: 24px;--ci-hotspot-ma
1309
1331
  if (o.isVisible()) {
1310
1332
  o.hide();
1311
1333
  const s = this.markers.get(e);
1312
- s && m(s, !1), (t = this.focusTraps.get(e)) == null || t.deactivate();
1334
+ s && g(s, !1), (t = this.focusTraps.get(e)) == null || t.deactivate();
1313
1335
  }
1314
1336
  }
1315
1337
  }
@@ -1383,7 +1405,7 @@ const Qt = '.ci-hotspot-container{--ci-hotspot-marker-size: 24px;--ci-hotspot-ma
1383
1405
  const o = this.focusTraps.get(t);
1384
1406
  o && (o.destroy(), this.focusTraps.delete(t));
1385
1407
  const s = this.markers.get(t), c = this.popovers.get(t);
1386
- c && (c.destroy(), this.popovers.delete(t)), s && (A(s), this.markers.delete(t)), this.normalizedHotspots.delete(t), this.config.hotspots = this.config.hotspots.filter((n) => n.id !== t), this.syncCurrentSceneHotspots();
1408
+ c && (c.destroy(), this.popovers.delete(t)), s && (F(s), this.markers.delete(t)), this.normalizedHotspots.delete(t), this.config.hotspots = this.config.hotspots.filter((n) => n.id !== t), this.syncCurrentSceneHotspots();
1387
1409
  }
1388
1410
  updateHotspot(t, e) {
1389
1411
  if (this.destroyed) return;
@@ -1395,7 +1417,7 @@ const Qt = '.ci-hotspot-container{--ci-hotspot-marker-size: 24px;--ci-hotspot-ma
1395
1417
  a && c && this.markersEl.contains(c) && this.markersEl.insertBefore(a, c), this.syncCurrentSceneHotspots();
1396
1418
  }
1397
1419
  update(t) {
1398
- this.destroyed || (this.destroyInternal(), Q(), this.config = j({ ...this.config, ...t }), B(this.config), this.config.scenes && this.config.scenes.length > 0 && this.initScenes(), this.buildDOM(), this.applyTheme(), this.setupImage(), this.initHotspots(), this.config.zoom && this.initZoom(), this.initKeyboard(), this.initFullscreen(), this.setupResponsive());
1420
+ this.destroyed || (this.destroyInternal(), Q(), this.config = j({ ...this.config, ...t }), V(this.config), this.config.scenes && this.config.scenes.length > 0 && this.initScenes(), this.buildDOM(), this.applyTheme(), this.setupImage(), this.initHotspots(), this.config.zoom && this.initZoom(), this.initKeyboard(), this.initFullscreen(), this.setupResponsive());
1399
1421
  }
1400
1422
  destroy() {
1401
1423
  this.destroyed || (this.destroyed = !0, this.destroyInternal(), this.rootEl.innerHTML = "");
@@ -1412,17 +1434,17 @@ const Qt = '.ci-hotspot-container{--ci-hotspot-marker-size: 24px;--ci-hotspot-ma
1412
1434
  a.destroy();
1413
1435
  this.popovers.clear();
1414
1436
  for (const [, a] of this.markers)
1415
- A(a);
1437
+ F(a);
1416
1438
  this.markers.clear(), this.normalizedHotspots.clear();
1417
1439
  for (const [, a] of this.focusTraps)
1418
1440
  a.destroy();
1419
1441
  this.focusTraps.clear(), this.scenesMap.clear(), this.preloadedScenes.clear(), this.sceneHotspotOverrides.clear(), this.currentSceneId = void 0, this.isTransitioning = !1, this.transitionTimer !== void 0 && (clearTimeout(this.transitionTimer), this.transitionTimer = void 0), (t = this.fullscreenControl) == null || t.destroy(), this.fullscreenControl = null, (e = this.keyboardHandler) == null || e.destroy(), this.keyboardHandler = null, (o = this.zoomPan) == null || o.destroy(), this.zoomPan = null, (s = this.zoomControls) == null || s.destroy(), this.zoomControls = null, (c = this.scrollHint) == null || c.destroy(), this.scrollHint = null, (n = this.cloudimageHandler) == null || n.destroy(), this.cloudimageHandler = null, (r = this.resizeObserver) == null || r.disconnect(), this.resizeObserver = null, Gt();
1420
1442
  }
1421
1443
  };
1422
- P.NAVIGATE_ARROW_SVG = '<svg class="ci-hotspot-navigate-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m9 18 6-6-6-6"/></svg>';
1423
- let X = P;
1444
+ M.NAVIGATE_ARROW_SVG = '<svg class="ci-hotspot-navigate-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m9 18 6-6-6-6"/></svg>';
1445
+ let $ = M;
1424
1446
  function Y(i) {
1425
- const t = S({ value: i, key: JSON.stringify(i) });
1447
+ const t = P({ value: i, key: JSON.stringify(i) });
1426
1448
  if (i !== t.current.value) {
1427
1449
  const e = JSON.stringify(i);
1428
1450
  e !== t.current.key ? t.current = { value: i, key: e } : t.current.value = i;
@@ -1430,7 +1452,7 @@ function Y(i) {
1430
1452
  return t.current.key;
1431
1453
  }
1432
1454
  function te(i) {
1433
- const t = S(null), e = S(null), o = S(!1), s = S(i);
1455
+ const t = P(null), e = P(null), o = P(!1), s = P(i);
1434
1456
  s.current = i, O(() => {
1435
1457
  const a = t.current;
1436
1458
  if (!a) return;
@@ -1466,7 +1488,7 @@ function te(i) {
1466
1488
  const p = document.createElement("div");
1467
1489
  return p.dataset.reactPortal = h.id, p;
1468
1490
  });
1469
- const d = new X(a, l);
1491
+ const d = new $(a, l);
1470
1492
  return e.current = d, () => {
1471
1493
  d.destroy(), e.current = null;
1472
1494
  };
@@ -1603,12 +1625,12 @@ const se = ct(
1603
1625
  if (!p) return;
1604
1626
  const u = /* @__PURE__ */ new Map();
1605
1627
  p.forEach((b) => {
1606
- const y = b.dataset.reactPortal;
1607
- y && u.set(y, b);
1628
+ const k = b.dataset.reactPortal;
1629
+ k && u.set(k, b);
1608
1630
  }), d((b) => {
1609
1631
  if (b.size !== u.size) return u;
1610
- for (const [y, M] of u)
1611
- if (b.get(y) !== M) return u;
1632
+ for (const [k, L] of u)
1633
+ if (b.get(k) !== L) return u;
1612
1634
  return b;
1613
1635
  });
1614
1636
  });