vistaview 0.3.6 → 0.3.8

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.
package/dist/vistaview.js CHANGED
@@ -16,11 +16,11 @@ function z(s) {
16
16
  naturalHeight: s.naturalHeight
17
17
  };
18
18
  }
19
- let S = null;
19
+ let P = null;
20
20
  function V() {
21
- return S || (window.trustedTypes || (window.trustedTypes = {
21
+ return P || (window.trustedTypes || (window.trustedTypes = {
22
22
  createPolicy: (s, t) => t
23
- }), S = window.trustedTypes.createPolicy("vistaView-policy", {
23
+ }), P = window.trustedTypes.createPolicy("vistaView-policy", {
24
24
  createHTML: (s) => s,
25
25
  // HTML is generated by us, not user input
26
26
  createScript: () => {
@@ -29,7 +29,7 @@ function V() {
29
29
  createScriptURL: () => {
30
30
  throw new Error("Not implemented");
31
31
  }
32
- }), S);
32
+ }), P);
33
33
  }
34
34
  function W(s) {
35
35
  const i = V().createHTML(s), n = document.createElement("template");
@@ -40,30 +40,30 @@ function W(s) {
40
40
  function R(s) {
41
41
  return s && !/^0(px|%|r?em|vw|vh|vmin|vmax|cm|mm|in|pt|pc|ex|ch)?$/i.test(s.trim()) && s;
42
42
  }
43
- function B(s) {
44
- const i = window.getComputedStyle(s).objectFit || "", { width: n, height: e } = s.getBoundingClientRect(), a = s.naturalWidth, d = s.naturalHeight;
43
+ function _(s) {
44
+ const i = window.getComputedStyle(s).objectFit || "", { width: n, height: e } = s.getBoundingClientRect(), r = s.naturalWidth, d = s.naturalHeight;
45
45
  if (!i)
46
46
  return { width: n, height: e };
47
- if (!a || !d)
47
+ if (!r || !d)
48
48
  return { width: n, height: e };
49
- const o = a / d, l = n / e;
49
+ const o = r / d, a = n / e;
50
50
  switch (i) {
51
51
  case "fill":
52
52
  return { width: n, height: e };
53
53
  case "none":
54
- return { width: a, height: d };
54
+ return { width: r, height: d };
55
55
  case "contain":
56
- return o > l ? { width: n, height: n / o } : { width: e * o, height: e };
56
+ return o > a ? { width: n, height: n / o } : { width: e * o, height: e };
57
57
  case "cover":
58
- return o < l ? { width: n, height: n / o } : { width: e * o, height: e };
58
+ return o < a ? { width: n, height: n / o } : { width: e * o, height: e };
59
59
  case "scale-down": {
60
- const c = { width: a, height: d }, r = o > l ? { width: n, height: n / o } : { width: e * o, height: e };
61
- return r.width <= c.width && r.height <= c.height ? r : c;
60
+ const h = { width: r, height: d }, l = o > a ? { width: n, height: n / o } : { width: e * o, height: e };
61
+ return l.width <= h.width && l.height <= h.height ? l : h;
62
62
  }
63
63
  }
64
64
  return { width: n, height: e };
65
65
  }
66
- function H(s) {
66
+ function T(s) {
67
67
  const t = window.innerWidth, i = window.innerHeight, n = s.naturalWidth, e = s.naturalHeight;
68
68
  if (!n || !e)
69
69
  throw console.error("Error", s), new Error("Image natural dimensions are zero");
@@ -72,31 +72,31 @@ function H(s) {
72
72
  width: n,
73
73
  height: e
74
74
  };
75
- const a = n / e, d = t / i;
76
- let o, l;
77
- return a > d ? (o = t, l = t / a) : (l = i, o = i * a), {
75
+ const r = n / e, d = t / i;
76
+ let o, a;
77
+ return r > d ? (o = t, a = t / r) : (a = i, o = i * r), {
78
78
  width: o,
79
- height: l
79
+ height: a
80
80
  };
81
81
  }
82
- function T(s, t) {
83
- const i = window.innerHeight, n = window.innerWidth, e = s, a = t, d = Math.max(0, (e - n) / 2) + n / 2, o = Math.max(0, (a - i) / 2) + i / 2, l = -d, c = -o;
82
+ function H(s, t) {
83
+ const i = window.innerHeight, n = window.innerWidth, e = s, r = t, d = Math.max(0, (e - n) / 2) + n / 2, o = Math.max(0, (r - i) / 2) + i / 2, a = -d, h = -o;
84
84
  return {
85
85
  maxDiffX: d,
86
- minDiffY: c,
86
+ minDiffY: h,
87
87
  maxDiffY: o,
88
- minDiffX: l
88
+ minDiffX: a
89
89
  };
90
90
  }
91
- const _ = '<svg viewBox="0 0 24 24"><path d="m15 18-6-6 6-6"/></svg>', F = '<svg viewBox="0 0 24 24"><path d="m9 18 6-6-6-6"/></svg>', N = '<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><line x1="21" x2="16.65" y1="21" y2="16.65"/><line x1="11" x2="11" y1="8" y2="14"/><line x1="8" x2="14" y1="11" y2="11"/></svg>', U = '<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><line x1="21" x2="16.65" y1="21" y2="16.65"/><line x1="8" x2="14" y1="11" y2="11"/></svg>', K = '<svg viewBox="0 0 24 24"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>', j = '<svg viewBox="0 0 24 24"><path d="M12 15V3"/><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><path d="m7 10 5 5 5-5"/></svg>';
91
+ const B = '<svg viewBox="0 0 24 24"><path d="m15 18-6-6 6-6"/></svg>', F = '<svg viewBox="0 0 24 24"><path d="m9 18 6-6-6-6"/></svg>', N = '<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><line x1="21" x2="16.65" y1="21" y2="16.65"/><line x1="11" x2="11" y1="8" y2="14"/><line x1="8" x2="14" y1="11" y2="11"/></svg>', U = '<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><line x1="21" x2="16.65" y1="21" y2="16.65"/><line x1="8" x2="14" y1="11" y2="11"/></svg>', K = '<svg viewBox="0 0 24 24"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>', j = '<svg viewBox="0 0 24 24"><path d="M12 15V3"/><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><path d="m7 10 5 5 5-5"/></svg>';
92
92
  function G() {
93
93
  return {
94
94
  name: "download",
95
95
  icon: j,
96
96
  onClick: async (s) => {
97
- var a;
97
+ var r;
98
98
  const t = await fetch(s.src), i = await t.blob(), n = t.url, e = document.createElement("a");
99
- e.href = URL.createObjectURL(i), e.download = ((a = n.split("/").pop()) == null ? void 0 : a.split("?")[0].split("#")[0]) || "download", document.body.appendChild(e), e.click(), document.body.removeChild(e);
99
+ e.href = URL.createObjectURL(i), e.download = ((r = n.split("/").pop()) == null ? void 0 : r.split("?")[0].split("#")[0]) || "download", document.body.appendChild(e), e.click(), document.body.removeChild(e);
100
100
  }
101
101
  };
102
102
  }
@@ -119,18 +119,18 @@ function J(s) {
119
119
  return `<button data-vistaview-custom-control="${s.name}">${s.icon}</button>`;
120
120
  }
121
121
  function q(s, t) {
122
- var r, h;
123
- const i = s.imageElm ? getComputedStyle(s.imageElm) : null, n = (i == null ? void 0 : i.objectFit) || "", e = ((r = s.imageElm) == null ? void 0 : r.naturalWidth) || "", a = ((h = s.imageElm) == null ? void 0 : h.naturalHeight) || "", d = (i == null ? void 0 : i.width) || "", o = (i == null ? void 0 : i.height) || "", l = document.createElement("div");
124
- l.className = "vistaview-item", l.dataset.vistaviewPos = `${t !== void 0 ? t : ""}`, l.dataset.vistaviewIndex = s.index.toString();
125
- const c = W(`<img class="vistaview-image-lowres"
122
+ var l, c;
123
+ const i = s.imageElm ? getComputedStyle(s.imageElm) : null, n = (i == null ? void 0 : i.objectFit) || "", e = ((l = s.imageElm) == null ? void 0 : l.naturalWidth) || "", r = ((c = s.imageElm) == null ? void 0 : c.naturalHeight) || "", d = (i == null ? void 0 : i.width) || "", o = (i == null ? void 0 : i.height) || "", a = document.createElement("div");
124
+ a.className = "vistaview-item", a.dataset.vistaviewPos = `${t !== void 0 ? t : ""}`, a.dataset.vistaviewIndex = s.index.toString();
125
+ const h = W(`<img class="vistaview-image-lowres"
126
126
  style="${n ? `object-fit:${n};` : ""}${d ? `width:${d};` : ""}${o ? `height:${o};` : ""}"
127
127
  src="${s.thumb || s.src}"
128
128
  alt="${s.alt || ""}"
129
129
  ${e ? `width="${e}"` : ""}
130
- ${a ? `height="${a}"` : ""}
130
+ ${r ? `height="${r}"` : ""}
131
131
  />
132
132
  <img class="vistaview-image-highres" src="${s.src}" alt="${s.alt || ""}" />`);
133
- return l.appendChild(c), l;
133
+ return a.appendChild(h), a;
134
134
  }
135
135
  function Q({
136
136
  controls: s,
@@ -143,67 +143,67 @@ function Q({
143
143
  <div class="vistaview-image-container"></div>
144
144
  <div class="vistaview-top-bar vistaview-ui"><div>${i(s == null ? void 0 : s.topLeft)}</div><div>${i(s == null ? void 0 : s.topCenter)}</div><div>${i(s == null ? void 0 : s.topRight)}</div></div>
145
145
  <div class="vistaview-bottom-bar vistaview-ui"><div>${i(s == null ? void 0 : s.bottomLeft)}</div><div>${i(s == null ? void 0 : s.bottomCenter)}</div><div>${i(s == null ? void 0 : s.bottomRight)}</div></div>
146
- <div class="vistaview-prev-btn vistaview-ui"><button>${_}</button></div>
146
+ <div class="vistaview-prev-btn vistaview-ui"><button>${B}</button></div>
147
147
  <div class="vistaview-next-btn vistaview-ui"><button>${F}</button></div>
148
148
  </div>
149
149
  </div>`
150
150
  );
151
151
  }
152
- let A = null, $ = null, Z = null, M = null;
152
+ let A = null, $ = null, M = null, Z = null;
153
153
  function tt(s) {
154
154
  O(s);
155
155
  const t = s.imageContainerElm, i = s.elements.length;
156
156
  if (!t) return;
157
- let n = 0, e = 0, a = 0, d = 0, o = null, l = 0, c = !1;
158
- A = (r) => {
159
- r.preventDefault(), r.stopPropagation(), s.isZoomed === !1 && (c = !0, n = r.pageX, e = r.pageY, a = r.pageX, d = r.pageY, l = Date.now(), o = null, t.setPointerCapture(r.pointerId));
160
- }, $ = (r) => {
161
- if (r.preventDefault(), r.stopPropagation(), s.isZoomed !== !1 || !c) return;
162
- const h = r.pageX - n, m = r.pageY - e;
163
- a = r.pageX, d = r.pageY, Math.abs(h) >= Math.abs(m) && (o === null || o === !0) ? (t.style.setProperty("--vistaview-pointer-diff-x", `${h}px`), o = !0) : Math.abs(m) > Math.abs(h) && (o === null || o === !1) && (t.style.setProperty("--vistaview-pointer-diff-y", `${m}px`), o = !1);
164
- }, M = (r) => {
165
- if (r.preventDefault(), r.stopPropagation(), t.releasePointerCapture(r.pointerId), s.isZoomed !== !1 || !c) return;
166
- c = !1, o = null;
167
- const h = Array.from(t.querySelectorAll(".vistaview-item"));
168
- t.style.removeProperty("--vistaview-pointer-diff-x"), t.style.removeProperty("--vistaview-pointer-diff-y"), h.forEach((m) => {
169
- m.style.transition = "", m.style.translate = "";
157
+ let n = 0, e = 0, r = 0, d = 0, o = null, a = 0, h = !1;
158
+ A = (l) => {
159
+ l.preventDefault(), l.stopPropagation(), s.isZoomed === !1 && (h = !0, n = l.pageX, e = l.pageY, r = l.pageX, d = l.pageY, a = Date.now(), o = null, t.setPointerCapture(l.pointerId));
160
+ }, $ = (l) => {
161
+ if (l.preventDefault(), l.stopPropagation(), s.isZoomed !== !1 || !h) return;
162
+ const c = l.pageX - n, v = l.pageY - e;
163
+ r = l.pageX, d = l.pageY, Math.abs(c) >= Math.abs(v) && (o === null || o === !0) ? (t.style.setProperty("--vistaview-pointer-diff-x", `${c}px`), o = !0) : Math.abs(v) > Math.abs(c) && (o === null || o === !1) && (t.style.setProperty("--vistaview-pointer-diff-y", `${v}px`), o = !1);
164
+ }, Z = (l) => {
165
+ if (l.preventDefault(), l.stopPropagation(), t.releasePointerCapture(l.pointerId), s.isZoomed !== !1 || !h) return;
166
+ h = !1, o = null;
167
+ const c = Array.from(t.querySelectorAll(".vistaview-item"));
168
+ t.style.removeProperty("--vistaview-pointer-diff-x"), t.style.removeProperty("--vistaview-pointer-diff-y"), c.forEach((v) => {
169
+ v.style.transition = "", v.style.translate = "";
170
170
  });
171
- }, Z = (r) => {
172
- if (r.preventDefault(), r.stopPropagation(), t.releasePointerCapture(r.pointerId), s.isZoomed !== !1 || !c) return;
173
- c = !1;
174
- const h = Array.from(t.querySelectorAll(".vistaview-item")), m = a - n, f = d - e, u = Date.now() - l, v = m / u, y = f / u, p = s.options.touchSpeedThreshold || 0.5, b = h.find(
171
+ }, M = (l) => {
172
+ if (l.preventDefault(), l.stopPropagation(), t.releasePointerCapture(l.pointerId), s.isZoomed !== !1 || !h) return;
173
+ h = !1;
174
+ const c = Array.from(t.querySelectorAll(".vistaview-item")), v = r - n, m = d - e, f = Date.now() - a, u = v / f, y = m / f, p = s.options.touchSpeedThreshold || 0.5, x = c.find(
175
175
  (E) => E.dataset.vistaviewPos === "0"
176
- ), x = Number(b.dataset.vistaviewIndex);
176
+ ), b = Number(x.dataset.vistaviewIndex);
177
177
  function g() {
178
- h[0].removeEventListener("transitionend", g), t.style.removeProperty("--vistaview-pointer-diff-x"), t.style.removeProperty("--vistaview-pointer-diff-y"), h.forEach((E) => {
178
+ c[0].removeEventListener("transitionend", g), t.style.removeProperty("--vistaview-pointer-diff-x"), t.style.removeProperty("--vistaview-pointer-diff-y"), c.forEach((E) => {
179
179
  E.style.transition = "", E.style.translate = "";
180
180
  });
181
181
  }
182
182
  function I(E = "0%", L = "0%") {
183
- h.forEach((D) => {
183
+ c.forEach((D) => {
184
184
  D.style.transition = `translate ${s.options.animationDurationBase * 0.5}ms ease-out`, D.style.translate = `${E} ${L}`;
185
185
  });
186
186
  }
187
- if (v < -p || v > p) {
187
+ if (u < -p || u > p) {
188
188
  let E = function() {
189
- h[0].removeEventListener("transitionend", E), setTimeout(() => {
189
+ c[0].removeEventListener("transitionend", E), setTimeout(() => {
190
190
  const L = s.isReducedMotion;
191
191
  s.isReducedMotion = !0, g(), s.view(
192
- v < -p ? (x + 1) % i : (x - 1 + i) % i,
192
+ u < -p ? (b + 1) % i : (b - 1 + i) % i,
193
193
  {
194
- next: v < -p,
195
- prev: v > p
194
+ next: u < -p,
195
+ prev: u > p
196
196
  }
197
197
  ), s.isReducedMotion = L;
198
198
  }, 100);
199
199
  };
200
- I(v < -p ? "-100%" : "100%"), h[0].addEventListener("transitionend", E);
201
- } else y < -p || y > p ? (s.close(), I("0%", "0%")) : (h[0].addEventListener("transitionend", g), I("0%"));
202
- }, t.addEventListener("pointermove", $), t.addEventListener("pointerup", Z), t.addEventListener("pointerdown", A), t.addEventListener("pointercancel", M);
200
+ I(u < -p ? "-100%" : "100%"), c[0].addEventListener("transitionend", E);
201
+ } else y < -p || y > p ? (s.close(), I("0%", "0%")) : (c[0].addEventListener("transitionend", g), I("0%"), u === 0 && y === 0 && s.zoomIn());
202
+ }, t.addEventListener("pointermove", $), t.addEventListener("pointerup", M), t.addEventListener("pointerdown", A), t.addEventListener("pointercancel", Z);
203
203
  }
204
204
  function O(s) {
205
205
  const t = s.imageContainerElm;
206
- t && ($ && t.removeEventListener("pointermove", $), Z && t.removeEventListener("pointerup", Z), A && t.removeEventListener("pointerdown", A), M && t.removeEventListener("pointercancel", M));
206
+ t && ($ && t.removeEventListener("pointermove", $), M && t.removeEventListener("pointerup", M), A && t.removeEventListener("pointerdown", A), Z && t.removeEventListener("pointercancel", Z));
207
207
  }
208
208
  const et = (s) => {
209
209
  tt(s);
@@ -220,65 +220,49 @@ const et = (s) => {
220
220
  htmlElements: { from: s, to: t },
221
221
  images: { to: i },
222
222
  via: { next: n, prev: e },
223
- options: a,
223
+ options: r,
224
224
  isReducedMotion: d
225
225
  // index: { from: fromIndex, to: toIndex },
226
226
  }, o) => {
227
- if (console.log("defaultTransition called"), !i) throw new Error("VistaView: images is null in defaultTransition()");
228
- const l = s.filter((c) => c.dataset.vistaviewPos === "0" || (n ? c.dataset.vistaviewPos === "1" : c.dataset.vistaviewPos === "-1"));
229
- if (d) {
230
- console.log("reduced motion, no transition");
227
+ if (!i) throw new Error("VistaView: images is null in defaultTransition()");
228
+ if (d)
231
229
  return;
232
- }
233
- await new Promise((c, r) => {
234
- let h = 0;
230
+ const a = s.filter((h) => h.dataset.vistaviewPos === "0" || (n ? h.dataset.vistaviewPos === "1" : h.dataset.vistaviewPos === "-1"));
231
+ await new Promise((h, l) => {
232
+ let c = 0;
235
233
  if (o.aborted) {
236
- console.log("transition aborted before start"), r(new P("Transition aborted"));
234
+ l(new S("Transition aborted"));
237
235
  return;
238
236
  }
239
- const m = (f) => {
240
- if (o.aborted) {
241
- console.log("transition aborted before start"), r(new P("Transition aborted"));
242
- return;
243
- }
244
- if (f.currentTarget.removeEventListener("transitionend", m), h++, h < l.length) return;
245
- const u = t == null ? void 0 : t.find((g) => g.dataset.vistaviewPos === "0"), v = u ? Number(u.dataset.vistaviewIndex) : 0, y = l.find((g) => Number(g.dataset.vistaviewIndex) === v), p = y == null ? void 0 : y.querySelector(
237
+ const v = (m) => {
238
+ if (o.aborted)
239
+ return l(new S("Transition aborted"));
240
+ if (m.currentTarget.removeEventListener("transitionend", v), c++, c < a.length) return;
241
+ const f = t == null ? void 0 : t.find((g) => g.dataset.vistaviewPos === "0"), u = f ? Number(f.dataset.vistaviewIndex) : 0, y = a.find((g) => Number(g.dataset.vistaviewIndex) === u), p = y == null ? void 0 : y.querySelector(
246
242
  ".vistaview-image-highres"
247
243
  );
248
- if (!p) {
249
- r(new Error("current image element not found"));
250
- return;
251
- }
252
- if (!p.classList.contains("vistaview-image-loaded")) {
253
- console.log("current image not loaded yet"), c(0);
254
- return;
255
- }
256
- if (u == null || u.classList.add("vistaview-image-loaded"), p.classList.contains("vistaview-image-settled")) {
257
- console.log("current image already settled"), u == null || u.classList.add("vistaview-image-settled"), c(0);
258
- return;
259
- }
260
- let b = 0;
261
- console.log("waiting for image to be settled...");
262
- const x = setInterval(() => {
263
- if (o.aborted) {
264
- console.log("transition aborted during wait"), clearInterval(x), r(new P("Transition aborted"));
265
- return;
266
- }
267
- if (b++, b > a.animationDurationBase / 20 * 1.5) {
268
- console.log("timeout waiting for image to be settled"), clearInterval(x), c(0);
269
- return;
270
- }
271
- p.classList.contains("vistaview-image-settled") && (console.log("image settled"), u == null || u.classList.add("vistaview-image-settled"), clearInterval(x), c(0));
244
+ if (!p)
245
+ return l(new Error("current image element not found"));
246
+ if (!p.classList.contains("vistaview-image-loaded") || p.classList.contains("vistaview-image-settled"))
247
+ return h(0);
248
+ let x = 0;
249
+ const b = setInterval(() => {
250
+ if (o.aborted)
251
+ return clearInterval(b), l(new S("Transition aborted"));
252
+ if (x++, x > r.animationDurationBase / 20 * 1.5)
253
+ return clearInterval(b), h(0);
254
+ if (p.classList.contains("vistaview-image-settled"))
255
+ return f == null || f.classList.add("vistaview-image-settled"), clearInterval(b), h(0);
272
256
  }, 20);
273
257
  };
274
- l.forEach((f) => {
275
- f.style.transition = `translate ${a.animationDurationBase * 0.5}ms ease-out`, f.style.translate = n ? "-100%" : e ? "100%" : "0%", f.addEventListener("transitionend", m);
258
+ a.forEach((m) => {
259
+ m.style.transition = `translate ${r.animationDurationBase * 0.5}ms ease-out`, m.style.translate = n ? "-100%" : e ? "100%" : "0%", m.addEventListener("transitionend", v);
276
260
  });
277
261
  });
278
262
  }, st = (s) => {
279
263
  s.elements instanceof NodeList && s.elements.forEach((t) => t.style.opacity = "1"), O(s);
280
264
  };
281
- class P extends Error {
265
+ class S extends Error {
282
266
  constructor(t) {
283
267
  super(t), this.name = "VistaViewTransitionAbortedError";
284
268
  }
@@ -312,9 +296,12 @@ class ot {
312
296
  _vistaView: null,
313
297
  _via: { next: !1, prev: !1 },
314
298
  set value(t) {
315
- var n;
299
+ var n, e, r;
316
300
  const i = this._value;
317
- this._value = t, (n = this._vistaView) == null || n.swap(i, this._value);
301
+ this._value = t;
302
+ for (const d in (n = this._vistaView) == null ? void 0 : n.transitionAbortControllers)
303
+ (e = this._vistaView) == null || e.transitionAbortControllers[d].abort();
304
+ (r = this._vistaView) == null || r.swap(i, this._value);
318
305
  },
319
306
  get value() {
320
307
  return this._value;
@@ -348,7 +335,8 @@ class ot {
348
335
  w(this, "onZoomedPointerDown", null);
349
336
  w(this, "onZoomedPointerMove", null);
350
337
  w(this, "onZoomedPointerUp", null);
351
- w(this, "transitionAbortController", null);
338
+ w(this, "transitionAbortControllers", {});
339
+ w(this, "loadImageTimeout", null);
352
340
  this.elements = t, this.currentIndex._vistaView = this, this.options = {
353
341
  ...k,
354
342
  ...i || {},
@@ -363,14 +351,12 @@ class ot {
363
351
  async swap(t, i) {
364
352
  var l, c;
365
353
  if (!C.somethingOpened || t === i || t === null) return;
366
- if (console.log("Swapping from", t, "to", i), this.transitionAbortController && this.transitionAbortController.abort(), !this.imageContainerElm)
354
+ if (!this.imageContainerElm)
367
355
  throw new Error("VistaView: imageContainerElm is null in swap()");
368
356
  this.setIndexDisplay(), this.clearZoom();
369
- const { images: n, positions: e } = this.getCurrentIndexes(i), a = this.getImages(n), d = a.map((r, h) => q(r, e[h]));
370
- console.log("swap prepared");
371
- const o = {
357
+ const { images: n, positions: e } = this.getCurrentIndexes(i), r = this.getImages(n), d = r.map((v, m) => q(v, e[m])), o = {
372
358
  htmlElements: { from: this.currentItems, to: d },
373
- images: { from: this.currentImages, to: a },
359
+ images: { from: this.currentImages, to: r },
374
360
  index: { from: t, to: i },
375
361
  via: this.currentIndex.via,
376
362
  container: this.imageContainerElm,
@@ -380,84 +366,94 @@ class ot {
380
366
  isZoomed: this.isZoomed,
381
367
  options: this.options
382
368
  };
383
- this.userSetup(o), this.transitionAbortController = new AbortController();
369
+ this.userSetup(o);
370
+ const a = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
371
+ this.transitionAbortControllers[a] = new AbortController();
384
372
  try {
385
- await this.userTransition(o, this.transitionAbortController.signal);
386
- } catch (r) {
387
- r instanceof P || console.error(r);
373
+ await this.userTransition(o, this.transitionAbortControllers[a].signal);
374
+ } catch (v) {
375
+ v instanceof S || console.warn(v);
388
376
  }
389
- console.log("swap completed"), this.imageContainerElm.innerHTML = "", d.forEach((r) => {
390
- const h = r.dataset.vistaviewPos, m = r.dataset.vistaviewIndex;
391
- if (h === "0") {
392
- const f = this.currentItems.find((y) => y.dataset.vistaviewIndex === m), u = r.querySelector(".vistaview-image-highres"), v = f == null ? void 0 : f.querySelector(".vistaview-image-highres");
393
- v && (u.setAttribute("class", v.getAttribute("class") || ""), u.setAttribute("style", v.getAttribute("style") || "")), this.imageContainerElm.appendChild(r);
394
- } else
395
- this.imageContainerElm.appendChild(r);
396
- }), this.setInitialDimPos(), this.currentImages = a, this.currentItems = d, this.loadImages(), this.setCurrentDescription(), this.updateZoomButtonsVisibility(), (c = (l = this.options).onImageView) == null || c.call(l, o);
377
+ delete this.transitionAbortControllers[a];
378
+ const h = d.find((v) => v.dataset.vistaviewPos === "0");
379
+ if (h) {
380
+ const v = h.dataset.vistaviewIndex, m = this.currentItems.find((u) => u.dataset.vistaviewIndex === v), f = m == null ? void 0 : m.querySelector(".vistaview-image-highres");
381
+ if (f) {
382
+ const u = h.querySelector(
383
+ ".vistaview-image-highres"
384
+ );
385
+ u.setAttribute("class", f.getAttribute("class") || ""), u.setAttribute("style", f.getAttribute("style") || ""), u.classList.remove("vistaview-image--zooming"), u.classList.remove("vistaview-image-settled");
386
+ }
387
+ }
388
+ this.imageContainerElm.innerHTML = "", d.forEach((v) => {
389
+ this.imageContainerElm.appendChild(v);
390
+ }), this.setInitialDimPos(), this.currentImages = r, this.currentItems = d, this.setCurrentDescription(), this.updateZoomButtonsVisibility(), (c = (l = this.options).onImageView) == null || c.call(l, o), this.loadImageTimeout && clearTimeout(this.loadImageTimeout), this.loadImageTimeout = setTimeout(() => {
391
+ this.loadImages();
392
+ }, 333);
397
393
  }
398
394
  //
399
395
  setZoomed(t) {
400
- var i, n, e, a, d, o;
396
+ var i, n, e, r, d, o;
401
397
  if (this.isZoomed !== t) {
402
398
  if (this.isZoomed) {
403
- let l = this.isZoomed;
404
- if (l.classList.remove("vistaview-image--zooming"), this.onZoomedPointerDown && ((i = l.parentElement) == null || i.removeEventListener("pointerdown", this.onZoomedPointerDown), this.onZoomedPointerDown = null), this.onZoomedPointerMove && ((n = l.parentElement) == null || n.removeEventListener("pointermove", this.onZoomedPointerMove), this.onZoomedPointerMove = null), this.onZoomedPointerUp && ((e = l.parentElement) == null || e.removeEventListener("pointerup", this.onZoomedPointerUp), this.onZoomedPointerUp = null), l == null || l.style.removeProperty("--pointer-diff-x"), l == null || l.style.removeProperty("--pointer-diff-y"), setTimeout(() => {
405
- l == null || l.classList.remove("vistaview-image--zooming");
399
+ let a = this.isZoomed;
400
+ if (a.classList.remove("vistaview-image--zooming"), this.onZoomedPointerDown && ((i = a.parentElement) == null || i.removeEventListener("pointerdown", this.onZoomedPointerDown), this.onZoomedPointerDown = null), this.onZoomedPointerMove && ((n = a.parentElement) == null || n.removeEventListener("pointermove", this.onZoomedPointerMove), this.onZoomedPointerMove = null), this.onZoomedPointerUp && ((e = a.parentElement) == null || e.removeEventListener("pointerup", this.onZoomedPointerUp), this.onZoomedPointerUp = null), a == null || a.style.removeProperty("--pointer-diff-x"), a == null || a.style.removeProperty("--pointer-diff-y"), setTimeout(() => {
401
+ a == null || a.classList.remove("vistaview-image--zooming");
406
402
  }, 500), this.isZoomed = !1, !t) return;
407
403
  }
408
404
  if (t) {
409
405
  this.isZoomed = t, t.classList.add("vistaview-image--zooming"), t == null || t.style.setProperty("--pointer-diff-x", "0px"), t == null || t.style.setProperty("--pointer-diff-y", "0px");
410
- let l = !1, c = 0, r = 0, h = 0, m = 0, f = 0, u = 0;
411
- this.onZoomedPointerDown = (v) => {
412
- v.preventDefault(), v.stopPropagation(), l = !0, c = v.pageX, r = v.pageY, t.setPointerCapture(v.pointerId);
413
- }, this.onZoomedPointerMove = (v) => {
414
- if (!l) return;
415
- v.preventDefault(), f = v.pageX - c, u = v.pageY - r;
416
- const y = parseInt((t == null ? void 0 : t.dataset.vistaviewCurrentWidth) || "0"), p = parseInt((t == null ? void 0 : t.dataset.vistaviewCurrentHeight) || "0"), { maxDiffX: b, minDiffY: x, maxDiffY: g, minDiffX: I } = T(
406
+ let a = !1, h = 0, l = 0, c = 0, v = 0, m = 0, f = 0;
407
+ this.onZoomedPointerDown = (u) => {
408
+ u.preventDefault(), u.stopPropagation(), a = !0, h = u.pageX, l = u.pageY, t.setPointerCapture(u.pointerId);
409
+ }, this.onZoomedPointerMove = (u) => {
410
+ if (!a) return;
411
+ u.preventDefault(), m = u.pageX - h, f = u.pageY - l;
412
+ const y = parseInt((t == null ? void 0 : t.dataset.vistaviewCurrentWidth) || "0"), p = parseInt((t == null ? void 0 : t.dataset.vistaviewCurrentHeight) || "0"), { maxDiffX: x, minDiffY: b, maxDiffY: g, minDiffX: I } = H(
417
413
  y,
418
414
  p
419
- ), E = Math.min(b, Math.max(I, h + f)), L = Math.min(g, Math.max(x, m + u));
420
- f = E - h, u = L - m, t == null || t.style.setProperty("--pointer-diff-x", `${E}px`), t == null || t.style.setProperty("--pointer-diff-y", `${L}px`);
421
- }, this.onZoomedPointerUp = (v) => {
422
- l = !1, t.releasePointerCapture(v.pointerId), h += f, m += u, f = 0, u = 0;
423
- }, (a = t == null ? void 0 : t.parentElement) == null || a.addEventListener("pointerdown", this.onZoomedPointerDown), (d = t == null ? void 0 : t.parentElement) == null || d.addEventListener("pointermove", this.onZoomedPointerMove), (o = t == null ? void 0 : t.parentElement) == null || o.addEventListener("pointerup", this.onZoomedPointerUp);
415
+ ), E = Math.min(x, Math.max(I, c + m)), L = Math.min(g, Math.max(b, v + f));
416
+ m = E - c, f = L - v, t == null || t.style.setProperty("--pointer-diff-x", `${E}px`), t == null || t.style.setProperty("--pointer-diff-y", `${L}px`);
417
+ }, this.onZoomedPointerUp = (u) => {
418
+ a = !1, t.releasePointerCapture(u.pointerId), c += m, v += f, m = 0, f = 0;
419
+ }, (r = t == null ? void 0 : t.parentElement) == null || r.addEventListener("pointerdown", this.onZoomedPointerDown), (d = t == null ? void 0 : t.parentElement) == null || d.addEventListener("pointermove", this.onZoomedPointerMove), (o = t == null ? void 0 : t.parentElement) == null || o.addEventListener("pointerup", this.onZoomedPointerUp);
424
420
  return;
425
421
  }
426
422
  }
427
423
  }
428
424
  zoomIn() {
429
- var a, d, o, l, c;
430
- const t = (a = this.rootElm) == null ? void 0 : a.querySelector(
425
+ var r, d, o, a, h;
426
+ const t = (r = this.rootElm) == null ? void 0 : r.querySelector(
431
427
  '[data-vistaview-pos="0"] .vistaview-image-highres'
432
428
  ), i = t.width, n = t.height;
433
429
  t.dataset.vistaviewInitialWidth || (t.dataset.vistaviewInitialWidth = i.toString()), t.dataset.vistaviewInitialHeight || (t.dataset.vistaviewInitialHeight = n.toString()), this.setZoomed(t);
434
430
  const e = (t.naturalWidth || 0) * this.options.maxZoomLevel;
435
431
  if (i && e && i < e) {
436
- const r = Math.min(i + this.options.zoomStep, e);
437
- t.style.width = `${r}px`;
438
- const h = r / i * n;
439
- t.style.height = `${h}px`, (o = (d = this.rootElm) == null ? void 0 : d.querySelector("button.vistaview-zoom-out-btn")) == null || o.removeAttribute("disabled"), t.dataset.vistaviewCurrentWidth = r.toString(), t.dataset.vistaviewCurrentHeight = h.toString(), r === e && ((c = (l = this.rootElm) == null ? void 0 : l.querySelector("button.vistaview-zoom-in-btn")) == null || c.setAttribute("disabled", "true"));
432
+ const l = Math.min(i + this.options.zoomStep, e);
433
+ t.style.width = `${l}px`;
434
+ const c = l / i * n;
435
+ t.style.height = `${c}px`, (o = (d = this.rootElm) == null ? void 0 : d.querySelector("button.vistaview-zoom-out-btn")) == null || o.removeAttribute("disabled"), t.dataset.vistaviewCurrentWidth = l.toString(), t.dataset.vistaviewCurrentHeight = c.toString(), l === e && ((h = (a = this.rootElm) == null ? void 0 : a.querySelector("button.vistaview-zoom-in-btn")) == null || h.setAttribute("disabled", "true"));
440
436
  }
441
437
  }
442
438
  zoomOut() {
443
- var d, o, l, c, r;
439
+ var d, o, a, h, l;
444
440
  const t = (d = this.rootElm) == null ? void 0 : d.querySelector(
445
441
  '[data-vistaview-pos="0"] .vistaview-image-highres'
446
- ), i = t.width, n = t.height, e = t.dataset.vistaviewInitialWidth ? parseInt(t.dataset.vistaviewInitialWidth) : 0, a = (h) => {
447
- h.target === t && (t.classList.remove("vistaview-image--zooming-out"), t.removeEventListener("transitionend", a));
442
+ ), i = t.width, n = t.height, e = t.dataset.vistaviewInitialWidth ? parseInt(t.dataset.vistaviewInitialWidth) : 0, r = (c) => {
443
+ c.target === t && (t.classList.remove("vistaview-image--zooming-out"), t.removeEventListener("transitionend", r));
448
444
  };
449
- if (t.addEventListener("transitionend", a), t.classList.add("vistaview-image--zooming-out"), i && e && i > e) {
450
- const h = Math.max(i - this.options.zoomStep, e);
451
- t.style.width = `${h}px`;
452
- const m = h / i * n;
453
- t.style.height = `${m}px`, (l = (o = this.rootElm) == null ? void 0 : o.querySelector("button.vistaview-zoom-in-btn")) == null || l.removeAttribute("disabled"), t.dataset.vistaviewCurrentWidth = h.toString(), t.dataset.vistaviewCurrentHeight = m.toString();
454
- const { maxDiffX: f, minDiffY: u, maxDiffY: v, minDiffX: y } = T(h, m);
445
+ if (t.addEventListener("transitionend", r), t.classList.add("vistaview-image--zooming-out"), i && e && i > e) {
446
+ const c = Math.max(i - this.options.zoomStep, e);
447
+ t.style.width = `${c}px`;
448
+ const v = c / i * n;
449
+ t.style.height = `${v}px`, (a = (o = this.rootElm) == null ? void 0 : o.querySelector("button.vistaview-zoom-in-btn")) == null || a.removeAttribute("disabled"), t.dataset.vistaviewCurrentWidth = c.toString(), t.dataset.vistaviewCurrentHeight = v.toString();
450
+ const { maxDiffX: m, minDiffY: f, maxDiffY: u, minDiffX: y } = H(c, v);
455
451
  let p = parseInt(
456
452
  (t == null ? void 0 : t.style.getPropertyValue("--pointer-diff-x").replace("px", "")) || "0"
457
- ), b = parseInt(
453
+ ), x = parseInt(
458
454
  (t == null ? void 0 : t.style.getPropertyValue("--pointer-diff-y").replace("px", "")) || "0"
459
455
  );
460
- p = Math.min(f, Math.max(y, p)), b = Math.min(v, Math.max(u, b)), t == null || t.style.setProperty("--pointer-diff-x", `${p}px`), t == null || t.style.setProperty("--pointer-diff-y", `${b}px`), h === e && ((r = (c = this.rootElm) == null ? void 0 : c.querySelector("button.vistaview-zoom-out-btn")) == null || r.setAttribute("disabled", "true"), t.removeAttribute("data-vistaview-current-width"), t.removeAttribute("data-vistaview-current-height"), t.removeAttribute("data-vistaview-initial-width"), t.removeAttribute("data-vistaview-initial-height"), this.setZoomed(!1));
456
+ p = Math.min(m, Math.max(y, p)), x = Math.min(u, Math.max(f, x)), t == null || t.style.setProperty("--pointer-diff-x", `${p}px`), t == null || t.style.setProperty("--pointer-diff-y", `${x}px`), c === e && ((l = (h = this.rootElm) == null ? void 0 : h.querySelector("button.vistaview-zoom-out-btn")) == null || l.setAttribute("disabled", "true"), t.removeAttribute("data-vistaview-current-width"), t.removeAttribute("data-vistaview-current-height"), t.removeAttribute("data-vistaview-initial-width"), t.removeAttribute("data-vistaview-initial-height"), this.setZoomed(!1));
461
457
  }
462
458
  }
463
459
  clearZoom() {
@@ -466,13 +462,13 @@ class ot {
466
462
  return t.map((i, n) => {
467
463
  const e = this.elements[i];
468
464
  if (e instanceof HTMLElement) {
469
- const a = e.querySelector("img"), d = e.getAttribute("href") || "", o = e.getAttribute("src") || "", l = e.dataset.vistaviewSrc || d || o || (a == null ? void 0 : a.src) || "", c = e.dataset.vistaviewAlt || e.getAttribute("alt") || (a == null ? void 0 : a.alt) || "", r = e.dataset.vistaviewThumb || (a == null ? void 0 : a.src) || d || o || "";
465
+ const r = e.querySelector("img"), d = e.getAttribute("href") || "", o = e.getAttribute("src") || "", a = e.dataset.vistaviewSrc || d || o || (r == null ? void 0 : r.src) || "", h = e.dataset.vistaviewAlt || e.getAttribute("alt") || (r == null ? void 0 : r.alt) || "", l = e.dataset.vistaviewThumb || (r == null ? void 0 : r.src) || d || o || "";
470
466
  return {
471
467
  index: t[n],
472
- src: l,
473
- alt: c,
474
- thumb: r,
475
- imageElm: e instanceof HTMLImageElement ? e : a,
468
+ src: a,
469
+ alt: h,
470
+ thumb: l,
471
+ imageElm: e instanceof HTMLImageElement ? e : r,
476
472
  anchorElm: e instanceof HTMLAnchorElement ? e : void 0
477
473
  };
478
474
  } else
@@ -480,12 +476,12 @@ class ot {
480
476
  });
481
477
  }
482
478
  setInitialDimPos() {
483
- var c, r;
479
+ var h, l;
484
480
  if (!this.rootElm) return;
485
- const t = (c = this.rootElm.querySelector('[data-vistaview-pos="0"]')) == null ? void 0 : c.dataset.vistaviewIndex, i = ((r = this.currentImages) == null ? void 0 : r.find((h) => h.index === Number(t))) || null;
481
+ const t = (h = this.rootElm.querySelector('[data-vistaview-pos="0"]')) == null ? void 0 : h.dataset.vistaviewIndex, i = ((l = this.currentImages) == null ? void 0 : l.find((c) => c.index === Number(t))) || null;
486
482
  if (!i) return;
487
- const n = i.imageElm ? z(i.imageElm) : void 0, e = i.anchorElm ? z(i.anchorElm) : void 0, a = (e == null ? void 0 : e.width) || (n == null ? void 0 : n.width) || 0, d = (e == null ? void 0 : e.height) || (n == null ? void 0 : n.height) || 0, o = ((e == null ? void 0 : e.left) || (n == null ? void 0 : n.left) || 0) + a / 2, l = ((e == null ? void 0 : e.top) || (n == null ? void 0 : n.top) || 0) + d / 2;
488
- this.rootElm.style.setProperty("--vistaview-container-initial-width", a + "px"), this.rootElm.style.setProperty("--vistaview-container-initial-height", d + "px"), this.rootElm.style.setProperty("--vistaview-container-initial-top", l + "px"), this.rootElm.style.setProperty("--vistaview-container-initial-left", o + "px"), this.rootElm.style.setProperty(
483
+ const n = i.imageElm ? z(i.imageElm) : void 0, e = i.anchorElm ? z(i.anchorElm) : void 0, r = (e == null ? void 0 : e.width) || (n == null ? void 0 : n.width) || 0, d = (e == null ? void 0 : e.height) || (n == null ? void 0 : n.height) || 0, o = ((e == null ? void 0 : e.left) || (n == null ? void 0 : n.left) || 0) + r / 2, a = ((e == null ? void 0 : e.top) || (n == null ? void 0 : n.top) || 0) + d / 2;
484
+ this.rootElm.style.setProperty("--vistaview-container-initial-width", r + "px"), this.rootElm.style.setProperty("--vistaview-container-initial-height", d + "px"), this.rootElm.style.setProperty("--vistaview-container-initial-top", a + "px"), this.rootElm.style.setProperty("--vistaview-container-initial-left", o + "px"), this.rootElm.style.setProperty(
489
485
  "--vistaview-image-border-radius",
490
486
  R(e == null ? void 0 : e.borderRadius) || R(n == null ? void 0 : n.borderRadius) || "0px"
491
487
  );
@@ -498,13 +494,13 @@ class ot {
498
494
  if (!t) return;
499
495
  const i = this;
500
496
  function n() {
501
- var r, h;
502
- const a = (r = i.rootElm) == null ? void 0 : r.querySelector(
497
+ var l, c;
498
+ const r = (l = i.rootElm) == null ? void 0 : l.querySelector(
503
499
  "button.vistaview-zoom-in-btn"
504
- ), d = (h = i.rootElm) == null ? void 0 : h.querySelector(
500
+ ), d = (c = i.rootElm) == null ? void 0 : c.querySelector(
505
501
  "button.vistaview-zoom-out-btn"
506
- ), o = parseInt(t.style.width) || t.width, l = t.naturalWidth * i.options.maxZoomLevel, c = o < l && l > 0;
507
- a && (a.style.display = c ? "" : "none"), d && (d.style.display = c ? "" : "none");
502
+ ), o = parseInt(t.style.width) || t.width, a = t.naturalWidth * i.options.maxZoomLevel, h = o < a && a > 0;
503
+ r && (r.style.display = h ? "" : "none"), d && (d.style.display = h ? "" : "none");
508
504
  }
509
505
  t.complete && t.naturalWidth > 0 ? n() : t.addEventListener("load", n);
510
506
  }
@@ -515,35 +511,35 @@ class ot {
515
511
  ).forEach((i, n) => {
516
512
  const e = i, d = this.currentImages[n].imageElm, o = { w: 0, h: 0 };
517
513
  if (d) {
518
- const { width: c, height: r } = B(d);
519
- o.w = Math.min(d.width, c), o.h = Math.min(d.height, r);
514
+ const { width: h, height: l } = _(d);
515
+ o.w = Math.min(d.width, h), o.h = Math.min(d.height, l);
520
516
  }
521
- const l = () => {
522
- var r;
523
- const c = () => {
524
- var h;
517
+ const a = () => {
518
+ var l;
519
+ const h = () => {
520
+ var c;
525
521
  o.w && o.h && (e.style.width = `${o.w}px`, e.style.height = `${o.h}px`, e.style.setProperty("--vistaview-fitted-width", `${o.w}px`), e.style.setProperty("--vistaview-fitted-height", `${o.h}px`)), e.classList.add("vistaview-image-loaded"), e.width = e.naturalWidth, e.height = e.naturalHeight, setTimeout(() => {
526
522
  var y, p;
527
- let m = 0;
528
- const f = () => {
529
- var b, x;
530
- m++, !(m < 3) && (e.removeEventListener("transitionend", f), (x = (b = e.parentElement) == null ? void 0 : b.querySelector(".vistaview-image-lowres")) == null || x.classList.add("vistaview-image--hidden"), e.classList.add("vistaview-image-settled"));
523
+ let v = 0;
524
+ const m = () => {
525
+ var x, b;
526
+ v++, !(v < 3) && (e.removeEventListener("transitionend", m), (b = (x = e.parentElement) == null ? void 0 : x.querySelector(".vistaview-image-lowres")) == null || b.classList.add("vistaview-image--hidden"), e.classList.add("vistaview-image-settled"));
531
527
  };
532
- e.addEventListener("transitionend", f);
533
- const { width: u, height: v } = H(e);
534
- e.style.width = `${u}px`, e.style.height = `${v}px`, o.w && o.h && u === o.w && v === o.h ? ((p = (y = e.parentElement) == null ? void 0 : y.querySelector(".vistaview-image-lowres")) == null || p.classList.add("vistaview-image--hidden"), e.classList.add("vistaview-image-settled")) : (e.style.width = `${u}px`, e.style.height = `${v}px`);
535
- }, 100), (h = i.parentElement) != null && h.matches('[data-vistaview-pos="0"]') && this.updateZoomButtonsVisibility();
528
+ e.addEventListener("transitionend", m);
529
+ const { width: f, height: u } = T(e);
530
+ e.style.width = `${f}px`, e.style.height = `${u}px`, o.w && o.h && f === o.w && u === o.h ? ((p = (y = e.parentElement) == null ? void 0 : y.querySelector(".vistaview-image-lowres")) == null || p.classList.add("vistaview-image--hidden"), e.classList.add("vistaview-image-settled")) : (e.style.width = `${f}px`, e.style.height = `${u}px`);
531
+ }, 100), (c = i.parentElement) != null && c.matches('[data-vistaview-pos="0"]') && this.updateZoomButtonsVisibility();
536
532
  };
537
- if ((r = this.rootElm) != null && r.classList.contains("vistaview--opened"))
538
- c();
533
+ if ((l = this.rootElm) != null && l.classList.contains("vistaview--opened"))
534
+ h();
539
535
  else {
540
- const h = setInterval(() => {
541
- var m;
542
- (m = this.rootElm) != null && m.classList.contains("vistaview--opened") && (clearInterval(h), c());
536
+ const c = setInterval(() => {
537
+ var v;
538
+ (v = this.rootElm) != null && v.classList.contains("vistaview--opened") && (clearInterval(c), h());
543
539
  }, 50);
544
540
  }
545
541
  };
546
- e.complete && e.naturalWidth > 0 ? l() : e.onload = l;
542
+ e.complete && e.naturalWidth > 0 ? a() : e.onload = a;
547
543
  });
548
544
  }
549
545
  setIndexDisplay() {
@@ -562,10 +558,10 @@ class ot {
562
558
  t,
563
559
  ...Array.from({ length: i }, (d, o) => (t + 1 + o) % n)
564
560
  ])
565
- ], a = n < 1 || !i ? [0] : e.map((d, o) => o - Math.floor(e.length / 2));
561
+ ], r = n < 1 || !i ? [0] : e.map((d, o) => o - Math.floor(e.length / 2));
566
562
  return {
567
563
  images: e,
568
- positions: a
564
+ positions: r
569
565
  };
570
566
  }
571
567
  setKeyboardListeners() {
@@ -597,13 +593,13 @@ class ot {
597
593
  ".vistaview-image-highres.vistaview-image-loaded"
598
594
  );
599
595
  t == null || t.forEach((n) => {
600
- const e = n, { width: a, height: d } = H(e);
601
- e.classList.contains("vistaview-image--zooming") ? (e.dataset.vistaviewInitialWidth = a.toString(), e.dataset.vistaviewInitialHeight = d.toString()) : (e.style.width = `${a}px`, e.style.height = `${d}px`);
596
+ const e = n, { width: r, height: d } = T(e);
597
+ e.classList.contains("vistaview-image--zooming") ? (e.dataset.vistaviewInitialWidth = r.toString(), e.dataset.vistaviewInitialHeight = d.toString()) : (e.style.width = `${r}px`, e.style.height = `${d}px`);
602
598
  });
603
599
  }, window.addEventListener("resize", this.onResizeHandler);
604
600
  }
605
601
  open(t = 0) {
606
- var o, l, c, r, h, m, f, u, v, y, p, b, x;
602
+ var o, a, h, l, c, v, m, f, u, y, p, x, b;
607
603
  if (C.somethingOpened) {
608
604
  console.error("VistaView: another instance is already opened. Returning.");
609
605
  return;
@@ -620,7 +616,7 @@ class ot {
620
616
  this.currentImages = this.getImages(i);
621
617
  const e = this.currentImages.map((g, I) => q(g, n[I]));
622
618
  this.currentItems = e;
623
- const a = {
619
+ const r = {
624
620
  htmlElements: { from: null, to: this.currentItems },
625
621
  images: { from: null, to: this.currentImages },
626
622
  index: { from: null, to: t },
@@ -632,14 +628,14 @@ class ot {
632
628
  isZoomed: this.isZoomed,
633
629
  options: this.options
634
630
  };
635
- this.userSetup(a), this.imageContainerElm.innerHTML = "", this.currentItems.forEach((g) => {
631
+ this.userSetup(r), this.imageContainerElm.innerHTML = "", this.currentItems.forEach((g) => {
636
632
  this.imageContainerElm.appendChild(g);
637
633
  });
638
634
  let d = 0;
639
635
  this.rootElm.addEventListener("animationend", (g) => {
640
636
  var I;
641
637
  g.currentTarget === this.rootElm && (d++, d >= 2 && ((I = this.rootElm) == null || I.classList.add("vistaview--opened")));
642
- }), (l = this.rootElm.querySelector(".vistaview-close-btn")) == null || l.addEventListener("click", () => this.close()), (c = this.rootElm.querySelector(".vistaview-zoom-in-btn")) == null || c.addEventListener("click", () => this.zoomIn()), (r = this.rootElm.querySelector(".vistaview-zoom-out-btn")) == null || r.addEventListener("click", () => this.zoomOut()), (h = this.rootElm.querySelector(".vistaview-prev-btn>button")) == null || h.addEventListener("click", () => this.prev()), (m = this.rootElm.querySelector(".vistaview-next-btn>button")) == null || m.addEventListener("click", () => this.next()), [
638
+ }), (a = this.rootElm.querySelector(".vistaview-close-btn")) == null || a.addEventListener("click", () => this.close()), (h = this.rootElm.querySelector(".vistaview-zoom-in-btn")) == null || h.addEventListener("click", () => this.zoomIn()), (l = this.rootElm.querySelector(".vistaview-zoom-out-btn")) == null || l.addEventListener("click", () => this.zoomOut()), (c = this.rootElm.querySelector(".vistaview-prev-btn>button")) == null || c.addEventListener("click", () => this.prev()), (v = this.rootElm.querySelector(".vistaview-next-btn>button")) == null || v.addEventListener("click", () => this.next()), [
643
639
  ...this.options.controls.topLeft || [],
644
640
  ...this.options.controls.topRight || [],
645
641
  ...this.options.controls.topCenter || [],
@@ -663,16 +659,16 @@ class ot {
663
659
  ), this.options.initialZIndex !== void 0 && this.rootElm.style.setProperty(
664
660
  "--vistaview-initial-z-index",
665
661
  `${this.options.initialZIndex}`
666
- ), this.setInitialDimPos(), this.setResizeListeners(), this.options.keyboardListeners && this.setKeyboardListeners(), this.elements.length === 1 && ((f = this.rootElm.querySelector(".vistaview-prev-btn")) == null || f.classList.add("vistaview-ui--none"), (u = this.rootElm.querySelector(".vistaview-next-btn")) == null || u.classList.add("vistaview-ui--none"), (v = this.rootElm.querySelector(".vistaview-index-display")) == null || v.classList.add("vistaview-ui--none")), this.rootElm && this.rootElm.classList.add("vistaview--initialized"), this.loadImages(), this.setCurrentDescription(), this.setIndexDisplay(), this.userInit(this), (p = (y = this.options).onOpen) == null || p.call(y, a), (x = (b = this.options).onImageView) == null || x.call(b, a);
662
+ ), this.setInitialDimPos(), this.setResizeListeners(), this.options.keyboardListeners && this.setKeyboardListeners(), this.elements.length === 1 && ((m = this.rootElm.querySelector(".vistaview-prev-btn")) == null || m.classList.add("vistaview-ui--none"), (f = this.rootElm.querySelector(".vistaview-next-btn")) == null || f.classList.add("vistaview-ui--none"), (u = this.rootElm.querySelector(".vistaview-index-display")) == null || u.classList.add("vistaview-ui--none")), this.rootElm && this.rootElm.classList.add("vistaview--initialized"), this.loadImages(), this.setCurrentDescription(), this.setIndexDisplay(), this.userInit(this), (p = (y = this.options).onOpen) == null || p.call(y, r), (b = (x = this.options).onImageView) == null || b.call(x, r);
667
663
  }
668
664
  async close(t = !0) {
669
- var n, e, a;
665
+ var n, e, r;
670
666
  if (C.somethingOpened !== this) return;
671
667
  t && ((n = this.rootElm) == null || n.classList.add("vistaview--closing"), await new Promise((d) => {
672
- var l;
668
+ var a;
673
669
  let o;
674
- (l = this.rootElm) == null || l.addEventListener("transitionend", (c) => {
675
- c.currentTarget === this.rootElm && (o && clearTimeout(o), o = setTimeout(() => {
670
+ (a = this.rootElm) == null || a.addEventListener("transitionend", (h) => {
671
+ h.currentTarget === this.rootElm && (o && clearTimeout(o), o = setTimeout(() => {
676
672
  d();
677
673
  }, 333));
678
674
  });
@@ -689,7 +685,10 @@ class ot {
689
685
  isZoomed: this.isZoomed,
690
686
  options: this.options
691
687
  };
692
- this.userClose(this), (a = (e = this.options).onClose) == null || a.call(e, i), document.body.removeChild(this.rootElm), this.currentIndex._value = null, this.currentIndex._via = { next: !1, prev: !1 }, this.rootElm = null, this.imageContainerElm = null, this.currentImages = null, this.currentItems = null, this.navActive = !0, this.onResizeHandler && (window.removeEventListener("resize", this.onResizeHandler), this.onResizeHandler = null), this.onKeyDown && (window.removeEventListener("keydown", this.onKeyDown), this.onKeyDown = null), (this.onZoomedPointerDown || this.onZoomedPointerMove || this.onZoomedPointerUp) && (this.setZoomed(!1), this.onZoomedPointerDown = null, this.onZoomedPointerMove = null, this.onZoomedPointerUp = null), this.transitionAbortController && (this.transitionAbortController.abort(), this.transitionAbortController = null), C.somethingOpened = null;
688
+ this.userClose(this), (r = (e = this.options).onClose) == null || r.call(e, i), document.body.removeChild(this.rootElm), this.currentIndex._value = null, this.currentIndex._via = { next: !1, prev: !1 }, this.rootElm = null, this.imageContainerElm = null, this.currentImages = null, this.currentItems = null, this.navActive = !0, this.onResizeHandler && (window.removeEventListener("resize", this.onResizeHandler), this.onResizeHandler = null), this.onKeyDown && (window.removeEventListener("keydown", this.onKeyDown), this.onKeyDown = null), (this.onZoomedPointerDown || this.onZoomedPointerMove || this.onZoomedPointerUp) && (this.setZoomed(!1), this.onZoomedPointerDown = null, this.onZoomedPointerMove = null, this.onZoomedPointerUp = null);
689
+ for (const d in this.transitionAbortControllers)
690
+ this.transitionAbortControllers[d].abort();
691
+ this.transitionAbortControllers = {}, C.somethingOpened = null;
693
692
  }
694
693
  destroy() {
695
694
  this.close(!1), this.elements instanceof NodeList && this.elements.forEach((t) => {
@@ -745,7 +744,7 @@ function lt({ elements: s, ...t }) {
745
744
  }
746
745
  export {
747
746
  k as DefaultOptions,
748
- P as VistaViewTransitionAbortedError,
747
+ S as VistaViewTransitionAbortedError,
749
748
  st as defaultClose,
750
749
  et as defaultInit,
751
750
  it as defaultSetup,