@peeekpage/viewer 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +425 -404
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import { jsxs as _, jsx as o, Fragment as Ye } from "react/jsx-runtime";
2
- import { useState as T, useRef as j, useEffect as C, useCallback as E, useMemo as qe } from "react";
3
- const Je = /* @__PURE__ */ new Set(["http:", "https:"]);
1
+ import { jsxs as y, jsx as o, Fragment as qe } from "react/jsx-runtime";
2
+ import { useState as N, useRef as E, useEffect as C, useCallback as L, useMemo as Je } from "react";
3
+ const Qe = /* @__PURE__ */ new Set(["http:", "https:"]);
4
4
  function G(t) {
5
5
  if (typeof t != "string") return null;
6
6
  const e = t.trim();
@@ -12,23 +12,23 @@ function G(t) {
12
12
  } catch {
13
13
  return null;
14
14
  }
15
- return Je.has(a.protocol) ? a.href : null;
15
+ return Qe.has(a.protocol) ? a.href : null;
16
16
  }
17
- const Qe = /^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/, et = /^rgba?\([ \t]*\d{1,3}[ \t]*,[ \t]*\d{1,3}[ \t]*,[ \t]*\d{1,3}[ \t]*(?:,[ \t]*(?:0|1|0?\.\d+)[ \t]*)?\)$/;
18
- function se(t) {
17
+ const et = /^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/, tt = /^rgba?\([ \t]*\d{1,3}[ \t]*,[ \t]*\d{1,3}[ \t]*,[ \t]*\d{1,3}[ \t]*(?:,[ \t]*(?:0|1|0?\.\d+)[ \t]*)?\)$/;
18
+ function ce(t) {
19
19
  if (typeof t != "string") return null;
20
20
  const e = t.trim();
21
- return Qe.test(e) || et.test(e) ? e : null;
21
+ return et.test(e) || tt.test(e) ? e : null;
22
22
  }
23
- const tt = /url\(|image\(|image-set\(|element\(|expression|@|\/\*|;|\{|\}|<|>|\\/i, nt = /^(repeating-)?(linear|radial|conic)-gradient\([a-z0-9#.,%()\/\s-]*\)$/i, at = /^hsla?\([a-z0-9.,%\/\s-]*\)$/i;
24
- function ot(t) {
23
+ const nt = /url\(|image\(|image-set\(|element\(|expression|@|\/\*|;|\{|\}|<|>|\\/i, at = /^(repeating-)?(linear|radial|conic)-gradient\([a-z0-9#.,%()\/\s-]*\)$/i, ot = /^hsla?\([a-z0-9.,%\/\s-]*\)$/i;
24
+ function rt(t) {
25
25
  if (typeof t != "string") return null;
26
26
  const e = t.trim();
27
- if (e === "" || tt.test(e)) return null;
28
- const n = se(e);
29
- return n !== null ? n : at.test(e) || nt.test(e) ? e : null;
27
+ if (e === "" || nt.test(e)) return null;
28
+ const n = ce(e);
29
+ return n !== null ? n : ot.test(e) || at.test(e) ? e : null;
30
30
  }
31
- const rt = ["en", "pt-BR"], ye = {
31
+ const lt = ["en", "pt-BR"], Te = {
32
32
  prev: "Previous page",
33
33
  next: "Next page",
34
34
  zoom: "Zoom level",
@@ -50,7 +50,7 @@ const rt = ["en", "pt-BR"], ye = {
50
50
  rotate: "Rotate page",
51
51
  singlePage: "Single page",
52
52
  doublePage: "Two pages"
53
- }, lt = {
53
+ }, it = {
54
54
  prev: "Página anterior",
55
55
  next: "Próxima página",
56
56
  zoom: "Nível de zoom",
@@ -72,34 +72,34 @@ const rt = ["en", "pt-BR"], ye = {
72
72
  rotate: "Girar página",
73
73
  singlePage: "Página única",
74
74
  doublePage: "Duas páginas"
75
- }, it = { en: ye, "pt-BR": lt };
76
- function st(t) {
77
- return it[t] ?? ye;
75
+ }, st = { en: Te, "pt-BR": it };
76
+ function ct(t) {
77
+ return st[t] ?? Te;
78
78
  }
79
- const ct = "#6E79D6";
79
+ const ut = "#6E79D6";
80
80
  function I(t, e) {
81
81
  return typeof t == "boolean" ? t : e;
82
82
  }
83
- function Y(t, e, n) {
83
+ function J(t, e, n) {
84
84
  return e.includes(t) ? t : n;
85
85
  }
86
- function ut(t) {
86
+ function dt(t) {
87
87
  return {
88
88
  src: typeof t.src == "string" ? t.src : "",
89
- mode: Y(t.mode, ["flip", "coverflow"], "flip"),
89
+ mode: J(t.mode, ["flip", "coverflow"], "flip"),
90
90
  logo: G(t.logo),
91
91
  logoLink: G(t.logoLink),
92
- accentColor: se(t.accentColor) ?? ct,
93
- background: Y(t.background, ["color", "image", "transparent"], "color"),
94
- backgroundColor: ot(t.backgroundColor),
92
+ accentColor: ce(t.accentColor) ?? ut,
93
+ background: J(t.background, ["color", "image", "transparent"], "color"),
94
+ backgroundColor: rt(t.backgroundColor),
95
95
  backgroundImage: G(t.backgroundImage),
96
- layout: Y(t.layout, ["single", "double"], "double"),
96
+ layout: J(t.layout, ["single", "double"], "double"),
97
97
  fillHeight: I(t.fillHeight, !1),
98
98
  pageShadows: I(t.pageShadows, !0),
99
99
  rtl: I(t.rtl, !1),
100
100
  animateInteractions: I(t.animateInteractions, !0),
101
- skin: Y(t.skin, ["classic", "minimal", "showcase"], "classic"),
102
- language: Y(t.language, rt, "en"),
101
+ skin: J(t.skin, ["classic", "minimal", "showcase"], "classic"),
102
+ language: J(t.language, lt, "en"),
103
103
  autoTransition: I(t.autoTransition, !1),
104
104
  autoTransitionInterval: typeof t.autoTransitionInterval == "number" && t.autoTransitionInterval > 0 ? t.autoTransitionInterval : 5e3,
105
105
  navigationControls: I(t.navigationControls, !0),
@@ -114,52 +114,52 @@ function ut(t) {
114
114
  layoutToggle: I(t.layoutToggle, !0),
115
115
  loadingImage: G(t.loadingImage),
116
116
  loadingCaption: typeof t.loadingCaption == "string" && t.loadingCaption.length > 0 ? t.loadingCaption : null,
117
- loadingColor: se(t.loadingColor),
117
+ loadingColor: ce(t.loadingColor),
118
118
  pollInterval: typeof t.pollInterval == "number" && t.pollInterval > 0 ? t.pollInterval : 2e3,
119
119
  className: typeof t.className == "string" ? t.className : ""
120
120
  };
121
121
  }
122
- const ce = 5e3;
123
- function q(t) {
122
+ const ue = 5e3;
123
+ function Q(t) {
124
124
  return typeof t == "string" ? t : "";
125
125
  }
126
- function dt(t) {
126
+ function gt(t) {
127
127
  if (t === null || typeof t != "object" || Array.isArray(t))
128
128
  return { ok: !1, error: "manifest is not an object" };
129
129
  const e = t;
130
130
  if (!Array.isArray(e.pages))
131
131
  return { ok: !1, error: "manifest.pages is missing or not an array" };
132
- if (e.pages.length > ce)
132
+ if (e.pages.length > ue)
133
133
  return { ok: !1, error: "manifest.pages exceeds the maximum" };
134
134
  const n = e.total_pages, a = typeof n == "number" && Number.isFinite(n) && n >= 0 ? n : e.pages.length;
135
- if (a > ce)
135
+ if (a > ue)
136
136
  return { ok: !1, error: "manifest.total_pages exceeds the maximum" };
137
- const l = [];
138
- for (const g of e.pages) {
139
- if (g === null || typeof g != "object") continue;
140
- const s = G(g.url);
141
- s && l.push(s);
137
+ const i = [];
138
+ for (const f of e.pages) {
139
+ if (f === null || typeof f != "object") continue;
140
+ const s = G(f.url);
141
+ s && i.push(s);
142
142
  }
143
- if (l.length === 0)
143
+ if (i.length === 0)
144
144
  return { ok: !1, error: "manifest has no usable pages" };
145
- const c = e.status === "wip" ? "wip" : "done", b = e.metadata && typeof e.metadata == "object" ? e.metadata : {}, p = {
146
- fileId: q(b.file_id),
147
- filename: q(b.filename),
148
- creationDate: q(b.creation_date),
149
- fileSize: q(b.file_size),
150
- mimeType: q(b.mime_type)
145
+ const u = e.status === "wip" ? "wip" : "done", _ = e.metadata && typeof e.metadata == "object" ? e.metadata : {}, h = {
146
+ fileId: Q(_.file_id),
147
+ filename: Q(_.filename),
148
+ creationDate: Q(_.creation_date),
149
+ fileSize: Q(_.file_size),
150
+ mimeType: Q(_.mime_type)
151
151
  };
152
152
  return {
153
153
  ok: !0,
154
- value: { status: c, totalPages: a, pages: l, metadata: p }
154
+ value: { status: u, totalPages: a, pages: i, metadata: h }
155
155
  };
156
156
  }
157
- function gt(t, e) {
158
- if (!Array.isArray(t) || t.length > ce) return null;
157
+ function ft(t, e) {
158
+ if (!Array.isArray(t) || t.length > ue) return null;
159
159
  const n = [];
160
- for (const l of t) {
161
- const c = G(l);
162
- c && n.push(c);
160
+ for (const i of t) {
161
+ const u = G(i);
162
+ u && n.push(u);
163
163
  }
164
164
  return n.length === 0 ? null : {
165
165
  status: "done",
@@ -174,70 +174,70 @@ function gt(t, e) {
174
174
  }
175
175
  };
176
176
  }
177
- function ft(t, e) {
178
- const [n, a] = T("loading"), [l, c] = T(null), [b, p] = T(null), g = j(null);
177
+ function mt(t, e) {
178
+ const [n, a] = N("loading"), [i, u] = N(null), [_, h] = N(null), f = E(null);
179
179
  return C(() => {
180
180
  let s = !1;
181
- if (a("loading"), c(null), p(null), !t) return;
182
- const k = () => {
183
- g.current !== null && (clearTimeout(g.current), g.current = null);
184
- }, h = async () => {
181
+ if (a("loading"), u(null), h(null), !t) return;
182
+ const v = () => {
183
+ f.current !== null && (clearTimeout(f.current), f.current = null);
184
+ }, k = async () => {
185
185
  let d;
186
186
  try {
187
- const i = await fetch(t);
188
- if (!i.ok) throw new Error(`HTTP ${i.status}`);
189
- d = await i.json();
190
- } catch (i) {
187
+ const l = await fetch(t);
188
+ if (!l.ok) throw new Error(`HTTP ${l.status}`);
189
+ d = await l.json();
190
+ } catch (l) {
191
191
  if (s) return;
192
- p(i instanceof Error ? i.message : "fetch failed"), a("error");
192
+ h(l instanceof Error ? l.message : "fetch failed"), a("error");
193
193
  return;
194
194
  }
195
195
  if (s) return;
196
- const u = dt(d);
197
- if (!u.ok) {
198
- p(u.error), a("error");
196
+ const c = gt(d);
197
+ if (!c.ok) {
198
+ h(c.error), a("error");
199
199
  return;
200
200
  }
201
- c(u.value), a("ready"), u.value.status === "wip" && (g.current = setTimeout(h, e));
201
+ u(c.value), a("ready"), c.value.status === "wip" && (f.current = setTimeout(k, e));
202
202
  };
203
- return h(), () => {
204
- s = !0, k();
203
+ return k(), () => {
204
+ s = !0, v();
205
205
  };
206
- }, [t, e]), { state: n, manifest: l, error: b };
206
+ }, [t, e]), { state: n, manifest: i, error: _ };
207
207
  }
208
- function mt(t) {
209
- const [e, n] = T(!1);
208
+ function pt(t) {
209
+ const [e, n] = N(!1);
210
210
  C(() => {
211
- const l = () => n(document.fullscreenElement != null);
212
- return document.addEventListener("fullscreenchange", l), () => document.removeEventListener("fullscreenchange", l);
211
+ const i = () => n(document.fullscreenElement != null);
212
+ return document.addEventListener("fullscreenchange", i), () => document.removeEventListener("fullscreenchange", i);
213
213
  }, []);
214
- const a = E(async () => {
215
- const l = t.current;
216
- if (l)
214
+ const a = L(async () => {
215
+ const i = t.current;
216
+ if (i)
217
217
  try {
218
- document.fullscreenElement ? await document.exitFullscreen() : await l.requestFullscreen();
218
+ document.fullscreenElement ? await document.exitFullscreen() : await i.requestFullscreen();
219
219
  } catch {
220
220
  }
221
221
  }, [t]);
222
222
  return { isFullscreen: e, toggle: a };
223
223
  }
224
- const _e = "(prefers-reduced-motion: reduce)";
225
- function ve() {
226
- const [t, e] = T(() => {
224
+ const ve = "(prefers-reduced-motion: reduce)";
225
+ function Ne() {
226
+ const [t, e] = N(() => {
227
227
  var n;
228
- return ((n = matchMedia == null ? void 0 : matchMedia(_e)) == null ? void 0 : n.matches) ?? !1;
228
+ return ((n = matchMedia == null ? void 0 : matchMedia(ve)) == null ? void 0 : n.matches) ?? !1;
229
229
  });
230
230
  return C(() => {
231
- const n = typeof matchMedia == "function" ? matchMedia(_e) : void 0;
231
+ const n = typeof matchMedia == "function" ? matchMedia(ve) : void 0;
232
232
  if (!(n != null && n.addEventListener)) return;
233
233
  const a = () => e(n.matches);
234
234
  return n.addEventListener("change", a), () => n.removeEventListener("change", a);
235
235
  }, []), t;
236
236
  }
237
- function we({ go: t, jump: e, total: n, rtl: a }) {
238
- return { onKeyDown: E(
239
- (c) => {
240
- switch (c.key) {
237
+ function Ce({ go: t, jump: e, total: n, rtl: a }) {
238
+ return { onKeyDown: L(
239
+ (u) => {
240
+ switch (u.key) {
241
241
  case "ArrowRight":
242
242
  t(a ? -1 : 1);
243
243
  break;
@@ -245,123 +245,123 @@ function we({ go: t, jump: e, total: n, rtl: a }) {
245
245
  t(a ? 1 : -1);
246
246
  break;
247
247
  case "Home":
248
- c.preventDefault(), n > 0 && e(0);
248
+ u.preventDefault(), n > 0 && e(0);
249
249
  break;
250
250
  case "End":
251
- c.preventDefault(), n > 0 && e(n - 1);
251
+ u.preventDefault(), n > 0 && e(n - 1);
252
252
  break;
253
253
  case " ":
254
254
  case "Spacebar":
255
- c.preventDefault(), t(c.shiftKey ? -1 : 1);
255
+ u.preventDefault(), t(u.shiftKey ? -1 : 1);
256
256
  break;
257
257
  case "PageDown":
258
- c.preventDefault(), t(1);
258
+ u.preventDefault(), t(1);
259
259
  break;
260
260
  case "PageUp":
261
- c.preventDefault(), t(-1);
261
+ u.preventDefault(), t(-1);
262
262
  break;
263
263
  }
264
264
  },
265
265
  [t, e, n, a]
266
266
  ) };
267
267
  }
268
- function Te(t, e) {
268
+ function Pe(t, e) {
269
269
  if (e <= 0) return null;
270
270
  const n = t.trim();
271
271
  if (!/^\d+$/.test(n)) return null;
272
272
  const a = Number(n);
273
273
  return Number.isFinite(a) ? Math.max(1, Math.min(e, a)) - 1 : null;
274
274
  }
275
- const pt = 640;
276
- function bt(t, e) {
277
- const [n, a] = T("auto"), [l, c] = T(null);
275
+ const bt = 640;
276
+ function ht(t, e) {
277
+ const [n, a] = N("auto"), [i, u] = N(null);
278
278
  C(() => {
279
279
  const s = t.current;
280
- if (!s || (s.clientWidth > 0 && c(s.clientWidth), typeof ResizeObserver > "u")) return;
281
- const k = new ResizeObserver((h) => {
282
- var u;
283
- const d = (u = h[0]) == null ? void 0 : u.contentRect.width;
284
- typeof d == "number" && d > 0 && c(d);
280
+ if (!s || (s.clientWidth > 0 && u(s.clientWidth), typeof ResizeObserver > "u")) return;
281
+ const v = new ResizeObserver((k) => {
282
+ var c;
283
+ const d = (c = k[0]) == null ? void 0 : c.contentRect.width;
284
+ typeof d == "number" && d > 0 && u(d);
285
285
  });
286
- return k.observe(s), () => k.disconnect();
286
+ return v.observe(s), () => v.disconnect();
287
287
  }, [t]);
288
- const b = l != null && l < pt ? "single" : e, p = n === "auto" ? b : n, g = E(() => {
289
- a(p === "single" ? "double" : "single");
290
- }, [p]);
291
- return { layout: p, toggle: g };
288
+ const _ = i != null && i < bt ? "single" : e, h = n === "auto" ? _ : n, f = L(() => {
289
+ a(h === "single" ? "double" : "single");
290
+ }, [h]);
291
+ return { layout: h, toggle: f };
292
292
  }
293
- function ue(t, e) {
293
+ function ge(t, e) {
294
294
  return t <= 0 ? 0 : e === "single" ? t : 1 + Math.ceil((t - 1) / 2);
295
295
  }
296
- function ht(t, e) {
296
+ function _t(t, e) {
297
297
  return e === "single" ? t : t <= 0 ? 0 : Math.floor((t - 1) / 2) + 1;
298
298
  }
299
- function te(t, e, n) {
299
+ function oe(t, e, n) {
300
300
  if (e <= 0) return { left: -1, right: -1 };
301
301
  if (n === "single")
302
302
  return { left: -1, right: t >= 0 && t < e ? t : -1 };
303
303
  if (t <= 0)
304
304
  return { left: -1, right: 0 };
305
- const a = 2 * t - 1, l = 2 * t;
306
- return { left: a < e ? a : -1, right: l < e ? l : -1 };
305
+ const a = 2 * t - 1, i = 2 * t;
306
+ return { left: a < e ? a : -1, right: i < e ? i : -1 };
307
307
  }
308
- function Ne(t, e, n) {
309
- const { left: a, right: l } = te(t, e, n), c = [];
310
- return a >= 0 && c.push(a), l >= 0 && c.push(l), c;
308
+ function de(t, e, n) {
309
+ const { left: a, right: i } = oe(t, e, n), u = [];
310
+ return a >= 0 && u.push(a), i >= 0 && u.push(i), u;
311
311
  }
312
- function ie(t, e, n) {
313
- const a = ue(e, n) - 1;
312
+ function ne(t, e, n) {
313
+ const a = ge(e, n) - 1;
314
314
  return t < 0 ? 0 : t > a ? a : t;
315
315
  }
316
- function _t(t) {
316
+ function kt(t) {
317
317
  const {
318
318
  strings: e,
319
319
  label: n,
320
320
  progress: a,
321
- zoom: l,
322
- minZoom: c,
323
- maxZoom: b,
324
- total: p,
325
- currentPage: g,
321
+ zoom: i,
322
+ minZoom: u,
323
+ maxZoom: _,
324
+ total: h,
325
+ currentPage: f,
326
326
  layout: s,
327
- thumbsOpen: k,
328
- isFullscreen: h,
327
+ thumbsOpen: v,
328
+ isFullscreen: k,
329
329
  downloadUrl: d,
330
- show: u,
331
- onZoomIn: i,
332
- onZoomOut: L,
333
- onZoomSet: D,
334
- onJump: M,
335
- onRotate: O,
330
+ show: c,
331
+ onZoomIn: l,
332
+ onZoomOut: D,
333
+ onZoomSet: O,
334
+ onJump: A,
335
+ onRotate: R,
336
336
  onToggleLayout: x,
337
- onToggleThumbs: $,
338
- onToggleFullscreen: U,
339
- onAbout: X
340
- } = t, [A, z] = T(String(g));
341
- C(() => z(String(g)), [g]);
342
- const Z = () => {
343
- const N = Te(A, p);
344
- if (N === null) {
345
- z(String(g));
337
+ onToggleThumbs: M,
338
+ onToggleFullscreen: Z,
339
+ onAbout: j
340
+ } = t, [F, $] = N(String(f));
341
+ C(() => $(String(f)), [f]);
342
+ const B = () => {
343
+ const P = Pe(F, h);
344
+ if (P === null) {
345
+ $(String(f));
346
346
  return;
347
347
  }
348
- M(N), z(String(N + 1));
348
+ A(P), $(String(P + 1));
349
349
  };
350
- return /* @__PURE__ */ _("div", { className: "peeek__toolbar", children: [
350
+ return /* @__PURE__ */ y("div", { className: "peeek__toolbar", children: [
351
351
  /* @__PURE__ */ o("span", { className: "peeek__label", children: n }),
352
- u.bar && /* @__PURE__ */ o("div", { className: "peeek__scrubber", "aria-hidden": !0, children: /* @__PURE__ */ o("div", { className: "peeek__scrubber-fill", style: { width: `${a}%` } }) }),
353
- u.goto && /* @__PURE__ */ o(
352
+ c.bar && /* @__PURE__ */ o("div", { className: "peeek__scrubber", "aria-hidden": !0, children: /* @__PURE__ */ o("div", { className: "peeek__scrubber-fill", style: { width: `${a}%` } }) }),
353
+ c.goto && /* @__PURE__ */ o(
354
354
  "input",
355
355
  {
356
356
  className: "peeek__goto",
357
357
  type: "text",
358
358
  inputMode: "numeric",
359
359
  "aria-label": e.goToPage,
360
- value: A,
361
- onChange: (N) => z(N.target.value),
362
- onBlur: Z,
363
- onKeyDown: (N) => {
364
- N.key === "Enter" && (N.preventDefault(), Z());
360
+ value: F,
361
+ onChange: (P) => $(P.target.value),
362
+ onBlur: B,
363
+ onKeyDown: (P) => {
364
+ P.key === "Enter" && (P.preventDefault(), B());
365
365
  }
366
366
  }
367
367
  ),
@@ -371,8 +371,8 @@ function _t(t) {
371
371
  type: "button",
372
372
  className: "peeek__btn",
373
373
  "aria-label": e.zoomOut,
374
- disabled: l <= c,
375
- onClick: L,
374
+ disabled: i <= u,
375
+ onClick: D,
376
376
  children: "−"
377
377
  }
378
378
  ),
@@ -381,11 +381,11 @@ function _t(t) {
381
381
  {
382
382
  type: "range",
383
383
  "aria-label": e.zoom,
384
- min: c,
385
- max: b,
384
+ min: u,
385
+ max: _,
386
386
  step: 0.25,
387
- value: l,
388
- onChange: (N) => D(Number(N.target.value))
387
+ value: i,
388
+ onChange: (P) => O(Number(P.target.value))
389
389
  }
390
390
  ),
391
391
  /* @__PURE__ */ o(
@@ -394,22 +394,22 @@ function _t(t) {
394
394
  type: "button",
395
395
  className: "peeek__btn",
396
396
  "aria-label": e.zoomIn,
397
- disabled: l >= b,
398
- onClick: i,
397
+ disabled: i >= _,
398
+ onClick: l,
399
399
  children: "+"
400
400
  }
401
401
  ),
402
- u.rotate && /* @__PURE__ */ o(
402
+ c.rotate && /* @__PURE__ */ o(
403
403
  "button",
404
404
  {
405
405
  type: "button",
406
406
  className: "peeek__btn",
407
407
  "aria-label": e.rotate,
408
- onClick: O,
408
+ onClick: R,
409
409
  children: "⟳"
410
410
  }
411
411
  ),
412
- u.layoutToggle && /* @__PURE__ */ o(
412
+ c.layoutToggle && /* @__PURE__ */ o(
413
413
  "button",
414
414
  {
415
415
  type: "button",
@@ -420,14 +420,14 @@ function _t(t) {
420
420
  children: s === "single" ? "▭" : "▥"
421
421
  }
422
422
  ),
423
- u.thumbnails && /* @__PURE__ */ o(
423
+ c.thumbnails && /* @__PURE__ */ o(
424
424
  "button",
425
425
  {
426
426
  type: "button",
427
- className: `peeek__btn${k ? " peeek__btn--active" : ""}`,
427
+ className: `peeek__btn${v ? " peeek__btn--active" : ""}`,
428
428
  "aria-label": e.thumbnails,
429
- "aria-pressed": k,
430
- onClick: $,
429
+ "aria-pressed": v,
430
+ onClick: M,
431
431
  children: "▦"
432
432
  }
433
433
  ),
@@ -443,160 +443,171 @@ function _t(t) {
443
443
  children: "↓"
444
444
  }
445
445
  ),
446
- u.fullscreen && /* @__PURE__ */ o(
446
+ c.fullscreen && /* @__PURE__ */ o(
447
447
  "button",
448
448
  {
449
449
  type: "button",
450
- className: `peeek__btn${h ? " peeek__btn--active" : ""}`,
450
+ className: `peeek__btn${k ? " peeek__btn--active" : ""}`,
451
451
  "aria-label": e.fullscreen,
452
- "aria-pressed": h,
453
- onClick: U,
452
+ "aria-pressed": k,
453
+ onClick: Z,
454
454
  children: "⛶"
455
455
  }
456
456
  ),
457
- u.about && /* @__PURE__ */ o(
457
+ c.about && /* @__PURE__ */ o(
458
458
  "button",
459
459
  {
460
460
  type: "button",
461
461
  className: "peeek__btn",
462
462
  "aria-label": e.about,
463
- onClick: X,
463
+ onClick: j,
464
464
  children: "?"
465
465
  }
466
466
  )
467
467
  ] });
468
468
  }
469
- function kt({ pages: t, layout: e, rtl: n, activePages: a, onJump: l }) {
470
- const c = t.length, b = new Set(a), p = ue(c, e);
471
- return /* @__PURE__ */ o("div", { className: "peeek__thumbs", role: "group", "aria-label": "Pages", children: Array.from({ length: p }, (g, s) => {
472
- const k = Ne(s, c, e), h = k.length === 2;
473
- return /* @__PURE__ */ _("div", { className: "peeek__thumb-group", children: [
474
- k.map((d, u) => {
475
- let i = "";
476
- return h && (i = (n ? u === 1 : u === 0) ? " peeek__thumb--flat-right" : " peeek__thumb--flat-left"), /* @__PURE__ */ o(
469
+ function yt({ pages: t, layout: e, rtl: n, activePages: a, onJump: i }) {
470
+ const u = t.length, _ = new Set(a), h = ge(u, e);
471
+ return /* @__PURE__ */ o("div", { className: "peeek__thumbs", role: "group", "aria-label": "Pages", children: Array.from({ length: h }, (f, s) => {
472
+ const v = de(s, u, e), k = v.length === 2;
473
+ return /* @__PURE__ */ y("div", { className: "peeek__thumb-group", children: [
474
+ v.map((d, c) => {
475
+ let l = "";
476
+ return k && (l = (n ? c === 1 : c === 0) ? " peeek__thumb--flat-right" : " peeek__thumb--flat-left"), /* @__PURE__ */ o(
477
477
  "button",
478
478
  {
479
479
  type: "button",
480
480
  "aria-label": `Go to page ${d + 1}`,
481
- "aria-current": b.has(d),
482
- className: `peeek__thumb${b.has(d) ? " peeek__thumb--active" : ""}${i}`,
483
- onClick: () => l(d),
481
+ "aria-current": _.has(d),
482
+ className: `peeek__thumb${_.has(d) ? " peeek__thumb--active" : ""}${l}`,
483
+ onClick: () => i(d),
484
484
  children: /* @__PURE__ */ o("img", { src: t[d], alt: "", loading: "lazy", referrerPolicy: "no-referrer" })
485
485
  },
486
486
  d
487
487
  );
488
488
  }),
489
- /* @__PURE__ */ o("span", { className: "peeek__thumb-badge", "aria-hidden": !0, children: k.map((d) => d + 1).join("-") })
489
+ /* @__PURE__ */ o("span", { className: "peeek__thumb-badge", "aria-hidden": !0, children: v.map((d) => d + 1).join("-") })
490
490
  ] }, s);
491
491
  }) });
492
492
  }
493
- const J = 1, ee = 2, ke = 0.25;
494
- function yt(t) {
493
+ const ee = 1, ae = 2, we = 0.25;
494
+ function vt(t) {
495
495
  const {
496
496
  pages: e,
497
497
  strings: n,
498
498
  layout: a,
499
- rtl: l,
500
- pageShadows: c,
501
- animateInteractions: b,
502
- autoTransition: p,
503
- autoTransitionInterval: g,
499
+ rtl: i,
500
+ pageShadows: u,
501
+ animateInteractions: _,
502
+ autoTransition: h,
503
+ autoTransitionInterval: f,
504
504
  show: s,
505
- downloadUrl: k,
506
- isFullscreen: h,
505
+ downloadUrl: v,
506
+ isFullscreen: k,
507
507
  onToggleFullscreen: d,
508
- onAbout: u
509
- } = t, i = e.length, D = ve() || !b, [M, O] = T(0), [x, $] = T(1), [U, X] = T(!1), [A, z] = T({ x: 0, y: 0 }), [Z, N] = T(!1), [f, y] = T(0), S = j(null), F = j(null), { layout: v, toggle: Ce } = bt(F, a), ne = ue(i, v), [w, de] = T(null), ge = j(null), [fe, Pe] = T(0.707);
508
+ onAbout: c
509
+ } = t, l = e.length, O = Ne() || !_, [A, R] = N(0), [x, M] = N(1), [Z, j] = N(!1), [F, $] = N({ x: 0, y: 0 }), [B, P] = N(!1), [X, m] = N(0), p = E(null), z = E(null), { layout: b, toggle: K } = ht(z, a), re = ge(l, b), [w, fe] = N(null), me = E(null), [pe, Ie] = N(0.707);
510
510
  C(() => {
511
511
  if (!e[0]) return;
512
512
  const r = new globalThis.Image();
513
513
  r.onload = () => {
514
- r.naturalWidth && r.naturalHeight && Pe(r.naturalWidth / r.naturalHeight);
514
+ r.naturalWidth && r.naturalHeight && Ie(r.naturalWidth / r.naturalHeight);
515
515
  }, r.src = e[0];
516
516
  }, [e]);
517
- const R = ie(M, i, v), Ie = R <= 0, ae = R >= ne - 1, K = E(
517
+ const S = ne(A, l, b), xe = S <= 0, le = S >= re - 1, be = E(/* @__PURE__ */ new Set());
518
+ C(() => {
519
+ const r = [S - 1, S + 1, S + 2].map((g) => ne(g, l, b)).flatMap((g) => de(g, l, b)).filter((g) => g >= 0);
520
+ for (const g of r) {
521
+ const T = e[g];
522
+ if (!T || be.current.has(T)) continue;
523
+ be.current.add(T);
524
+ const q = new globalThis.Image();
525
+ q.src = T;
526
+ }
527
+ }, [S, l, b, e]);
528
+ const W = L(
518
529
  (r) => {
519
- w || O((m) => {
520
- const P = ie(m + r, i, v);
521
- return P === m ? m : D ? P : (de({ dir: r, to: P }), m);
530
+ w || R((g) => {
531
+ const T = ne(g + r, l, b);
532
+ return T === g ? g : O ? T : (fe({ dir: r, to: T }), g);
522
533
  });
523
534
  },
524
- [i, v, D, w]
525
- ), xe = E(() => {
526
- de((r) => (r && O(r.to), null));
535
+ [l, b, O, w]
536
+ ), ze = L(() => {
537
+ fe((r) => (r && R(r.to), null));
527
538
  }, []);
528
539
  C(() => {
529
540
  if (!w) return;
530
- const r = ge.current;
541
+ const r = me.current;
531
542
  if (!r) return;
532
543
  r.style.transform = "rotateY(0deg)";
533
- let m = 0;
534
- const P = requestAnimationFrame(() => {
535
- m = requestAnimationFrame(() => {
544
+ let g = 0;
545
+ const T = requestAnimationFrame(() => {
546
+ g = requestAnimationFrame(() => {
536
547
  r.style.transform = `rotateY(${w.dir === 1 ? -180 : 180}deg)`;
537
548
  });
538
549
  });
539
550
  return () => {
540
- cancelAnimationFrame(P), cancelAnimationFrame(m);
551
+ cancelAnimationFrame(T), cancelAnimationFrame(g);
541
552
  };
542
553
  }, [w]);
543
- const oe = E(
554
+ const ie = L(
544
555
  (r) => {
545
- O(ie(ht(r, v), i, v));
556
+ R(ne(_t(r, b), l, b));
546
557
  },
547
- [i, v]
548
- ), { onKeyDown: ze } = we({ go: K, jump: oe, total: i, rtl: l });
558
+ [l, b]
559
+ ), { onKeyDown: Se } = Ce({ go: W, jump: ie, total: l, rtl: i });
549
560
  C(() => {
550
- if (!p || ae) return;
551
- const r = setTimeout(() => K(1), g);
561
+ if (!h || le) return;
562
+ const r = setTimeout(() => W(1), f);
552
563
  return () => clearTimeout(r);
553
- }, [p, g, ae, R, K]);
554
- const Se = () => $((r) => Math.min(ee, r + ke)), $e = () => $((r) => Math.max(J, r - ke)), Ae = () => {
555
- w || $((r) => r > J ? J : ee);
556
- }, Fe = () => y((r) => (r + 90) % 360), Me = f === 90 || f === 270 ? fe : 1, re = E((r, m, P) => {
557
- const le = F.current;
558
- if (!le || P <= 1) return { x: 0, y: 0 };
559
- const be = (P - 1) * le.clientWidth / 2, he = (P - 1) * le.clientHeight / 2;
560
- return { x: Math.max(-be, Math.min(be, r)), y: Math.max(-he, Math.min(he, m)) };
564
+ }, [h, f, le, S, W]);
565
+ const $e = () => M((r) => Math.min(ae, r + we)), Me = () => M((r) => Math.max(ee, r - we)), Ae = () => {
566
+ w || M((r) => r > ee ? ee : ae);
567
+ }, Fe = () => m((r) => (r + 90) % 360), Ee = X === 90 || X === 270 ? pe : 1, se = L((r, g, T) => {
568
+ const q = z.current;
569
+ if (!q || T <= 1) return { x: 0, y: 0 };
570
+ const ke = (T - 1) * q.clientWidth / 2, ye = (T - 1) * q.clientHeight / 2;
571
+ return { x: Math.max(-ke, Math.min(ke, r)), y: Math.max(-ye, Math.min(ye, g)) };
561
572
  }, []);
562
- C(() => z((r) => re(r.x, r.y, x)), [x, re]), C(() => z({ x: 0, y: 0 }), [R]);
563
- const Ee = (r) => {
564
- var m, P;
565
- x <= 1 || (S.current = { x: r.clientX, y: r.clientY, px: A.x, py: A.y }, N(!0), (P = (m = r.currentTarget).setPointerCapture) == null || P.call(m, r.pointerId));
566
- }, Le = (r) => {
567
- const m = S.current;
568
- m && z(re(m.px + (r.clientX - m.x), m.py + (r.clientY - m.y), x));
569
- }, me = (r) => {
570
- if (S.current) {
571
- S.current = null, N(!1);
573
+ C(() => $((r) => se(r.x, r.y, x)), [x, se]), C(() => $({ x: 0, y: 0 }), [S]);
574
+ const Le = (r) => {
575
+ var g, T;
576
+ x <= 1 || (p.current = { x: r.clientX, y: r.clientY, px: F.x, py: F.y }, P(!0), (T = (g = r.currentTarget).setPointerCapture) == null || T.call(g, r.pointerId));
577
+ }, De = (r) => {
578
+ const g = p.current;
579
+ g && $(se(g.px + (r.clientX - g.x), g.py + (r.clientY - g.y), x));
580
+ }, he = (r) => {
581
+ if (p.current) {
582
+ p.current = null, P(!1);
572
583
  try {
573
584
  r.currentTarget.releasePointerCapture(r.pointerId);
574
585
  } catch {
575
586
  }
576
587
  }
577
- }, W = Ne(R, i, v), Q = W[0] ?? 0, De = v === "double" && W.length === 2 ? `${W[0] + 1} - ${W[1] + 1} / ${i}` : `${Q + 1} / ${i}`, Oe = ne <= 1 ? 100 : R / (ne - 1) * 100, Re = n.prev, Be = n.next, Ue = w ? w.to : R, H = te(Ue, i, v), Ze = H.left < 0 && H.right >= 0, He = H.left >= 0 && H.right < 0, Ge = H.left >= 0 && H.right >= 0, je = Ze ? "-25%" : He ? "25%" : "0%", B = te(R, i, v), V = w ? te(w.to, i, v) : B, Ve = w ? w.dir === 1 ? B.right >= 0 ? B.right : B.left : B.left >= 0 ? B.left : B.right : Q, Xe = w ? w.dir === 1 ? V.left >= 0 ? V.left : V.right : V.right >= 0 ? V.right : V.left : Q, Ke = w ? w.dir === 1 ? "left" : "right" : null, pe = (r) => r === Ke ? B[r] : H[r], We = [
578
- ["left", pe("left")],
579
- ["right", pe("right")]
588
+ }, Y = de(S, l, b), te = Y[0] ?? 0, Oe = b === "double" && Y.length === 2 ? `${Y[0] + 1} - ${Y[1] + 1} / ${l}` : `${te + 1} / ${l}`, Re = re <= 1 ? 100 : S / (re - 1) * 100, Be = n.prev, Ue = n.next, Ze = w ? w.to : S, H = oe(Ze, l, b), He = H.left < 0 && H.right >= 0, Ge = H.left >= 0 && H.right < 0, je = H.left >= 0 && H.right >= 0, Ve = He ? "-25%" : Ge ? "25%" : "0%", U = oe(S, l, b), V = w ? oe(w.to, l, b) : U, Xe = w ? w.dir === 1 ? U.right >= 0 ? U.right : U.left : U.left >= 0 ? U.left : U.right : te, Ke = w ? w.dir === 1 ? V.left >= 0 ? V.left : V.right : V.right >= 0 ? V.right : V.left : te, We = w ? w.dir === 1 ? "left" : "right" : null, _e = (r) => r === We ? U[r] : H[r], Ye = [
589
+ ["left", _e("left")],
590
+ ["right", _e("right")]
580
591
  ];
581
- return /* @__PURE__ */ _(Ye, { children: [
582
- /* @__PURE__ */ _(
592
+ return /* @__PURE__ */ y(qe, { children: [
593
+ /* @__PURE__ */ y(
583
594
  "div",
584
595
  {
585
- ref: F,
596
+ ref: z,
586
597
  className: "peeek__stage",
587
- "data-layout": v,
598
+ "data-layout": b,
588
599
  tabIndex: 0,
589
- onKeyDown: ze,
590
- style: { "--peeek-aspect": `${fe}` },
600
+ onKeyDown: Se,
601
+ style: { "--peeek-aspect": `${pe}` },
591
602
  children: [
592
603
  s.arrows && /* @__PURE__ */ o(
593
604
  "button",
594
605
  {
595
606
  type: "button",
596
607
  className: "peeek__arrow peeek__arrow--prev",
597
- "aria-label": Re,
598
- disabled: Ie,
599
- onClick: () => K(-1),
608
+ "aria-label": Be,
609
+ disabled: xe,
610
+ onClick: () => W(-1),
600
611
  children: "‹"
601
612
  }
602
613
  ),
@@ -605,49 +616,49 @@ function yt(t) {
605
616
  {
606
617
  className: `peeek__zoom${x > 1 ? " peeek__zoom--pannable" : ""}`,
607
618
  style: {
608
- transform: `translate(${A.x}px, ${A.y}px) scale(${x * Me}) rotate(${f}deg)`,
609
- transition: D || Z ? "none" : void 0
619
+ transform: `translate(${F.x}px, ${F.y}px) scale(${x * Ee}) rotate(${X}deg)`,
620
+ transition: O || B ? "none" : void 0
610
621
  },
611
622
  onDoubleClick: Ae,
612
- onPointerDown: Ee,
613
- onPointerMove: Le,
614
- onPointerUp: me,
615
- onPointerCancel: me,
616
- children: /* @__PURE__ */ _(
623
+ onPointerDown: Le,
624
+ onPointerMove: De,
625
+ onPointerUp: he,
626
+ onPointerCancel: he,
627
+ children: /* @__PURE__ */ y(
617
628
  "div",
618
629
  {
619
- className: `peeek__spread${c ? " peeek--shadows" : ""}${Ge ? " peeek__spread--pair" : ""}`,
620
- style: { transform: `translateX(${je})` },
630
+ className: `peeek__spread${u ? " peeek--shadows" : ""}${je ? " peeek__spread--pair" : ""}`,
631
+ style: { transform: `translateX(${Ve})` },
621
632
  children: [
622
- We.map(([r, m]) => {
623
- const P = m >= 0 && s.fullscreen && !h && !w && x === 1;
633
+ Ye.map(([r, g]) => {
634
+ const T = g >= 0 && s.fullscreen && !k && !w && x === 1;
624
635
  return /* @__PURE__ */ o(
625
636
  "div",
626
637
  {
627
- className: `peeek__page peeek__page--${r}${m < 0 ? " peeek__page--empty" : ""}`,
628
- children: m >= 0 && (P ? /* @__PURE__ */ o(
638
+ className: `peeek__page peeek__page--${r}${g < 0 ? " peeek__page--empty" : ""}`,
639
+ children: g >= 0 && (T ? /* @__PURE__ */ o(
629
640
  "button",
630
641
  {
631
642
  type: "button",
632
643
  className: "peeek__page-btn",
633
644
  "aria-label": n.openFullscreen,
634
645
  onClick: d,
635
- children: /* @__PURE__ */ o("img", { src: e[m], alt: `Page ${m + 1}`, loading: "lazy", referrerPolicy: "no-referrer" })
646
+ children: /* @__PURE__ */ o("img", { src: e[g], alt: `Page ${g + 1}`, loading: "lazy", referrerPolicy: "no-referrer" })
636
647
  }
637
- ) : /* @__PURE__ */ o("img", { src: e[m], alt: `Page ${m + 1}`, loading: "lazy", referrerPolicy: "no-referrer" }))
648
+ ) : /* @__PURE__ */ o("img", { src: e[g], alt: `Page ${g + 1}`, loading: "lazy", referrerPolicy: "no-referrer" }))
638
649
  },
639
650
  r
640
651
  );
641
652
  }),
642
- w && /* @__PURE__ */ _(
653
+ w && /* @__PURE__ */ y(
643
654
  "div",
644
655
  {
645
- ref: ge,
656
+ ref: me,
646
657
  className: `peeek__leaf peeek__leaf--${w.dir === 1 ? "fwd" : "back"}`,
647
- onTransitionEnd: xe,
658
+ onTransitionEnd: ze,
648
659
  children: [
649
- /* @__PURE__ */ o("div", { className: "peeek__leaf-face peeek__leaf-face--front", children: /* @__PURE__ */ o("img", { src: e[Ve], alt: "", referrerPolicy: "no-referrer" }) }),
650
- /* @__PURE__ */ o("div", { className: "peeek__leaf-face peeek__leaf-face--back", children: /* @__PURE__ */ o("img", { src: e[Xe], alt: "", referrerPolicy: "no-referrer" }) })
660
+ /* @__PURE__ */ o("div", { className: "peeek__leaf-face peeek__leaf-face--front", children: /* @__PURE__ */ o("img", { src: e[Xe], alt: "", referrerPolicy: "no-referrer" }) }),
661
+ /* @__PURE__ */ o("div", { className: "peeek__leaf-face peeek__leaf-face--back", children: /* @__PURE__ */ o("img", { src: e[Ke], alt: "", referrerPolicy: "no-referrer" }) })
651
662
  ]
652
663
  }
653
664
  )
@@ -661,9 +672,9 @@ function yt(t) {
661
672
  {
662
673
  type: "button",
663
674
  className: "peeek__arrow peeek__arrow--next",
664
- "aria-label": Be,
665
- disabled: ae,
666
- onClick: () => K(1),
675
+ "aria-label": Ue,
676
+ disabled: le,
677
+ onClick: () => W(1),
667
678
  children: "›"
668
679
  }
669
680
  )
@@ -671,20 +682,20 @@ function yt(t) {
671
682
  }
672
683
  ),
673
684
  s.toolbar && /* @__PURE__ */ o(
674
- _t,
685
+ kt,
675
686
  {
676
687
  strings: n,
677
- label: De,
678
- progress: Oe,
688
+ label: Oe,
689
+ progress: Re,
679
690
  zoom: x,
680
- minZoom: J,
681
- maxZoom: ee,
682
- total: i,
683
- currentPage: Q + 1,
684
- layout: v,
685
- thumbsOpen: U,
686
- isFullscreen: h,
687
- downloadUrl: k,
691
+ minZoom: ee,
692
+ maxZoom: ae,
693
+ total: l,
694
+ currentPage: te + 1,
695
+ layout: b,
696
+ thumbsOpen: Z,
697
+ isFullscreen: k,
698
+ downloadUrl: v,
688
699
  show: {
689
700
  bar: s.bar,
690
701
  fullscreen: s.fullscreen,
@@ -694,21 +705,21 @@ function yt(t) {
694
705
  rotate: s.rotate,
695
706
  layoutToggle: s.layoutToggle
696
707
  },
697
- onZoomIn: Se,
698
- onZoomOut: $e,
699
- onZoomSet: (r) => $(Math.min(ee, Math.max(J, r))),
700
- onJump: oe,
708
+ onZoomIn: $e,
709
+ onZoomOut: Me,
710
+ onZoomSet: (r) => M(Math.min(ae, Math.max(ee, r))),
711
+ onJump: ie,
701
712
  onRotate: Fe,
702
- onToggleLayout: Ce,
703
- onToggleThumbs: () => X((r) => !r),
713
+ onToggleLayout: K,
714
+ onToggleThumbs: () => j((r) => !r),
704
715
  onToggleFullscreen: d,
705
- onAbout: u
716
+ onAbout: c
706
717
  }
707
718
  ),
708
- s.overview && U && /* @__PURE__ */ o(kt, { pages: e, layout: v, rtl: l, activePages: W, onJump: oe })
719
+ s.overview && Z && /* @__PURE__ */ o(yt, { pages: e, layout: b, rtl: i, activePages: Y, onJump: ie })
709
720
  ] });
710
721
  }
711
- function vt(t, e) {
722
+ function wt(t, e) {
712
723
  const n = e.toLowerCase();
713
724
  if (n.includes("pdf")) return "PDF";
714
725
  if (n.includes("wordprocessingml")) return "DOCX";
@@ -716,7 +727,7 @@ function vt(t, e) {
716
727
  const a = t.toLowerCase().split(".").pop() ?? "";
717
728
  return a ? a.toUpperCase().slice(0, 4) : "FILE";
718
729
  }
719
- function wt(t, e) {
730
+ function Tt(t, e) {
720
731
  if (t === 0) return { transform: "translateX(0) scale(1)", zIndex: 30, opacity: 1 };
721
732
  const n = t < 0 ? -1 : 1, a = e ? -1 : 1;
722
733
  return {
@@ -725,60 +736,70 @@ function wt(t, e) {
725
736
  opacity: 0.55
726
737
  };
727
738
  }
728
- function Tt(t) {
739
+ function Nt(t) {
729
740
  const {
730
741
  pages: e,
731
742
  strings: n,
732
743
  filename: a,
733
- mimeType: l,
734
- rtl: c,
735
- autoTransition: b,
736
- autoTransitionInterval: p,
737
- downloadUrl: g,
744
+ mimeType: i,
745
+ rtl: u,
746
+ autoTransition: _,
747
+ autoTransitionInterval: h,
748
+ downloadUrl: f,
738
749
  isFullscreen: s,
739
- onToggleFullscreen: k,
740
- onAbout: h,
750
+ onToggleFullscreen: v,
751
+ onAbout: k,
741
752
  show: d
742
- } = t, u = e.length, [i, L] = T(0), D = ve(), M = E(
743
- (f) => L((y) => Math.max(0, Math.min(u - 1, y + f))),
744
- [u]
745
- ), O = E(
746
- (f) => L(Math.max(0, Math.min(u - 1, f))),
747
- [u]
748
- ), x = i <= 0, $ = i >= u - 1, U = j([]);
753
+ } = t, c = e.length, [l, D] = N(0), O = Ne(), A = L(
754
+ (m) => D((p) => Math.max(0, Math.min(c - 1, p + m))),
755
+ [c]
756
+ ), R = L(
757
+ (m) => D(Math.max(0, Math.min(c - 1, m))),
758
+ [c]
759
+ ), x = l <= 0, M = l >= c - 1, Z = E(/* @__PURE__ */ new Set());
760
+ C(() => {
761
+ for (const m of [l - 2, l - 1, l + 1, l + 2]) {
762
+ const p = m >= 0 && m < c ? e[m] : void 0;
763
+ if (!p || Z.current.has(p)) continue;
764
+ Z.current.add(p);
765
+ const z = new globalThis.Image();
766
+ z.src = p;
767
+ }
768
+ }, [l, c, e]);
769
+ const j = E([]);
749
770
  C(() => {
750
- var f, y;
751
- (y = (f = U.current[i]) == null ? void 0 : f.scrollIntoView) == null || y.call(f, { behavior: "smooth", inline: "center", block: "nearest" });
752
- }, [i]), C(() => {
753
- if (!b || D || $) return;
754
- const f = setTimeout(() => M(1), p);
755
- return () => clearTimeout(f);
756
- }, [b, p, D, $, i, M]);
757
- const { onKeyDown: X } = we({ go: M, jump: O, total: u, rtl: c }), [A, z] = T(String(i + 1));
758
- C(() => z(String(i + 1)), [i]);
759
- const Z = () => {
760
- const f = Te(A, u);
761
- if (f === null) {
762
- z(String(i + 1));
771
+ var m, p;
772
+ (p = (m = j.current[l]) == null ? void 0 : m.scrollIntoView) == null || p.call(m, { behavior: "smooth", inline: "center", block: "nearest" });
773
+ }, [l]), C(() => {
774
+ if (!_ || O || M) return;
775
+ const m = setTimeout(() => A(1), h);
776
+ return () => clearTimeout(m);
777
+ }, [_, h, O, M, l, A]);
778
+ const { onKeyDown: F } = Ce({ go: A, jump: R, total: c, rtl: u }), [$, B] = N(String(l + 1));
779
+ C(() => B(String(l + 1)), [l]);
780
+ const P = () => {
781
+ const m = Pe($, c);
782
+ if (m === null) {
783
+ B(String(l + 1));
763
784
  return;
764
785
  }
765
- O(f);
766
- }, N = vt(a, l);
767
- return /* @__PURE__ */ _("div", { className: "peeek__cf", children: [
768
- /* @__PURE__ */ _("div", { className: "peeek__cf-header", children: [
769
- /* @__PURE__ */ o("span", { className: "peeek__cf-badge", children: N }),
770
- /* @__PURE__ */ _("div", { className: "peeek__cf-meta", children: [
786
+ R(m);
787
+ }, X = wt(a, i);
788
+ return /* @__PURE__ */ y("div", { className: "peeek__cf", children: [
789
+ /* @__PURE__ */ y("div", { className: "peeek__cf-header", children: [
790
+ /* @__PURE__ */ o("span", { className: "peeek__cf-badge", children: X }),
791
+ /* @__PURE__ */ y("div", { className: "peeek__cf-meta", children: [
771
792
  /* @__PURE__ */ o("span", { className: "peeek__cf-name", children: a }),
772
- /* @__PURE__ */ _("span", { className: "peeek__cf-count", children: [
773
- u,
793
+ /* @__PURE__ */ y("span", { className: "peeek__cf-count", children: [
794
+ c,
774
795
  " ",
775
- u === 1 ? n.page : n.pages
796
+ c === 1 ? n.page : n.pages
776
797
  ] })
777
798
  ] }),
778
- /* @__PURE__ */ _("span", { className: "peeek__cf-indicator", children: [
779
- i + 1,
799
+ /* @__PURE__ */ y("span", { className: "peeek__cf-indicator", children: [
800
+ l + 1,
780
801
  " / ",
781
- u
802
+ c
782
803
  ] }),
783
804
  d.goto && /* @__PURE__ */ o(
784
805
  "input",
@@ -787,19 +808,19 @@ function Tt(t) {
787
808
  type: "text",
788
809
  inputMode: "numeric",
789
810
  "aria-label": n.goToPage,
790
- value: A,
791
- onChange: (f) => z(f.target.value),
792
- onBlur: Z,
793
- onKeyDown: (f) => {
794
- f.key === "Enter" && (f.preventDefault(), Z());
811
+ value: $,
812
+ onChange: (m) => B(m.target.value),
813
+ onBlur: P,
814
+ onKeyDown: (m) => {
815
+ m.key === "Enter" && (m.preventDefault(), P());
795
816
  }
796
817
  }
797
818
  ),
798
- g && /* @__PURE__ */ o(
819
+ f && /* @__PURE__ */ o(
799
820
  "a",
800
821
  {
801
822
  className: "peeek__btn",
802
- href: g,
823
+ href: f,
803
824
  "aria-label": n.download,
804
825
  target: "_blank",
805
826
  rel: "noopener noreferrer",
@@ -814,7 +835,7 @@ function Tt(t) {
814
835
  className: `peeek__btn${s ? " peeek__btn--active" : ""}`,
815
836
  "aria-label": n.fullscreen,
816
837
  "aria-pressed": s,
817
- onClick: k,
838
+ onClick: v,
818
839
  children: "⛶"
819
840
  }
820
841
  ),
@@ -824,17 +845,17 @@ function Tt(t) {
824
845
  type: "button",
825
846
  className: "peeek__btn",
826
847
  "aria-label": n.about,
827
- onClick: h,
848
+ onClick: k,
828
849
  children: "?"
829
850
  }
830
851
  )
831
852
  ] }),
832
- /* @__PURE__ */ _(
853
+ /* @__PURE__ */ y(
833
854
  "div",
834
855
  {
835
856
  className: "peeek__cf-stage",
836
857
  tabIndex: 0,
837
- onKeyDown: X,
858
+ onKeyDown: F,
838
859
  children: [
839
860
  d.arrows && /* @__PURE__ */ o(
840
861
  "button",
@@ -843,26 +864,26 @@ function Tt(t) {
843
864
  className: "peeek__arrow peeek__arrow--prev",
844
865
  "aria-label": n.prev,
845
866
  disabled: x,
846
- onClick: () => M(-1),
867
+ onClick: () => A(-1),
847
868
  children: "‹"
848
869
  }
849
870
  ),
850
- e.map((f, y) => {
851
- const S = y - i;
852
- if (Math.abs(S) > 1) return null;
853
- const F = S === 0, v = F && d.fullscreen;
871
+ e.map((m, p) => {
872
+ const z = p - l;
873
+ if (Math.abs(z) > 1) return null;
874
+ const b = z === 0, K = b && d.fullscreen;
854
875
  return /* @__PURE__ */ o(
855
876
  "button",
856
877
  {
857
878
  type: "button",
858
- className: `peeek__cf-card${F ? " peeek__cf-card--center" : ""}${v ? " peeek__cf-card--zoom" : ""}`,
859
- style: wt(S, c),
860
- tabIndex: F ? 0 : -1,
861
- "aria-label": v ? n.openFullscreen : `Go to page ${y + 1}`,
862
- onClick: () => v ? k() : L(y),
863
- children: /* @__PURE__ */ o("img", { src: f, alt: F ? `Page ${y + 1}` : "", loading: "lazy", referrerPolicy: "no-referrer" })
879
+ className: `peeek__cf-card${b ? " peeek__cf-card--center" : ""}${K ? " peeek__cf-card--zoom" : ""}`,
880
+ style: Tt(z, u),
881
+ tabIndex: b ? 0 : -1,
882
+ "aria-label": K ? n.openFullscreen : `Go to page ${p + 1}`,
883
+ onClick: () => K ? v() : D(p),
884
+ children: /* @__PURE__ */ o("img", { src: m, alt: b ? `Page ${p + 1}` : "", loading: "lazy", referrerPolicy: "no-referrer" })
864
885
  },
865
- y
886
+ p
866
887
  );
867
888
  }),
868
889
  d.arrows && /* @__PURE__ */ o(
@@ -871,43 +892,43 @@ function Tt(t) {
871
892
  type: "button",
872
893
  className: "peeek__arrow peeek__arrow--next",
873
894
  "aria-label": n.next,
874
- disabled: $,
875
- onClick: () => M(1),
895
+ disabled: M,
896
+ onClick: () => A(1),
876
897
  children: "›"
877
898
  }
878
899
  )
879
900
  ]
880
901
  }
881
902
  ),
882
- d.thumbnails && /* @__PURE__ */ o("div", { className: "peeek__cf-thumbs", role: "group", "aria-label": "Pages", children: e.map((f, y) => {
883
- const S = y === i;
884
- return /* @__PURE__ */ _(
903
+ d.thumbnails && /* @__PURE__ */ o("div", { className: "peeek__cf-thumbs", role: "group", "aria-label": "Pages", children: e.map((m, p) => {
904
+ const z = p === l;
905
+ return /* @__PURE__ */ y(
885
906
  "button",
886
907
  {
887
- ref: (F) => {
888
- U.current[y] = F;
908
+ ref: (b) => {
909
+ j.current[p] = b;
889
910
  },
890
911
  type: "button",
891
- className: `peeek__cf-thumb${S ? " peeek__cf-thumb--active" : ""}`,
892
- "aria-label": `Go to page ${y + 1}`,
893
- "aria-current": S ? "page" : void 0,
894
- onClick: () => L(y),
912
+ className: `peeek__cf-thumb${z ? " peeek__cf-thumb--active" : ""}`,
913
+ "aria-label": `Go to page ${p + 1}`,
914
+ "aria-current": z ? "page" : void 0,
915
+ onClick: () => D(p),
895
916
  children: [
896
- /* @__PURE__ */ o("img", { src: f, alt: "", loading: "lazy", referrerPolicy: "no-referrer" }),
897
- /* @__PURE__ */ o("span", { className: "peeek__cf-thumb-num", children: String(y + 1).padStart(2, "0") })
917
+ /* @__PURE__ */ o("img", { src: m, alt: "", loading: "lazy", referrerPolicy: "no-referrer" }),
918
+ /* @__PURE__ */ o("span", { className: "peeek__cf-thumb-num", children: String(p + 1).padStart(2, "0") })
898
919
  ]
899
920
  },
900
- y
921
+ p
901
922
  );
902
923
  }) })
903
924
  ] });
904
925
  }
905
- function Nt({ logo: t, logoLink: e }) {
926
+ function Ct({ logo: t, logoLink: e }) {
906
927
  if (!t) return null;
907
928
  const n = /* @__PURE__ */ o("img", { src: t, alt: "Logo", loading: "lazy", referrerPolicy: "no-referrer" });
908
929
  return /* @__PURE__ */ o("div", { className: "peeek__branding", children: e ? /* @__PURE__ */ o("a", { href: e, target: "_blank", rel: "noopener noreferrer", children: n }) : n });
909
930
  }
910
- const Ct = [
931
+ const Pt = [
911
932
  { top: "12%", left: "10%", size: 3, v: "A", dur: 13, delay: 0 },
912
933
  { top: "22%", left: "82%", size: 2, v: "B", dur: 16, delay: 2 },
913
934
  { top: "40%", left: "16%", size: 2, v: "C", dur: 12, delay: 1 },
@@ -921,17 +942,17 @@ const Ct = [
921
942
  { top: "16%", left: "50%", size: 2, v: "B", dur: 14, delay: 3 },
922
943
  { top: "62%", left: "34%", size: 2, v: "C", dur: 12, delay: 2 }
923
944
  ];
924
- function Pt({ strings: t, onClose: e }) {
925
- const n = j(null);
945
+ function It({ strings: t, onClose: e }) {
946
+ const n = E(null);
926
947
  return C(() => {
927
948
  var a;
928
949
  (a = n.current) == null || a.focus();
929
950
  }, []), C(() => {
930
- const a = (l) => {
931
- l.key === "Escape" && e();
951
+ const a = (i) => {
952
+ i.key === "Escape" && e();
932
953
  };
933
954
  return document.addEventListener("keydown", a), () => document.removeEventListener("keydown", a);
934
- }, [e]), /* @__PURE__ */ o("div", { className: "peeek__about-backdrop", onClick: e, children: /* @__PURE__ */ _(
955
+ }, [e]), /* @__PURE__ */ o("div", { className: "peeek__about-backdrop", onClick: e, children: /* @__PURE__ */ y(
935
956
  "div",
936
957
  {
937
958
  role: "dialog",
@@ -940,7 +961,7 @@ function Pt({ strings: t, onClose: e }) {
940
961
  className: "peeek__about",
941
962
  onClick: (a) => a.stopPropagation(),
942
963
  children: [
943
- /* @__PURE__ */ o("span", { className: "peeek__about-particles", "aria-hidden": "true", children: Ct.map((a, l) => /* @__PURE__ */ o(
964
+ /* @__PURE__ */ o("span", { className: "peeek__about-particles", "aria-hidden": "true", children: Pt.map((a, i) => /* @__PURE__ */ o(
944
965
  "span",
945
966
  {
946
967
  className: "peeek__about-particle",
@@ -952,7 +973,7 @@ function Pt({ strings: t, onClose: e }) {
952
973
  animation: `peeekAboutDrift${a.v} ${a.dur}s ease-in-out ${a.delay}s infinite`
953
974
  }
954
975
  },
955
- l
976
+ i
956
977
  )) }),
957
978
  /* @__PURE__ */ o(
958
979
  "button",
@@ -965,10 +986,10 @@ function Pt({ strings: t, onClose: e }) {
965
986
  children: "×"
966
987
  }
967
988
  ),
968
- /* @__PURE__ */ _("div", { className: "peeek__about-content", children: [
969
- /* @__PURE__ */ _("div", { className: "peeek__about-orbwrap", children: [
989
+ /* @__PURE__ */ y("div", { className: "peeek__about-content", children: [
990
+ /* @__PURE__ */ y("div", { className: "peeek__about-orbwrap", children: [
970
991
  /* @__PURE__ */ o("span", { className: "peeek__about-ring", "aria-hidden": "true" }),
971
- /* @__PURE__ */ _(
992
+ /* @__PURE__ */ y(
972
993
  "svg",
973
994
  {
974
995
  className: "peeek__about-mark",
@@ -977,7 +998,7 @@ function Pt({ strings: t, onClose: e }) {
977
998
  viewBox: "0 0 256 256",
978
999
  "aria-hidden": "true",
979
1000
  children: [
980
- /* @__PURE__ */ o("defs", { children: /* @__PURE__ */ _("radialGradient", { id: "peeek-about-orb", cx: "38%", cy: "30%", r: "80%", children: [
1001
+ /* @__PURE__ */ o("defs", { children: /* @__PURE__ */ y("radialGradient", { id: "peeek-about-orb", cx: "38%", cy: "30%", r: "80%", children: [
981
1002
  /* @__PURE__ */ o("stop", { offset: "0%", stopColor: "#9aa2e6" }),
982
1003
  /* @__PURE__ */ o("stop", { offset: "55%", stopColor: "#6E79D6" }),
983
1004
  /* @__PURE__ */ o("stop", { offset: "100%", stopColor: "#535cc0" })
@@ -1000,9 +1021,9 @@ function Pt({ strings: t, onClose: e }) {
1000
1021
  ] }),
1001
1022
  /* @__PURE__ */ o("div", { className: "peeek__about-name", children: "Peeek Viewer" }),
1002
1023
  /* @__PURE__ */ o("div", { className: "peeek__about-tagline", children: t.aboutTagline }),
1003
- /* @__PURE__ */ _("div", { className: "peeek__about-version", children: [
1024
+ /* @__PURE__ */ y("div", { className: "peeek__about-version", children: [
1004
1025
  "v",
1005
- "0.4.1"
1026
+ "0.4.2"
1006
1027
  ] }),
1007
1028
  /* @__PURE__ */ o("p", { className: "peeek__about-desc", children: t.aboutDescription })
1008
1029
  ] })
@@ -1010,15 +1031,15 @@ function Pt({ strings: t, onClose: e }) {
1010
1031
  }
1011
1032
  ) });
1012
1033
  }
1013
- function St(t) {
1014
- const e = ut(t), n = st(e.language), a = j(null), { isFullscreen: l, toggle: c } = mt(a), [b, p] = T(!1), g = t.pages !== void 0, s = qe(
1015
- () => g ? gt(t.pages, { filename: t.filename, mimeType: t.mimeType }) : null,
1016
- [g, t.pages, t.filename, t.mimeType]
1017
- ), k = ft(g ? null : e.src, e.pollInterval), h = g ? s : k.manifest, d = g ? s ? "ready" : "loading" : k.state, u = {
1034
+ function $t(t) {
1035
+ const e = dt(t), n = ct(e.language), a = E(null), { isFullscreen: i, toggle: u } = pt(a), [_, h] = N(!1), f = t.pages !== void 0, s = Je(
1036
+ () => f ? ft(t.pages, { filename: t.filename, mimeType: t.mimeType }) : null,
1037
+ [f, t.pages, t.filename, t.mimeType]
1038
+ ), v = mt(f ? null : e.src, e.pollInterval), k = f ? s : v.manifest, d = f ? s ? "ready" : "loading" : v.state, c = {
1018
1039
  "--peeek-accent": e.accentColor
1019
1040
  };
1020
- e.background === "transparent" ? u["--peeek-bg"] = "transparent" : e.background === "color" && e.backgroundColor ? u["--peeek-bg"] = e.backgroundColor : e.background === "image" && e.backgroundImage && (u["--peeek-bg"] = `center / cover no-repeat url("${e.backgroundImage}")`);
1021
- const i = {
1041
+ e.background === "transparent" ? c["--peeek-bg"] = "transparent" : e.background === "color" && e.backgroundColor ? c["--peeek-bg"] = e.backgroundColor : e.background === "image" && e.backgroundImage && (c["--peeek-bg"] = `center / cover no-repeat url("${e.backgroundImage}")`);
1042
+ const l = {
1022
1043
  toolbar: e.navigationControls,
1023
1044
  bar: e.navigationBar,
1024
1045
  fullscreen: e.fullscreen,
@@ -1030,7 +1051,7 @@ function St(t) {
1030
1051
  rotate: e.rotateControl,
1031
1052
  layoutToggle: e.layoutToggle
1032
1053
  };
1033
- return /* @__PURE__ */ _(
1054
+ return /* @__PURE__ */ y(
1034
1055
  "div",
1035
1056
  {
1036
1057
  ref: a,
@@ -1038,35 +1059,35 @@ function St(t) {
1038
1059
  "data-skin": e.skin,
1039
1060
  "data-layout": e.layout,
1040
1061
  dir: e.rtl ? "rtl" : void 0,
1041
- style: u,
1062
+ style: c,
1042
1063
  children: [
1043
- /* @__PURE__ */ o(Nt, { logo: e.logo, logoLink: e.logoLink }),
1044
- d === "loading" && /* @__PURE__ */ _("div", { className: "peeek__state", style: e.loadingColor ? { color: e.loadingColor } : void 0, children: [
1064
+ /* @__PURE__ */ o(Ct, { logo: e.logo, logoLink: e.logoLink }),
1065
+ d === "loading" && /* @__PURE__ */ y("div", { className: "peeek__state", style: e.loadingColor ? { color: e.loadingColor } : void 0, children: [
1045
1066
  e.loadingImage && /* @__PURE__ */ o("img", { className: "peeek__state-img", src: e.loadingImage, alt: "", referrerPolicy: "no-referrer" }),
1046
1067
  /* @__PURE__ */ o("span", { children: e.loadingCaption ?? n.loading })
1047
1068
  ] }),
1048
1069
  d === "error" && /* @__PURE__ */ o("div", { className: "peeek__state", children: n.error }),
1049
- d === "ready" && h && e.mode === "coverflow" && /* @__PURE__ */ o(
1050
- Tt,
1070
+ d === "ready" && k && e.mode === "coverflow" && /* @__PURE__ */ o(
1071
+ Nt,
1051
1072
  {
1052
- pages: h.pages,
1073
+ pages: k.pages,
1053
1074
  strings: n,
1054
- filename: h.metadata.filename,
1055
- mimeType: h.metadata.mimeType,
1075
+ filename: k.metadata.filename,
1076
+ mimeType: k.metadata.mimeType,
1056
1077
  rtl: e.rtl,
1057
1078
  autoTransition: e.autoTransition,
1058
1079
  autoTransitionInterval: e.autoTransitionInterval,
1059
1080
  downloadUrl: e.downloadUrl,
1060
- isFullscreen: l,
1061
- onToggleFullscreen: c,
1062
- onAbout: () => p(!0),
1081
+ isFullscreen: i,
1082
+ onToggleFullscreen: u,
1083
+ onAbout: () => h(!0),
1063
1084
  show: { arrows: e.arrows, thumbnails: e.pagesOverview, fullscreen: e.fullscreen, about: e.aboutButton, goto: e.goToPage }
1064
1085
  }
1065
1086
  ),
1066
- d === "ready" && h && e.mode === "flip" && /* @__PURE__ */ o(
1067
- yt,
1087
+ d === "ready" && k && e.mode === "flip" && /* @__PURE__ */ o(
1088
+ vt,
1068
1089
  {
1069
- pages: h.pages,
1090
+ pages: k.pages,
1070
1091
  strings: n,
1071
1092
  layout: e.layout,
1072
1093
  rtl: e.rtl,
@@ -1074,18 +1095,18 @@ function St(t) {
1074
1095
  animateInteractions: e.animateInteractions,
1075
1096
  autoTransition: e.autoTransition,
1076
1097
  autoTransitionInterval: e.autoTransitionInterval,
1077
- show: i,
1098
+ show: l,
1078
1099
  downloadUrl: e.downloadUrl,
1079
- isFullscreen: l,
1080
- onToggleFullscreen: c,
1081
- onAbout: () => p(!0)
1100
+ isFullscreen: i,
1101
+ onToggleFullscreen: u,
1102
+ onAbout: () => h(!0)
1082
1103
  }
1083
1104
  ),
1084
- b && /* @__PURE__ */ o(Pt, { strings: n, onClose: () => p(!1) })
1105
+ _ && /* @__PURE__ */ o(It, { strings: n, onClose: () => h(!1) })
1085
1106
  ]
1086
1107
  }
1087
1108
  );
1088
1109
  }
1089
1110
  export {
1090
- St as PeeekViewer
1111
+ $t as PeeekViewer
1091
1112
  };