@redot-src/glare 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -51
- package/dist/core/animation.d.ts +12 -1
- package/dist/core/dom.d.ts +17 -3
- package/dist/core/glare.d.ts +2 -2
- package/dist/glare.css +1 -1
- package/dist/glare.esm.js +460 -470
- package/dist/glare.esm.js.map +1 -1
- package/dist/glare.js +4 -17
- package/dist/glare.js.map +1 -1
- package/dist/icons.d.ts +0 -1
- package/dist/index.d.ts +1 -1
- package/dist/templates.d.ts +0 -1
- package/dist/types.d.ts +23 -14
- package/package.json +11 -7
- package/dist/modules/share.d.ts +0 -17
package/dist/glare.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const
|
|
1
|
+
const ot = {
|
|
2
2
|
CLOSE: "Close",
|
|
3
3
|
NEXT: "Next",
|
|
4
4
|
PREV: "Previous",
|
|
@@ -13,26 +13,24 @@ const it = {
|
|
|
13
13
|
FULL_SCREEN_EXIT: "Exit full screen",
|
|
14
14
|
THUMBS: "Thumbnails",
|
|
15
15
|
DOWNLOAD: "Download",
|
|
16
|
-
SHARE: "Share",
|
|
17
16
|
MORE: "More options",
|
|
18
|
-
COPY: "Copy link",
|
|
19
17
|
ZOOM: "Zoom",
|
|
20
18
|
ZOOM_OUT: "Zoom out"
|
|
21
19
|
};
|
|
22
|
-
function
|
|
20
|
+
function yt(e) {
|
|
23
21
|
const t = e.lang ?? "en";
|
|
24
|
-
return { ...
|
|
22
|
+
return { ...ot, ...e.i18n?.en, ...e.i18n?.[t] };
|
|
25
23
|
}
|
|
26
|
-
function
|
|
24
|
+
function b(e, t) {
|
|
27
25
|
return e.replace(/\{\{(\w+)\}\}/g, (s, i) => t[i] ?? "");
|
|
28
26
|
}
|
|
29
|
-
function
|
|
27
|
+
function vt(e) {
|
|
30
28
|
return Object.entries(e).map(([t, s]) => `${encodeURIComponent(t)}=${encodeURIComponent(String(s))}`).join("&");
|
|
31
29
|
}
|
|
32
|
-
function
|
|
30
|
+
function xt(e, t) {
|
|
33
31
|
return e.replace(/\$(\d+)/g, (s, i) => t[Number(i)] ?? "");
|
|
34
32
|
}
|
|
35
|
-
const
|
|
33
|
+
const wt = {
|
|
36
34
|
youtube: {
|
|
37
35
|
matcher: /(?:youtube\.com|youtu\.be|youtube-nocookie\.com)\/(?:watch\?(?:.*&)?v=|v\/|u\/\w\/|embed\/|shorts\/)?([\w-]{11})/i,
|
|
38
36
|
type: "embed",
|
|
@@ -50,27 +48,27 @@ const yt = {
|
|
|
50
48
|
matcher: /(?:maps\.)?google\.([a-z]{2,3}(?:\.[a-z]{2})?)\/(?:maps\/(?:place\/[^/]+\/)?@([^/]+)|maps\?q=([^&]+)|maps\/search\/([^/?]+))/i,
|
|
51
49
|
type: "iframe",
|
|
52
50
|
url: (e) => {
|
|
53
|
-
const [, t, s, i,
|
|
51
|
+
const [, t, s, i, n] = e;
|
|
54
52
|
if (s) {
|
|
55
|
-
const [
|
|
56
|
-
return `https://maps.google.${t}/maps?ll=${
|
|
53
|
+
const [r, a, l] = s.split(","), d = l ? Math.floor(parseFloat(l)) : 14;
|
|
54
|
+
return `https://maps.google.${t}/maps?ll=${r},${a}&z=${d}&output=embed`;
|
|
57
55
|
}
|
|
58
|
-
const o = encodeURIComponent(decodeURIComponent(i ||
|
|
56
|
+
const o = encodeURIComponent(decodeURIComponent(i || n || ""));
|
|
59
57
|
return `https://maps.google.${t}/maps?q=${o}&output=embed`;
|
|
60
58
|
}
|
|
61
59
|
}
|
|
62
60
|
};
|
|
63
61
|
function q(e, t, s) {
|
|
64
62
|
if (typeof e == "function") return e(t, s);
|
|
65
|
-
if (typeof e == "string") return
|
|
63
|
+
if (typeof e == "string") return xt(e, t);
|
|
66
64
|
}
|
|
67
|
-
function
|
|
65
|
+
function Et(e, t) {
|
|
68
66
|
for (const s of Object.values(t ?? {})) {
|
|
69
67
|
const i = e.match(s.matcher);
|
|
70
68
|
if (!i) continue;
|
|
71
|
-
let
|
|
72
|
-
return s.params && (
|
|
73
|
-
src:
|
|
69
|
+
let n = q(s.url, i, e) ?? e;
|
|
70
|
+
return s.params && (n += (n.includes("?") ? "&" : "?") + vt(s.params)), {
|
|
71
|
+
src: n,
|
|
74
72
|
type: s.type ?? "iframe",
|
|
75
73
|
thumb: q(s.thumb, i, e)
|
|
76
74
|
};
|
|
@@ -84,14 +82,13 @@ const f = (e) => `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fi
|
|
|
84
82
|
zoomIn: f('<circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/><path d="M11 8v6"/><path d="M8 11h6"/>'),
|
|
85
83
|
zoomOut: f('<circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/><path d="M8 11h6"/>'),
|
|
86
84
|
download: f('<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" x2="12" y1="15" y2="3"/>'),
|
|
87
|
-
share: f('<circle cx="18" cy="5" r="3"/><circle cx="6" cy="12" r="3"/><circle cx="18" cy="19" r="3"/><line x1="8.59" x2="15.42" y1="13.51" y2="17.49"/><line x1="15.41" x2="8.59" y1="6.51" y2="10.49"/>'),
|
|
88
85
|
thumbs: f('<rect width="18" height="18" x="3" y="3" rx="2"/><path d="M3 9h18"/><path d="M9 21V9"/>'),
|
|
89
86
|
play: f('<polygon points="6 3 20 12 6 21 6 3"/>'),
|
|
90
87
|
pause: f('<rect width="4" height="16" x="6" y="4"/><rect width="4" height="16" x="14" y="4"/>'),
|
|
91
88
|
fullscreen: f('<path d="M8 3H5a2 2 0 0 0-2 2v3"/><path d="M21 8V5a2 2 0 0 0-2-2h-3"/><path d="M3 16v3a2 2 0 0 0 2 2h3"/><path d="M16 21h3a2 2 0 0 0 2-2v-3"/>'),
|
|
92
89
|
fullscreenExit: f('<path d="M8 3v3a2 2 0 0 1-2 2H3"/><path d="M21 8h-3a2 2 0 0 1-2-2V3"/><path d="M3 16h3a2 2 0 0 1 2 2v3"/><path d="M16 21v-3a2 2 0 0 1 2-2h3"/>'),
|
|
93
90
|
more: f('<circle cx="5" cy="12" r="1" fill="currentColor" stroke="none"/><circle cx="12" cy="12" r="1" fill="currentColor" stroke="none"/><circle cx="19" cy="12" r="1" fill="currentColor" stroke="none"/>')
|
|
94
|
-
}, v = (e, t, s, i = "") => `<button type="button" class="glare-button glare-button--${e}" data-glare-${e} title="{{${t}}}" aria-label="{{${t}}}"${i}>${s}</button>`,
|
|
91
|
+
}, v = (e, t, s, i = "") => `<button type="button" class="glare-button glare-button--${e}" data-glare-${e} title="{{${t}}}" aria-label="{{${t}}}"${i}>${s}</button>`, Tt = `
|
|
95
92
|
<div class="glare-container" role="dialog" aria-modal="true" tabindex="-1">
|
|
96
93
|
<div class="glare-bg"></div>
|
|
97
94
|
<div class="glare-progress" hidden></div>
|
|
@@ -106,38 +103,25 @@ const f = (e) => `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fi
|
|
|
106
103
|
<div class="glare-stage"></div>
|
|
107
104
|
<div class="glare-caption"></div>
|
|
108
105
|
</div>
|
|
109
|
-
</div>`,
|
|
106
|
+
</div>`, St = {
|
|
110
107
|
zoom: v("zoom", "ZOOM", u.zoomIn),
|
|
111
108
|
slideshow: v("slideshow", "PLAY_START", u.play),
|
|
112
109
|
thumbs: v("thumbs", "THUMBS", u.thumbs, ' aria-expanded="false"'),
|
|
113
|
-
share: v("share", "SHARE", u.share),
|
|
114
110
|
fullscreen: v("fullscreen", "FULL_SCREEN", u.fullscreen),
|
|
115
111
|
more: v("more", "MORE", u.more, ' aria-expanded="false" aria-haspopup="true"'),
|
|
116
112
|
close: v("close", "CLOSE", u.close),
|
|
117
113
|
download: `<a class="glare-button glare-button--download" data-glare-download download target="_blank" rel="noopener" title="{{DOWNLOAD}}" aria-label="{{DOWNLOAD}}">${u.download}</a>`,
|
|
118
114
|
smallBtn: `<button type="button" class="glare-button glare-close-small" data-glare-close title="{{CLOSE}}" aria-label="{{CLOSE}}">${u.close}</button>`
|
|
119
|
-
},
|
|
120
|
-
<div class="glare-share" role="dialog" aria-label="{{SHARE}}">
|
|
121
|
-
<div class="glare-share-head">
|
|
122
|
-
<h4 class="glare-share-title">{{SHARE}}</h4>
|
|
123
|
-
<button type="button" class="glare-button glare-share-close" data-glare-share-close title="{{CLOSE}}" aria-label="{{CLOSE}}">${u.close}</button>
|
|
124
|
-
</div>
|
|
125
|
-
<p><a class="glare-share-link" href="{{url_facebook}}" target="_blank" rel="noopener">Facebook</a></p>
|
|
126
|
-
<p><a class="glare-share-link" href="{{url_twitter}}" target="_blank" rel="noopener">X / Twitter</a></p>
|
|
127
|
-
<p><a class="glare-share-link" href="{{url_pinterest}}" target="_blank" rel="noopener">Pinterest</a></p>
|
|
128
|
-
<div class="glare-share-row">
|
|
129
|
-
<input class="glare-share-input" type="text" value="{{url_direct}}" readonly />
|
|
130
|
-
<button type="button" class="glare-share-copy" data-glare-share-copy>{{COPY}}</button>
|
|
131
|
-
</div>
|
|
132
|
-
</div>`, rt = {
|
|
115
|
+
}, Lt = '<div class="glare-spinner" role="status" aria-label="{{LOADING}}"></div>', Mt = '<div class="glare-error"><p>{{ERROR}}</p></div>', Ct = '<video class="glare-video" controls playsinline controlsList="nodownload" poster="{{poster}}"><source src="{{src}}" type="{{format}}"/>{{VIDEO_UNSUPPORTED}}</video>', $t = '<iframe class="glare-iframe"></iframe>', rt = {
|
|
133
116
|
autoStart: !1,
|
|
134
|
-
axis: "x"
|
|
135
|
-
|
|
117
|
+
axis: "x",
|
|
118
|
+
fit: "cover"
|
|
119
|
+
}, _ = {
|
|
136
120
|
autoStart: !1,
|
|
137
121
|
speed: 3e3
|
|
138
|
-
},
|
|
122
|
+
}, at = {
|
|
139
123
|
autoStart: !1
|
|
140
|
-
},
|
|
124
|
+
}, lt = {
|
|
141
125
|
closeExisting: !1,
|
|
142
126
|
loop: !1,
|
|
143
127
|
keyboard: !0,
|
|
@@ -156,9 +140,10 @@ const f = (e) => `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fi
|
|
|
156
140
|
infobar: !0,
|
|
157
141
|
toolbar: "auto",
|
|
158
142
|
smallBtn: "auto",
|
|
159
|
-
buttons: ["zoom", "slideshow", "thumbs", "
|
|
143
|
+
buttons: ["zoom", "slideshow", "thumbs", "download", "fullscreen", "close"],
|
|
160
144
|
animationEffect: "zoom",
|
|
161
145
|
animationDuration: 366,
|
|
146
|
+
anchor: "trigger",
|
|
162
147
|
zoomOpacity: !0,
|
|
163
148
|
transitionEffect: "fade",
|
|
164
149
|
transitionDuration: 366,
|
|
@@ -176,66 +161,65 @@ const f = (e) => `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fi
|
|
|
176
161
|
dblclickSlide: (e) => e.type === "image" ? "zoom" : !1
|
|
177
162
|
},
|
|
178
163
|
image: { preload: !1 },
|
|
179
|
-
video: { tpl:
|
|
164
|
+
video: { tpl: Ct, format: "", autoStart: !0 },
|
|
180
165
|
iframe: {
|
|
181
166
|
preload: !0,
|
|
182
167
|
css: {},
|
|
183
168
|
attr: { allowfullscreen: "true", allow: "autoplay; fullscreen; picture-in-picture" },
|
|
184
|
-
tpl:
|
|
169
|
+
tpl: $t
|
|
185
170
|
},
|
|
186
171
|
ajax: { settings: { headers: { "X-Requested-With": "XMLHttpRequest" } } },
|
|
187
|
-
media:
|
|
172
|
+
media: wt,
|
|
188
173
|
hash: !0,
|
|
189
|
-
slideshow:
|
|
174
|
+
slideshow: _,
|
|
190
175
|
thumbs: rt,
|
|
191
|
-
fullscreen:
|
|
192
|
-
share: !0,
|
|
176
|
+
fullscreen: at,
|
|
193
177
|
lang: "en",
|
|
194
|
-
i18n: { en:
|
|
195
|
-
baseTpl:
|
|
196
|
-
btnTpl:
|
|
197
|
-
spinnerTpl:
|
|
198
|
-
errorTpl:
|
|
199
|
-
},
|
|
200
|
-
function
|
|
201
|
-
return e ?
|
|
202
|
-
}
|
|
203
|
-
function
|
|
178
|
+
i18n: { en: ot },
|
|
179
|
+
baseTpl: Tt,
|
|
180
|
+
btnTpl: St,
|
|
181
|
+
spinnerTpl: Lt,
|
|
182
|
+
errorTpl: Mt
|
|
183
|
+
}, Ot = /\.(avif|bmp|gif|jpe?g|png|svg|webp|ico)(\?.*)?$/i, It = /\.(mp4|webm|ogg|ogv|mov|m4v)(\?.*)?$/i, At = /\.pdf(\?.*)?$/i, Dt = /^(#[\w-]+|\.[\w-]+)$/;
|
|
184
|
+
function kt(e, t = "image") {
|
|
185
|
+
return e ? Dt.test(e) ? "inline" : Ot.test(e) ? "image" : It.test(e) ? "video" : At.test(e) ? "iframe" : t : "html";
|
|
186
|
+
}
|
|
187
|
+
function Rt(e) {
|
|
204
188
|
const t = e.match(/\.(\w+)(?:\?|$)/)?.[1]?.toLowerCase();
|
|
205
189
|
return t ? `video/${t === "ogv" ? "ogg" : t}` : "video/mp4";
|
|
206
190
|
}
|
|
207
|
-
function
|
|
191
|
+
function ct(e, t, s) {
|
|
208
192
|
const i = typeof e == "string" ? { src: e } : { ...e };
|
|
209
|
-
let
|
|
210
|
-
const a =
|
|
211
|
-
return a && (
|
|
193
|
+
let n = i.src ?? "", o = i.type, r = i.thumb;
|
|
194
|
+
const a = n ? Et(n, s.media) : null;
|
|
195
|
+
return a && (n = a.src ?? n, o ??= a.type, r ??= a.thumb), o || (o = i.html || i.content ? "html" : kt(n, s.defaultType)), {
|
|
212
196
|
...i,
|
|
213
197
|
index: t,
|
|
214
|
-
src:
|
|
198
|
+
src: n,
|
|
215
199
|
type: o,
|
|
216
|
-
thumb:
|
|
200
|
+
thumb: r,
|
|
217
201
|
caption: i.caption ?? i.title ?? "",
|
|
218
202
|
isLoaded: !1,
|
|
219
203
|
hasError: !1
|
|
220
204
|
};
|
|
221
205
|
}
|
|
222
|
-
const
|
|
223
|
-
function
|
|
206
|
+
const p = (e, t) => e.getAttribute(t) || void 0;
|
|
207
|
+
function Ft(e, t) {
|
|
224
208
|
return e.map((s, i) => {
|
|
225
|
-
const
|
|
226
|
-
return
|
|
209
|
+
const n = s.querySelector("img"), o = p(s, "data-caption") ?? p(s, "title") ?? "";
|
|
210
|
+
return ct(
|
|
227
211
|
{
|
|
228
|
-
src:
|
|
229
|
-
type:
|
|
212
|
+
src: p(s, "data-src") ?? p(s, "href") ?? "",
|
|
213
|
+
type: p(s, "data-type"),
|
|
230
214
|
caption: o,
|
|
231
|
-
alt:
|
|
232
|
-
thumb:
|
|
233
|
-
width:
|
|
234
|
-
height:
|
|
235
|
-
ratio:
|
|
236
|
-
poster:
|
|
237
|
-
downloadSrc:
|
|
238
|
-
html:
|
|
215
|
+
alt: n?.getAttribute("alt") || o,
|
|
216
|
+
thumb: p(s, "data-thumb") ?? n?.getAttribute("src") ?? void 0,
|
|
217
|
+
width: p(s, "data-width"),
|
|
218
|
+
height: p(s, "data-height"),
|
|
219
|
+
ratio: p(s, "data-ratio"),
|
|
220
|
+
poster: p(s, "data-poster"),
|
|
221
|
+
downloadSrc: p(s, "data-download-src"),
|
|
222
|
+
html: p(s, "data-html"),
|
|
239
223
|
$trigger: s
|
|
240
224
|
},
|
|
241
225
|
i,
|
|
@@ -243,8 +227,8 @@ function Dt(e, t) {
|
|
|
243
227
|
);
|
|
244
228
|
});
|
|
245
229
|
}
|
|
246
|
-
function
|
|
247
|
-
return e.length && e[0] instanceof HTMLElement ?
|
|
230
|
+
function Ht(e, t) {
|
|
231
|
+
return e.length && e[0] instanceof HTMLElement ? Ft(e, t) : e.map((s, i) => ct(s, i, t));
|
|
248
232
|
}
|
|
249
233
|
function c(e, t = document) {
|
|
250
234
|
return t.querySelector(e);
|
|
@@ -252,179 +236,212 @@ function c(e, t = document) {
|
|
|
252
236
|
function $(e, t = document) {
|
|
253
237
|
return Array.from(t.querySelectorAll(e));
|
|
254
238
|
}
|
|
255
|
-
function
|
|
239
|
+
function m(e, t = "", s = "") {
|
|
256
240
|
const i = document.createElement(e);
|
|
257
241
|
return t && (i.className = t), s && (i.innerHTML = s), i;
|
|
258
242
|
}
|
|
259
|
-
function
|
|
260
|
-
return
|
|
243
|
+
function Pt(e) {
|
|
244
|
+
return m("div", "", e.trim()).firstElementChild;
|
|
261
245
|
}
|
|
262
|
-
function
|
|
246
|
+
function N(e) {
|
|
263
247
|
return /[<&]/.test(e) ? new DOMParser().parseFromString(e, "text/html").body.textContent?.trim() ?? "" : e.trim();
|
|
264
248
|
}
|
|
265
|
-
function
|
|
249
|
+
function ht(e, t = document) {
|
|
266
250
|
return e ? typeof e != "string" ? e : c(e, t) ?? c(e) : null;
|
|
267
251
|
}
|
|
268
|
-
function
|
|
252
|
+
function j(e) {
|
|
269
253
|
return typeof e == "number" ? `${e}px` : e;
|
|
270
254
|
}
|
|
271
255
|
function h(e, t, s, i) {
|
|
272
256
|
return e.addEventListener(t, s, i), () => e.removeEventListener(t, s, i);
|
|
273
257
|
}
|
|
274
|
-
function
|
|
258
|
+
function ut(e) {
|
|
275
259
|
requestAnimationFrame(() => requestAnimationFrame(e));
|
|
276
260
|
}
|
|
277
|
-
function
|
|
261
|
+
function zt(e, t, s) {
|
|
278
262
|
let i = !1;
|
|
279
|
-
const
|
|
280
|
-
i || (i = !0, clearTimeout(
|
|
263
|
+
const n = () => {
|
|
264
|
+
i || (i = !0, clearTimeout(r), e.removeEventListener("transitionend", o), s());
|
|
281
265
|
}, o = (a) => {
|
|
282
|
-
a.target === e &&
|
|
266
|
+
a.target === e && n();
|
|
283
267
|
};
|
|
284
268
|
e.addEventListener("transitionend", o);
|
|
285
|
-
const
|
|
269
|
+
const r = setTimeout(n, t + 50);
|
|
286
270
|
}
|
|
287
|
-
function
|
|
271
|
+
function _t() {
|
|
288
272
|
return navigator.maxTouchPoints > 0 && window.matchMedia("(pointer: coarse)").matches;
|
|
289
273
|
}
|
|
290
|
-
function
|
|
274
|
+
function dt() {
|
|
291
275
|
return window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
292
276
|
}
|
|
293
|
-
function
|
|
277
|
+
function ft() {
|
|
294
278
|
const e = document;
|
|
295
279
|
return !!(e.fullscreenEnabled ?? e.webkitFullscreenEnabled);
|
|
296
280
|
}
|
|
297
|
-
const
|
|
298
|
-
function
|
|
281
|
+
const W = "glare-lock";
|
|
282
|
+
function U(e) {
|
|
299
283
|
const t = document.documentElement;
|
|
300
284
|
if (e) {
|
|
301
285
|
const s = window.innerWidth - t.clientWidth;
|
|
302
|
-
t.classList.add(
|
|
286
|
+
t.classList.add(W), s > 0 && (t.style.marginRight = `${s}px`);
|
|
303
287
|
} else
|
|
304
|
-
t.classList.remove(
|
|
288
|
+
t.classList.remove(W), t.style.marginRight = "";
|
|
305
289
|
}
|
|
306
|
-
const
|
|
307
|
-
function
|
|
308
|
-
const
|
|
309
|
-
|
|
310
|
-
const o = c(".glare-stage",
|
|
290
|
+
const T = "glare-hidden";
|
|
291
|
+
function Nt(e, t, s, i) {
|
|
292
|
+
const n = Pt(b(e.baseTpl, t));
|
|
293
|
+
n.dataset.glareId = String(s), e.baseClass && n.classList.add(e.baseClass), e.modal && n.classList.add("glare-is-modal");
|
|
294
|
+
const o = c(".glare-stage", n);
|
|
311
295
|
if (!o) throw new Error("baseTpl must contain a .glare-stage element");
|
|
312
|
-
const
|
|
313
|
-
container:
|
|
314
|
-
bg: c(".glare-bg",
|
|
315
|
-
inner: c(".glare-inner",
|
|
296
|
+
const r = {
|
|
297
|
+
container: n,
|
|
298
|
+
bg: c(".glare-bg", n),
|
|
299
|
+
inner: c(".glare-inner", n),
|
|
316
300
|
stage: o,
|
|
317
|
-
caption: c(".glare-caption",
|
|
318
|
-
toolbar: c(".glare-toolbar",
|
|
319
|
-
infobar: c(".glare-infobar",
|
|
320
|
-
navigation: c(".glare-navigation",
|
|
301
|
+
caption: c(".glare-caption", n),
|
|
302
|
+
toolbar: c(".glare-toolbar", n),
|
|
303
|
+
infobar: c(".glare-infobar", n),
|
|
304
|
+
navigation: c(".glare-navigation", n)
|
|
321
305
|
}, a = i < 2;
|
|
322
|
-
return
|
|
306
|
+
return r.navigation?.classList.toggle(T, !e.arrows || a), r.infobar?.classList.toggle(T, !e.infobar || a), r.toolbar && Zt(r.toolbar, e, t, a), r;
|
|
323
307
|
}
|
|
324
|
-
function
|
|
308
|
+
function Zt(e, t, s, i) {
|
|
325
309
|
if (t.toolbar === !1) {
|
|
326
|
-
e.classList.add(
|
|
310
|
+
e.classList.add(T);
|
|
327
311
|
return;
|
|
328
312
|
}
|
|
329
|
-
const
|
|
330
|
-
|
|
313
|
+
const n = m("div", "glare-toolbar-menu");
|
|
314
|
+
n.id = `glare-toolbar-menu-${e.closest(".glare-container")?.dataset.glareId ?? ""}`;
|
|
331
315
|
for (const o of t.buttons) {
|
|
332
|
-
if (
|
|
333
|
-
|
|
334
|
-
|
|
316
|
+
if (typeof o != "string") {
|
|
317
|
+
n.appendChild(Bt(o));
|
|
318
|
+
continue;
|
|
319
|
+
}
|
|
320
|
+
if (i && (o === "thumbs" || o === "slideshow") || o === "fullscreen" && !ft() || o === "more" || o === "close") continue;
|
|
321
|
+
const r = t.btnTpl[o];
|
|
322
|
+
r && n.insertAdjacentHTML("beforeend", b(r, s));
|
|
335
323
|
}
|
|
336
|
-
if (
|
|
337
|
-
e.appendChild(
|
|
324
|
+
if (n.childElementCount) {
|
|
325
|
+
e.appendChild(n);
|
|
338
326
|
const o = t.btnTpl.more;
|
|
339
|
-
o && (e.insertAdjacentHTML("beforeend",
|
|
327
|
+
o && (e.insertAdjacentHTML("beforeend", b(o, s)), e.querySelector("[data-glare-more]")?.setAttribute("aria-controls", n.id));
|
|
340
328
|
}
|
|
341
329
|
if (t.buttons.includes("close")) {
|
|
342
330
|
const o = t.btnTpl.close;
|
|
343
|
-
o && e.insertAdjacentHTML("beforeend",
|
|
331
|
+
o && e.insertAdjacentHTML("beforeend", b(o, s));
|
|
344
332
|
}
|
|
345
333
|
}
|
|
346
|
-
function
|
|
347
|
-
const i =
|
|
348
|
-
|
|
349
|
-
const r = g("div", "glare-content");
|
|
350
|
-
return i.appendChild(r), e.appendChild(i), t.$slide = i, t.$content = r, i;
|
|
334
|
+
function Bt({ name: e, label: t, icon: s }) {
|
|
335
|
+
const i = m("button", `glare-button glare-button--${e}`, s);
|
|
336
|
+
return i.type = "button", i.title = t, i.dataset.glareCustom = e, i.setAttribute("aria-label", t), i;
|
|
351
337
|
}
|
|
352
|
-
function
|
|
353
|
-
|
|
338
|
+
function qt(e, t) {
|
|
339
|
+
let s = 0;
|
|
340
|
+
for (let i = e; i instanceof HTMLElement && i !== t; i = i.offsetParent)
|
|
341
|
+
s += i.offsetTop;
|
|
342
|
+
return s;
|
|
354
343
|
}
|
|
355
|
-
function
|
|
356
|
-
|
|
357
|
-
|
|
344
|
+
function jt({ container: e, caption: t }) {
|
|
345
|
+
let s = null;
|
|
346
|
+
const i = () => {
|
|
347
|
+
if (!t) return;
|
|
348
|
+
e.style.setProperty("--glare-caption-inset", `${t.offsetHeight}px`);
|
|
349
|
+
const o = s && c(".glare-content", s);
|
|
350
|
+
o && Object.assign(t.style, { top: `${qt(o, t.offsetParent) + o.offsetHeight}px`, bottom: "auto" });
|
|
351
|
+
}, n = new ResizeObserver(i);
|
|
352
|
+
return t && n.observe(t), i(), {
|
|
353
|
+
follow(o) {
|
|
354
|
+
if (s)
|
|
355
|
+
for (const r of [s, c(".glare-content", s)]) r && n.unobserve(r);
|
|
356
|
+
s = o;
|
|
357
|
+
for (const r of [o, c(".glare-content", o)]) r && n.observe(r);
|
|
358
|
+
i();
|
|
359
|
+
},
|
|
360
|
+
destroy: () => n.disconnect()
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
function Wt(e, t, s) {
|
|
364
|
+
const i = m("div", `glare-slide glare-slide--${t.type}`);
|
|
365
|
+
s.slideClass && i.classList.add(s.slideClass);
|
|
366
|
+
const n = m("div", "glare-content");
|
|
367
|
+
return i.appendChild(n), e.appendChild(i), t.$slide = i, t.$content = n, i;
|
|
358
368
|
}
|
|
359
369
|
function Ut(e, t, s) {
|
|
360
|
-
e.
|
|
370
|
+
e.style.setProperty("--glare-direction", String(s)), e.classList.add(t ? "glare-slide--opening" : "glare-slide--in"), t && (e.style.transition = "none"), e.offsetWidth, e.classList.add("glare-slide--current"), t && (e.offsetWidth, e.style.transition = "");
|
|
371
|
+
}
|
|
372
|
+
function Xt(e, t, s, i) {
|
|
373
|
+
for (const n of $(".glare-slide", e))
|
|
374
|
+
n !== t && (n.classList.contains("glare-slide--out") || n.style.setProperty("--glare-direction", String(i)), n.classList.remove("glare-slide--current", "glare-slide--in", "glare-slide--opening"), n.classList.add("glare-slide--out"), setTimeout(() => n.remove(), s));
|
|
361
375
|
}
|
|
362
|
-
function
|
|
363
|
-
e.
|
|
376
|
+
function Gt(e, t, s) {
|
|
377
|
+
e.insertAdjacentHTML("beforeend", b(t.btnTpl.smallBtn ?? "", s));
|
|
378
|
+
}
|
|
379
|
+
function Vt(e, t, s) {
|
|
380
|
+
e.querySelector(":scope > .glare-spinner") || e.insertAdjacentHTML("beforeend", b(t.spinnerTpl, s));
|
|
364
381
|
}
|
|
365
|
-
function
|
|
382
|
+
function Yt(e) {
|
|
366
383
|
e.querySelector(":scope > .glare-spinner")?.remove();
|
|
367
384
|
}
|
|
368
|
-
function
|
|
369
|
-
e.hasError = !0, e.error = t, e.$content && (e.$content.className = "glare-content glare-content--error", e.$content.innerHTML =
|
|
385
|
+
function Kt(e, t, s, i) {
|
|
386
|
+
e.hasError = !0, e.error = t, e.$content && (e.$content.className = "glare-content glare-content--error", e.$content.innerHTML = b(s.errorTpl, i));
|
|
370
387
|
}
|
|
371
|
-
function
|
|
388
|
+
function pt(e, t) {
|
|
372
389
|
return typeof e.toolbar == "boolean" ? e.toolbar : t.type === "image";
|
|
373
390
|
}
|
|
374
|
-
function
|
|
375
|
-
return typeof e.smallBtn == "boolean" ? e.smallBtn : !
|
|
391
|
+
function Qt(e, t) {
|
|
392
|
+
return typeof e.smallBtn == "boolean" ? e.smallBtn : !pt(e, t);
|
|
376
393
|
}
|
|
377
|
-
function
|
|
378
|
-
const { container:
|
|
379
|
-
|
|
394
|
+
function Jt(e, t, s, i, n, o) {
|
|
395
|
+
const { container: r, toolbar: a, infobar: l } = e;
|
|
396
|
+
re(r, i.type), a && te(a, t, i), ee(r, i), l && se(l, i.index, n), e.caption && ie(e.caption, o), ne(r, t, i.index, n), oe(r, s, i, n);
|
|
380
397
|
}
|
|
381
|
-
function
|
|
398
|
+
function te(e, t, s) {
|
|
382
399
|
if (t.toolbar === !1) return;
|
|
383
400
|
e.classList.remove("glare-toolbar--expanded"), e.querySelector("[data-glare-more]")?.setAttribute("aria-expanded", "false");
|
|
384
|
-
const i =
|
|
385
|
-
if (e.classList.toggle(
|
|
386
|
-
const
|
|
387
|
-
c("[data-glare-zoom]", e)?.classList.toggle(
|
|
401
|
+
const i = pt(t, s);
|
|
402
|
+
if (e.classList.toggle(T, !i), !i) return;
|
|
403
|
+
const n = s.type === "image";
|
|
404
|
+
c("[data-glare-zoom]", e)?.classList.toggle(T, !n);
|
|
388
405
|
}
|
|
389
|
-
function
|
|
406
|
+
function ee(e, t) {
|
|
390
407
|
const s = e.querySelector("[data-glare-download]");
|
|
391
408
|
if (!s) return;
|
|
392
409
|
const i = t.downloadSrc || (t.type === "image" ? t.src : "");
|
|
393
|
-
s.classList.toggle(
|
|
410
|
+
s.classList.toggle(T, !i), i && (s.href = i);
|
|
394
411
|
}
|
|
395
|
-
function
|
|
412
|
+
function se(e, t, s) {
|
|
396
413
|
const i = c(".glare-infobar-index", e);
|
|
397
414
|
i && (i.textContent = `${t + 1} / ${s}`);
|
|
398
415
|
}
|
|
399
|
-
function
|
|
400
|
-
e.innerHTML = t, e.classList.toggle(
|
|
416
|
+
function ie(e, t) {
|
|
417
|
+
e.innerHTML = t, e.classList.toggle(T, !t);
|
|
401
418
|
}
|
|
402
|
-
function
|
|
403
|
-
const
|
|
404
|
-
|
|
419
|
+
function ne(e, t, s, i) {
|
|
420
|
+
const n = !t.loop && s === 0, o = !t.loop && s === i - 1;
|
|
421
|
+
X(c("[data-glare-prev]", e), n), X(c("[data-glare-next]", e), o);
|
|
405
422
|
}
|
|
406
|
-
function
|
|
423
|
+
function X(e, t) {
|
|
407
424
|
e && (e.classList.toggle("glare-is-disabled", t), e.setAttribute("aria-disabled", String(t)));
|
|
408
425
|
}
|
|
409
|
-
function
|
|
410
|
-
const
|
|
426
|
+
function oe(e, t, s, i) {
|
|
427
|
+
const n = N(s.caption) || s.alt || t.LIGHTBOX, o = i > 1 ? `${n} (${s.index + 1} of ${i})` : n;
|
|
411
428
|
e.setAttribute("aria-label", o);
|
|
412
|
-
const
|
|
413
|
-
|
|
429
|
+
const r = c(".glare-live", e);
|
|
430
|
+
r && (r.textContent = o);
|
|
414
431
|
}
|
|
415
|
-
function
|
|
432
|
+
function re(e, t) {
|
|
416
433
|
const s = e.dataset.type;
|
|
417
434
|
s && e.classList.remove(`glare-type-${s}`), e.dataset.type = t, e.classList.add(`glare-type-${t}`);
|
|
418
435
|
}
|
|
419
|
-
function
|
|
436
|
+
function ae(e, t, s, i) {
|
|
420
437
|
e.classList.toggle("glare-can-zoom-out", s), e.classList.toggle("glare-can-zoom-in", !s && i);
|
|
421
|
-
const
|
|
422
|
-
!
|
|
438
|
+
const n = c("[data-glare-zoom]", e), o = s ? "out" : "in";
|
|
439
|
+
!n || n.dataset.state === o || (n.dataset.state = o, Z(n, s, s ? t.ZOOM_OUT : t.ZOOM, s ? u.zoomOut : u.zoomIn));
|
|
423
440
|
}
|
|
424
|
-
function
|
|
441
|
+
function Z(e, t, s, i) {
|
|
425
442
|
e.setAttribute("title", s), e.setAttribute("aria-label", s), e.innerHTML = i, e.classList.toggle("glare-is-active", t);
|
|
426
443
|
}
|
|
427
|
-
class
|
|
444
|
+
class le {
|
|
428
445
|
constructor(t, s, i) {
|
|
429
446
|
this.glare = t, this.container = s, this.offs = [
|
|
430
447
|
h(document, "fullscreenchange", () => this.sync()),
|
|
@@ -456,7 +473,7 @@ class ie {
|
|
|
456
473
|
const s = c("[data-glare-fullscreen]", this.container);
|
|
457
474
|
if (!s) return;
|
|
458
475
|
const { dict: i } = this.glare;
|
|
459
|
-
|
|
476
|
+
Z(
|
|
460
477
|
s,
|
|
461
478
|
t,
|
|
462
479
|
t ? i.FULL_SCREEN_EXIT : i.FULL_SCREEN,
|
|
@@ -464,7 +481,7 @@ class ie {
|
|
|
464
481
|
);
|
|
465
482
|
}
|
|
466
483
|
}
|
|
467
|
-
function
|
|
484
|
+
function G(e) {
|
|
468
485
|
if (typeof e != "object" || e === null) return !1;
|
|
469
486
|
const t = Object.getPrototypeOf(e);
|
|
470
487
|
return t === Object.prototype || t === null;
|
|
@@ -473,23 +490,23 @@ function R(...e) {
|
|
|
473
490
|
const t = {};
|
|
474
491
|
for (const s of e)
|
|
475
492
|
if (s)
|
|
476
|
-
for (const [i,
|
|
477
|
-
if (
|
|
493
|
+
for (const [i, n] of Object.entries(s)) {
|
|
494
|
+
if (n === void 0) continue;
|
|
478
495
|
const o = t[i];
|
|
479
|
-
t[i] =
|
|
496
|
+
t[i] = G(n) ? R(G(o) ? o : {}, n) : n;
|
|
480
497
|
}
|
|
481
498
|
return t;
|
|
482
499
|
}
|
|
483
|
-
function
|
|
500
|
+
function w(e, t, s) {
|
|
484
501
|
return Math.min(s, Math.max(t, e));
|
|
485
502
|
}
|
|
486
|
-
const
|
|
487
|
-
class
|
|
503
|
+
const S = 1, F = 5, ce = 1.01;
|
|
504
|
+
class he {
|
|
488
505
|
constructor(t) {
|
|
489
|
-
this.target = t, this.scale =
|
|
506
|
+
this.target = t, this.scale = S, this.x = 0, this.y = 0;
|
|
490
507
|
}
|
|
491
508
|
get isZoomed() {
|
|
492
|
-
return this.scale >
|
|
509
|
+
return this.scale > ce;
|
|
493
510
|
}
|
|
494
511
|
get state() {
|
|
495
512
|
return { scale: this.scale, x: this.x, y: this.y };
|
|
@@ -501,37 +518,37 @@ class oe {
|
|
|
501
518
|
const s = t.getBoundingClientRect();
|
|
502
519
|
return { x: s.left + s.width / 2 - this.x, y: s.top + s.height / 2 - this.y };
|
|
503
520
|
}
|
|
504
|
-
apply(t, s, i,
|
|
521
|
+
apply(t, s, i, n = 0) {
|
|
505
522
|
const o = this.target.image();
|
|
506
523
|
if (!o) return;
|
|
507
|
-
this.scale =
|
|
508
|
-
const
|
|
509
|
-
this.x =
|
|
524
|
+
this.scale = w(t, S, F);
|
|
525
|
+
const r = this.isZoomed ? this.bounded(s, i) : { x: 0, y: 0 };
|
|
526
|
+
this.x = r.x, this.y = r.y, o.style.transitionDuration = `${n}ms`, o.style.transform = `translate3d(${this.x}px, ${this.y}px, 0) scale(${this.scale})`, this.target.onChange(this.isZoomed);
|
|
510
527
|
}
|
|
511
528
|
toFit(t = 300) {
|
|
512
|
-
this.apply(
|
|
529
|
+
this.apply(S, 0, 0, t);
|
|
513
530
|
}
|
|
514
531
|
/** Zooms to the image's natural size (at least 1.5x), keeping `focus` under the pointer. */
|
|
515
532
|
toActual(t, s = 300) {
|
|
516
|
-
const i = this.target.image(),
|
|
517
|
-
if (!i || !
|
|
518
|
-
const o = i.naturalWidth / Math.max(i.offsetWidth, 1),
|
|
519
|
-
this.apply(
|
|
533
|
+
const i = this.target.image(), n = this.center();
|
|
534
|
+
if (!i || !n) return;
|
|
535
|
+
const o = i.naturalWidth / Math.max(i.offsetWidth, 1), r = w(Math.max(o, 1.5), S, F), a = t?.x ?? n.x, l = t?.y ?? n.y;
|
|
536
|
+
this.apply(r, (n.x - a) * (r - 1), (n.y - l) * (r - 1), s);
|
|
520
537
|
}
|
|
521
538
|
reset() {
|
|
522
539
|
const t = this.target.image();
|
|
523
|
-
t && (t.style.transform = "", t.style.transitionDuration = ""), this.scale =
|
|
540
|
+
t && (t.style.transform = "", t.style.transitionDuration = ""), this.scale = S, this.x = 0, this.y = 0, this.target.onChange(!1);
|
|
524
541
|
}
|
|
525
542
|
/** Keeps the scaled image from being dragged fully out of the stage. */
|
|
526
543
|
bounded(t, s) {
|
|
527
|
-
const i = this.target.image(),
|
|
528
|
-
if (!i || !
|
|
529
|
-
const o = Math.max(0, (i.offsetWidth * this.scale -
|
|
530
|
-
return { x:
|
|
544
|
+
const i = this.target.image(), n = this.target.stage();
|
|
545
|
+
if (!i || !n) return { x: t, y: s };
|
|
546
|
+
const o = Math.max(0, (i.offsetWidth * this.scale - n.clientWidth) / 2), r = Math.max(0, (i.offsetHeight * this.scale - n.clientHeight) / 2);
|
|
547
|
+
return { x: w(t, -o, o), y: w(s, -r, r) };
|
|
531
548
|
}
|
|
532
549
|
}
|
|
533
|
-
const
|
|
534
|
-
class
|
|
550
|
+
const ue = 6, V = 120, de = 100, fe = 0.5, pe = 80, me = 0.4, ge = "a, button, input, textarea, select, video, .glare-thumbs", Y = (e, t) => Math.hypot(e.x - t.x, e.y - t.y), K = (e, t) => ({ x: (e.x + t.x) / 2, y: (e.y + t.y) / 2 }), I = (e) => ({ x: e.clientX, y: e.clientY });
|
|
551
|
+
class be {
|
|
535
552
|
constructor(t, s) {
|
|
536
553
|
this.stage = t, this.host = s, this.pointers = /* @__PURE__ */ new Map(), this.mode = "idle", this.moved = !1, this.start = [], this.startTime = 0, this.startZoom = { scale: 1, x: 0, y: 0 }, this.startMid = { x: 0, y: 0 }, this.startDistance = 0, this.offs = [
|
|
537
554
|
h(t, "pointerdown", (i) => this.onDown(i)),
|
|
@@ -549,7 +566,7 @@ class de {
|
|
|
549
566
|
return this.moved = !1, t;
|
|
550
567
|
}
|
|
551
568
|
onDown(t) {
|
|
552
|
-
t.pointerType === "mouse" && t.button !== 0 || t.target.closest(
|
|
569
|
+
t.pointerType === "mouse" && t.button !== 0 || t.target.closest(ge) || (this.pointers.set(t.pointerId, I(t)), this.pointers.size <= 2 && this.begin());
|
|
553
570
|
}
|
|
554
571
|
onMove(t) {
|
|
555
572
|
this.pointers.has(t.pointerId) && (this.pointers.set(t.pointerId, I(t)), this.move(t));
|
|
@@ -561,7 +578,7 @@ class de {
|
|
|
561
578
|
begin() {
|
|
562
579
|
this.mode === "swipe" && this.releaseStage();
|
|
563
580
|
const t = [...this.pointers.values()];
|
|
564
|
-
this.start = t, this.startTime = performance.now(), this.startZoom = this.host.zoom.state, this.mode = t.length >= 2 ? "pinch" : "idle", t.length >= 2 && (this.startDistance =
|
|
581
|
+
this.start = t, this.startTime = performance.now(), this.startZoom = this.host.zoom.state, this.mode = t.length >= 2 ? "pinch" : "idle", t.length >= 2 && (this.startDistance = Y(t[0], t[1]), this.startMid = K(t[0], t[1]));
|
|
565
582
|
}
|
|
566
583
|
move(t) {
|
|
567
584
|
const s = [...this.pointers.values()];
|
|
@@ -570,34 +587,34 @@ class de {
|
|
|
570
587
|
t.preventDefault(), this.moved = !0, this.pinch(s[0], s[1]);
|
|
571
588
|
return;
|
|
572
589
|
}
|
|
573
|
-
const i = s[0].x - this.start[0].x,
|
|
574
|
-
if (!(!this.moved && Math.hypot(i,
|
|
590
|
+
const i = s[0].x - this.start[0].x, n = s[0].y - this.start[0].y;
|
|
591
|
+
if (!(!this.moved && Math.hypot(i, n) < ue)) {
|
|
575
592
|
if (this.moved = !0, this.mode === "idle" && (this.mode = this.host.zoom.isZoomed && this.host.canPan() ? "pan" : "swipe"), this.mode === "pan")
|
|
576
|
-
t.preventDefault(), this.host.zoom.apply(this.startZoom.scale, this.startZoom.x + i, this.startZoom.y +
|
|
593
|
+
t.preventDefault(), this.host.zoom.apply(this.startZoom.scale, this.startZoom.x + i, this.startZoom.y + n);
|
|
577
594
|
else if (this.mode === "swipe") {
|
|
578
595
|
const o = this.host.touch.vertical !== !1;
|
|
579
|
-
if (!o && Math.abs(
|
|
580
|
-
t.preventDefault(), this.dragStage(i, o ?
|
|
596
|
+
if (!o && Math.abs(n) > Math.abs(i)) return;
|
|
597
|
+
t.preventDefault(), this.dragStage(i, o ? n : 0);
|
|
581
598
|
}
|
|
582
599
|
}
|
|
583
600
|
}
|
|
584
601
|
/** Scales around the pinch midpoint so the content under the fingers stays put. */
|
|
585
602
|
pinch(t, s) {
|
|
586
|
-
const { zoom: i } = this.host,
|
|
587
|
-
this.startZoom.scale *
|
|
588
|
-
|
|
589
|
-
|
|
603
|
+
const { zoom: i } = this.host, n = K(t, s), o = i.center() ?? n, r = w(
|
|
604
|
+
this.startZoom.scale * Y(t, s) / (this.startDistance || 1),
|
|
605
|
+
S,
|
|
606
|
+
F
|
|
590
607
|
), a = (this.startMid.x - o.x - this.startZoom.x) / this.startZoom.scale, l = (this.startMid.y - o.y - this.startZoom.y) / this.startZoom.scale;
|
|
591
|
-
i.apply(
|
|
608
|
+
i.apply(r, n.x - o.x - r * a, n.y - o.y - r * l);
|
|
592
609
|
}
|
|
593
610
|
end(t) {
|
|
594
611
|
if (!this.start.length) return;
|
|
595
|
-
const s = Math.max(performance.now() - this.startTime, 1), i = t.x - this.start[0].x,
|
|
612
|
+
const s = Math.max(performance.now() - this.startTime, 1), i = t.x - this.start[0].x, n = t.y - this.start[0].y, o = { x: i / s, y: n / s };
|
|
596
613
|
if (this.mode === "swipe")
|
|
597
|
-
this.releaseStage(), this.finishSwipe(i,
|
|
614
|
+
this.releaseStage(), this.finishSwipe(i, n, o);
|
|
598
615
|
else if (this.mode === "pan" && this.host.touch.momentum !== !1) {
|
|
599
|
-
const { zoom:
|
|
600
|
-
|
|
616
|
+
const { zoom: r } = this.host;
|
|
617
|
+
r.apply(r.scale, r.x + o.x * V, r.y + o.y * V, 250);
|
|
601
618
|
}
|
|
602
619
|
this.mode = "idle", this.start = [], this.moved && setTimeout(() => this.moved = !1, 0);
|
|
603
620
|
}
|
|
@@ -605,7 +622,7 @@ class de {
|
|
|
605
622
|
dragStage(t, s) {
|
|
606
623
|
this.stage.style.transitionDuration = "0ms", this.stage.style.transform = `translate3d(${t}px, ${s}px, 0)`;
|
|
607
624
|
const { bg: i } = this.host;
|
|
608
|
-
i && (i.style.transitionDuration = "0ms", i.style.opacity = String(
|
|
625
|
+
i && (i.style.transitionDuration = "0ms", i.style.opacity = String(w(1 - Math.abs(s) / 400, 0.35, 1)));
|
|
609
626
|
}
|
|
610
627
|
releaseStage() {
|
|
611
628
|
this.stage.style.transitionDuration = "", this.stage.style.transform = "";
|
|
@@ -615,35 +632,35 @@ class de {
|
|
|
615
632
|
/** A long or fast vertical swipe closes; a horizontal one navigates. */
|
|
616
633
|
finishSwipe(t, s, i) {
|
|
617
634
|
if (Math.abs(s) > Math.abs(t)) {
|
|
618
|
-
(Math.abs(s) >
|
|
635
|
+
(Math.abs(s) > de || Math.abs(i.y) > fe) && this.host.close();
|
|
619
636
|
return;
|
|
620
637
|
}
|
|
621
|
-
(Math.abs(t) >
|
|
638
|
+
(Math.abs(t) > pe || Math.abs(i.x) > me) && (t < 0 ? this.host.next() : this.host.prev());
|
|
622
639
|
}
|
|
623
640
|
}
|
|
624
|
-
const
|
|
625
|
-
function
|
|
626
|
-
const t = e.replace(/^#/, "").match(
|
|
641
|
+
const ye = /^(.+)-(\d+)$/;
|
|
642
|
+
function H(e = window.location.hash) {
|
|
643
|
+
const t = e.replace(/^#/, "").match(ye);
|
|
627
644
|
return t ? { gallery: t[1], index: Math.max(0, parseInt(t[2], 10) - 1) } : null;
|
|
628
645
|
}
|
|
629
|
-
function
|
|
646
|
+
function Q(e, t) {
|
|
630
647
|
return `${e}-${t + 1}`;
|
|
631
648
|
}
|
|
632
|
-
class
|
|
649
|
+
class ve {
|
|
633
650
|
constructor(t, s) {
|
|
634
651
|
this.glare = t, this.gallery = s, this.pushed = !1, this.off = h(window, "hashchange", () => this.onHashChange());
|
|
635
|
-
const i =
|
|
636
|
-
|
|
652
|
+
const i = Q(s, t.currIndex);
|
|
653
|
+
J() !== i && (window.history.pushState(null, "", `#${i}`), this.pushed = !0);
|
|
637
654
|
}
|
|
638
655
|
update(t = this.glare.currIndex) {
|
|
639
|
-
const s =
|
|
640
|
-
|
|
656
|
+
const s = Q(this.gallery, t);
|
|
657
|
+
J() !== s && this.replace(`#${s}`);
|
|
641
658
|
}
|
|
642
659
|
destroy() {
|
|
643
|
-
this.off(),
|
|
660
|
+
this.off(), H()?.gallery === this.gallery && (this.pushed ? window.history.back() : this.replace(""));
|
|
644
661
|
}
|
|
645
662
|
onHashChange() {
|
|
646
|
-
const t =
|
|
663
|
+
const t = H();
|
|
647
664
|
!t || t.gallery !== this.gallery ? (this.pushed = !1, this.glare.close()) : t.index !== this.glare.currIndex && this.glare.jumpTo(t.index);
|
|
648
665
|
}
|
|
649
666
|
replace(t) {
|
|
@@ -651,56 +668,8 @@ class pe {
|
|
|
651
668
|
window.history.replaceState(null, "", `${s}${i}${t}`);
|
|
652
669
|
}
|
|
653
670
|
}
|
|
654
|
-
const
|
|
655
|
-
class
|
|
656
|
-
constructor(t, s, i) {
|
|
657
|
-
this.glare = t, this.container = s, this.opts = i, this.overlay = null, this.off = null;
|
|
658
|
-
}
|
|
659
|
-
get isOpen() {
|
|
660
|
-
return this.overlay !== null;
|
|
661
|
-
}
|
|
662
|
-
open() {
|
|
663
|
-
const { current: t, dict: s } = this.glare;
|
|
664
|
-
if (!t) return;
|
|
665
|
-
this.close();
|
|
666
|
-
const i = this.resolveUrl(t), r = encodeURIComponent(i), o = encodeURIComponent(t.thumb || t.src || i), n = encodeURIComponent(O(t.caption)), a = y(this.opts.tpl ?? Lt, {
|
|
667
|
-
...s,
|
|
668
|
-
url_direct: i,
|
|
669
|
-
url_facebook: `https://www.facebook.com/sharer/sharer.php?u=${r}`,
|
|
670
|
-
url_twitter: `https://twitter.com/intent/tweet?url=${r}&text=${n}`,
|
|
671
|
-
url_pinterest: `https://pinterest.com/pin/create/button/?url=${r}&media=${o}&description=${n}`
|
|
672
|
-
});
|
|
673
|
-
this.overlay = g("div", "glare-share-overlay", a), this.container.appendChild(this.overlay);
|
|
674
|
-
const l = c(".glare-share-input", this.overlay);
|
|
675
|
-
l?.select(), this.off = h(this.overlay, "click", (d) => {
|
|
676
|
-
const p = d.target;
|
|
677
|
-
p === this.overlay || p.closest("[data-glare-share-close]") ? this.close() : p.closest("[data-glare-share-copy]") && this.copy(i, l);
|
|
678
|
-
});
|
|
679
|
-
}
|
|
680
|
-
close() {
|
|
681
|
-
if (!this.overlay) return;
|
|
682
|
-
const t = this.overlay.contains(document.activeElement);
|
|
683
|
-
if (this.off?.(), this.off = null, this.overlay.remove(), this.overlay = null, !t) return;
|
|
684
|
-
const s = c("[data-glare-share]", this.container);
|
|
685
|
-
s ? s.focus() : this.glare.focus();
|
|
686
|
-
}
|
|
687
|
-
destroy() {
|
|
688
|
-
this.close();
|
|
689
|
-
}
|
|
690
|
-
async copy(t, s) {
|
|
691
|
-
try {
|
|
692
|
-
await navigator.clipboard.writeText(t);
|
|
693
|
-
} catch {
|
|
694
|
-
s?.select(), document.execCommand("copy");
|
|
695
|
-
}
|
|
696
|
-
s?.select();
|
|
697
|
-
}
|
|
698
|
-
resolveUrl(t) {
|
|
699
|
-
const { url: s } = this.opts;
|
|
700
|
-
return typeof s == "function" ? s(t) : s || (/^https?:\/\//i.test(t.src) ? t.src : window.location.href);
|
|
701
|
-
}
|
|
702
|
-
}
|
|
703
|
-
class ge {
|
|
671
|
+
const J = () => window.location.hash.replace(/^#/, "");
|
|
672
|
+
class xe {
|
|
704
673
|
constructor(t, s, i) {
|
|
705
674
|
this.glare = t, this.container = s, this.opts = i, this.timer = null, this.active = !1, this.bar = c(".glare-progress", s), this.button = c("[data-glare-slideshow]", s), i.autoStart && this.start();
|
|
706
675
|
}
|
|
@@ -723,13 +692,13 @@ class ge {
|
|
|
723
692
|
this.stop();
|
|
724
693
|
}
|
|
725
694
|
get speed() {
|
|
726
|
-
return this.opts.speed ??
|
|
695
|
+
return this.opts.speed ?? _.speed;
|
|
727
696
|
}
|
|
728
697
|
get atEnd() {
|
|
729
698
|
return !this.glare.opts.loop && this.glare.currIndex === this.glare.group.length - 1;
|
|
730
699
|
}
|
|
731
700
|
schedule() {
|
|
732
|
-
this.clearTimer(), this.setProgress(0),
|
|
701
|
+
this.clearTimer(), this.setProgress(0), dt() || (this.bar?.offsetWidth, this.setProgress(1)), this.timer = setTimeout(() => this.atEnd ? this.stop() : this.glare.next(), this.speed);
|
|
733
702
|
}
|
|
734
703
|
clearTimer() {
|
|
735
704
|
this.timer && clearTimeout(this.timer), this.timer = null;
|
|
@@ -740,7 +709,7 @@ class ge {
|
|
|
740
709
|
syncButton() {
|
|
741
710
|
if (!this.button) return;
|
|
742
711
|
const { dict: t } = this.glare;
|
|
743
|
-
|
|
712
|
+
Z(
|
|
744
713
|
this.button,
|
|
745
714
|
this.active,
|
|
746
715
|
this.active ? t.PLAY_STOP : t.PLAY_START,
|
|
@@ -748,9 +717,9 @@ class ge {
|
|
|
748
717
|
);
|
|
749
718
|
}
|
|
750
719
|
}
|
|
751
|
-
class
|
|
720
|
+
class we {
|
|
752
721
|
constructor(t, s, i) {
|
|
753
|
-
this.glare = t, this.container = s, this.opts = i, this.isActive = !1, this.offs = [], this.axis = i.axis === "y" ? "y" : "x", this.list =
|
|
722
|
+
this.glare = t, this.container = s, this.opts = i, this.isActive = !1, this.offs = [], this.axis = i.axis === "y" ? "y" : "x", this.list = m("div", "glare-thumbs-list"), this.strip = m("div", `glare-thumbs glare-thumbs--${this.axis}`), this.strip.style.setProperty("--glare-thumbs-fit", i.fit ?? "cover"), this.strip.appendChild(this.list), this.build();
|
|
754
723
|
}
|
|
755
724
|
show() {
|
|
756
725
|
this.setActive(!0);
|
|
@@ -779,29 +748,29 @@ class ye {
|
|
|
779
748
|
const { group: t, dict: s } = this.glare;
|
|
780
749
|
if (t.length < 2) return;
|
|
781
750
|
this.container.classList.add(`glare-thumbs-axis-${this.axis}`);
|
|
782
|
-
for (const
|
|
783
|
-
const o =
|
|
784
|
-
o.type = "button", o.dataset.index = String(
|
|
785
|
-
const
|
|
786
|
-
if (
|
|
787
|
-
const a =
|
|
788
|
-
a.src =
|
|
751
|
+
for (const n of t) {
|
|
752
|
+
const o = m("button", "glare-thumbs-item");
|
|
753
|
+
o.type = "button", o.dataset.index = String(n.index), o.setAttribute("aria-label", b(s.GO_TO_SLIDE, { index: String(n.index + 1) }));
|
|
754
|
+
const r = n.thumb || (n.type === "image" ? n.src : "");
|
|
755
|
+
if (r) {
|
|
756
|
+
const a = m("img");
|
|
757
|
+
a.src = r, a.alt = n.alt || N(n.caption), a.loading = "lazy", o.appendChild(a);
|
|
789
758
|
} else
|
|
790
|
-
o.textContent = String(
|
|
791
|
-
this.list.appendChild(o), this.offs.push(h(o, "click", () => this.glare.jumpTo(
|
|
759
|
+
o.textContent = String(n.index + 1);
|
|
760
|
+
this.list.appendChild(o), this.offs.push(h(o, "click", () => this.glare.jumpTo(n.index)));
|
|
792
761
|
}
|
|
793
|
-
(
|
|
762
|
+
(ht(this.opts.parentEl, this.container) ?? this.container).appendChild(this.strip), this.opts.autoStart && this.show(), this.focus();
|
|
794
763
|
}
|
|
795
764
|
}
|
|
796
|
-
const
|
|
797
|
-
class
|
|
765
|
+
const Ee = 40, Te = 150, Se = 16;
|
|
766
|
+
class Le {
|
|
798
767
|
constructor(t, s) {
|
|
799
768
|
this.distance = 0, this.fired = !1, this.settle = null, this.off = h(
|
|
800
769
|
t,
|
|
801
770
|
"wheel",
|
|
802
771
|
(i) => {
|
|
803
|
-
const
|
|
804
|
-
!
|
|
772
|
+
const n = s.current();
|
|
773
|
+
!n || i.deltaY === 0 || s.mode === "auto" && n.type !== "image" || n.type === "image" && s.isZoomed() || (i.preventDefault(), this.restartSettle(), !this.fired && (this.distance += Me(i, t), !(Math.abs(this.distance) < Ee) && (this.fired = !0, this.distance > 0 ? s.next() : s.prev())));
|
|
805
774
|
},
|
|
806
775
|
{ passive: !1 }
|
|
807
776
|
);
|
|
@@ -812,71 +781,91 @@ class we {
|
|
|
812
781
|
restartSettle() {
|
|
813
782
|
this.settle && clearTimeout(this.settle), this.settle = setTimeout(() => {
|
|
814
783
|
this.distance = 0, this.fired = !1;
|
|
815
|
-
},
|
|
784
|
+
}, Te);
|
|
816
785
|
}
|
|
817
786
|
}
|
|
818
|
-
function
|
|
819
|
-
return e.deltaMode === WheelEvent.DOM_DELTA_LINE ? e.deltaY *
|
|
820
|
-
}
|
|
821
|
-
function Se(e, t) {
|
|
822
|
-
const s = A(), i = s ? !1 : t.animationEffect, r = s ? !1 : t.transitionEffect;
|
|
823
|
-
e.dataset.animation = i || "none", e.style.setProperty("--glare-duration", `${i ? t.animationDuration : 0}ms`), e.style.setProperty("--glare-transition-duration", `${r ? t.transitionDuration : 0}ms`);
|
|
787
|
+
function Me(e, t) {
|
|
788
|
+
return e.deltaMode === WheelEvent.DOM_DELTA_LINE ? e.deltaY * Se : e.deltaMode === WheelEvent.DOM_DELTA_PAGE ? e.deltaY * t.clientHeight : e.deltaY;
|
|
824
789
|
}
|
|
825
|
-
function
|
|
826
|
-
const
|
|
827
|
-
|
|
790
|
+
function C(e) {
|
|
791
|
+
const t = dt(), s = t || !e.animationEffect ? 0 : Math.max(0, e.animationDuration), i = t || !e.transitionEffect ? 0 : Math.max(0, e.transitionDuration);
|
|
792
|
+
return {
|
|
793
|
+
animationEffect: s ? e.animationEffect : !1,
|
|
794
|
+
animationDuration: s,
|
|
795
|
+
transitionEffect: i ? e.transitionEffect : !1,
|
|
796
|
+
transitionDuration: i
|
|
797
|
+
};
|
|
828
798
|
}
|
|
829
|
-
function
|
|
830
|
-
const
|
|
831
|
-
|
|
832
|
-
|
|
799
|
+
function Ce(e, t) {
|
|
800
|
+
const s = C(t);
|
|
801
|
+
e.dataset.animation = s.animationEffect || "none", e.style.setProperty("--glare-duration", `${s.animationDuration}ms`), e.style.setProperty("--glare-transition-duration", `${s.transitionDuration}ms`);
|
|
802
|
+
}
|
|
803
|
+
function $e(e, t) {
|
|
804
|
+
e.dataset.transition = C(t).transitionEffect || "none";
|
|
805
|
+
}
|
|
806
|
+
const Oe = /^(top|center|bottom)-(left|center|right)$/, tt = { top: 0, left: 0, center: 0.5, bottom: 1, right: 1 };
|
|
807
|
+
function Ie(e, t, s) {
|
|
808
|
+
const i = typeof s == "string" ? Oe.exec(s) : null;
|
|
809
|
+
if (i) {
|
|
810
|
+
const r = e.getBoundingClientRect(), a = r.left + r.width * tt[i[2]], l = r.top + r.height * tt[i[1]];
|
|
811
|
+
return new DOMRect(a, l, 0, 0);
|
|
812
|
+
}
|
|
813
|
+
const n = (r) => r?.getClientRects().length ? r : null, o = s !== "trigger" && n(ht(s)) || n(t.$trigger);
|
|
814
|
+
return o ? o.getBoundingClientRect() : null;
|
|
815
|
+
}
|
|
816
|
+
function Ae(e, t, s) {
|
|
817
|
+
const i = t.$image;
|
|
818
|
+
if (e.dataset.animation !== "zoom" || !i) return;
|
|
819
|
+
const n = Ie(e, t, s.anchor);
|
|
820
|
+
if (!n) return;
|
|
821
|
+
const o = i.getBoundingClientRect(), r = Math.max(n.width / Math.max(o.width, 1), n.height / Math.max(o.height, 1)), a = n.left + n.width / 2 - (o.left + o.width / 2), l = n.top + n.height / 2 - (o.top + o.height / 2);
|
|
833
822
|
Object.assign(i.style, {
|
|
834
|
-
transform: `translate3d(${
|
|
823
|
+
transform: `translate3d(${a}px, ${l}px, 0) scale(${r})`,
|
|
835
824
|
opacity: s.zoomOpacity ? "0.2" : "1",
|
|
836
825
|
transitionDuration: "0ms"
|
|
837
|
-
}),
|
|
826
|
+
}), ut(() => {
|
|
838
827
|
Object.assign(i.style, { transform: "", opacity: "", transitionDuration: "" });
|
|
839
828
|
});
|
|
840
829
|
}
|
|
841
|
-
function
|
|
842
|
-
const t = R(
|
|
843
|
-
return
|
|
830
|
+
function mt(e) {
|
|
831
|
+
const t = R(lt, e);
|
|
832
|
+
return _t() && t.mobile ? R(t, t.mobile) : t;
|
|
844
833
|
}
|
|
845
|
-
function
|
|
834
|
+
function A(e, t) {
|
|
846
835
|
return e ? e === !0 ? { ...t } : { ...t, ...e } : null;
|
|
847
836
|
}
|
|
848
|
-
const M = [],
|
|
849
|
-
function
|
|
837
|
+
const M = [], P = (e) => e.getAttribute("data-glare") ?? "";
|
|
838
|
+
function De(e) {
|
|
850
839
|
return typeof e == "string" ? $(e) : e instanceof HTMLElement ? [e] : Array.from(e);
|
|
851
840
|
}
|
|
852
|
-
function
|
|
853
|
-
const i =
|
|
854
|
-
const l =
|
|
841
|
+
function ke(e, t, s) {
|
|
842
|
+
const i = De(e), n = (a) => {
|
|
843
|
+
const l = P(a), d = l ? i.filter((E) => P(E) === l) : [a];
|
|
855
844
|
s(d, d.indexOf(a), l);
|
|
856
845
|
}, o = i.map(
|
|
857
846
|
(a) => h(a, "click", (l) => {
|
|
858
|
-
l.preventDefault(),
|
|
847
|
+
l.preventDefault(), n(a);
|
|
859
848
|
})
|
|
860
|
-
),
|
|
849
|
+
), r = {
|
|
861
850
|
elements: i,
|
|
862
851
|
destroy() {
|
|
863
852
|
o.forEach((l) => l());
|
|
864
|
-
const a = M.indexOf(
|
|
853
|
+
const a = M.indexOf(r);
|
|
865
854
|
a >= 0 && M.splice(a, 1);
|
|
866
855
|
}
|
|
867
856
|
};
|
|
868
|
-
return M.push(
|
|
857
|
+
return M.push(r), mt(t).hash && Fe(i, n), r;
|
|
869
858
|
}
|
|
870
|
-
function
|
|
859
|
+
function Re() {
|
|
871
860
|
for (const e of [...M]) e.destroy();
|
|
872
861
|
}
|
|
873
|
-
function
|
|
874
|
-
const s =
|
|
862
|
+
function Fe(e, t) {
|
|
863
|
+
const s = H();
|
|
875
864
|
if (!s) return;
|
|
876
|
-
const
|
|
877
|
-
|
|
865
|
+
const n = e.filter((o) => P(o) === s.gallery)[s.index];
|
|
866
|
+
n && t(n);
|
|
878
867
|
}
|
|
879
|
-
class
|
|
868
|
+
class He {
|
|
880
869
|
constructor(t, s) {
|
|
881
870
|
this.seconds = t, this.onIdle = s, this.timer = null;
|
|
882
871
|
}
|
|
@@ -887,90 +876,96 @@ class Ae {
|
|
|
887
876
|
this.timer && clearTimeout(this.timer), this.timer = null;
|
|
888
877
|
}
|
|
889
878
|
}
|
|
890
|
-
const
|
|
879
|
+
const y = [], g = {
|
|
891
880
|
add(e) {
|
|
892
|
-
|
|
881
|
+
y.push(e);
|
|
893
882
|
},
|
|
894
883
|
remove(e) {
|
|
895
|
-
const t =
|
|
896
|
-
t >= 0 &&
|
|
884
|
+
const t = y.indexOf(e);
|
|
885
|
+
t >= 0 && y.splice(t, 1);
|
|
897
886
|
},
|
|
898
887
|
top() {
|
|
899
|
-
return
|
|
888
|
+
return y[y.length - 1] ?? null;
|
|
900
889
|
},
|
|
901
890
|
get(e) {
|
|
902
|
-
return
|
|
891
|
+
return y.find((t) => t.id === e) ?? null;
|
|
903
892
|
},
|
|
904
893
|
all() {
|
|
905
|
-
return [...
|
|
894
|
+
return [...y];
|
|
906
895
|
},
|
|
907
896
|
get size() {
|
|
908
|
-
return
|
|
897
|
+
return y.length;
|
|
909
898
|
}
|
|
910
|
-
},
|
|
899
|
+
}, Pe = [
|
|
911
900
|
["[data-glare-close]", (e) => e.close()],
|
|
912
901
|
["[data-glare-next]", (e) => e.next()],
|
|
913
902
|
["[data-glare-prev]", (e) => e.prev()],
|
|
914
903
|
["[data-glare-zoom]", (e) => e.toggleZoom()],
|
|
915
904
|
["[data-glare-slideshow]", (e) => e.slideshow?.toggle()],
|
|
916
905
|
["[data-glare-thumbs]", (e) => e.thumbs?.toggle()],
|
|
917
|
-
["[data-glare-fullscreen]", (e) => e.fullscreen?.toggle()]
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
function He(e, t, s) {
|
|
906
|
+
["[data-glare-fullscreen]", (e) => e.fullscreen?.toggle()]
|
|
907
|
+
], ze = ".glare-content", _e = ".glare-slide, .glare-stage", Ne = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])', Ze = /* @__PURE__ */ new Set(["INPUT", "TEXTAREA", "SELECT"]), Be = 300;
|
|
908
|
+
function qe(e, t, s) {
|
|
921
909
|
let i = null;
|
|
922
|
-
const
|
|
910
|
+
const n = () => {
|
|
923
911
|
i && clearTimeout(i), i = null;
|
|
924
912
|
}, o = [
|
|
925
|
-
h(t, "click", (
|
|
913
|
+
h(t, "click", (r) => {
|
|
926
914
|
if (e.consumeGesture()) return;
|
|
927
|
-
const a =
|
|
915
|
+
const a = r.target, l = a.closest("[data-glare-more]");
|
|
928
916
|
if (l) {
|
|
929
|
-
const L = l.closest(".glare-toolbar"),
|
|
930
|
-
L?.classList.toggle("glare-toolbar--expanded",
|
|
917
|
+
const L = l.closest(".glare-toolbar"), B = !L?.classList.contains("glare-toolbar--expanded");
|
|
918
|
+
L?.classList.toggle("glare-toolbar--expanded", B), l.setAttribute("aria-expanded", String(B));
|
|
931
919
|
return;
|
|
932
920
|
}
|
|
933
|
-
|
|
934
|
-
const d =
|
|
935
|
-
if (d) return
|
|
921
|
+
bt(t);
|
|
922
|
+
const d = a.closest("[data-glare-custom]");
|
|
923
|
+
if (d) return je(e, d.dataset.glareCustom, r);
|
|
924
|
+
const E = Pe.find(([L]) => a.closest(L));
|
|
925
|
+
if (E) return E[1](e);
|
|
936
926
|
if (a.closest(".glare-button")) return;
|
|
937
|
-
const
|
|
938
|
-
if (
|
|
939
|
-
if (!
|
|
940
|
-
return k(e,
|
|
941
|
-
|
|
927
|
+
const O = D(e, a, "click");
|
|
928
|
+
if (O) {
|
|
929
|
+
if (!gt(e, D(e, a, "dblclick"), r))
|
|
930
|
+
return k(e, O, r);
|
|
931
|
+
n(), i = setTimeout(() => k(e, O, r), Be);
|
|
942
932
|
}
|
|
943
933
|
}),
|
|
944
|
-
h(t, "dblclick", (
|
|
945
|
-
|
|
946
|
-
const a =
|
|
947
|
-
a.closest(".glare-button") || k(e, D(e, a, "dblclick"),
|
|
934
|
+
h(t, "dblclick", (r) => {
|
|
935
|
+
n();
|
|
936
|
+
const a = r.target;
|
|
937
|
+
a.closest(".glare-button") || k(e, D(e, a, "dblclick"), r);
|
|
948
938
|
}),
|
|
949
|
-
h(document, "keydown", (
|
|
939
|
+
h(document, "keydown", (r) => We(e, r)),
|
|
950
940
|
h(document, "keydown", s),
|
|
941
|
+
h(document, "click", s, { capture: !0 }),
|
|
951
942
|
h(document, "mousemove", s),
|
|
952
943
|
h(document, "touchstart", s, { passive: !0 })
|
|
953
944
|
];
|
|
954
|
-
return e.opts.trapFocus && o.push(h(t, "keydown", (
|
|
955
|
-
h(t, "contextmenu", (
|
|
956
|
-
h(t, "dragstart", (
|
|
957
|
-
|
|
945
|
+
return e.opts.trapFocus && o.push(h(t, "keydown", (r) => Ue(t, r))), e.opts.protect && o.push(
|
|
946
|
+
h(t, "contextmenu", (r) => r.preventDefault()),
|
|
947
|
+
h(t, "dragstart", (r) => {
|
|
948
|
+
r.target.tagName === "IMG" && r.preventDefault();
|
|
958
949
|
})
|
|
959
950
|
), () => {
|
|
960
|
-
|
|
951
|
+
n(), o.forEach((r) => r());
|
|
961
952
|
};
|
|
962
953
|
}
|
|
954
|
+
function je(e, t, s) {
|
|
955
|
+
const i = e.opts.buttons.find((n) => typeof n != "string" && n.name === t);
|
|
956
|
+
i && e.current && i.click(e, e.current, s);
|
|
957
|
+
}
|
|
963
958
|
function D(e, t, s) {
|
|
964
959
|
const { opts: i } = e;
|
|
965
|
-
if (t.closest(
|
|
966
|
-
if (!(i.modal || !t.closest(
|
|
960
|
+
if (t.closest(ze)) return s === "click" ? i.clickContent : i.dblclickContent;
|
|
961
|
+
if (!(i.modal || !t.closest(_e)))
|
|
967
962
|
return s === "click" ? i.clickSlide : i.dblclickSlide;
|
|
968
963
|
}
|
|
969
|
-
function
|
|
964
|
+
function gt(e, t, s) {
|
|
970
965
|
return !t || !e.current ? !1 : typeof t == "function" ? t(e.current, s) : t;
|
|
971
966
|
}
|
|
972
967
|
function k(e, t, s) {
|
|
973
|
-
switch (
|
|
968
|
+
switch (gt(e, t, s)) {
|
|
974
969
|
case "close":
|
|
975
970
|
return e.close();
|
|
976
971
|
case "next":
|
|
@@ -985,17 +980,15 @@ function k(e, t, s) {
|
|
|
985
980
|
}
|
|
986
981
|
}
|
|
987
982
|
}
|
|
988
|
-
function
|
|
989
|
-
if (
|
|
990
|
-
if (t.key === "Escape" &&
|
|
983
|
+
function We(e, t) {
|
|
984
|
+
if (g.top() !== e) return;
|
|
985
|
+
if (t.key === "Escape" && bt(e.$refs?.container ?? null)) {
|
|
991
986
|
t.preventDefault();
|
|
992
987
|
return;
|
|
993
988
|
}
|
|
994
|
-
if (t.key === "Escape" && e.share?.isOpen)
|
|
995
|
-
return t.preventDefault(), e.share.close();
|
|
996
989
|
if (!e.opts.keyboard || e.opts.modal) return;
|
|
997
990
|
const s = t.target;
|
|
998
|
-
if (!
|
|
991
|
+
if (!Ze.has(s.tagName) && !(t.key === " " && s.closest("button")))
|
|
999
992
|
switch (t.key) {
|
|
1000
993
|
case "Escape":
|
|
1001
994
|
return t.preventDefault(), e.close();
|
|
@@ -1012,117 +1005,117 @@ function Pe(e, t) {
|
|
|
1012
1005
|
return e.fullscreen?.toggle();
|
|
1013
1006
|
}
|
|
1014
1007
|
}
|
|
1015
|
-
function
|
|
1008
|
+
function bt(e) {
|
|
1016
1009
|
const t = e?.querySelector(".glare-toolbar--expanded");
|
|
1017
1010
|
return t ? (t.classList.remove("glare-toolbar--expanded"), t.querySelector("[data-glare-more]")?.setAttribute("aria-expanded", "false"), !0) : !1;
|
|
1018
1011
|
}
|
|
1019
|
-
function
|
|
1012
|
+
function Ue(e, t) {
|
|
1020
1013
|
if (t.key !== "Tab") return;
|
|
1021
|
-
const s = $(
|
|
1014
|
+
const s = $(Ne, e).filter(
|
|
1022
1015
|
(o) => !o.hasAttribute("disabled") && o.offsetParent !== null && getComputedStyle(o).visibility !== "hidden"
|
|
1023
1016
|
);
|
|
1024
1017
|
if (!s.length) return;
|
|
1025
|
-
const i = s[0],
|
|
1026
|
-
t.shiftKey && document.activeElement === i ? (t.preventDefault(),
|
|
1018
|
+
const i = s[0], n = s[s.length - 1];
|
|
1019
|
+
t.shiftKey && document.activeElement === i ? (t.preventDefault(), n.focus()) : !t.shiftKey && document.activeElement === n && (t.preventDefault(), i.focus());
|
|
1027
1020
|
}
|
|
1028
|
-
const
|
|
1029
|
-
function
|
|
1021
|
+
const Xe = 1200, et = 16 / 9;
|
|
1022
|
+
function Ge(e, t, s) {
|
|
1030
1023
|
if (t && s) return t / s;
|
|
1031
|
-
const i = String(e.ratio ||
|
|
1032
|
-
return
|
|
1024
|
+
const i = String(e.ratio || et).replace(":", "/"), [n, o = "1"] = i.split("/").map((l) => l.trim()), r = parseFloat(n), a = parseFloat(o);
|
|
1025
|
+
return r > 0 && a > 0 ? r / a : et;
|
|
1033
1026
|
}
|
|
1034
|
-
function
|
|
1027
|
+
function st(e, t, s) {
|
|
1035
1028
|
if (!e) return 0;
|
|
1036
1029
|
if (typeof e == "number") return e;
|
|
1037
|
-
const i = e.trim(),
|
|
1038
|
-
return
|
|
1030
|
+
const i = e.trim(), n = parseFloat(i);
|
|
1031
|
+
return n > 0 ? i.endsWith("%") ? t * n / 100 : i.endsWith("vw") || i.endsWith("vh") ? s * n / 100 : n : 0;
|
|
1039
1032
|
}
|
|
1040
|
-
function
|
|
1033
|
+
function it(e, t) {
|
|
1041
1034
|
const s = t.parentElement;
|
|
1042
1035
|
if (!s) return;
|
|
1043
|
-
const i = getComputedStyle(s),
|
|
1044
|
-
if (!(
|
|
1045
|
-
const
|
|
1046
|
-
let a =
|
|
1047
|
-
const d =
|
|
1048
|
-
a *=
|
|
1049
|
-
}
|
|
1050
|
-
function
|
|
1051
|
-
if (
|
|
1036
|
+
const i = getComputedStyle(s), n = s.clientWidth - parseFloat(i.paddingLeft) - parseFloat(i.paddingRight), o = s.clientHeight - parseFloat(i.paddingTop) - parseFloat(i.paddingBottom);
|
|
1037
|
+
if (!(n > 0 && o > 0)) return;
|
|
1038
|
+
const r = e.width !== void 0 && e.height !== void 0;
|
|
1039
|
+
let a = r ? st(e.width, n, innerWidth) : n, l = r ? st(e.height, o, innerHeight) : o;
|
|
1040
|
+
const d = Ge(e, r ? a : void 0, r ? l : void 0), E = Math.min(1, n / a, o / l);
|
|
1041
|
+
a *= E, l *= E, l > a / d ? l = a / d : a > l * d && (a = l * d), t.style.width = `${a}px`, t.style.height = `${l}px`, t.style.aspectRatio = String(d);
|
|
1042
|
+
}
|
|
1043
|
+
function Ve(e, t) {
|
|
1044
|
+
if (it(e, t), typeof ResizeObserver > "u" || !t.parentElement) return;
|
|
1052
1045
|
const s = new ResizeObserver(() => {
|
|
1053
1046
|
if (!t.isConnected) return s.disconnect();
|
|
1054
|
-
|
|
1047
|
+
it(e, t);
|
|
1055
1048
|
});
|
|
1056
1049
|
s.observe(t.parentElement);
|
|
1057
1050
|
}
|
|
1058
|
-
const
|
|
1059
|
-
const o =
|
|
1060
|
-
o.alt = e.alt ||
|
|
1051
|
+
const Ye = (e, t, s) => new Promise((i, n) => {
|
|
1052
|
+
const o = m("img", "glare-image");
|
|
1053
|
+
o.alt = e.alt || N(e.caption), o.decoding = "async", o.draggable = !1, s.protect && (o.style.pointerEvents = "none"), o.onload = () => {
|
|
1061
1054
|
e.$image = o, e.contentWidth = o.naturalWidth, e.contentHeight = o.naturalHeight, t.appendChild(o), i();
|
|
1062
|
-
}, o.onerror = () =>
|
|
1063
|
-
}),
|
|
1064
|
-
const
|
|
1065
|
-
t.innerHTML =
|
|
1055
|
+
}, o.onerror = () => n(new Error(`Failed to load image: ${e.src}`)), o.src = e.src;
|
|
1056
|
+
}), Ke = (e, t, s, i) => {
|
|
1057
|
+
const n = e.format || s.video.format || Rt(e.src);
|
|
1058
|
+
t.innerHTML = b(s.video.tpl, {
|
|
1066
1059
|
...i,
|
|
1067
1060
|
src: e.src,
|
|
1068
|
-
format:
|
|
1061
|
+
format: n,
|
|
1069
1062
|
poster: e.poster ?? ""
|
|
1070
1063
|
});
|
|
1071
1064
|
const o = t.querySelector("video");
|
|
1072
1065
|
o && (e.autoStart ?? s.video.autoStart) && o.play().catch(() => {
|
|
1073
1066
|
});
|
|
1074
|
-
},
|
|
1075
|
-
const
|
|
1076
|
-
if (!
|
|
1077
|
-
for (const [a, l] of Object.entries(
|
|
1078
|
-
if (Object.assign(
|
|
1079
|
-
|
|
1067
|
+
}, nt = (e, t, s) => new Promise((i) => {
|
|
1068
|
+
const n = s.iframe, o = m("div", "glare-iframe-wrap", n.tpl), r = o.querySelector("iframe");
|
|
1069
|
+
if (!r) throw new Error("Iframe template must contain an <iframe>");
|
|
1070
|
+
for (const [a, l] of Object.entries(n.attr)) r.setAttribute(a, l);
|
|
1071
|
+
if (Object.assign(r.style, n.css), t.appendChild(o), e.type === "embed" ? Ve(e, t) : (e.width && (o.style.width = j(e.width)), e.height && (o.style.height = j(e.height))), !n.preload) {
|
|
1072
|
+
r.src = e.src, i();
|
|
1080
1073
|
return;
|
|
1081
1074
|
}
|
|
1082
|
-
|
|
1083
|
-
}),
|
|
1075
|
+
r.onload = () => i(), r.src = e.src, setTimeout(i, Xe);
|
|
1076
|
+
}), Qe = (e, t) => {
|
|
1084
1077
|
const s = e.src ? c(e.src) : null;
|
|
1085
1078
|
if (!s) throw new Error(`Inline target not found: ${e.src}`);
|
|
1086
1079
|
const i = s.cloneNode(!0);
|
|
1087
1080
|
i.removeAttribute("id"), i.hidden = !1, i.style.display = "", t.appendChild(i);
|
|
1088
|
-
},
|
|
1081
|
+
}, Je = async (e, t, s) => {
|
|
1089
1082
|
const i = await fetch(e.src, s.ajax.settings);
|
|
1090
1083
|
if (!i.ok) throw new Error(`Request failed: ${i.status} ${e.src}`);
|
|
1091
1084
|
t.innerHTML = await i.text();
|
|
1092
|
-
},
|
|
1085
|
+
}, ts = (e, t) => {
|
|
1093
1086
|
e.content instanceof HTMLElement ? t.appendChild(e.content) : t.innerHTML = e.html ?? e.content ?? e.src;
|
|
1094
|
-
},
|
|
1095
|
-
async function
|
|
1096
|
-
t.innerHTML = "", t.className = `glare-content glare-content--${e.type}`, await
|
|
1087
|
+
}, es = { image: Ye, video: Ke, embed: nt, iframe: nt, inline: Qe, ajax: Je, html: ts };
|
|
1088
|
+
async function ss(e, t, s, i) {
|
|
1089
|
+
t.innerHTML = "", t.className = `glare-content glare-content--${e.type}`, await es[e.type](e, t, s, i), e.isLoaded = !0;
|
|
1097
1090
|
}
|
|
1098
|
-
function
|
|
1091
|
+
function is(e, t) {
|
|
1099
1092
|
for (const s of [e[t - 1], e[t + 1]])
|
|
1100
1093
|
s?.type === "image" && s.src && (new Image().src = s.src);
|
|
1101
1094
|
}
|
|
1102
|
-
let
|
|
1103
|
-
const
|
|
1104
|
-
constructor(t, s = {}, i = 0,
|
|
1105
|
-
this.id = ++
|
|
1095
|
+
let ns = 0;
|
|
1096
|
+
const x = class x {
|
|
1097
|
+
constructor(t, s = {}, i = 0, n = "") {
|
|
1098
|
+
this.id = ++ns, this.current = null, this.currIndex = 0, this.prevIndex = 0, this.isActive = !1, this.isClosing = !1, this.isIdle = !1, this.$refs = null, this.hash = null, this.gestures = null, this.wheel = null, this.cleanups = [], this.captionTracker = null, this.previouslyFocused = null, this.direction = 1, this.opts = mt(s), this.dict = yt(this.opts), this.group = Ht(t, this.opts), this.galleryName = n, this.currIndex = this.clampIndex(i), this.zoom = new he({
|
|
1106
1099
|
image: () => this.current?.$image ?? null,
|
|
1107
1100
|
stage: () => this.$refs?.stage ?? null,
|
|
1108
1101
|
onChange: (o) => this.syncZoomState(o)
|
|
1109
|
-
}), this.idle = new
|
|
1102
|
+
}), this.idle = new He(this.opts.modal ? !1 : this.opts.idleTime, () => this.toggleControls(!0));
|
|
1110
1103
|
}
|
|
1111
1104
|
open(t = this.currIndex) {
|
|
1112
1105
|
if (this.isActive) return this.jumpTo(t);
|
|
1113
1106
|
if (!this.group.length) return;
|
|
1114
|
-
this.opts.closeExisting &&
|
|
1115
|
-
const s =
|
|
1116
|
-
this.$refs = s,
|
|
1117
|
-
this.isActive && (i.classList.add("glare-is-open"), this.showSlide(this.currIndex, !0), this.cleanups.push(
|
|
1107
|
+
this.opts.closeExisting && x.close(!0), this.currIndex = this.clampIndex(t), this.current = this.group[this.currIndex], this.previouslyFocused = document.activeElement instanceof HTMLElement ? document.activeElement : null, this.emit("onInit");
|
|
1108
|
+
const s = Nt(this.opts, this.dict, this.id, this.group.length), { container: i } = s;
|
|
1109
|
+
this.$refs = s, Ce(i, this.opts), this.syncChrome(), this.resolveParent().appendChild(i), this.captionTracker = jt(s), this.cleanups.push(() => this.captionTracker?.destroy()), this.isActive = !0, g.add(this), this.opts.hideScrollbar && U(!0), this.emit("onActivate"), this.emitSlide("beforeShow", this.current), ut(() => {
|
|
1110
|
+
this.isActive && (i.classList.add("glare-is-open"), this.showSlide(this.currIndex, !0), this.cleanups.push(qe(this, i, () => this.onActivity())), this.startModules(s), this.opts.autoFocus && this.focus(), this.idle.reset());
|
|
1118
1111
|
});
|
|
1119
1112
|
}
|
|
1120
1113
|
close() {
|
|
1121
1114
|
if (!this.isActive || this.isClosing || !this.current || !this.$refs || this.emitSlide("beforeClose", this.current) === !1) return;
|
|
1122
1115
|
this.isClosing = !0, this.slideshow?.stop(), this.idle.stop();
|
|
1123
|
-
const { container: t, bg: s } = this.$refs, i =
|
|
1116
|
+
const { container: t, bg: s } = this.$refs, i = C(this.opts).animationDuration;
|
|
1124
1117
|
if (i === 0) return this.teardown();
|
|
1125
|
-
t.classList.remove("glare-is-open"), t.classList.add("glare-is-closing"),
|
|
1118
|
+
t.classList.remove("glare-is-open"), t.classList.add("glare-is-closing"), zt(s ?? t, i, () => this.teardown());
|
|
1126
1119
|
}
|
|
1127
1120
|
next() {
|
|
1128
1121
|
this.jumpTo(this.currIndex + 1);
|
|
@@ -1132,8 +1125,8 @@ const w = class w {
|
|
|
1132
1125
|
}
|
|
1133
1126
|
jumpTo(t) {
|
|
1134
1127
|
if (!this.isActive || this.isClosing) return;
|
|
1135
|
-
const s = this.group.length, i = this.opts.loop ? (t % s + s) % s :
|
|
1136
|
-
i !== this.currIndex && (this.prevIndex = this.currIndex, this.currIndex = i, this.zoom.reset(), this.current = this.group[i], this.syncChrome(), this.showSlide(i, !1), this.thumbs?.focus(i), this.hash?.update(i), this.slideshow?.onIndexChange(), this.emitSlide("onUpdate", this.current));
|
|
1128
|
+
const s = this.group.length, i = this.opts.loop ? (t % s + s) % s : w(t, 0, s - 1);
|
|
1129
|
+
i !== this.currIndex && (this.direction = t > this.currIndex ? 1 : -1, this.prevIndex = this.currIndex, this.currIndex = i, this.zoom.reset(), this.current = this.group[i], this.syncChrome(), this.showSlide(i, !1), this.thumbs?.focus(i), this.hash?.update(i), this.slideshow?.onIndexChange(), this.emitSlide("onUpdate", this.current));
|
|
1137
1130
|
}
|
|
1138
1131
|
toggleZoom(t) {
|
|
1139
1132
|
this.current?.type === "image" && (this.zoom.isZoomed ? this.zoom.toFit() : this.zoom.toActual(t));
|
|
@@ -1154,48 +1147,46 @@ const w = class w {
|
|
|
1154
1147
|
async showSlide(t, s) {
|
|
1155
1148
|
const i = this.group[t];
|
|
1156
1149
|
if (!this.$refs || !i) return;
|
|
1157
|
-
const { container:
|
|
1158
|
-
|
|
1150
|
+
const { container: n, stage: o } = this.$refs, r = Wt(o, i, this.opts);
|
|
1151
|
+
Qt(this.opts, i) && Gt(r, this.opts, this.dict), Vt(o, this.opts, this.dict), this.emitSlide("beforeLoad", i), this.opts.image.preload && is(this.group, t);
|
|
1159
1152
|
let a = !1;
|
|
1160
1153
|
try {
|
|
1161
|
-
await
|
|
1154
|
+
await ss(i, i.$content, this.opts, this.dict);
|
|
1162
1155
|
} catch (l) {
|
|
1163
|
-
a = !0,
|
|
1156
|
+
a = !0, Kt(i, l, this.opts, this.dict), this.emitSlide("onError", i), this.opts.onError || console.warn("[glare]", l);
|
|
1164
1157
|
}
|
|
1165
|
-
if (!this.isActive || this.currIndex !== t) return
|
|
1166
|
-
a || this.emitSlide("afterLoad", i),
|
|
1158
|
+
if (!this.isActive || this.currIndex !== t) return r.remove();
|
|
1159
|
+
a || this.emitSlide("afterLoad", i), Yt(o), s || $e(n, this.opts), Ut(r, s, this.direction), this.captionTracker?.follow(r), Xt(o, r, C(this.opts).transitionDuration, this.direction), this.syncZoomState(this.zoom.isZoomed), !a && (s && Ae(n, i, this.opts), this.emitSlide("afterShow", i));
|
|
1167
1160
|
}
|
|
1168
1161
|
syncChrome() {
|
|
1169
|
-
!this.$refs || !this.current || (
|
|
1162
|
+
!this.$refs || !this.current || (Jt(this.$refs, this.opts, this.dict, this.current, this.group.length, this.captionFor(this.current)), this.syncZoomState(this.zoom.isZoomed));
|
|
1170
1163
|
}
|
|
1171
1164
|
captionFor(t) {
|
|
1172
1165
|
const { caption: s } = this.opts;
|
|
1173
1166
|
return typeof s == "function" ? s(this, t) : s ?? t.caption;
|
|
1174
1167
|
}
|
|
1175
1168
|
syncZoomState(t) {
|
|
1176
|
-
this.$refs &&
|
|
1169
|
+
this.$refs && ae(this.$refs.container, this.dict, t, !!this.current?.$image);
|
|
1177
1170
|
}
|
|
1178
1171
|
resolveParent() {
|
|
1179
1172
|
const { parentEl: t } = this.opts;
|
|
1180
1173
|
return (typeof t == "string" ? document.querySelector(t) : t) ?? document.body;
|
|
1181
1174
|
}
|
|
1182
1175
|
startModules({ container: t, stage: s, bg: i }) {
|
|
1183
|
-
const
|
|
1184
|
-
o && (this.thumbs = new
|
|
1185
|
-
const
|
|
1186
|
-
|
|
1187
|
-
const a =
|
|
1188
|
-
a &&
|
|
1189
|
-
|
|
1190
|
-
l && (this.share = new me(this, t, l)), r.hash && this.galleryName && (this.hash = new pe(this, this.galleryName)), r.wheel && (this.wheel = new we(s, {
|
|
1191
|
-
mode: r.wheel,
|
|
1176
|
+
const n = this.opts, o = A(n.thumbs, rt);
|
|
1177
|
+
o && (this.thumbs = new we(this, t, o));
|
|
1178
|
+
const r = A(n.slideshow, _);
|
|
1179
|
+
r && (this.slideshow = new xe(this, t, r));
|
|
1180
|
+
const a = A(n.fullscreen, at);
|
|
1181
|
+
a && ft() && (this.fullscreen = new le(this, t, a)), n.hash && this.galleryName && (this.hash = new ve(this, this.galleryName)), n.wheel && (this.wheel = new Le(s, {
|
|
1182
|
+
mode: n.wheel,
|
|
1192
1183
|
current: () => this.current,
|
|
1193
1184
|
isZoomed: () => this.zoom.isZoomed,
|
|
1194
1185
|
next: () => this.next(),
|
|
1195
1186
|
prev: () => this.prev()
|
|
1196
|
-
})),
|
|
1187
|
+
})), n.touch && (this.gestures = new be(s, {
|
|
1197
1188
|
zoom: this.zoom,
|
|
1198
|
-
touch:
|
|
1189
|
+
touch: n.touch,
|
|
1199
1190
|
bg: i,
|
|
1200
1191
|
canPan: () => this.current?.type === "image",
|
|
1201
1192
|
close: () => this.close(),
|
|
@@ -1211,13 +1202,12 @@ const w = class w {
|
|
|
1211
1202
|
this.gestures,
|
|
1212
1203
|
this.wheel,
|
|
1213
1204
|
this.hash,
|
|
1214
|
-
this.share,
|
|
1215
1205
|
this.thumbs,
|
|
1216
1206
|
this.slideshow,
|
|
1217
1207
|
this.fullscreen
|
|
1218
1208
|
])
|
|
1219
1209
|
t?.destroy();
|
|
1220
|
-
this.gestures = this.wheel = this.hash = null, this.
|
|
1210
|
+
this.gestures = this.wheel = this.hash = null, this.thumbs = this.slideshow = this.fullscreen = void 0, this.cleanups.forEach((t) => t()), this.cleanups = [], this.$refs?.container.remove(), this.$refs = null, g.remove(this), this.opts.hideScrollbar && g.size === 0 && U(!1), this.opts.backFocus && (this.current?.$trigger ?? this.previouslyFocused)?.focus({ preventScroll: !0 }), this.isActive = !1, this.isClosing = !1, this.current && this.emitSlide("afterClose", this.current);
|
|
1221
1211
|
}
|
|
1222
1212
|
emit(t) {
|
|
1223
1213
|
return this.opts[t]?.(this);
|
|
@@ -1226,42 +1216,42 @@ const w = class w {
|
|
|
1226
1216
|
return this.opts[t]?.(this, s);
|
|
1227
1217
|
}
|
|
1228
1218
|
clampIndex(t) {
|
|
1229
|
-
return
|
|
1219
|
+
return w(t, 0, Math.max(0, this.group.length - 1));
|
|
1230
1220
|
}
|
|
1231
1221
|
static open(t, s = {}, i = 0) {
|
|
1232
|
-
const
|
|
1233
|
-
return
|
|
1222
|
+
const n = new x(t, s, i);
|
|
1223
|
+
return n.open(), n;
|
|
1234
1224
|
}
|
|
1235
1225
|
static bind(t, s = {}) {
|
|
1236
|
-
return
|
|
1237
|
-
new
|
|
1226
|
+
return ke(t, s, (i, n, o) => {
|
|
1227
|
+
new x(i, s, n, o).open();
|
|
1238
1228
|
});
|
|
1239
1229
|
}
|
|
1240
1230
|
static close(t = !1) {
|
|
1241
|
-
t ?
|
|
1231
|
+
t ? g.all().reverse().forEach((s) => s.close()) : g.top()?.close();
|
|
1242
1232
|
}
|
|
1243
1233
|
static getInstance(t) {
|
|
1244
|
-
return t == null ?
|
|
1234
|
+
return t == null ? g.top() : g.get(t);
|
|
1245
1235
|
}
|
|
1246
1236
|
static getInstances() {
|
|
1247
|
-
return
|
|
1237
|
+
return g.all();
|
|
1248
1238
|
}
|
|
1249
1239
|
/** Closes every instance and removes all `bind()` handlers. */
|
|
1250
1240
|
static destroy() {
|
|
1251
|
-
|
|
1241
|
+
x.close(!0), Re();
|
|
1252
1242
|
}
|
|
1253
1243
|
/** Binds every `[data-glare]` element once the DOM is ready. */
|
|
1254
1244
|
static autoBind(t = {}) {
|
|
1255
|
-
const s = () =>
|
|
1245
|
+
const s = () => x.bind("[data-glare]", t);
|
|
1256
1246
|
document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", s, { once: !0 }) : s();
|
|
1257
1247
|
}
|
|
1258
1248
|
};
|
|
1259
|
-
|
|
1260
|
-
let
|
|
1261
|
-
const
|
|
1249
|
+
x.defaults = lt;
|
|
1250
|
+
let z = x;
|
|
1251
|
+
const os = z.autoBind;
|
|
1262
1252
|
export {
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1253
|
+
z as Glare,
|
|
1254
|
+
os as autoBind,
|
|
1255
|
+
z as default
|
|
1266
1256
|
};
|
|
1267
1257
|
//# sourceMappingURL=glare.esm.js.map
|