@peeekpage/viewer 0.3.14 → 0.3.16

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/index.js CHANGED
@@ -1,7 +1,7 @@
1
- import { jsxs as y, jsx as a, Fragment as Ze } from "react/jsx-runtime";
2
- import { useState as w, useRef as O, useEffect as T, useCallback as F, useMemo as Ue } from "react";
1
+ import { jsxs as v, jsx as a, Fragment as Ze } from "react/jsx-runtime";
2
+ import { useState as w, useRef as O, useEffect as T, useCallback as S, useMemo as Ue } from "react";
3
3
  const je = /* @__PURE__ */ new Set(["http:", "https:"]);
4
- function B(t) {
4
+ function D(t) {
5
5
  if (typeof t != "string") return null;
6
6
  const e = t.trim();
7
7
  if (e === "" || e.includes(" ")) return null;
@@ -45,10 +45,6 @@ const qe = ["en", "pt-BR"], pe = {
45
45
  about: "About",
46
46
  aboutTagline: "Embeddable document viewer by Peeek Page",
47
47
  aboutDescription: "Peeek Viewer shows document pages that live in your own storage, so your files stay yours.",
48
- aboutLearnMore: "Learn more",
49
- aboutDocs: "Documentation",
50
- aboutReport: "Report a problem",
51
- aboutLegal: "Legal",
52
48
  aboutClose: "Close"
53
49
  }, Ke = {
54
50
  prev: "Página anterior",
@@ -67,10 +63,6 @@ const qe = ["en", "pt-BR"], pe = {
67
63
  about: "Sobre",
68
64
  aboutTagline: "Visualizador de documentos incorporável do Peeek Page",
69
65
  aboutDescription: "O Peeek Viewer exibe as páginas de documentos que ficam no seu próprio armazenamento, então seus arquivos continuam seus.",
70
- aboutLearnMore: "Saiba mais",
71
- aboutDocs: "Documentação",
72
- aboutReport: "Relatar um problema",
73
- aboutLegal: "Aviso legal",
74
66
  aboutClose: "Fechar"
75
67
  }, Je = { en: pe, "pt-BR": Ke };
76
68
  function Qe(t) {
@@ -87,12 +79,12 @@ function tt(t) {
87
79
  return {
88
80
  src: typeof t.src == "string" ? t.src : "",
89
81
  mode: H(t.mode, ["flip", "coverflow"], "flip"),
90
- logo: B(t.logo),
91
- logoLink: B(t.logoLink),
82
+ logo: D(t.logo),
83
+ logoLink: D(t.logoLink),
92
84
  accentColor: ge(t.accentColor) ?? et,
93
85
  background: H(t.background, ["color", "image", "transparent"], "color"),
94
86
  backgroundColor: We(t.backgroundColor),
95
- backgroundImage: B(t.backgroundImage),
87
+ backgroundImage: D(t.backgroundImage),
96
88
  layout: H(t.layout, ["single", "double"], "double"),
97
89
  fillHeight: I(t.fillHeight, !1),
98
90
  pageShadows: I(t.pageShadows, !0),
@@ -107,13 +99,13 @@ function tt(t) {
107
99
  arrows: I(t.arrows, !0),
108
100
  navigationBar: I(t.navigationBar, !0),
109
101
  pagesOverview: I(t.pagesOverview, !0),
110
- downloadUrl: B(t.downloadUrl),
102
+ downloadUrl: D(t.downloadUrl),
111
103
  aboutButton: I(t.aboutButton, !0),
112
104
  pollInterval: typeof t.pollInterval == "number" && t.pollInterval > 0 ? t.pollInterval : 2e3,
113
105
  className: typeof t.className == "string" ? t.className : ""
114
106
  };
115
107
  }
116
- const ae = 5e3;
108
+ const re = 5e3;
117
109
  function V(t) {
118
110
  return typeof t == "string" ? t : "";
119
111
  }
@@ -123,20 +115,20 @@ function nt(t) {
123
115
  const e = t;
124
116
  if (!Array.isArray(e.pages))
125
117
  return { ok: !1, error: "manifest.pages is missing or not an array" };
126
- if (e.pages.length > ae)
118
+ if (e.pages.length > re)
127
119
  return { ok: !1, error: "manifest.pages exceeds the maximum" };
128
120
  const n = e.total_pages, r = typeof n == "number" && Number.isFinite(n) && n >= 0 ? n : e.pages.length;
129
- if (r > ae)
121
+ if (r > re)
130
122
  return { ok: !1, error: "manifest.total_pages exceeds the maximum" };
131
123
  const l = [];
132
124
  for (const d of e.pages) {
133
125
  if (d === null || typeof d != "object") continue;
134
- const c = B(d.url);
135
- c && l.push(c);
126
+ const i = D(d.url);
127
+ i && l.push(i);
136
128
  }
137
129
  if (l.length === 0)
138
130
  return { ok: !1, error: "manifest has no usable pages" };
139
- const i = e.status === "wip" ? "wip" : "done", p = e.metadata && typeof e.metadata == "object" ? e.metadata : {}, b = {
131
+ const c = e.status === "wip" ? "wip" : "done", p = e.metadata && typeof e.metadata == "object" ? e.metadata : {}, b = {
140
132
  fileId: V(p.file_id),
141
133
  filename: V(p.filename),
142
134
  creationDate: V(p.creation_date),
@@ -145,15 +137,15 @@ function nt(t) {
145
137
  };
146
138
  return {
147
139
  ok: !0,
148
- value: { status: i, totalPages: r, pages: l, metadata: b }
140
+ value: { status: c, totalPages: r, pages: l, metadata: b }
149
141
  };
150
142
  }
151
- function at(t, e) {
152
- if (!Array.isArray(t) || t.length > ae) return null;
143
+ function rt(t, e) {
144
+ if (!Array.isArray(t) || t.length > re) return null;
153
145
  const n = [];
154
146
  for (const l of t) {
155
- const i = B(l);
156
- i && n.push(i);
147
+ const c = D(l);
148
+ c && n.push(c);
157
149
  }
158
150
  return n.length === 0 ? null : {
159
151
  status: "done",
@@ -168,11 +160,11 @@ function at(t, e) {
168
160
  }
169
161
  };
170
162
  }
171
- function rt(t, e) {
172
- const [n, r] = w("loading"), [l, i] = w(null), [p, b] = w(null), d = O(null);
163
+ function at(t, e) {
164
+ const [n, r] = w("loading"), [l, c] = w(null), [p, b] = w(null), d = O(null);
173
165
  return T(() => {
174
- let c = !1;
175
- if (r("loading"), i(null), b(null), !t) return;
166
+ let i = !1;
167
+ if (r("loading"), c(null), b(null), !t) return;
176
168
  const h = () => {
177
169
  d.current !== null && (clearTimeout(d.current), d.current = null);
178
170
  }, _ = async () => {
@@ -182,20 +174,20 @@ function rt(t, e) {
182
174
  if (!s.ok) throw new Error(`HTTP ${s.status}`);
183
175
  u = await s.json();
184
176
  } catch (s) {
185
- if (c) return;
177
+ if (i) return;
186
178
  b(s instanceof Error ? s.message : "fetch failed"), r("error");
187
179
  return;
188
180
  }
189
- if (c) return;
181
+ if (i) return;
190
182
  const f = nt(u);
191
183
  if (!f.ok) {
192
184
  b(f.error), r("error");
193
185
  return;
194
186
  }
195
- i(f.value), r("ready"), f.value.status === "wip" && (d.current = setTimeout(_, e));
187
+ c(f.value), r("ready"), f.value.status === "wip" && (d.current = setTimeout(_, e));
196
188
  };
197
189
  return _(), () => {
198
- c = !0, h();
190
+ i = !0, h();
199
191
  };
200
192
  }, [t, e]), { state: n, manifest: l, error: p };
201
193
  }
@@ -205,7 +197,7 @@ function ot(t) {
205
197
  const l = () => n(document.fullscreenElement != null);
206
198
  return document.addEventListener("fullscreenchange", l), () => document.removeEventListener("fullscreenchange", l);
207
199
  }, []);
208
- const r = F(async () => {
200
+ const r = S(async () => {
209
201
  const l = t.current;
210
202
  if (l)
211
203
  try {
@@ -228,7 +220,7 @@ function be() {
228
220
  return n.addEventListener("change", r), () => n.removeEventListener("change", r);
229
221
  }, []), t;
230
222
  }
231
- function re(t, e) {
223
+ function ae(t, e) {
232
224
  return t <= 0 ? 0 : e === "single" ? t : 1 + Math.ceil((t - 1) / 2);
233
225
  }
234
226
  function lt(t, e) {
@@ -244,11 +236,11 @@ function Y(t, e, n) {
244
236
  return { left: r < e ? r : -1, right: l < e ? l : -1 };
245
237
  }
246
238
  function he(t, e, n) {
247
- const { left: r, right: l } = Y(t, e, n), i = [];
248
- return r >= 0 && i.push(r), l >= 0 && i.push(l), i;
239
+ const { left: r, right: l } = Y(t, e, n), c = [];
240
+ return r >= 0 && c.push(r), l >= 0 && c.push(l), c;
249
241
  }
250
242
  function ee(t, e, n) {
251
- const r = re(e, n) - 1;
243
+ const r = ae(e, n) - 1;
252
244
  return t < 0 ? 0 : t > r ? r : t;
253
245
  }
254
246
  function st(t) {
@@ -257,11 +249,11 @@ function st(t) {
257
249
  label: n,
258
250
  progress: r,
259
251
  zoom: l,
260
- minZoom: i,
252
+ minZoom: c,
261
253
  maxZoom: p,
262
254
  thumbsOpen: b,
263
255
  isFullscreen: d,
264
- downloadUrl: c,
256
+ downloadUrl: i,
265
257
  show: h,
266
258
  onZoomIn: _,
267
259
  onZoomOut: u,
@@ -270,7 +262,7 @@ function st(t) {
270
262
  onToggleFullscreen: P,
271
263
  onAbout: Z
272
264
  } = t;
273
- return /* @__PURE__ */ y("div", { className: "peeek__toolbar", children: [
265
+ return /* @__PURE__ */ v("div", { className: "peeek__toolbar", children: [
274
266
  /* @__PURE__ */ a("span", { className: "peeek__label", children: n }),
275
267
  h.bar && /* @__PURE__ */ a("div", { className: "peeek__scrubber", "aria-hidden": !0, children: /* @__PURE__ */ a("div", { className: "peeek__scrubber-fill", style: { width: `${r}%` } }) }),
276
268
  /* @__PURE__ */ a(
@@ -279,7 +271,7 @@ function st(t) {
279
271
  type: "button",
280
272
  className: "peeek__btn",
281
273
  "aria-label": e.zoomOut,
282
- disabled: l <= i,
274
+ disabled: l <= c,
283
275
  onClick: u,
284
276
  children: "−"
285
277
  }
@@ -289,7 +281,7 @@ function st(t) {
289
281
  {
290
282
  type: "range",
291
283
  "aria-label": e.zoom,
292
- min: i,
284
+ min: c,
293
285
  max: p,
294
286
  step: 0.25,
295
287
  value: l,
@@ -318,11 +310,11 @@ function st(t) {
318
310
  children: "▦"
319
311
  }
320
312
  ),
321
- c && /* @__PURE__ */ a(
313
+ i && /* @__PURE__ */ a(
322
314
  "a",
323
315
  {
324
316
  className: "peeek__btn",
325
- href: c,
317
+ href: i,
326
318
  "aria-label": e.download,
327
319
  target: "_blank",
328
320
  rel: "noopener noreferrer",
@@ -354,10 +346,10 @@ function st(t) {
354
346
  ] });
355
347
  }
356
348
  function it({ pages: t, layout: e, rtl: n, activePages: r, onJump: l }) {
357
- const i = t.length, p = new Set(r), b = re(i, e);
358
- return /* @__PURE__ */ a("div", { className: "peeek__thumbs", role: "group", "aria-label": "Pages", children: Array.from({ length: b }, (d, c) => {
359
- const h = he(c, i, e), _ = h.length === 2;
360
- return /* @__PURE__ */ y("div", { className: "peeek__thumb-group", children: [
349
+ const c = t.length, p = new Set(r), b = ae(c, e);
350
+ return /* @__PURE__ */ a("div", { className: "peeek__thumbs", role: "group", "aria-label": "Pages", children: Array.from({ length: b }, (d, i) => {
351
+ const h = he(i, c, e), _ = h.length === 2;
352
+ return /* @__PURE__ */ v("div", { className: "peeek__thumb-group", children: [
361
353
  h.map((u, f) => {
362
354
  let s = "";
363
355
  return _ && (s = (n ? f === 1 : f === 0) ? " peeek__thumb--flat-right" : " peeek__thumb--flat-left"), /* @__PURE__ */ a(
@@ -374,7 +366,7 @@ function it({ pages: t, layout: e, rtl: n, activePages: r, onJump: l }) {
374
366
  );
375
367
  }),
376
368
  /* @__PURE__ */ a("span", { className: "peeek__thumb-badge", "aria-hidden": !0, children: h.map((u) => u + 1).join("-") })
377
- ] }, c);
369
+ ] }, i);
378
370
  }) });
379
371
  }
380
372
  const te = 1, ne = 2, me = 0.25;
@@ -384,16 +376,16 @@ function ct(t) {
384
376
  strings: n,
385
377
  layout: r,
386
378
  rtl: l,
387
- pageShadows: i,
379
+ pageShadows: c,
388
380
  animateInteractions: p,
389
381
  autoTransition: b,
390
382
  autoTransitionInterval: d,
391
- show: c,
383
+ show: i,
392
384
  downloadUrl: h,
393
385
  isFullscreen: _,
394
386
  onToggleFullscreen: u,
395
387
  onAbout: f
396
- } = t, s = e.length, P = re(s, r), N = be() || !p, [W, S] = w(0), [C, U] = w(1), [X, v] = w(!1), [g, $] = w({ x: 0, y: 0 }), [M, R] = w(!1), G = O(null), oe = O(null), [k, le] = w(null), se = O(null), [_e, ke] = w(0.707);
388
+ } = t, s = e.length, P = ae(s, r), N = be() || !p, [W, z] = w(0), [C, U] = w(1), [X, y] = w(!1), [g, $] = w({ x: 0, y: 0 }), [F, R] = w(!1), G = O(null), oe = O(null), [k, le] = w(null), se = O(null), [_e, ke] = w(0.707);
397
389
  T(() => {
398
390
  if (!e[0]) return;
399
391
  const o = new globalThis.Image();
@@ -401,16 +393,16 @@ function ct(t) {
401
393
  o.naturalWidth && o.naturalHeight && ke(o.naturalWidth / o.naturalHeight);
402
394
  }, o.src = e[0];
403
395
  }, [e]);
404
- const L = ee(W, s, r), ye = L <= 0, q = L >= P - 1, z = F(
396
+ const A = ee(W, s, r), ye = A <= 0, q = A >= P - 1, E = S(
405
397
  (o) => {
406
- k || S((m) => {
398
+ k || z((m) => {
407
399
  const x = ee(m + o, s, r);
408
400
  return x === m ? m : N ? x : (le({ dir: o, to: x }), m);
409
401
  });
410
402
  },
411
403
  [s, r, N, k]
412
- ), ve = F(() => {
413
- le((o) => (o && S(o.to), null));
404
+ ), ve = S(() => {
405
+ le((o) => (o && z(o.to), null));
414
406
  }, []);
415
407
  T(() => {
416
408
  if (!k) return;
@@ -427,29 +419,29 @@ function ct(t) {
427
419
  cancelAnimationFrame(x), cancelAnimationFrame(m);
428
420
  };
429
421
  }, [k]);
430
- const we = F(
422
+ const we = S(
431
423
  (o) => {
432
- S(ee(lt(o, r), s, r));
424
+ z(ee(lt(o, r), s, r));
433
425
  },
434
426
  [s, r]
435
- ), Ne = F(
427
+ ), Ne = S(
436
428
  (o) => {
437
- o.key === "ArrowRight" ? z(l ? -1 : 1) : o.key === "ArrowLeft" && z(l ? 1 : -1);
429
+ o.key === "ArrowRight" ? E(l ? -1 : 1) : o.key === "ArrowLeft" && E(l ? 1 : -1);
438
430
  },
439
- [z, l]
431
+ [E, l]
440
432
  );
441
433
  T(() => {
442
434
  if (!b || q) return;
443
- const o = setTimeout(() => z(1), d);
435
+ const o = setTimeout(() => E(1), d);
444
436
  return () => clearTimeout(o);
445
- }, [b, d, q, L, z]);
446
- const Te = () => U((o) => Math.min(ne, o + me)), Ce = () => U((o) => Math.max(te, o - me)), K = F((o, m, x) => {
437
+ }, [b, d, q, A, E]);
438
+ const Te = () => U((o) => Math.min(ne, o + me)), Ce = () => U((o) => Math.max(te, o - me)), K = S((o, m, x) => {
447
439
  const Q = oe.current;
448
440
  if (!Q || x <= 1) return { x: 0, y: 0 };
449
441
  const ue = (x - 1) * Q.clientWidth / 2, de = (x - 1) * Q.clientHeight / 2;
450
442
  return { x: Math.max(-ue, Math.min(ue, o)), y: Math.max(-de, Math.min(de, m)) };
451
443
  }, []);
452
- T(() => $((o) => K(o.x, o.y, C)), [C, K]), T(() => $({ x: 0, y: 0 }), [L]);
444
+ T(() => $((o) => K(o.x, o.y, C)), [C, K]), T(() => $({ x: 0, y: 0 }), [A]);
453
445
  const xe = (o) => {
454
446
  C <= 1 || (G.current = { x: o.clientX, y: o.clientY, px: g.x, py: g.y }, R(!0), o.currentTarget.setPointerCapture(o.pointerId));
455
447
  }, Ie = (o) => {
@@ -463,12 +455,12 @@ function ct(t) {
463
455
  } catch {
464
456
  }
465
457
  }
466
- }, j = he(L, s, r), J = j[0] ?? 0, Pe = r === "double" && j.length === 2 ? `${j[0] + 1} - ${j[1] + 1} / ${s}` : `${J + 1} / ${s}`, $e = P <= 1 ? 100 : L / (P - 1) * 100, Me = n.prev, Le = n.next, Ae = k ? k.to : L, E = Y(Ae, s, r), Fe = E.left < 0 && E.right >= 0, Se = E.left >= 0 && E.right < 0, ze = E.left >= 0 && E.right >= 0, Ee = Fe ? "-25%" : Se ? "25%" : "0%", A = Y(L, s, r), D = k ? Y(k.to, s, r) : A, Oe = k ? k.dir === 1 ? A.right >= 0 ? A.right : A.left : A.left >= 0 ? A.left : A.right : J, Re = k ? k.dir === 1 ? D.left >= 0 ? D.left : D.right : D.right >= 0 ? D.right : D.left : J, De = k ? k.dir === 1 ? "left" : "right" : null, ce = (o) => o === De ? A[o] : E[o], Be = [
458
+ }, j = he(A, s, r), J = j[0] ?? 0, Pe = r === "double" && j.length === 2 ? `${j[0] + 1} - ${j[1] + 1} / ${s}` : `${J + 1} / ${s}`, $e = P <= 1 ? 100 : A / (P - 1) * 100, Fe = n.prev, Ae = n.next, Me = k ? k.to : A, L = Y(Me, s, r), Se = L.left < 0 && L.right >= 0, ze = L.left >= 0 && L.right < 0, Ee = L.left >= 0 && L.right >= 0, Le = Se ? "-25%" : ze ? "25%" : "0%", M = Y(A, s, r), B = k ? Y(k.to, s, r) : M, Oe = k ? k.dir === 1 ? M.right >= 0 ? M.right : M.left : M.left >= 0 ? M.left : M.right : J, Re = k ? k.dir === 1 ? B.left >= 0 ? B.left : B.right : B.right >= 0 ? B.right : B.left : J, Be = k ? k.dir === 1 ? "left" : "right" : null, ce = (o) => o === Be ? M[o] : L[o], De = [
467
459
  ["left", ce("left")],
468
460
  ["right", ce("right")]
469
461
  ];
470
- return /* @__PURE__ */ y(Ze, { children: [
471
- /* @__PURE__ */ y(
462
+ return /* @__PURE__ */ v(Ze, { children: [
463
+ /* @__PURE__ */ v(
472
464
  "div",
473
465
  {
474
466
  ref: oe,
@@ -477,14 +469,14 @@ function ct(t) {
477
469
  onKeyDown: Ne,
478
470
  style: { "--peeek-aspect": `${_e}` },
479
471
  children: [
480
- c.arrows && /* @__PURE__ */ a(
472
+ i.arrows && /* @__PURE__ */ a(
481
473
  "button",
482
474
  {
483
475
  type: "button",
484
476
  className: "peeek__arrow peeek__arrow--prev",
485
- "aria-label": Me,
477
+ "aria-label": Fe,
486
478
  disabled: ye,
487
- onClick: () => z(-1),
479
+ onClick: () => E(-1),
488
480
  children: "‹"
489
481
  }
490
482
  ),
@@ -494,20 +486,20 @@ function ct(t) {
494
486
  className: `peeek__zoom${C > 1 ? " peeek__zoom--pannable" : ""}`,
495
487
  style: {
496
488
  transform: `translate(${g.x}px, ${g.y}px) scale(${C})`,
497
- transition: N || M ? "none" : void 0
489
+ transition: N || F ? "none" : void 0
498
490
  },
499
491
  onPointerDown: xe,
500
492
  onPointerMove: Ie,
501
493
  onPointerUp: ie,
502
494
  onPointerCancel: ie,
503
- children: /* @__PURE__ */ y(
495
+ children: /* @__PURE__ */ v(
504
496
  "div",
505
497
  {
506
- className: `peeek__spread${i ? " peeek--shadows" : ""}${ze ? " peeek__spread--pair" : ""}`,
507
- style: { transform: `translateX(${Ee})` },
498
+ className: `peeek__spread${c ? " peeek--shadows" : ""}${Ee ? " peeek__spread--pair" : ""}`,
499
+ style: { transform: `translateX(${Le})` },
508
500
  children: [
509
- Be.map(([o, m]) => {
510
- const x = m >= 0 && c.fullscreen && !_ && !k && C === 1;
501
+ De.map(([o, m]) => {
502
+ const x = m >= 0 && i.fullscreen && !_ && !k && C === 1;
511
503
  return /* @__PURE__ */ a(
512
504
  "div",
513
505
  {
@@ -526,7 +518,7 @@ function ct(t) {
526
518
  o
527
519
  );
528
520
  }),
529
- k && /* @__PURE__ */ y(
521
+ k && /* @__PURE__ */ v(
530
522
  "div",
531
523
  {
532
524
  ref: se,
@@ -543,21 +535,21 @@ function ct(t) {
543
535
  )
544
536
  }
545
537
  ),
546
- c.arrows && /* @__PURE__ */ a(
538
+ i.arrows && /* @__PURE__ */ a(
547
539
  "button",
548
540
  {
549
541
  type: "button",
550
542
  className: "peeek__arrow peeek__arrow--next",
551
- "aria-label": Le,
543
+ "aria-label": Ae,
552
544
  disabled: q,
553
- onClick: () => z(1),
545
+ onClick: () => E(1),
554
546
  children: "›"
555
547
  }
556
548
  )
557
549
  ]
558
550
  }
559
551
  ),
560
- c.toolbar && /* @__PURE__ */ a(
552
+ i.toolbar && /* @__PURE__ */ a(
561
553
  st,
562
554
  {
563
555
  strings: n,
@@ -569,16 +561,16 @@ function ct(t) {
569
561
  thumbsOpen: X,
570
562
  isFullscreen: _,
571
563
  downloadUrl: h,
572
- show: { bar: c.bar, fullscreen: c.fullscreen, thumbnails: c.thumbnails && c.overview, about: c.about },
564
+ show: { bar: i.bar, fullscreen: i.fullscreen, thumbnails: i.thumbnails && i.overview, about: i.about },
573
565
  onZoomIn: Te,
574
566
  onZoomOut: Ce,
575
567
  onZoomSet: (o) => U(Math.min(ne, Math.max(te, o))),
576
- onToggleThumbs: () => v((o) => !o),
568
+ onToggleThumbs: () => y((o) => !o),
577
569
  onToggleFullscreen: u,
578
570
  onAbout: f
579
571
  }
580
572
  ),
581
- c.overview && X && /* @__PURE__ */ a(it, { pages: e, layout: r, rtl: l, activePages: j, onJump: we })
573
+ i.overview && X && /* @__PURE__ */ a(it, { pages: e, layout: r, rtl: l, activePages: j, onJump: we })
582
574
  ] });
583
575
  }
584
576
  function ut(t, e) {
@@ -604,44 +596,44 @@ function ft(t) {
604
596
  strings: n,
605
597
  filename: r,
606
598
  mimeType: l,
607
- rtl: i,
599
+ rtl: c,
608
600
  autoTransition: p,
609
601
  autoTransitionInterval: b,
610
602
  downloadUrl: d,
611
- isFullscreen: c,
603
+ isFullscreen: i,
612
604
  onToggleFullscreen: h,
613
605
  onAbout: _,
614
606
  show: u
615
- } = t, f = e.length, [s, P] = w(0), Z = be(), N = F(
616
- (v) => P((g) => Math.max(0, Math.min(f - 1, g + v))),
607
+ } = t, f = e.length, [s, P] = w(0), Z = be(), N = S(
608
+ (y) => P((g) => Math.max(0, Math.min(f - 1, g + y))),
617
609
  [f]
618
- ), W = s <= 0, S = s >= f - 1, C = O([]);
610
+ ), W = s <= 0, z = s >= f - 1, C = O([]);
619
611
  T(() => {
620
- var v, g;
621
- (g = (v = C.current[s]) == null ? void 0 : v.scrollIntoView) == null || g.call(v, { behavior: "smooth", inline: "center", block: "nearest" });
612
+ var y, g;
613
+ (g = (y = C.current[s]) == null ? void 0 : y.scrollIntoView) == null || g.call(y, { behavior: "smooth", inline: "center", block: "nearest" });
622
614
  }, [s]), T(() => {
623
- if (!p || Z || S) return;
624
- const v = setTimeout(() => N(1), b);
625
- return () => clearTimeout(v);
626
- }, [p, b, Z, S, s, N]);
627
- const U = F(
628
- (v) => {
629
- v.key === "ArrowRight" ? N(i ? -1 : 1) : v.key === "ArrowLeft" && N(i ? 1 : -1);
615
+ if (!p || Z || z) return;
616
+ const y = setTimeout(() => N(1), b);
617
+ return () => clearTimeout(y);
618
+ }, [p, b, Z, z, s, N]);
619
+ const U = S(
620
+ (y) => {
621
+ y.key === "ArrowRight" ? N(c ? -1 : 1) : y.key === "ArrowLeft" && N(c ? 1 : -1);
630
622
  },
631
- [N, i]
623
+ [N, c]
632
624
  ), X = ut(r, l);
633
- return /* @__PURE__ */ y("div", { className: "peeek__cf", children: [
634
- /* @__PURE__ */ y("div", { className: "peeek__cf-header", children: [
625
+ return /* @__PURE__ */ v("div", { className: "peeek__cf", children: [
626
+ /* @__PURE__ */ v("div", { className: "peeek__cf-header", children: [
635
627
  /* @__PURE__ */ a("span", { className: "peeek__cf-badge", children: X }),
636
- /* @__PURE__ */ y("div", { className: "peeek__cf-meta", children: [
628
+ /* @__PURE__ */ v("div", { className: "peeek__cf-meta", children: [
637
629
  /* @__PURE__ */ a("span", { className: "peeek__cf-name", children: r }),
638
- /* @__PURE__ */ y("span", { className: "peeek__cf-count", children: [
630
+ /* @__PURE__ */ v("span", { className: "peeek__cf-count", children: [
639
631
  f,
640
632
  " ",
641
633
  f === 1 ? n.page : n.pages
642
634
  ] })
643
635
  ] }),
644
- /* @__PURE__ */ y("span", { className: "peeek__cf-indicator", children: [
636
+ /* @__PURE__ */ v("span", { className: "peeek__cf-indicator", children: [
645
637
  s + 1,
646
638
  " / ",
647
639
  f
@@ -662,9 +654,9 @@ function ft(t) {
662
654
  "button",
663
655
  {
664
656
  type: "button",
665
- className: `peeek__btn${c ? " peeek__btn--active" : ""}`,
657
+ className: `peeek__btn${i ? " peeek__btn--active" : ""}`,
666
658
  "aria-label": n.fullscreen,
667
- "aria-pressed": c,
659
+ "aria-pressed": i,
668
660
  onClick: h,
669
661
  children: "⛶"
670
662
  }
@@ -680,7 +672,7 @@ function ft(t) {
680
672
  }
681
673
  )
682
674
  ] }),
683
- /* @__PURE__ */ y(
675
+ /* @__PURE__ */ v(
684
676
  "div",
685
677
  {
686
678
  className: "peeek__cf-stage",
@@ -698,20 +690,20 @@ function ft(t) {
698
690
  children: "‹"
699
691
  }
700
692
  ),
701
- e.map((v, g) => {
693
+ e.map((y, g) => {
702
694
  const $ = g - s;
703
695
  if (Math.abs($) > 1) return null;
704
- const M = $ === 0, R = M && u.fullscreen;
696
+ const F = $ === 0, R = F && u.fullscreen;
705
697
  return /* @__PURE__ */ a(
706
698
  "button",
707
699
  {
708
700
  type: "button",
709
- className: `peeek__cf-card${M ? " peeek__cf-card--center" : ""}${R ? " peeek__cf-card--zoom" : ""}`,
710
- style: dt($, i),
711
- tabIndex: M ? 0 : -1,
701
+ className: `peeek__cf-card${F ? " peeek__cf-card--center" : ""}${R ? " peeek__cf-card--zoom" : ""}`,
702
+ style: dt($, c),
703
+ tabIndex: F ? 0 : -1,
712
704
  "aria-label": R ? n.openFullscreen : `Go to page ${g + 1}`,
713
705
  onClick: () => R ? h() : P(g),
714
- children: /* @__PURE__ */ a("img", { src: v, alt: M ? `Page ${g + 1}` : "", loading: "lazy", referrerPolicy: "no-referrer" })
706
+ children: /* @__PURE__ */ a("img", { src: y, alt: F ? `Page ${g + 1}` : "", loading: "lazy", referrerPolicy: "no-referrer" })
715
707
  },
716
708
  g
717
709
  );
@@ -722,7 +714,7 @@ function ft(t) {
722
714
  type: "button",
723
715
  className: "peeek__arrow peeek__arrow--next",
724
716
  "aria-label": n.next,
725
- disabled: S,
717
+ disabled: z,
726
718
  onClick: () => N(1),
727
719
  children: "›"
728
720
  }
@@ -730,13 +722,13 @@ function ft(t) {
730
722
  ]
731
723
  }
732
724
  ),
733
- u.thumbnails && /* @__PURE__ */ a("div", { className: "peeek__cf-thumbs", role: "group", "aria-label": "Pages", children: e.map((v, g) => {
725
+ u.thumbnails && /* @__PURE__ */ a("div", { className: "peeek__cf-thumbs", role: "group", "aria-label": "Pages", children: e.map((y, g) => {
734
726
  const $ = g === s;
735
- return /* @__PURE__ */ y(
727
+ return /* @__PURE__ */ v(
736
728
  "button",
737
729
  {
738
- ref: (M) => {
739
- C.current[g] = M;
730
+ ref: (F) => {
731
+ C.current[g] = F;
740
732
  },
741
733
  type: "button",
742
734
  className: `peeek__cf-thumb${$ ? " peeek__cf-thumb--active" : ""}`,
@@ -744,7 +736,7 @@ function ft(t) {
744
736
  "aria-current": $ ? "page" : void 0,
745
737
  onClick: () => P(g),
746
738
  children: [
747
- /* @__PURE__ */ a("img", { src: v, alt: "", loading: "lazy", referrerPolicy: "no-referrer" }),
739
+ /* @__PURE__ */ a("img", { src: y, alt: "", loading: "lazy", referrerPolicy: "no-referrer" }),
748
740
  /* @__PURE__ */ a("span", { className: "peeek__cf-thumb-num", children: String(g + 1).padStart(2, "0") })
749
741
  ]
750
742
  },
@@ -760,29 +752,22 @@ function mt({ logo: t, logoLink: e }) {
760
752
  }
761
753
  function gt({ strings: t, onClose: e }) {
762
754
  const n = O(null);
763
- T(() => {
764
- var l;
765
- (l = n.current) == null || l.focus();
755
+ return T(() => {
756
+ var r;
757
+ (r = n.current) == null || r.focus();
766
758
  }, []), T(() => {
767
- const l = (i) => {
768
- i.key === "Escape" && e();
759
+ const r = (l) => {
760
+ l.key === "Escape" && e();
769
761
  };
770
- return document.addEventListener("keydown", l), () => document.removeEventListener("keydown", l);
771
- }, [e]);
772
- const r = [
773
- { label: t.aboutLearnMore, href: "https://peeek.page" },
774
- { label: t.aboutDocs, href: "https://peeek.page/docs" },
775
- { label: t.aboutReport, href: "mailto:hello@cidral.dev" },
776
- { label: t.aboutLegal, href: "https://peeek.page/legal/tos" }
777
- ];
778
- return /* @__PURE__ */ a("div", { className: "peeek__about-backdrop", onClick: e, children: /* @__PURE__ */ y(
762
+ return document.addEventListener("keydown", r), () => document.removeEventListener("keydown", r);
763
+ }, [e]), /* @__PURE__ */ a("div", { className: "peeek__about-backdrop", onClick: e, children: /* @__PURE__ */ v(
779
764
  "div",
780
765
  {
781
766
  role: "dialog",
782
767
  "aria-modal": "true",
783
768
  "aria-label": "Peeek Viewer",
784
769
  className: "peeek__about",
785
- onClick: (l) => l.stopPropagation(),
770
+ onClick: (r) => r.stopPropagation(),
786
771
  children: [
787
772
  /* @__PURE__ */ a(
788
773
  "button",
@@ -795,7 +780,7 @@ function gt({ strings: t, onClose: e }) {
795
780
  children: "×"
796
781
  }
797
782
  ),
798
- /* @__PURE__ */ y(
783
+ /* @__PURE__ */ v(
799
784
  "svg",
800
785
  {
801
786
  className: "peeek__about-mark",
@@ -817,34 +802,20 @@ function gt({ strings: t, onClose: e }) {
817
802
  ),
818
803
  /* @__PURE__ */ a("div", { className: "peeek__about-name", children: "Peeek Viewer" }),
819
804
  /* @__PURE__ */ a("div", { className: "peeek__about-tagline", children: t.aboutTagline }),
820
- /* @__PURE__ */ y("div", { className: "peeek__about-version", children: [
805
+ /* @__PURE__ */ v("div", { className: "peeek__about-version", children: [
821
806
  "v",
822
- "0.3.14"
807
+ "0.3.16"
823
808
  ] }),
824
- /* @__PURE__ */ a("p", { className: "peeek__about-desc", children: t.aboutDescription }),
825
- /* @__PURE__ */ a("div", { className: "peeek__about-links", children: r.map((l) => /* @__PURE__ */ y(
826
- "a",
827
- {
828
- className: "peeek__about-link",
829
- href: l.href,
830
- target: "_blank",
831
- rel: "noopener noreferrer",
832
- children: [
833
- /* @__PURE__ */ a("span", { children: l.label }),
834
- /* @__PURE__ */ a("span", { className: "peeek__about-link-arrow", "aria-hidden": "true", children: "›" })
835
- ]
836
- },
837
- l.href
838
- )) })
809
+ /* @__PURE__ */ a("p", { className: "peeek__about-desc", children: t.aboutDescription })
839
810
  ]
840
811
  }
841
812
  ) });
842
813
  }
843
814
  function ht(t) {
844
- const e = tt(t), n = Qe(e.language), r = O(null), { isFullscreen: l, toggle: i } = ot(r), [p, b] = w(!1), d = t.pages !== void 0, c = Ue(
845
- () => d ? at(t.pages, { filename: t.filename, mimeType: t.mimeType }) : null,
815
+ const e = tt(t), n = Qe(e.language), r = O(null), { isFullscreen: l, toggle: c } = ot(r), [p, b] = w(!1), d = t.pages !== void 0, i = Ue(
816
+ () => d ? rt(t.pages, { filename: t.filename, mimeType: t.mimeType }) : null,
846
817
  [d, t.pages, t.filename, t.mimeType]
847
- ), h = rt(d ? null : e.src, e.pollInterval), _ = d ? c : h.manifest, u = d ? c ? "ready" : "loading" : h.state, f = {
818
+ ), h = at(d ? null : e.src, e.pollInterval), _ = d ? i : h.manifest, u = d ? i ? "ready" : "loading" : h.state, f = {
848
819
  "--peeek-accent": e.accentColor
849
820
  };
850
821
  e.background === "transparent" ? f["--peeek-bg"] = "transparent" : e.background === "color" && e.backgroundColor ? f["--peeek-bg"] = e.backgroundColor : e.background === "image" && e.backgroundImage && (f["--peeek-bg"] = `center / cover no-repeat url("${e.backgroundImage}")`);
@@ -857,7 +828,7 @@ function ht(t) {
857
828
  overview: e.pagesOverview,
858
829
  about: e.aboutButton
859
830
  };
860
- return /* @__PURE__ */ y(
831
+ return /* @__PURE__ */ v(
861
832
  "div",
862
833
  {
863
834
  ref: r,
@@ -882,7 +853,7 @@ function ht(t) {
882
853
  autoTransitionInterval: e.autoTransitionInterval,
883
854
  downloadUrl: e.downloadUrl,
884
855
  isFullscreen: l,
885
- onToggleFullscreen: i,
856
+ onToggleFullscreen: c,
886
857
  onAbout: () => b(!0),
887
858
  show: { arrows: e.arrows, thumbnails: e.pagesOverview, fullscreen: e.fullscreen, about: e.aboutButton }
888
859
  }
@@ -901,7 +872,7 @@ function ht(t) {
901
872
  show: s,
902
873
  downloadUrl: e.downloadUrl,
903
874
  isFullscreen: l,
904
- onToggleFullscreen: i,
875
+ onToggleFullscreen: c,
905
876
  onAbout: () => b(!0)
906
877
  }
907
878
  ),
@@ -1 +1 @@
1
- .peeek{--peeek-accent: #6E79D6;--peeek-bg: #0b0b10;--peeek-surface: rgba(255, 255, 255, .06);--peeek-text: #f5f5fa;--peeek-radius: 16px;position:relative;display:flex;flex-direction:column;width:100%;color:var(--peeek-text);background:var(--peeek-bg);border-radius:var(--peeek-radius);overflow:hidden;font-family:ui-sans-serif,system-ui,sans-serif}.peeek__stage{position:relative;display:flex;align-items:center;justify-content:center;flex:1;min-height:24rem;padding:1.75rem 3rem;overflow:hidden;perspective:2000px}.peeek__zoom{display:flex;align-items:center;justify-content:center;width:100%;height:100%;transform-origin:center center}.peeek__zoom--pannable{cursor:grab;touch-action:none}.peeek__zoom--pannable:active{cursor:grabbing}.peeek__zoom--pannable img{pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.peeek__spread{position:relative;display:flex;width:100%;transition:transform .5s cubic-bezier(.6,.05,.3,.95);transform-style:preserve-3d}.peeek__page{position:relative;width:50%;aspect-ratio:var(--peeek-aspect, .707);background:#fff;overflow:hidden}.peeek__page--empty{background:transparent;box-shadow:none}.peeek__page--left{border-top-left-radius:8px;border-bottom-left-radius:8px}.peeek__page--right{border-top-right-radius:8px;border-bottom-right-radius:8px}.peeek__spread:not(.peeek__spread--pair) .peeek__page{border-radius:8px}.peeek__page img{display:block;width:100%;height:100%;object-fit:contain}.peeek__page-btn{all:unset;display:block;width:100%;height:100%;cursor:zoom-in}.peeek--shadows .peeek__spread{box-shadow:0 24px 60px -24px #000000b3}.peeek--shadows.peeek__spread--pair .peeek__page--left{box-shadow:inset -30px 0 36px -22px #0009}.peeek--shadows.peeek__spread--pair .peeek__page--right{box-shadow:inset 30px 0 36px -22px #0009}.peeek--shadows.peeek__spread--pair .peeek__page--left:after,.peeek--shadows.peeek__spread--pair .peeek__page--right:after{content:"";position:absolute;top:0;bottom:0;width:14px;pointer-events:none}.peeek--shadows.peeek__spread--pair .peeek__page--left:after{right:0;background:linear-gradient(to right,#0000,#00000047)}.peeek--shadows.peeek__spread--pair .peeek__page--right:after{left:0;background:linear-gradient(to left,#0000,#00000047)}.peeek__leaf{position:absolute;top:0;width:50%;height:100%;z-index:3;transform-style:preserve-3d;transition:transform .62s cubic-bezier(.55,.06,.3,.98);will-change:transform}.peeek__leaf--fwd{left:50%;transform-origin:left center}.peeek__leaf--back{right:50%;transform-origin:right center}.peeek__leaf-face{position:absolute;top:0;right:0;bottom:0;left:0;backface-visibility:hidden;background:#fff;overflow:hidden}.peeek__leaf-face img{display:block;width:100%;height:100%;object-fit:contain}.peeek__leaf-face--back{transform:rotateY(180deg)}.peeek__leaf-face:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.15;animation:peeek-curl .62s cubic-bezier(.55,.06,.3,.98) forwards;background:linear-gradient(var(--peeek-curl-dir, to right),rgba(0,0,0,.34),rgba(0,0,0,0) 58%,rgba(255,255,255,.05))}.peeek__leaf--fwd .peeek__leaf-face:after{--peeek-curl-dir: to right}.peeek__leaf--back .peeek__leaf-face:after{--peeek-curl-dir: to left}.peeek__leaf-face--back:after{transform:scaleX(-1)}@keyframes peeek-curl{0%{opacity:.15}45%{opacity:1}to{opacity:.55}}.peeek__arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:2;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border:none;border-radius:9999px;background:#00000059;color:#fff;cursor:pointer}.peeek__arrow:disabled{opacity:.3;cursor:default}.peeek__arrow--prev{left:.75rem}.peeek__arrow--next{right:.75rem}.peeek__toolbar{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-top:1px solid rgba(255,255,255,.08);font-size:14px}.peeek__scrubber{flex:1;height:2px;background:#ffffff26;border-radius:9999px;overflow:hidden}.peeek__scrubber-fill{height:100%;background:var(--peeek-accent)}.peeek__btn{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:none;border-radius:8px;background:transparent;color:var(--peeek-text);cursor:pointer}.peeek__btn:disabled{opacity:.3;cursor:default}.peeek__btn--active{color:var(--peeek-accent)}.peeek__thumbs{display:flex;gap:.4rem;overflow-x:auto;padding:.75rem 1rem;border-top:1px solid rgba(255,255,255,.08)}.peeek__thumb-group{flex:0 0 auto;display:flex;gap:2px;position:relative}.peeek__thumb{flex:0 0 auto;width:4rem;height:5rem;padding:0;border:2px solid transparent;border-radius:6px;background:#fff;cursor:pointer;overflow:hidden}.peeek__thumb img{width:100%;height:100%;object-fit:contain}.peeek__thumb--active{border-color:var(--peeek-accent)}.peeek__thumb--flat-right{border-top-right-radius:0;border-bottom-right-radius:0}.peeek__thumb--flat-left{border-top-left-radius:0;border-bottom-left-radius:0}.peeek__branding{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem}.peeek__branding img{height:1.5rem;width:auto}.peeek__state{display:flex;align-items:center;justify-content:center;min-height:24rem;font-size:16px;color:var(--peeek-text)}.peeek[data-skin=minimal] .peeek__toolbar,.peeek[data-skin=minimal] .peeek__thumbs{border-top:none;background:#00000040}.peeek[data-skin=minimal] .peeek__arrow{background:#0003}.peeek[dir=rtl] .peeek__leaf{transform-origin:right center}.peeek__cf{display:flex;flex:1;flex-direction:column;min-height:0}.peeek__cf-header{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-bottom:1px solid rgba(255,255,255,.08);font-size:14px}.peeek__cf-badge{display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.75rem;flex:0 0 auto;border-radius:6px;background:var(--peeek-accent);color:#fff;font-size:13px;font-weight:700}.peeek__cf-meta{display:flex;min-width:0;flex:1;flex-direction:column}.peeek__cf-name{overflow:hidden;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.peeek__cf-count{font-size:14px;opacity:.6}.peeek__cf-indicator{padding:.25rem .75rem;border:1px solid rgba(255,255,255,.1);border-radius:8px;font-family:ui-monospace,monospace;font-size:14px}.peeek__cf-stage{position:relative;display:flex;flex:1;align-items:center;justify-content:center;min-height:20rem;overflow:hidden;perspective:1400px}.peeek__cf-card{position:absolute;display:flex;max-width:55%;align-items:center;justify-content:center;padding:0;border:none;background:transparent;cursor:pointer;transition:transform .3s ease-out,opacity .3s ease-out}.peeek__cf-card--center{max-width:70%}.peeek__cf-card--zoom{cursor:zoom-in}.peeek__cf-card img{max-width:100%;max-height:19rem;border-radius:8px;background:#fff;object-fit:contain;box-shadow:0 18px 40px -12px #0009}.peeek__cf-thumbs{display:flex;gap:.5rem;overflow-x:auto;padding:.75rem 1rem;border-top:1px solid rgba(255,255,255,.08);scrollbar-width:none}.peeek__cf-thumbs::-webkit-scrollbar{display:none}.peeek__cf-thumb{display:flex;flex:0 0 auto;flex-direction:column;align-items:center;gap:.25rem;padding:.25rem;border:2px solid transparent;border-radius:8px;background:transparent;cursor:pointer}.peeek__cf-thumb img{width:3rem;height:4rem;border-radius:4px;background:#fff;object-fit:cover;opacity:.8}.peeek__cf-thumb--active{border-color:var(--peeek-accent);background:#ffffff0f}.peeek__cf-thumb--active img{opacity:1}.peeek__cf-thumb-num{font-family:ui-monospace,monospace;font-size:14px;opacity:.6}.peeek__cf-thumb--active .peeek__cf-thumb-num{color:var(--peeek-accent);opacity:1}.peeek:fullscreen .peeek__cf-card img{max-height:78vh}.peeek:fullscreen .peeek__spread{width:auto;height:100%}.peeek:fullscreen .peeek__page{width:auto;height:100%}.peeek[data-skin=minimal] .peeek__cf-header,.peeek[data-skin=minimal] .peeek__cf-thumbs{border-color:transparent;background:#00000040}.peeek[data-skin=showcase] .peeek__label{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px}.peeek[data-skin=showcase] .peeek__scrubber{height:2px}.peeek[data-skin=showcase] .peeek__scrubber-fill{background:var(--peeek-accent)}.peeek[data-skin=showcase] .peeek__arrow{width:2.5rem;height:2.5rem;border-radius:9999px;background:#0000004d;color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.peeek[data-skin=showcase] .peeek__arrow:hover{background:#00000080}.peeek__thumb-badge{position:absolute;right:2px;bottom:2px;padding:0 4px;border-radius:4px;background:#000000b3;color:#fff;font-size:14px;font-weight:500;pointer-events:none}.peeek--fill-height{height:100%}.peeek--fill-height .peeek__stage{min-height:0}.peeek--fill-height .peeek__spread,.peeek--fill-height .peeek__page{width:auto;height:100%}.peeek[data-layout=double] .peeek__spread:not(.peeek__spread--pair) .peeek__page--right{border-radius:0 8px 8px 0}.peeek[data-layout=double] .peeek__spread:not(.peeek__spread--pair) .peeek__page--left{border-radius:8px 0 0 8px}.peeek[data-layout=double] .peeek__leaf--fwd .peeek__leaf-face--front{border-top-right-radius:8px;border-bottom-right-radius:8px}.peeek[data-layout=double] .peeek__leaf--fwd .peeek__leaf-face--back,.peeek[data-layout=double] .peeek__leaf--back .peeek__leaf-face--front{border-top-left-radius:8px;border-bottom-left-radius:8px}.peeek[data-layout=double] .peeek__leaf--back .peeek__leaf-face--back{border-top-right-radius:8px;border-bottom-right-radius:8px}.peeek[data-layout=single] .peeek__leaf-face{border-radius:8px}.peeek__about-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:#06060c9e;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}.peeek__about{position:relative;width:100%;max-width:360px;box-sizing:border-box;padding:1.75rem 1.5rem 1.25rem;text-align:center;color:var(--peeek-text);background:#16161f;border:1px solid rgba(255,255,255,.1);border-radius:var(--peeek-radius);box-shadow:0 24px 60px #00000080}.peeek__about-close{position:absolute;top:.5rem;right:.5rem;display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:none;border-radius:8px;background:transparent;color:var(--peeek-text);font-size:20px;line-height:1;cursor:pointer}.peeek__about-close:hover{background:#ffffff14}.peeek__about-mark{color:var(--peeek-accent)}.peeek__about-name{margin-top:.5rem;font-size:20px;font-weight:700;letter-spacing:.01em}.peeek__about-tagline{margin-top:.25rem;font-size:14px;color:#f5f5fab3}.peeek__about-version{display:inline-block;margin-top:.75rem;padding:.15rem .6rem;font-size:14px;font-weight:600;color:var(--peeek-accent);background:#6e79d629;border-radius:9999px}.peeek__about-desc{margin:.9rem 0 0;font-size:14px;line-height:1.5;color:#f5f5fad1}.peeek__about-links{margin-top:1.1rem;text-align:left;border-top:1px solid rgba(255,255,255,.08)}.peeek__about-link{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.7rem .25rem;font-size:14px;color:var(--peeek-text);text-decoration:none;border-bottom:1px solid rgba(255,255,255,.08)}.peeek__about-link:hover{color:var(--peeek-accent)}.peeek__about-link-arrow{color:#f5f5fa80;font-size:16px}.peeek__about-link:hover .peeek__about-link-arrow{color:var(--peeek-accent)}
1
+ .peeek{--peeek-accent: #6E79D6;--peeek-bg: #0b0b10;--peeek-surface: rgba(255, 255, 255, .06);--peeek-text: #f5f5fa;--peeek-radius: 16px;position:relative;display:flex;flex-direction:column;width:100%;color:var(--peeek-text);background:var(--peeek-bg);border-radius:var(--peeek-radius);overflow:hidden;font-family:ui-sans-serif,system-ui,sans-serif}.peeek__stage{position:relative;display:flex;align-items:center;justify-content:center;flex:1;min-height:24rem;padding:1.75rem 3rem;overflow:hidden;perspective:2000px}.peeek__zoom{display:flex;align-items:center;justify-content:center;width:100%;height:100%;transform-origin:center center}.peeek__zoom--pannable{cursor:grab;touch-action:none}.peeek__zoom--pannable:active{cursor:grabbing}.peeek__zoom--pannable img{pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.peeek__spread{position:relative;display:flex;width:100%;transition:transform .5s cubic-bezier(.6,.05,.3,.95);transform-style:preserve-3d}.peeek__page{position:relative;width:50%;aspect-ratio:var(--peeek-aspect, .707);background:#fff;overflow:hidden}.peeek__page--empty{background:transparent;box-shadow:none}.peeek__page--left{border-top-left-radius:8px;border-bottom-left-radius:8px}.peeek__page--right{border-top-right-radius:8px;border-bottom-right-radius:8px}.peeek__spread:not(.peeek__spread--pair) .peeek__page{border-radius:8px}.peeek__page img{display:block;width:100%;height:100%;object-fit:contain}.peeek__page-btn{all:unset;display:block;width:100%;height:100%;cursor:zoom-in}.peeek--shadows .peeek__spread{box-shadow:0 24px 60px -24px #000000b3}.peeek--shadows.peeek__spread--pair .peeek__page--left{box-shadow:inset -30px 0 36px -22px #0009}.peeek--shadows.peeek__spread--pair .peeek__page--right{box-shadow:inset 30px 0 36px -22px #0009}.peeek--shadows.peeek__spread--pair .peeek__page--left:after,.peeek--shadows.peeek__spread--pair .peeek__page--right:after{content:"";position:absolute;top:0;bottom:0;width:14px;pointer-events:none}.peeek--shadows.peeek__spread--pair .peeek__page--left:after{right:0;background:linear-gradient(to right,#0000,#00000047)}.peeek--shadows.peeek__spread--pair .peeek__page--right:after{left:0;background:linear-gradient(to left,#0000,#00000047)}.peeek__leaf{position:absolute;top:0;width:50%;height:100%;z-index:3;transform-style:preserve-3d;transition:transform .62s cubic-bezier(.55,.06,.3,.98);will-change:transform}.peeek__leaf--fwd{left:50%;transform-origin:left center}.peeek__leaf--back{right:50%;transform-origin:right center}.peeek__leaf-face{position:absolute;top:0;right:0;bottom:0;left:0;backface-visibility:hidden;background:#fff;overflow:hidden}.peeek__leaf-face img{display:block;width:100%;height:100%;object-fit:contain}.peeek__leaf-face--back{transform:rotateY(180deg)}.peeek__leaf-face:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.15;animation:peeek-curl .62s cubic-bezier(.55,.06,.3,.98) forwards;background:linear-gradient(var(--peeek-curl-dir, to right),rgba(0,0,0,.34),rgba(0,0,0,0) 58%,rgba(255,255,255,.05))}.peeek__leaf--fwd .peeek__leaf-face:after{--peeek-curl-dir: to right}.peeek__leaf--back .peeek__leaf-face:after{--peeek-curl-dir: to left}.peeek__leaf-face--back:after{transform:scaleX(-1)}@keyframes peeek-curl{0%{opacity:.15}45%{opacity:1}to{opacity:.55}}.peeek__arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:2;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border:none;border-radius:9999px;background:#00000059;color:#fff;cursor:pointer}.peeek__arrow:disabled{opacity:.3;cursor:default}.peeek__arrow--prev{left:.75rem}.peeek__arrow--next{right:.75rem}.peeek__toolbar{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-top:1px solid rgba(255,255,255,.08);font-size:14px}.peeek__scrubber{flex:1;height:2px;background:#ffffff26;border-radius:9999px;overflow:hidden}.peeek__scrubber-fill{height:100%;background:var(--peeek-accent)}.peeek__btn{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:none;border-radius:8px;background:transparent;color:var(--peeek-text);cursor:pointer}.peeek__btn:disabled{opacity:.3;cursor:default}.peeek__btn--active{color:var(--peeek-accent)}.peeek__thumbs{display:flex;gap:.4rem;overflow-x:auto;padding:.75rem 1rem;border-top:1px solid rgba(255,255,255,.08)}.peeek__thumb-group{flex:0 0 auto;display:flex;gap:2px;position:relative}.peeek__thumb{flex:0 0 auto;width:4rem;height:5rem;padding:0;border:2px solid transparent;border-radius:6px;background:#fff;cursor:pointer;overflow:hidden}.peeek__thumb img{width:100%;height:100%;object-fit:contain}.peeek__thumb--active{border-color:var(--peeek-accent)}.peeek__thumb--flat-right{border-top-right-radius:0;border-bottom-right-radius:0}.peeek__thumb--flat-left{border-top-left-radius:0;border-bottom-left-radius:0}.peeek__branding{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem}.peeek__branding img{height:1.5rem;width:auto}.peeek__state{display:flex;align-items:center;justify-content:center;min-height:24rem;font-size:16px;color:var(--peeek-text)}.peeek[data-skin=minimal] .peeek__toolbar,.peeek[data-skin=minimal] .peeek__thumbs{border-top:none;background:#00000040}.peeek[data-skin=minimal] .peeek__arrow{background:#0003}.peeek[dir=rtl] .peeek__leaf{transform-origin:right center}.peeek__cf{display:flex;flex:1;flex-direction:column;min-height:0}.peeek__cf-header{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-bottom:1px solid rgba(255,255,255,.08);font-size:14px}.peeek__cf-badge{display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.75rem;flex:0 0 auto;border-radius:6px;background:var(--peeek-accent);color:#fff;font-size:13px;font-weight:700}.peeek__cf-meta{display:flex;min-width:0;flex:1;flex-direction:column}.peeek__cf-name{overflow:hidden;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.peeek__cf-count{font-size:14px;opacity:.6}.peeek__cf-indicator{padding:.25rem .75rem;border:1px solid rgba(255,255,255,.1);border-radius:8px;font-family:ui-monospace,monospace;font-size:14px}.peeek__cf-stage{position:relative;display:flex;flex:1;align-items:center;justify-content:center;min-height:20rem;overflow:hidden;perspective:1400px}.peeek__cf-card{position:absolute;display:flex;max-width:55%;align-items:center;justify-content:center;padding:0;border:none;background:transparent;cursor:pointer;transition:transform .3s ease-out,opacity .3s ease-out}.peeek__cf-card--center{max-width:70%}.peeek__cf-card--zoom{cursor:zoom-in}.peeek__cf-card img{max-width:100%;max-height:19rem;border-radius:8px;background:#fff;object-fit:contain;box-shadow:0 18px 40px -12px #0009}.peeek__cf-thumbs{display:flex;gap:.5rem;overflow-x:auto;padding:.75rem 1rem;border-top:1px solid rgba(255,255,255,.08);scrollbar-width:none}.peeek__cf-thumbs::-webkit-scrollbar{display:none}.peeek__cf-thumb{display:flex;flex:0 0 auto;flex-direction:column;align-items:center;gap:.25rem;padding:.25rem;border:2px solid transparent;border-radius:8px;background:transparent;cursor:pointer}.peeek__cf-thumb img{width:3rem;height:4rem;border-radius:4px;background:#fff;object-fit:cover;opacity:.8}.peeek__cf-thumb--active{border-color:var(--peeek-accent);background:#ffffff0f}.peeek__cf-thumb--active img{opacity:1}.peeek__cf-thumb-num{font-family:ui-monospace,monospace;font-size:14px;opacity:.6}.peeek__cf-thumb--active .peeek__cf-thumb-num{color:var(--peeek-accent);opacity:1}.peeek:fullscreen .peeek__cf-card img{max-height:78vh}.peeek:fullscreen .peeek__spread{width:auto;height:100%}.peeek:fullscreen .peeek__page{width:auto;height:100%}.peeek[data-skin=minimal] .peeek__cf-header,.peeek[data-skin=minimal] .peeek__cf-thumbs{border-color:transparent;background:#00000040}.peeek[data-skin=showcase] .peeek__label{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px}.peeek[data-skin=showcase] .peeek__scrubber{height:2px}.peeek[data-skin=showcase] .peeek__scrubber-fill{background:var(--peeek-accent)}.peeek[data-skin=showcase] .peeek__arrow{width:2.5rem;height:2.5rem;border-radius:9999px;background:#0000004d;color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.peeek[data-skin=showcase] .peeek__arrow:hover{background:#00000080}.peeek__thumb-badge{position:absolute;right:2px;bottom:2px;padding:0 4px;border-radius:4px;background:#000000b3;color:#fff;font-size:14px;font-weight:500;pointer-events:none}.peeek--fill-height{height:100%}.peeek--fill-height .peeek__stage{min-height:0}.peeek--fill-height .peeek__spread,.peeek--fill-height .peeek__page{width:auto;height:100%}.peeek[data-layout=double] .peeek__spread:not(.peeek__spread--pair) .peeek__page--right{border-radius:0 8px 8px 0}.peeek[data-layout=double] .peeek__spread:not(.peeek__spread--pair) .peeek__page--left{border-radius:8px 0 0 8px}.peeek[data-layout=double] .peeek__leaf--fwd .peeek__leaf-face--front{border-top-right-radius:8px;border-bottom-right-radius:8px}.peeek[data-layout=double] .peeek__leaf--fwd .peeek__leaf-face--back,.peeek[data-layout=double] .peeek__leaf--back .peeek__leaf-face--front{border-top-left-radius:8px;border-bottom-left-radius:8px}.peeek[data-layout=double] .peeek__leaf--back .peeek__leaf-face--back{border-top-right-radius:8px;border-bottom-right-radius:8px}.peeek[data-layout=single] .peeek__leaf-face{border-radius:8px}.peeek__about-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;align-items:safe center;justify-content:center;overflow-y:auto;padding:1rem;background:#06060c9e;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}.peeek__about{position:relative;width:100%;max-width:360px;box-sizing:border-box;padding:1.75rem 1.5rem 1.25rem;text-align:center;color:var(--peeek-text);background:#16161f;border:1px solid rgba(255,255,255,.1);border-radius:var(--peeek-radius);box-shadow:0 24px 60px #00000080}.peeek__about-close{position:absolute;top:.5rem;right:.5rem;display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:none;border-radius:8px;background:transparent;color:var(--peeek-text);font-size:20px;line-height:1;cursor:pointer}.peeek__about-close:hover{background:#ffffff14}.peeek__about-mark{display:block;margin-inline:auto;color:var(--peeek-accent)}.peeek__about-name{margin-top:.5rem;font-size:20px;font-weight:700;letter-spacing:.01em}.peeek__about-tagline{margin-top:.25rem;font-size:14px;color:#f5f5fab3}.peeek__about-version{display:inline-block;margin-top:.75rem;padding:.15rem .6rem;font-size:14px;font-weight:600;color:var(--peeek-accent);background:#6e79d629;border-radius:9999px}.peeek__about-desc{margin:.9rem 0 0;font-size:14px;line-height:1.5;color:#f5f5fad1}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peeekpage/viewer",
3
- "version": "0.3.14",
3
+ "version": "0.3.16",
4
4
  "description": "PeeekViewer: embeddable document viewer (flip and coverflow) for peeek.page.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",