@netless/app-slide 0.3.0-canary.2 → 0.3.0-canary.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README-zh.md +17 -7
  2. package/README.md +4 -7
  3. package/dist/Logger.d.ts +12 -0
  4. package/dist/Refrigerator.d.ts +3 -1
  5. package/dist/SlideViewer/footer.d.ts +12 -0
  6. package/dist/{SlideViewer.d.ts → SlideViewer/index.d.ts} +33 -20
  7. package/dist/SlideViewer/sidebar.d.ts +12 -0
  8. package/dist/SlideViewer/typings.d.ts +18 -0
  9. package/dist/SlideViewer/utils.d.ts +7 -0
  10. package/dist/connect.d.ts +14 -0
  11. package/dist/constants.d.ts +1 -1
  12. package/dist/icons/index.d.ts +5 -0
  13. package/dist/icons/save.d.ts +1 -0
  14. package/dist/icons/spinner.d.ts +1 -0
  15. package/dist/index.d.ts +7 -6
  16. package/dist/main.js +3 -0
  17. package/dist/main.js.map +1 -0
  18. package/dist/main.mjs +1377 -0
  19. package/dist/main.mjs.map +1 -0
  20. package/dist/preview.d.ts +5 -0
  21. package/dist/typings.d.ts +9 -18
  22. package/dist/utils.d.ts +12 -0
  23. package/package.json +11 -7
  24. package/src/Logger.ts +38 -0
  25. package/src/Refrigerator.ts +11 -1
  26. package/src/SlideViewer/footer.ts +169 -0
  27. package/src/SlideViewer/index.ts +328 -0
  28. package/src/SlideViewer/sidebar.ts +140 -0
  29. package/src/SlideViewer/typings.ts +21 -0
  30. package/src/SlideViewer/utils.ts +37 -0
  31. package/src/connect.ts +152 -0
  32. package/src/constants.ts +1 -1
  33. package/src/icons/index.ts +5 -0
  34. package/src/icons/save.ts +18 -0
  35. package/src/icons/spinner.ts +37 -0
  36. package/src/index.ts +62 -192
  37. package/src/preview.ts +21 -0
  38. package/src/style.scss +67 -16
  39. package/src/typings.ts +18 -16
  40. package/src/utils.ts +90 -0
  41. package/dist/main.cjs.js +0 -6363
  42. package/dist/main.cjs.js.map +0 -1
  43. package/dist/main.es.js +0 -38214
  44. package/dist/main.es.js.map +0 -1
  45. package/dist/main.iife.js +0 -6363
  46. package/dist/main.iife.js.map +0 -1
  47. package/src/SlideViewer.ts +0 -557
package/dist/main.mjs ADDED
@@ -0,0 +1,1377 @@
1
+ var yt = Object.defineProperty;
2
+ var kt = (e, t, s) => t in e ? yt(e, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : e[t] = s;
3
+ var u = (e, t, s) => (kt(e, typeof t != "symbol" ? t + "" : t, s), s);
4
+ import { Slide as ue } from "@netless/slide";
5
+ import { Slide as mr } from "@netless/slide";
6
+ const St = "!#%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", xt = 87, Et = 20, Ae = [], Ct = () => {
7
+ for (let e = 0; e < Et; e++)
8
+ Ae[e] = St.charAt(Math.random() * xt);
9
+ return Ae.join("");
10
+ };
11
+ function Pe(e) {
12
+ try {
13
+ return e();
14
+ } catch (t) {
15
+ console.error(t);
16
+ }
17
+ }
18
+ class De {
19
+ constructor() {
20
+ this.push = this.addDisposer, this.disposers = /* @__PURE__ */ new Map();
21
+ }
22
+ addDisposer(t, s = this.genUID()) {
23
+ return this.flush(s), this.disposers.set(s, Array.isArray(t) ? At(t) : t), s;
24
+ }
25
+ add(t, s = this.genUID()) {
26
+ const r = t();
27
+ return r ? this.addDisposer(r, s) : s;
28
+ }
29
+ addEventListener(t, s, r, o, i = this.genUID()) {
30
+ return t.addEventListener(s, r, o), this.addDisposer(() => t.removeEventListener(s, r, o), i), i;
31
+ }
32
+ setTimeout(t, s, r = this.genUID()) {
33
+ const o = window.setTimeout(() => {
34
+ this.remove(r), t();
35
+ }, s);
36
+ return this.addDisposer(() => window.clearTimeout(o), r);
37
+ }
38
+ setInterval(t, s, r = this.genUID()) {
39
+ const o = window.setInterval(t, s);
40
+ return this.addDisposer(() => window.clearInterval(o), r);
41
+ }
42
+ remove(t) {
43
+ const s = this.disposers.get(t);
44
+ return this.disposers.delete(t), s;
45
+ }
46
+ flush(t) {
47
+ const s = this.remove(t);
48
+ s && s();
49
+ }
50
+ flushAll() {
51
+ this.disposers.forEach(Pe), this.disposers.clear();
52
+ }
53
+ genUID() {
54
+ let t;
55
+ do
56
+ t = Ct();
57
+ while (this.disposers.has(t));
58
+ return t;
59
+ }
60
+ }
61
+ function At(e) {
62
+ return () => e.forEach(Pe);
63
+ }
64
+ const D = "netless-app-slide", Fe = "https://convertcdn.netless.link/dynamicConvert";
65
+ class It {
66
+ constructor() {
67
+ u(this, "threshold", 2);
68
+ u(this, "_map", /* @__PURE__ */ new Map());
69
+ u(this, "_box", /* @__PURE__ */ new Map());
70
+ u(this, "_queue", []);
71
+ }
72
+ set(t, s, r) {
73
+ return this._map.set(t, s), this._box.set(t, r), this._queue.includes(t) || this._queue.unshift(t), this._refresh(), () => {
74
+ this.delete(t);
75
+ };
76
+ }
77
+ delete(t) {
78
+ this._map.delete(t), this._box.delete(t), this._queue = this._queue.filter((s) => s !== t), this._refresh();
79
+ }
80
+ focus(t) {
81
+ const s = this._queue.indexOf(t);
82
+ s >= 0 && this._queue.splice(s, 1), this._queue.unshift(t), this._refresh();
83
+ }
84
+ _refresh() {
85
+ let t;
86
+ this._queue.sort((s, r) => {
87
+ var n, a;
88
+ const o = ((n = this._box.get(s)) == null ? void 0 : n.zIndex) ?? 0, i = ((a = this._box.get(r)) == null ? void 0 : a.zIndex) ?? 0;
89
+ return -(o - i);
90
+ }), this._queue.forEach((s, r) => {
91
+ (t = this._map.get(s)) && (r < this.threshold ? t.unfreeze() : t.freeze());
92
+ });
93
+ }
94
+ }
95
+ const Re = new It(), dr = function(t) {
96
+ t.on("focus", (s) => {
97
+ Re.focus(s.appId);
98
+ });
99
+ };
100
+ class zt {
101
+ constructor() {
102
+ this.a = /* @__PURE__ */ new Map(), this.b = /* @__PURE__ */ new Set();
103
+ }
104
+ emit(t, s) {
105
+ const r = this.a.get(t);
106
+ if (r)
107
+ for (const o of r)
108
+ try {
109
+ o(s);
110
+ } catch (i) {
111
+ console.error(i);
112
+ }
113
+ }
114
+ on(t, s) {
115
+ let r = this.a.get(t);
116
+ if (r || (r = /* @__PURE__ */ new Set(), this.a.set(t, r)), r.add(s), r.size === 1)
117
+ for (const o of this.b)
118
+ o.e(t);
119
+ return () => {
120
+ this.off(t, s);
121
+ };
122
+ }
123
+ once(t, s) {
124
+ const r = (o) => (this.off(t, s), s(o));
125
+ return this.c = this.c || /* @__PURE__ */ new WeakMap(), this.c.set(s, r), this.on(t, r);
126
+ }
127
+ off(t, s) {
128
+ var r;
129
+ const o = this.a.get(t);
130
+ if (o) {
131
+ const i = o.delete(
132
+ ((r = this.c) == null ? void 0 : r.get(s)) || s
133
+ );
134
+ if (o.size <= 0) {
135
+ this.a.delete(t);
136
+ for (const n of this.b)
137
+ n.d(t);
138
+ }
139
+ return i;
140
+ }
141
+ return !1;
142
+ }
143
+ clear(t) {
144
+ var s;
145
+ t ? (s = this.a.get(t)) == null || s.clear() : this.a.clear();
146
+ }
147
+ count(t) {
148
+ var s;
149
+ if (t)
150
+ return ((s = this.a.get(t)) == null ? void 0 : s.size) || 0;
151
+ {
152
+ let r = 0;
153
+ for (const o of this.a.values())
154
+ r += o.size;
155
+ return r;
156
+ }
157
+ }
158
+ remit(t, s) {
159
+ var r;
160
+ let o;
161
+ const i = {
162
+ e: (n) => {
163
+ if (n === t)
164
+ try {
165
+ o = s(this);
166
+ } catch (a) {
167
+ console.error(a);
168
+ }
169
+ },
170
+ d: (n) => {
171
+ if (o && (!n || n === t))
172
+ try {
173
+ o();
174
+ } catch (a) {
175
+ console.error(a);
176
+ }
177
+ }
178
+ };
179
+ return this.b.add(i), (r = this.a.get(t)) != null && r.size && i.e(t), () => {
180
+ this.b.delete(i), i.d();
181
+ };
182
+ }
183
+ destroy() {
184
+ this.clear();
185
+ for (const t of this.b)
186
+ t.d();
187
+ this.b.clear();
188
+ }
189
+ }
190
+ var pe = {}, $t = {
191
+ get exports() {
192
+ return pe;
193
+ },
194
+ set exports(e) {
195
+ pe = e;
196
+ }
197
+ }, Lt = {
198
+ aliceblue: [240, 248, 255],
199
+ antiquewhite: [250, 235, 215],
200
+ aqua: [0, 255, 255],
201
+ aquamarine: [127, 255, 212],
202
+ azure: [240, 255, 255],
203
+ beige: [245, 245, 220],
204
+ bisque: [255, 228, 196],
205
+ black: [0, 0, 0],
206
+ blanchedalmond: [255, 235, 205],
207
+ blue: [0, 0, 255],
208
+ blueviolet: [138, 43, 226],
209
+ brown: [165, 42, 42],
210
+ burlywood: [222, 184, 135],
211
+ cadetblue: [95, 158, 160],
212
+ chartreuse: [127, 255, 0],
213
+ chocolate: [210, 105, 30],
214
+ coral: [255, 127, 80],
215
+ cornflowerblue: [100, 149, 237],
216
+ cornsilk: [255, 248, 220],
217
+ crimson: [220, 20, 60],
218
+ cyan: [0, 255, 255],
219
+ darkblue: [0, 0, 139],
220
+ darkcyan: [0, 139, 139],
221
+ darkgoldenrod: [184, 134, 11],
222
+ darkgray: [169, 169, 169],
223
+ darkgreen: [0, 100, 0],
224
+ darkgrey: [169, 169, 169],
225
+ darkkhaki: [189, 183, 107],
226
+ darkmagenta: [139, 0, 139],
227
+ darkolivegreen: [85, 107, 47],
228
+ darkorange: [255, 140, 0],
229
+ darkorchid: [153, 50, 204],
230
+ darkred: [139, 0, 0],
231
+ darksalmon: [233, 150, 122],
232
+ darkseagreen: [143, 188, 143],
233
+ darkslateblue: [72, 61, 139],
234
+ darkslategray: [47, 79, 79],
235
+ darkslategrey: [47, 79, 79],
236
+ darkturquoise: [0, 206, 209],
237
+ darkviolet: [148, 0, 211],
238
+ deeppink: [255, 20, 147],
239
+ deepskyblue: [0, 191, 255],
240
+ dimgray: [105, 105, 105],
241
+ dimgrey: [105, 105, 105],
242
+ dodgerblue: [30, 144, 255],
243
+ firebrick: [178, 34, 34],
244
+ floralwhite: [255, 250, 240],
245
+ forestgreen: [34, 139, 34],
246
+ fuchsia: [255, 0, 255],
247
+ gainsboro: [220, 220, 220],
248
+ ghostwhite: [248, 248, 255],
249
+ gold: [255, 215, 0],
250
+ goldenrod: [218, 165, 32],
251
+ gray: [128, 128, 128],
252
+ green: [0, 128, 0],
253
+ greenyellow: [173, 255, 47],
254
+ grey: [128, 128, 128],
255
+ honeydew: [240, 255, 240],
256
+ hotpink: [255, 105, 180],
257
+ indianred: [205, 92, 92],
258
+ indigo: [75, 0, 130],
259
+ ivory: [255, 255, 240],
260
+ khaki: [240, 230, 140],
261
+ lavender: [230, 230, 250],
262
+ lavenderblush: [255, 240, 245],
263
+ lawngreen: [124, 252, 0],
264
+ lemonchiffon: [255, 250, 205],
265
+ lightblue: [173, 216, 230],
266
+ lightcoral: [240, 128, 128],
267
+ lightcyan: [224, 255, 255],
268
+ lightgoldenrodyellow: [250, 250, 210],
269
+ lightgray: [211, 211, 211],
270
+ lightgreen: [144, 238, 144],
271
+ lightgrey: [211, 211, 211],
272
+ lightpink: [255, 182, 193],
273
+ lightsalmon: [255, 160, 122],
274
+ lightseagreen: [32, 178, 170],
275
+ lightskyblue: [135, 206, 250],
276
+ lightslategray: [119, 136, 153],
277
+ lightslategrey: [119, 136, 153],
278
+ lightsteelblue: [176, 196, 222],
279
+ lightyellow: [255, 255, 224],
280
+ lime: [0, 255, 0],
281
+ limegreen: [50, 205, 50],
282
+ linen: [250, 240, 230],
283
+ magenta: [255, 0, 255],
284
+ maroon: [128, 0, 0],
285
+ mediumaquamarine: [102, 205, 170],
286
+ mediumblue: [0, 0, 205],
287
+ mediumorchid: [186, 85, 211],
288
+ mediumpurple: [147, 112, 219],
289
+ mediumseagreen: [60, 179, 113],
290
+ mediumslateblue: [123, 104, 238],
291
+ mediumspringgreen: [0, 250, 154],
292
+ mediumturquoise: [72, 209, 204],
293
+ mediumvioletred: [199, 21, 133],
294
+ midnightblue: [25, 25, 112],
295
+ mintcream: [245, 255, 250],
296
+ mistyrose: [255, 228, 225],
297
+ moccasin: [255, 228, 181],
298
+ navajowhite: [255, 222, 173],
299
+ navy: [0, 0, 128],
300
+ oldlace: [253, 245, 230],
301
+ olive: [128, 128, 0],
302
+ olivedrab: [107, 142, 35],
303
+ orange: [255, 165, 0],
304
+ orangered: [255, 69, 0],
305
+ orchid: [218, 112, 214],
306
+ palegoldenrod: [238, 232, 170],
307
+ palegreen: [152, 251, 152],
308
+ paleturquoise: [175, 238, 238],
309
+ palevioletred: [219, 112, 147],
310
+ papayawhip: [255, 239, 213],
311
+ peachpuff: [255, 218, 185],
312
+ peru: [205, 133, 63],
313
+ pink: [255, 192, 203],
314
+ plum: [221, 160, 221],
315
+ powderblue: [176, 224, 230],
316
+ purple: [128, 0, 128],
317
+ rebeccapurple: [102, 51, 153],
318
+ red: [255, 0, 0],
319
+ rosybrown: [188, 143, 143],
320
+ royalblue: [65, 105, 225],
321
+ saddlebrown: [139, 69, 19],
322
+ salmon: [250, 128, 114],
323
+ sandybrown: [244, 164, 96],
324
+ seagreen: [46, 139, 87],
325
+ seashell: [255, 245, 238],
326
+ sienna: [160, 82, 45],
327
+ silver: [192, 192, 192],
328
+ skyblue: [135, 206, 235],
329
+ slateblue: [106, 90, 205],
330
+ slategray: [112, 128, 144],
331
+ slategrey: [112, 128, 144],
332
+ snow: [255, 250, 250],
333
+ springgreen: [0, 255, 127],
334
+ steelblue: [70, 130, 180],
335
+ tan: [210, 180, 140],
336
+ teal: [0, 128, 128],
337
+ thistle: [216, 191, 216],
338
+ tomato: [255, 99, 71],
339
+ turquoise: [64, 224, 208],
340
+ violet: [238, 130, 238],
341
+ wheat: [245, 222, 179],
342
+ white: [255, 255, 255],
343
+ whitesmoke: [245, 245, 245],
344
+ yellow: [255, 255, 0],
345
+ yellowgreen: [154, 205, 50]
346
+ }, he = {}, Mt = {
347
+ get exports() {
348
+ return he;
349
+ },
350
+ set exports(e) {
351
+ he = e;
352
+ }
353
+ }, Nt = function(t) {
354
+ return !t || typeof t == "string" ? !1 : t instanceof Array || Array.isArray(t) || t.length >= 0 && (t.splice instanceof Function || Object.getOwnPropertyDescriptor(t, t.length - 1) && t.constructor.name !== "String");
355
+ }, Ot = Nt, Tt = Array.prototype.concat, Pt = Array.prototype.slice, Ie = Mt.exports = function(t) {
356
+ for (var s = [], r = 0, o = t.length; r < o; r++) {
357
+ var i = t[r];
358
+ Ot(i) ? s = Tt.call(s, Pt.call(i)) : s.push(i);
359
+ }
360
+ return s;
361
+ };
362
+ Ie.wrap = function(e) {
363
+ return function() {
364
+ return e(Ie(arguments));
365
+ };
366
+ };
367
+ var Z = Lt, Q = he, Ve = Object.hasOwnProperty, Ue = /* @__PURE__ */ Object.create(null);
368
+ for (var de in Z)
369
+ Ve.call(Z, de) && (Ue[Z[de]] = de);
370
+ var C = $t.exports = {
371
+ to: {},
372
+ get: {}
373
+ };
374
+ C.get = function(e) {
375
+ var t = e.substring(0, 3).toLowerCase(), s, r;
376
+ switch (t) {
377
+ case "hsl":
378
+ s = C.get.hsl(e), r = "hsl";
379
+ break;
380
+ case "hwb":
381
+ s = C.get.hwb(e), r = "hwb";
382
+ break;
383
+ default:
384
+ s = C.get.rgb(e), r = "rgb";
385
+ break;
386
+ }
387
+ return s ? { model: r, value: s } : null;
388
+ };
389
+ C.get.rgb = function(e) {
390
+ if (!e)
391
+ return null;
392
+ var t = /^#([a-f0-9]{3,4})$/i, s = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i, r = /^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/, o = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/, i = /^(\w+)$/, n = [0, 0, 0, 1], a, l, d;
393
+ if (a = e.match(s)) {
394
+ for (d = a[2], a = a[1], l = 0; l < 3; l++) {
395
+ var b = l * 2;
396
+ n[l] = parseInt(a.slice(b, b + 2), 16);
397
+ }
398
+ d && (n[3] = parseInt(d, 16) / 255);
399
+ } else if (a = e.match(t)) {
400
+ for (a = a[1], d = a[3], l = 0; l < 3; l++)
401
+ n[l] = parseInt(a[l] + a[l], 16);
402
+ d && (n[3] = parseInt(d + d, 16) / 255);
403
+ } else if (a = e.match(r)) {
404
+ for (l = 0; l < 3; l++)
405
+ n[l] = parseInt(a[l + 1], 0);
406
+ a[4] && (a[5] ? n[3] = parseFloat(a[4]) * 0.01 : n[3] = parseFloat(a[4]));
407
+ } else if (a = e.match(o)) {
408
+ for (l = 0; l < 3; l++)
409
+ n[l] = Math.round(parseFloat(a[l + 1]) * 2.55);
410
+ a[4] && (a[5] ? n[3] = parseFloat(a[4]) * 0.01 : n[3] = parseFloat(a[4]));
411
+ } else
412
+ return (a = e.match(i)) ? a[1] === "transparent" ? [0, 0, 0, 0] : Ve.call(Z, a[1]) ? (n = Z[a[1]], n[3] = 1, n) : null : null;
413
+ for (l = 0; l < 3; l++)
414
+ n[l] = R(n[l], 0, 255);
415
+ return n[3] = R(n[3], 0, 1), n;
416
+ };
417
+ C.get.hsl = function(e) {
418
+ if (!e)
419
+ return null;
420
+ var t = /^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/, s = e.match(t);
421
+ if (s) {
422
+ var r = parseFloat(s[4]), o = (parseFloat(s[1]) % 360 + 360) % 360, i = R(parseFloat(s[2]), 0, 100), n = R(parseFloat(s[3]), 0, 100), a = R(isNaN(r) ? 1 : r, 0, 1);
423
+ return [o, i, n, a];
424
+ }
425
+ return null;
426
+ };
427
+ C.get.hwb = function(e) {
428
+ if (!e)
429
+ return null;
430
+ var t = /^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/, s = e.match(t);
431
+ if (s) {
432
+ var r = parseFloat(s[4]), o = (parseFloat(s[1]) % 360 + 360) % 360, i = R(parseFloat(s[2]), 0, 100), n = R(parseFloat(s[3]), 0, 100), a = R(isNaN(r) ? 1 : r, 0, 1);
433
+ return [o, i, n, a];
434
+ }
435
+ return null;
436
+ };
437
+ C.to.hex = function() {
438
+ var e = Q(arguments);
439
+ return "#" + re(e[0]) + re(e[1]) + re(e[2]) + (e[3] < 1 ? re(Math.round(e[3] * 255)) : "");
440
+ };
441
+ C.to.rgb = function() {
442
+ var e = Q(arguments);
443
+ return e.length < 4 || e[3] === 1 ? "rgb(" + Math.round(e[0]) + ", " + Math.round(e[1]) + ", " + Math.round(e[2]) + ")" : "rgba(" + Math.round(e[0]) + ", " + Math.round(e[1]) + ", " + Math.round(e[2]) + ", " + e[3] + ")";
444
+ };
445
+ C.to.rgb.percent = function() {
446
+ var e = Q(arguments), t = Math.round(e[0] / 255 * 100), s = Math.round(e[1] / 255 * 100), r = Math.round(e[2] / 255 * 100);
447
+ return e.length < 4 || e[3] === 1 ? "rgb(" + t + "%, " + s + "%, " + r + "%)" : "rgba(" + t + "%, " + s + "%, " + r + "%, " + e[3] + ")";
448
+ };
449
+ C.to.hsl = function() {
450
+ var e = Q(arguments);
451
+ return e.length < 4 || e[3] === 1 ? "hsl(" + e[0] + ", " + e[1] + "%, " + e[2] + "%)" : "hsla(" + e[0] + ", " + e[1] + "%, " + e[2] + "%, " + e[3] + ")";
452
+ };
453
+ C.to.hwb = function() {
454
+ var e = Q(arguments), t = "";
455
+ return e.length >= 4 && e[3] !== 1 && (t = ", " + e[3]), "hwb(" + e[0] + ", " + e[1] + "%, " + e[2] + "%" + t + ")";
456
+ };
457
+ C.to.keyword = function(e) {
458
+ return Ue[e.slice(0, 3)];
459
+ };
460
+ function R(e, t, s) {
461
+ return Math.min(Math.max(t, e), s);
462
+ }
463
+ function re(e) {
464
+ var t = Math.round(e).toString(16).toUpperCase();
465
+ return t.length < 2 ? "0" + t : t;
466
+ }
467
+ function G() {
468
+ }
469
+ function oe(e) {
470
+ return document.createElement(e);
471
+ }
472
+ function y(e, t) {
473
+ const s = oe(e);
474
+ return Dt(s, t), s;
475
+ }
476
+ function q(e, t) {
477
+ return e.appendChild(t);
478
+ }
479
+ function _(e) {
480
+ return `${D}-${e}`;
481
+ }
482
+ function Dt(e, t) {
483
+ e.className = _(t);
484
+ }
485
+ function Ft(e) {
486
+ return e.endsWith("/") ? e.slice(0, -1) : e;
487
+ }
488
+ function ze(e, t) {
489
+ if (typeof e == "object" && e !== null)
490
+ return e[t];
491
+ }
492
+ function $e() {
493
+ let e;
494
+ return [new Promise((s) => {
495
+ e = s;
496
+ }), e];
497
+ }
498
+ function Rt(e) {
499
+ const t = e.room, s = e.displayer;
500
+ return t ? () => t.calibrationTimestamp : s ? () => s.beginTimestamp + s.progressTime : () => Date.now();
501
+ }
502
+ function Be(e) {
503
+ try {
504
+ let t = window.getComputedStyle(e).backgroundColor;
505
+ if (t !== "rgba(0, 0, 0, 0)" && t !== "transparent")
506
+ return t = Vt(t), console.log("[Slide] guess bg color:", t), t;
507
+ if (e.parentElement)
508
+ return Be(e.parentElement);
509
+ } catch {
510
+ }
511
+ return "#ffffff";
512
+ }
513
+ function Vt(e) {
514
+ const t = pe.get(e);
515
+ if (t && t.model === "rgb") {
516
+ const s = t.value, o = (((Math.round(s[0]) & 255) << 16) + ((Math.round(s[1]) & 255) << 8) + (Math.round(s[2]) & 255)).toString(16);
517
+ return "#" + "000000".substring(o.length) + o;
518
+ } else
519
+ return e;
520
+ }
521
+ function qe(e, t) {
522
+ return `${Ft(t || Fe)}/${e}`;
523
+ }
524
+ async function Ut({ taskId: e, url: t }) {
525
+ const s = qe(e, t), r = `${s}/preview/1.png`, o = `${s}/jsonOutput/slide-1.json`, i = new Promise((a) => {
526
+ const l = new Image();
527
+ l.onload = () => a(l), l.onerror = () => a(null), l.src = r;
528
+ }), n = fetch(o).then((a) => a.json());
529
+ return { preview: await i, slide: await n };
530
+ }
531
+ function Bt(e) {
532
+ if (typeof document < "u") {
533
+ const t = () => e(document.visibilityState === "visible");
534
+ return document.addEventListener("visibilitychange", t), () => document.removeEventListener("visibilitychange", t);
535
+ }
536
+ return G;
537
+ }
538
+ const qt = `.netless-app-slide-tele-fancy-scrollbar{overscroll-behavior:contain;overflow:auto;overflow-y:scroll;overflow-y:overlay;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;scrollbar-width:auto}.netless-app-slide-tele-fancy-scrollbar::-webkit-scrollbar{height:8px;width:8px}.netless-app-slide-tele-fancy-scrollbar::-webkit-scrollbar-track{background-color:transparent}.netless-app-slide-tele-fancy-scrollbar::-webkit-scrollbar-thumb{background-color:#444e601a;background-color:transparent;border-radius:4px;transition:background-color .4s}.netless-app-slide-tele-fancy-scrollbar:hover::-webkit-scrollbar-thumb{background-color:#444e601a}.netless-app-slide-tele-fancy-scrollbar::-webkit-scrollbar-thumb:hover{background-color:#444e6033}.netless-app-slide-tele-fancy-scrollbar::-webkit-scrollbar-thumb:active{background-color:#444e6033}.netless-app-slide-tele-fancy-scrollbar::-webkit-scrollbar-thumb:vertical{min-height:50px}.netless-app-slide-tele-fancy-scrollbar::-webkit-scrollbar-thumb:horizontal{min-width:50px}.netless-app-slide-content{position:relative;height:100%;overflow:hidden}.netless-app-slide-slide{width:100%;height:100%;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.netless-app-slide-preview-mask{display:none;position:absolute;z-index:10200;top:0;left:0;width:100%;height:100%}.netless-app-slide-preview{display:flex;flex-direction:column;align-items:center;position:absolute;z-index:10300;top:0;left:0;width:33%;max-width:200px;height:100%;padding-top:10px;transform:translate(-100%);background:rgba(237,237,240,.9);box-shadow:inset -1px 0 #0000001c;transition:transform .4s;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.netless-app-slide-preview-active .netless-app-slide-preview-mask{display:block}.netless-app-slide-preview-active .netless-app-slide-preview{transform:translate(0)}.netless-app-slide-preview-page{position:relative;display:block;width:55%;margin-bottom:10px;font-size:0;color:transparent;outline:none;border:7px solid transparent;border-radius:4px;transition:border-color .3s;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.netless-app-slide-preview-page:hover,.netless-app-slide-preview-page.netless-app-slide-preview-page-active{border-color:#444e601a}.netless-app-slide-preview-page>img{width:100%;height:auto;box-sizing:border-box;border:1px solid rgba(0,0,0,.5);border-radius:1px;background-color:#fff;box-shadow:0 2px 8px #0000004d}.netless-app-slide-preview-page-name{position:absolute;top:1px;left:-10px;transform:translate(-100%);text-align:right;font-size:12px;color:#5f5f5f;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.netless-app-slide-overlay{display:flex;align-items:center;justify-content:center;position:absolute;z-index:10100;top:0;left:0;width:100%;height:100%;padding:10px;box-sizing:border-box;background:rgba(255,0,0,.25);transition:opacity .3s;opacity:0;pointer-events:none}.netless-app-slide-footer{box-sizing:border-box;height:26px;display:flex;align-items:center;padding:0 16px;border-top:1px solid #eeeef7;font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.netless-app-slide-float-footer{width:100%;min-height:26px;position:absolute;left:0;bottom:0;z-index:2000;background:rgba(249,249,252,.9);transition:opacity .4s}.netless-app-slide-footer-btn{box-sizing:border-box;width:26px;height:26px;font-size:0;margin:0;padding:3px;border:none;border-radius:1px;outline:none;color:currentColor;background:transparent;transition:background .4s;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.netless-app-slide-footer-btn:hover{background:rgba(237,237,240,.9)}@media (hover: none){.netless-app-slide-footer-btn:hover{background:transparent!important}}.netless-app-slide-footer-btn>svg{width:100%;height:100%}.netless-app-slide-footer-btn>svg:nth-of-type(2){display:none}.netless-app-slide-footer-btn.netless-app-slide-footer-btn-playing>svg:nth-of-type(1){display:none}.netless-app-slide-footer-btn.netless-app-slide-footer-btn-playing>svg:nth-of-type(2){display:initial}.netless-app-slide-footer-btn~.netless-app-slide-footer-btn{margin-left:15px}.netless-app-slide-page-jumps{flex:1;display:flex;justify-content:center;align-items:center}.netless-app-slide-page-number{display:flex;align-items:center;height:26px;margin-left:auto;font-size:13px;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap;word-break:keep-all;font-variant-numeric:tabular-nums}.netless-app-slide-page-number-input{border:none;outline:none;width:3em;margin:0;padding:0 .5em 0 2px;text-align:right;font-size:13px;line-height:1;font-weight:400;border-radius:2px;color:currentColor;font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";background:transparent;transition:background .4s;font-variant-numeric:tabular-nums;-webkit-tap-highlight-color:rgba(0,0,0,0)}.netless-app-slide-page-number-input:hover,.netless-app-slide-page-number-input:focus,.netless-app-slide-page-number-input:active{user-select:text;background:#fff;box-shadow:#63636333 0 2px 8px}.netless-app-slide-readonly .netless-app-slide-footer-btn{cursor:not-allowed}.netless-app-slide-readonly .netless-app-slide-footer-btn:hover{background:transparent}.netless-app-slide-readonly .netless-app-slide-page-number-input{cursor:not-allowed}.netless-app-slide-readonly .netless-app-slide-page-number-input:hover,.netless-app-slide-readonly .netless-app-slide-page-number-input:focus,.netless-app-slide-readonly .netless-app-slide-page-number-input:active{background:transparent;box-shadow:none}.netless-app-slide-readonly .netless-app-slide-page-number-input:disabled{color:inherit}.netless-app-slide-readonly.netless-app-slide-float-footer,.netless-app-slide-wb-view-hidden{display:none}.telebox-color-scheme-dark .netless-app-slide-page-number-input:active,.telebox-color-scheme-dark .netless-app-slide-page-number-input:focus,.telebox-color-scheme-dark .netless-app-slide-page-number-input:hover{color:currentColor;background:#25282e}.telebox-color-scheme-dark .netless-app-slide-footer{border-top:none}.telebox-color-scheme-dark .netless-app-slide-footer-btn:hover{background:#212126}.telebox-color-scheme-dark .netless-app-slide-preview{background:rgba(50,50,50,.9)}.netless-app-slide-preview-wrapper{width:100%;height:100%;overflow:hidden;display:flex;flex-flow:column nowrap}.netless-app-slide-preview-wrapper .netless-app-slide-content{flex:1}.netless-app-slide-preview-wrapper .netless-app-slide-footer{flex-shrink:0}
539
+ `;
540
+ function Ht(e) {
541
+ const t = "http://www.w3.org/2000/svg", s = document.createElementNS(t, "svg");
542
+ s.setAttribute("class", `${e}-footer-icon-sidebar`), s.setAttribute("viewBox", "0 0 64 64");
543
+ const r = document.createElementNS(t, "path");
544
+ return r.setAttribute("fill", "currentColor"), r.setAttribute(
545
+ "d",
546
+ "M50 8H14c-3.309 0-6 2.691-6 6v36c0 3.309 2.691 6 6 6h36c3.309 0 6-2.691 6-6V14c0-3.309-2.691-6-6-6zM12 50V14c0-1.103.897-2 2-2h8v40h-8c-1.103 0-2-.897-2-2zm40 0c0 1.103-.897 2-2 2H26V12h24c1.103 0 2 .897 2 2z"
547
+ ), s.appendChild(r), s;
548
+ }
549
+ function jt(e) {
550
+ const t = "http://www.w3.org/2000/svg", s = document.createElementNS(t, "svg");
551
+ s.setAttribute("class", `${e}-footer-icon-arrow-left`), s.setAttribute("viewBox", "0 0 500 500");
552
+ const r = document.createElementNS(t, "path");
553
+ return r.setAttribute("fill", "currentColor"), r.setAttribute(
554
+ "d",
555
+ "M177.81 249.959L337.473 90.295c2.722-2.865 2.651-7.378-.143-10.1-2.793-2.65-7.163-2.65-9.956 0l-164.75 164.75c-2.793 2.793-2.793 7.306 0 10.1l164.75 164.75c2.865 2.722 7.378 2.65 10.099-.143 2.651-2.794 2.651-7.163 0-9.957L177.809 249.959z"
556
+ ), s.appendChild(r), s;
557
+ }
558
+ function Gt(e) {
559
+ const t = "http://www.w3.org/2000/svg", s = document.createElementNS(t, "svg");
560
+ s.setAttribute("class", `${e}-footer-icon-play`), s.setAttribute("viewBox", "0 0 500 500");
561
+ const r = document.createElementNS(t, "path");
562
+ return r.setAttribute("fill", "currentColor"), r.setAttribute(
563
+ "d",
564
+ "M418.158 257.419L174.663 413.33c-6.017 3.919-15.708 3.772-21.291-.29-2.791-2.018-4.295-4.483-4.295-7.084V94.109c0-5.65 6.883-10.289 15.271-10.289 4.298 0 8.391 1.307 11.181 3.332l242.629 155.484c6.016 3.917 6.451 10.292.649 14.491-.216.154-.432.154-.649.292zM170.621 391.288l223.116-141.301L170.71 107.753l-.089 283.535z"
565
+ ), s.appendChild(r), s;
566
+ }
567
+ function Wt(e) {
568
+ const t = "http://www.w3.org/2000/svg", s = document.createElementNS(t, "svg");
569
+ s.setAttribute("class", `${e}-footer-icon-pause`), s.setAttribute("viewBox", "0 0 500 500");
570
+ const r = document.createElementNS(t, "path");
571
+ return r.setAttribute("fill", "currentColor"), r.setAttribute(
572
+ "d",
573
+ "M312.491 78.261c0-6.159 4.893-11.213 11.04-11.213 6.158 0 11.211 5.054 11.211 11.213v343.478c0 6.159-5.053 11.213-11.211 11.213-6.147 0-11.04-5.054-11.04-11.213V78.261zM165.257 78.261c0-6.159 4.893-11.213 11.04-11.213 6.158 0 11.211 5.054 11.211 11.213v343.478c0 6.159-5.053 11.213-11.211 11.213-6.147 0-11.04-5.054-11.04-11.213V78.261z"
574
+ ), s.appendChild(r), s;
575
+ }
576
+ function Jt(e) {
577
+ const t = "http://www.w3.org/2000/svg", s = document.createElementNS(t, "svg");
578
+ s.setAttribute("class", `${e}-footer-icon-arrow-right`), s.setAttribute("viewBox", "0 0 500 500");
579
+ const r = document.createElementNS(t, "path");
580
+ return r.setAttribute("fill", "currentColor"), r.setAttribute(
581
+ "d",
582
+ "M322.19 250.041L162.527 409.705c-2.722 2.865-2.651 7.378.143 10.1 2.793 2.65 7.163 2.65 9.956 0l164.75-164.75c2.793-2.793 2.793-7.306 0-10.1l-164.75-164.75c-2.865-2.722-7.378-2.65-10.099.143-2.651 2.794-2.651 7.163 0 9.957l159.664 159.736z"
583
+ ), s.appendChild(r), s;
584
+ }
585
+ function Xt(e) {
586
+ const t = "http://www.w3.org/2000/svg", s = document.createElementNS(t, "svg");
587
+ s.setAttribute("class", `${e}-footer-icon-save`), s.setAttribute("viewBox", "0 0 448 512");
588
+ const r = document.createElementNS(t, "path");
589
+ return r.setAttribute("fill", "currentColor"), r.setAttribute(
590
+ "d",
591
+ "M224 256c-35.2 0-64 28.8-64 64c0 35.2 28.8 64 64 64c35.2 0 64-28.8 64-64C288 284.8 259.2 256 224 256zM433.1 129.1l-83.9-83.9C341.1 37.06 328.8 32 316.1 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V163.9C448 151.2 442.9 138.9 433.1 129.1zM128 80h144V160H128V80zM400 416c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16V96c0-8.838 7.164-16 16-16h16v104c0 13.25 10.75 24 24 24h192C309.3 208 320 197.3 320 184V83.88l78.25 78.25C399.4 163.2 400 164.8 400 166.3V416z"
592
+ ), s.appendChild(r), s;
593
+ }
594
+ function Zt(e) {
595
+ const t = "http://www.w3.org/2000/svg", s = document.createElementNS(t, "svg");
596
+ s.setAttribute("class", `${e}-footer-icon-spinner`), s.setAttribute("viewBox", "0 0 512 512");
597
+ const r = document.createElementNS(t, "path");
598
+ r.setAttribute("fill", "currentColor"), r.setAttribute(
599
+ "d",
600
+ "M304 48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zm0 416c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM48 304c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm464-48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM142.9 437c18.7-18.7 18.7-49.1 0-67.9s-49.1-18.7-67.9 0s-18.7 49.1 0 67.9s49.1 18.7 67.9 0zm0-294.2c18.7-18.7 18.7-49.1 0-67.9S93.7 56.2 75 75s-18.7 49.1 0 67.9s49.1 18.7 67.9 0zM369.1 437c18.7 18.7 49.1 18.7 67.9 0s18.7-49.1 0-67.9s-49.1-18.7-67.9 0s-18.7 49.1 0 67.9z"
601
+ );
602
+ const o = document.createElementNS(t, "animateTransform");
603
+ o.setAttribute("attributeName", "transform"), o.setAttribute("attributeType", "xml"), o.setAttribute("type", "rotate"), o.setAttribute("from", "0 256 256"), o.setAttribute("to", "360 256 256"), o.setAttribute("begin", "0s"), o.setAttribute("dur", "2s"), o.setAttribute("fill", "freeze"), o.setAttribute("repeatCount", "indefinite"), r.appendChild(o);
604
+ const i = document.createElementNS(t, "text");
605
+ return i.setAttribute("x", "125"), i.setAttribute("y", "345"), i.setAttribute("data-id", "progress"), i.style.fontSize = "246px", i.textContent = "20", s.appendChild(i), s.appendChild(r), s;
606
+ }
607
+ function Kt() {
608
+ let e = G;
609
+ const t = (h) => {
610
+ e = h;
611
+ };
612
+ let s = G;
613
+ const r = (h) => {
614
+ s = h;
615
+ };
616
+ let o = G;
617
+ const i = (h) => {
618
+ o = h;
619
+ };
620
+ let n = !1, a = !1, l = 0, d = 0;
621
+ const b = y("div", "footer"), g = y("button", "btn-sidebar");
622
+ g.classList.add(_("footer-btn")), g.appendChild(Ht(D)), g.onclick = function() {
623
+ n || s();
624
+ }, g.style.display = "none", b.appendChild(g);
625
+ const m = y("div", "page-jumps"), c = y("button", "btn-page-back");
626
+ c.classList.add(_("footer-btn")), c.appendChild(jt(D)), c.onclick = function() {
627
+ n || e(l - 1);
628
+ }, m.appendChild(c);
629
+ const f = y("button", "btn-page-play");
630
+ f.classList.add(_("footer-btn")), f.appendChild(Gt(D)), f.appendChild(Wt(D));
631
+ let E = 0;
632
+ f.onclick = function() {
633
+ n || (f.classList.add(_("footer-btn-playing")), o(), clearTimeout(E), E = window.setTimeout(() => {
634
+ f.classList.remove(_("footer-btn-playing"));
635
+ }, 500));
636
+ }, m.appendChild(f);
637
+ const $ = y("button", "btn-page-next");
638
+ $.classList.add(_("footer-btn")), $.appendChild(Jt(D)), $.onclick = function() {
639
+ n || e(l + 1);
640
+ }, m.appendChild($);
641
+ const A = y("div", "page-number"), v = y("input", "page-number-input");
642
+ v.value = String(l + 1), v.onchange = function() {
643
+ n || v.value && e(Number(v.value) - 1);
644
+ };
645
+ const p = y("span", "total-page");
646
+ p.textContent = " / ", A.appendChild(v), A.appendChild(p), b.appendChild(m), b.appendChild(A);
647
+ const w = _("readonly");
648
+ let k = G;
649
+ const S = (h) => {
650
+ k = h;
651
+ }, I = (h) => {
652
+ if (h < 99) {
653
+ z.style.display = "block", M.style.display = "none";
654
+ const se = z.querySelector("[data-id]");
655
+ se && (se.textContent = h.toString().padStart(2, "0"));
656
+ } else
657
+ z.style.display = "none", M.style.display = "block";
658
+ }, M = Xt(D), z = Zt(D);
659
+ z.style.display = "none";
660
+ const T = y("button", "footer-btn");
661
+ T.appendChild(M), T.onclick = function() {
662
+ k(I);
663
+ }, T.appendChild(z);
664
+ function P(h) {
665
+ n !== h && (n = h, b.classList.toggle(w, n), v.disabled = n);
666
+ }
667
+ function vt(h) {
668
+ a !== h && (a = h, g.style.display = a ? "" : "none");
669
+ }
670
+ function wt(h, se = !1) {
671
+ (se || l !== h) && (l = h, v.value = String(l + 1));
672
+ }
673
+ function _t(h) {
674
+ d !== h && (d = h, p.textContent = ` / ${d}`);
675
+ }
676
+ return {
677
+ $footer: b,
678
+ $pageNumberInput: v,
679
+ set_readonly: P,
680
+ set_sidebar: vt,
681
+ set_page_index: wt,
682
+ set_page_count: _t,
683
+ on_new_page_index: t,
684
+ on_toggle_preview: r,
685
+ on_play: i,
686
+ on_save_to_pdf: S
687
+ };
688
+ }
689
+ const U = typeof window < "u", He = U && !("onscroll" in window) || typeof navigator < "u" && /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent), je = U && "IntersectionObserver" in window, Ge = U && "classList" in document.createElement("p"), We = U && window.devicePixelRatio > 1, Qt = {
690
+ elements_selector: ".lazy",
691
+ container: He || U ? document : null,
692
+ threshold: 300,
693
+ thresholds: null,
694
+ data_src: "src",
695
+ data_srcset: "srcset",
696
+ data_sizes: "sizes",
697
+ data_bg: "bg",
698
+ data_bg_hidpi: "bg-hidpi",
699
+ data_bg_multi: "bg-multi",
700
+ data_bg_multi_hidpi: "bg-multi-hidpi",
701
+ data_bg_set: "bg-set",
702
+ data_poster: "poster",
703
+ class_applied: "applied",
704
+ class_loading: "loading",
705
+ class_loaded: "loaded",
706
+ class_error: "error",
707
+ class_entered: "entered",
708
+ class_exited: "exited",
709
+ unobserve_completed: !0,
710
+ unobserve_entered: !1,
711
+ cancel_on_exit: !0,
712
+ callback_enter: null,
713
+ callback_exit: null,
714
+ callback_applied: null,
715
+ callback_loading: null,
716
+ callback_loaded: null,
717
+ callback_error: null,
718
+ callback_finish: null,
719
+ callback_cancel: null,
720
+ use_native: !1,
721
+ restore_on_error: !1
722
+ }, Je = (e) => Object.assign({}, Qt, e), Le = function(e, t) {
723
+ let s;
724
+ const r = "LazyLoad::Initialized", o = new e(t);
725
+ try {
726
+ s = new CustomEvent(r, { detail: { instance: o } });
727
+ } catch {
728
+ s = document.createEvent("CustomEvent"), s.initCustomEvent(r, !1, !1, { instance: o });
729
+ }
730
+ window.dispatchEvent(s);
731
+ }, Yt = (e, t) => {
732
+ if (t)
733
+ if (!t.length)
734
+ Le(e, t);
735
+ else
736
+ for (let s = 0, r; r = t[s]; s += 1)
737
+ Le(e, r);
738
+ }, O = "src", ge = "srcset", be = "sizes", Xe = "poster", Y = "llOriginalAttrs", Ze = "data", me = "loading", Ke = "loaded", Qe = "applied", es = "entered", ve = "error", Ye = "native", et = "data-", tt = "ll-status", x = (e, t) => e.getAttribute(et + t), ts = (e, t, s) => {
739
+ var r = et + t;
740
+ if (s === null) {
741
+ e.removeAttribute(r);
742
+ return;
743
+ }
744
+ e.setAttribute(r, s);
745
+ }, ee = (e) => x(e, tt), j = (e, t) => ts(e, tt, t), ae = (e) => j(e, null), we = (e) => ee(e) === null, ss = (e) => ee(e) === me, rs = (e) => ee(e) === ve, _e = (e) => ee(e) === Ye, os = [me, Ke, Qe, ve], ns = (e) => os.indexOf(ee(e)) >= 0, B = (e, t, s, r) => {
746
+ if (e) {
747
+ if (r !== void 0) {
748
+ e(t, s, r);
749
+ return;
750
+ }
751
+ if (s !== void 0) {
752
+ e(t, s);
753
+ return;
754
+ }
755
+ e(t);
756
+ }
757
+ }, J = (e, t) => {
758
+ if (Ge) {
759
+ e.classList.add(t);
760
+ return;
761
+ }
762
+ e.className += (e.className ? " " : "") + t;
763
+ }, L = (e, t) => {
764
+ if (Ge) {
765
+ e.classList.remove(t);
766
+ return;
767
+ }
768
+ e.className = e.className.replace(new RegExp("(^|\\s+)" + t + "(\\s+|$)"), " ").replace(/^\s+/, "").replace(/\s+$/, "");
769
+ }, as = (e) => {
770
+ e.llTempImage = document.createElement("IMG");
771
+ }, is = (e) => {
772
+ delete e.llTempImage;
773
+ }, st = (e) => e.llTempImage, ie = (e, t) => {
774
+ if (!t)
775
+ return;
776
+ const s = t._observer;
777
+ s && s.unobserve(e);
778
+ }, ls = (e) => {
779
+ e.disconnect();
780
+ }, cs = (e, t, s) => {
781
+ t.unobserve_entered && ie(e, s);
782
+ }, ye = (e, t) => {
783
+ e && (e.loadingCount += t);
784
+ }, ds = (e) => {
785
+ e && (e.toLoadCount -= 1);
786
+ }, rt = (e, t) => {
787
+ e && (e.toLoadCount = t);
788
+ }, us = (e) => e.loadingCount > 0, ps = (e) => e.toLoadCount > 0, ot = (e) => {
789
+ let t = [];
790
+ for (let s = 0, r; r = e.children[s]; s += 1)
791
+ r.tagName === "SOURCE" && t.push(r);
792
+ return t;
793
+ }, ke = (e, t) => {
794
+ const s = e.parentNode;
795
+ if (!s || s.tagName !== "PICTURE")
796
+ return;
797
+ ot(s).forEach(t);
798
+ }, nt = (e, t) => {
799
+ ot(e).forEach(t);
800
+ }, le = [O], at = [O, Xe], K = [O, ge, be], it = [Ze], ce = (e) => !!e[Y], lt = (e) => e[Y], ct = (e) => delete e[Y], W = (e, t) => {
801
+ if (ce(e))
802
+ return;
803
+ const s = {};
804
+ t.forEach((r) => {
805
+ s[r] = e.getAttribute(r);
806
+ }), e[Y] = s;
807
+ }, hs = (e) => {
808
+ ce(e) || (e[Y] = { backgroundImage: e.style.backgroundImage });
809
+ }, fs = (e, t, s) => {
810
+ if (!s) {
811
+ e.removeAttribute(t);
812
+ return;
813
+ }
814
+ e.setAttribute(t, s);
815
+ }, H = (e, t) => {
816
+ if (!ce(e))
817
+ return;
818
+ const s = lt(e);
819
+ t.forEach((r) => {
820
+ fs(e, r, s[r]);
821
+ });
822
+ }, gs = (e) => {
823
+ if (!ce(e))
824
+ return;
825
+ const t = lt(e);
826
+ e.style.backgroundImage = t.backgroundImage;
827
+ }, dt = (e, t, s) => {
828
+ J(e, t.class_applied), j(e, Qe), s && (t.unobserve_completed && ie(e, t), B(t.callback_applied, e, s));
829
+ }, ut = (e, t, s) => {
830
+ J(e, t.class_loading), j(e, me), s && (ye(s, 1), B(t.callback_loading, e, s));
831
+ }, V = (e, t, s) => {
832
+ s && e.setAttribute(t, s);
833
+ }, Me = (e, t) => {
834
+ V(e, be, x(e, t.data_sizes)), V(e, ge, x(e, t.data_srcset)), V(e, O, x(e, t.data_src));
835
+ }, bs = (e, t) => {
836
+ ke(e, (s) => {
837
+ W(s, K), Me(s, t);
838
+ }), W(e, K), Me(e, t);
839
+ }, ms = (e, t) => {
840
+ W(e, le), V(e, O, x(e, t.data_src));
841
+ }, vs = (e, t) => {
842
+ nt(e, (s) => {
843
+ W(s, le), V(s, O, x(s, t.data_src));
844
+ }), W(e, at), V(e, Xe, x(e, t.data_poster)), V(e, O, x(e, t.data_src)), e.load();
845
+ }, ws = (e, t) => {
846
+ W(e, it), V(e, Ze, x(e, t.data_src));
847
+ }, _s = (e, t, s) => {
848
+ const r = x(e, t.data_bg), o = x(e, t.data_bg_hidpi), i = We && o ? o : r;
849
+ i && (e.style.backgroundImage = `url("${i}")`, st(e).setAttribute(O, i), ut(e, t, s));
850
+ }, ys = (e, t, s) => {
851
+ const r = x(e, t.data_bg_multi), o = x(e, t.data_bg_multi_hidpi), i = We && o ? o : r;
852
+ i && (e.style.backgroundImage = i, dt(e, t, s));
853
+ }, ks = (e, t, s) => {
854
+ const r = x(e, t.data_bg_set);
855
+ if (!r)
856
+ return;
857
+ const o = r.split("|");
858
+ let i = o.map((n) => `image-set(${n})`);
859
+ e.style.backgroundImage = i.join(), e.style.backgroundImage === "" && (i = o.map((n) => `-webkit-image-set(${n})`), e.style.backgroundImage = i.join()), dt(e, t, s);
860
+ }, pt = {
861
+ IMG: bs,
862
+ IFRAME: ms,
863
+ VIDEO: vs,
864
+ OBJECT: ws
865
+ }, Ss = (e, t) => {
866
+ const s = pt[e.tagName];
867
+ s && s(e, t);
868
+ }, xs = (e, t, s) => {
869
+ const r = pt[e.tagName];
870
+ r && (r(e, t), ut(e, t, s));
871
+ }, Es = ["IMG", "IFRAME", "VIDEO", "OBJECT"], Cs = (e) => Es.indexOf(e.tagName) > -1, ht = (e, t) => {
872
+ t && !us(t) && !ps(t) && B(e.callback_finish, t);
873
+ }, Ne = (e, t, s) => {
874
+ e.addEventListener(t, s), e.llEvLisnrs[t] = s;
875
+ }, As = (e, t, s) => {
876
+ e.removeEventListener(t, s);
877
+ }, Se = (e) => !!e.llEvLisnrs, Is = (e, t, s) => {
878
+ Se(e) || (e.llEvLisnrs = {});
879
+ const r = e.tagName === "VIDEO" ? "loadeddata" : "load";
880
+ Ne(e, r, t), Ne(e, "error", s);
881
+ }, fe = (e) => {
882
+ if (!Se(e))
883
+ return;
884
+ const t = e.llEvLisnrs;
885
+ for (let s in t) {
886
+ const r = t[s];
887
+ As(e, s, r);
888
+ }
889
+ delete e.llEvLisnrs;
890
+ }, ft = (e, t, s) => {
891
+ is(e), ye(s, -1), ds(s), L(e, t.class_loading), t.unobserve_completed && ie(e, s);
892
+ }, zs = (e, t, s, r) => {
893
+ const o = _e(t);
894
+ ft(t, s, r), J(t, s.class_loaded), j(t, Ke), B(s.callback_loaded, t, r), o || ht(s, r);
895
+ }, $s = (e, t, s, r) => {
896
+ const o = _e(t);
897
+ ft(t, s, r), J(t, s.class_error), j(t, ve), B(s.callback_error, t, r), s.restore_on_error && H(t, K), o || ht(s, r);
898
+ }, xe = (e, t, s) => {
899
+ const r = st(e) || e;
900
+ if (Se(r))
901
+ return;
902
+ Is(r, (n) => {
903
+ zs(n, e, t, s), fe(r);
904
+ }, (n) => {
905
+ $s(n, e, t, s), fe(r);
906
+ });
907
+ }, Ls = (e, t, s) => {
908
+ as(e), xe(e, t, s), hs(e), _s(e, t, s), ys(e, t, s), ks(e, t, s);
909
+ }, Ms = (e, t, s) => {
910
+ xe(e, t, s), xs(e, t, s);
911
+ }, Ee = (e, t, s) => {
912
+ Cs(e) ? Ms(e, t, s) : Ls(e, t, s);
913
+ }, Ns = (e, t, s) => {
914
+ e.setAttribute("loading", "lazy"), xe(e, t, s), Ss(e, t), j(e, Ye);
915
+ }, Oe = (e) => {
916
+ e.removeAttribute(O), e.removeAttribute(ge), e.removeAttribute(be);
917
+ }, Os = (e) => {
918
+ ke(e, (t) => {
919
+ Oe(t);
920
+ }), Oe(e);
921
+ }, gt = (e) => {
922
+ ke(e, (t) => {
923
+ H(t, K);
924
+ }), H(e, K);
925
+ }, Ts = (e) => {
926
+ nt(e, (t) => {
927
+ H(t, le);
928
+ }), H(e, at), e.load();
929
+ }, Ps = (e) => {
930
+ H(e, le);
931
+ }, Ds = (e) => {
932
+ H(e, it);
933
+ }, Fs = {
934
+ IMG: gt,
935
+ IFRAME: Ps,
936
+ VIDEO: Ts,
937
+ OBJECT: Ds
938
+ }, Rs = (e) => {
939
+ const t = Fs[e.tagName];
940
+ if (!t) {
941
+ gs(e);
942
+ return;
943
+ }
944
+ t(e);
945
+ }, Vs = (e, t) => {
946
+ we(e) || _e(e) || (L(e, t.class_entered), L(e, t.class_exited), L(e, t.class_applied), L(e, t.class_loading), L(e, t.class_loaded), L(e, t.class_error));
947
+ }, Us = (e, t) => {
948
+ Rs(e), Vs(e, t), ae(e), ct(e);
949
+ }, Bs = (e, t, s, r) => {
950
+ s.cancel_on_exit && ss(e) && e.tagName === "IMG" && (fe(e), Os(e), gt(e), L(e, s.class_loading), ye(r, -1), ae(e), B(s.callback_cancel, e, t, r));
951
+ }, qs = (e, t, s, r) => {
952
+ const o = ns(e);
953
+ j(e, es), J(e, s.class_entered), L(e, s.class_exited), cs(e, s, r), B(s.callback_enter, e, t, r), !o && Ee(e, s, r);
954
+ }, Hs = (e, t, s, r) => {
955
+ we(e) || (J(e, s.class_exited), Bs(e, t, s, r), B(s.callback_exit, e, t, r));
956
+ }, js = ["IMG", "IFRAME", "VIDEO"], bt = (e) => e.use_native && "loading" in HTMLImageElement.prototype, Gs = (e, t, s) => {
957
+ e.forEach((r) => {
958
+ js.indexOf(r.tagName) !== -1 && Ns(r, t, s);
959
+ }), rt(s, 0);
960
+ }, Ws = (e) => e.isIntersecting || e.intersectionRatio > 0, Js = (e) => ({
961
+ root: e.container === document ? null : e.container,
962
+ rootMargin: e.thresholds || e.threshold + "px"
963
+ }), Xs = (e, t, s) => {
964
+ e.forEach(
965
+ (r) => Ws(r) ? qs(r.target, r, t, s) : Hs(r.target, r, t, s)
966
+ );
967
+ }, Zs = (e, t) => {
968
+ t.forEach((s) => {
969
+ e.observe(s);
970
+ });
971
+ }, Ks = (e, t) => {
972
+ ls(e), Zs(e, t);
973
+ }, Qs = (e, t) => {
974
+ !je || bt(e) || (t._observer = new IntersectionObserver((s) => {
975
+ Xs(s, e, t);
976
+ }, Js(e)));
977
+ }, mt = (e) => Array.prototype.slice.call(e), ne = (e) => e.container.querySelectorAll(e.elements_selector), Ys = (e) => mt(e).filter(we), er = (e) => rs(e), tr = (e) => mt(e).filter(er), Te = (e, t) => Ys(e || ne(t)), sr = (e, t) => {
978
+ tr(ne(e)).forEach((r) => {
979
+ L(r, e.class_error), ae(r);
980
+ }), t.update();
981
+ }, rr = (e, t) => {
982
+ U && (t._onlineHandler = () => {
983
+ sr(e, t);
984
+ }, window.addEventListener("online", t._onlineHandler));
985
+ }, or = (e) => {
986
+ U && window.removeEventListener("online", e._onlineHandler);
987
+ }, te = function(e, t) {
988
+ const s = Je(e);
989
+ this._settings = s, this.loadingCount = 0, Qs(s, this), rr(s, this), this.update(t);
990
+ };
991
+ te.prototype = {
992
+ update: function(e) {
993
+ const t = this._settings, s = Te(e, t);
994
+ if (rt(this, s.length), He || !je) {
995
+ this.loadAll(s);
996
+ return;
997
+ }
998
+ if (bt(t)) {
999
+ Gs(s, t, this);
1000
+ return;
1001
+ }
1002
+ Ks(this._observer, s);
1003
+ },
1004
+ destroy: function() {
1005
+ this._observer && this._observer.disconnect(), or(this), ne(this._settings).forEach((e) => {
1006
+ ct(e);
1007
+ }), delete this._observer, delete this._settings, delete this._onlineHandler, delete this.loadingCount, delete this.toLoadCount;
1008
+ },
1009
+ loadAll: function(e) {
1010
+ const t = this._settings;
1011
+ Te(e, t).forEach((r) => {
1012
+ ie(r, this), Ee(r, t, this);
1013
+ });
1014
+ },
1015
+ restoreAll: function() {
1016
+ const e = this._settings;
1017
+ ne(e).forEach((t) => {
1018
+ Us(t, e);
1019
+ });
1020
+ }
1021
+ };
1022
+ te.load = (e, t) => {
1023
+ const s = Je(t);
1024
+ Ee(e, s);
1025
+ };
1026
+ te.resetStatus = (e) => {
1027
+ ae(e);
1028
+ };
1029
+ U && Yt(te, window.lazyLoadOptions);
1030
+ function nr() {
1031
+ let e = G;
1032
+ const t = (p) => {
1033
+ e = p;
1034
+ };
1035
+ let s = !1, r = !1, o = !1, i = [], n = 0;
1036
+ const a = _("readonly"), l = _("preview-active"), d = y("div", "content"), b = y("div", "preview-mask");
1037
+ b.onclick = function(w) {
1038
+ r || w.target === b && f(!1);
1039
+ }, q(d, b);
1040
+ const g = y("div", "preview");
1041
+ g.classList.add(_("tele-fancy-scrollbar")), g.onclick = function(w) {
1042
+ var S;
1043
+ if (r)
1044
+ return;
1045
+ const k = (S = w.target.dataset) == null ? void 0 : S.pageIndex;
1046
+ k && (w.preventDefault(), w.stopPropagation(), w.stopImmediatePropagation(), e(Number(k)), f(!1));
1047
+ }, q(d, g);
1048
+ let m;
1049
+ function c(p) {
1050
+ r !== p && (r = p, d.classList.toggle(a, r));
1051
+ }
1052
+ function f(p) {
1053
+ o !== p && (o = p, d.classList.toggle(l, o), o && !m && (m = new te({
1054
+ container: g,
1055
+ elements_selector: `.${_("preview-page>img")}`
1056
+ })));
1057
+ }
1058
+ function E(p) {
1059
+ if (i !== p) {
1060
+ i = p;
1061
+ const w = _("preview-page"), k = _("preview-page-name");
1062
+ i.forEach((S, I) => {
1063
+ const M = String(I), z = oe("a");
1064
+ z.className = w + " " + _(`preview-page-${I}`), z.href = "#", z.dataset.pageIndex = M;
1065
+ const T = oe("span");
1066
+ T.className = k, T.textContent = String(I + 1), T.dataset.pageIndex = M;
1067
+ const P = oe("img");
1068
+ P.width = S.width, P.height = S.height, P.alt = `page-${I}`, P.dataset.src = S.thumbnail, P.dataset.pageIndex = M, q(z, P), q(z, T), q(g, z);
1069
+ }), s || m == null || m.update();
1070
+ }
1071
+ }
1072
+ function $(p, w = !1) {
1073
+ if (w || n !== p) {
1074
+ n = p;
1075
+ const k = g.querySelector(
1076
+ `.${_(`preview-page-${n}`)}`
1077
+ );
1078
+ k && g.scrollTo({ top: k.offsetTop - 16 });
1079
+ }
1080
+ }
1081
+ function A() {
1082
+ s = !0, m == null || m.destroy();
1083
+ }
1084
+ function v() {
1085
+ return o;
1086
+ }
1087
+ return {
1088
+ $content: d,
1089
+ $preview: g,
1090
+ set_readonly: c,
1091
+ set_active: f,
1092
+ get_active: v,
1093
+ set_pages: E,
1094
+ on_new_page_index: t,
1095
+ set_page_index: $,
1096
+ destroy: A
1097
+ };
1098
+ }
1099
+ const Ce = class {
1100
+ constructor(t) {
1101
+ u(this, "sideEffect", new De());
1102
+ u(this, "events", new zt());
1103
+ u(this, "$slide", y("div", "slide"));
1104
+ u(this, "$overlay", y("div", "overlay"));
1105
+ u(this, "sidebar", nr());
1106
+ u(this, "footer", Kt());
1107
+ u(this, "$content");
1108
+ u(this, "$footer");
1109
+ u(this, "slide");
1110
+ u(this, "_slideTitle", "");
1111
+ u(this, "_getWhiteSnapshot", null);
1112
+ u(this, "_readyPromise");
1113
+ u(this, "_infoPromise");
1114
+ u(this, "_ready", !1);
1115
+ u(this, "_slideCount", 0);
1116
+ u(this, "_destroyed", !1);
1117
+ u(this, "_isFrozen", !1);
1118
+ u(this, "_cachedIsFrozen", !1);
1119
+ u(this, "onPlay", () => {
1120
+ this.slide.nextStep();
1121
+ });
1122
+ u(this, "onNewPageIndex", (t) => {
1123
+ this._ready && t >= 0 && t < this._slideCount ? this.slide.renderSlide(t + 1) : this.setPage(this.slide.slideState.currentSlideIndex);
1124
+ });
1125
+ u(this, "onTogglePreview", () => {
1126
+ this.sidebar.set_active(!this.sidebar.get_active());
1127
+ });
1128
+ u(this, "toPdf", async (t) => {
1129
+ const r = document.createElement("canvas"), o = r.getContext("2d"), { slideCount: i, width: n, height: a } = this.slide;
1130
+ let l = Math.floor(n), d = Math.floor(a);
1131
+ l > 1920 && (l = 1920, d = Math.floor(a * l / n)), d > 1920 && (d = 1920, l = Math.floor(n * d / a)), r.width = l, r.height = d;
1132
+ const b = document.createElement("canvas");
1133
+ b.width = n, b.height = a;
1134
+ const g = b.getContext("2d");
1135
+ if (!g || !this._getWhiteSnapshot || !o)
1136
+ return null;
1137
+ const m = l > d ? "l" : "p", { jsPDF: c } = await import("jspdf"), f = new c({
1138
+ format: [l, d],
1139
+ orientation: m,
1140
+ compress: !0
1141
+ });
1142
+ for (let p = 1; p <= i; p++) {
1143
+ const w = await this.slide.snapshotWithTimingEnd(p);
1144
+ if (w) {
1145
+ const S = document.createElement("img");
1146
+ S.src = w, await new Promise((I) => S.onload = I), o.drawImage(S, 0, 0, l, d);
1147
+ }
1148
+ g.clearRect(0, 0, n, a), this._getWhiteSnapshot(p, b, g);
1149
+ try {
1150
+ const S = b.toDataURL("image/png"), I = document.createElement("img");
1151
+ I.src = S, await new Promise((M) => I.onload = M), o.drawImage(I, 0, 0, l, d);
1152
+ } catch {
1153
+ }
1154
+ const k = r.toDataURL("image/jpeg", 0.6);
1155
+ p > 1 && f.addPage(), f.addImage(k, "JPEG", 0, 0, l, d, "", "FAST"), o.clearRect(0, 0, l, d), t(Math.ceil(p / i * 100));
1156
+ }
1157
+ const E = f.output("arraybuffer"), $ = new Blob([E]), A = URL.createObjectURL($), v = document.createElement("a");
1158
+ v.setAttribute("href", A), v.setAttribute("download", `${this._slideTitle || "snapshot"}.pdf`), v.style.display = "none", document.body.appendChild(v), v.click(), document.body.removeChild(v), window.postMessage({ type: "@app-slide/_download_pdf_", buf: E });
1159
+ });
1160
+ this.$content = this.sidebar.$content, this.$footer = this.footer.$footer, q(this.$content, this.$slide), q(this.$content, this.$overlay), this.sidebar.on_new_page_index(this.onNewPageIndex), this.footer.on_new_page_index(this.onNewPageIndex), this.footer.on_toggle_preview(this.onTogglePreview), this.footer.on_play(this.onPlay), this.footer.on_save_to_pdf(this.toPdf), this.sideEffect.push(this.sidebar.destroy), this.sideEffect.push(() => this.slide.destroy()), this.sideEffect.push(() => {
1161
+ this.$content.parentElement && this.$content.remove(), this.$footer.parentElement && this.$footer.remove(), this.$slide.parentElement && this.$slide.remove();
1162
+ }), this.sideEffect.push(
1163
+ Bt((a) => {
1164
+ this._destroyed || (a ? this._cachedIsFrozen || this.unfreeze() : (this._cachedIsFrozen = this._isFrozen, this.freeze()));
1165
+ })
1166
+ );
1167
+ const [s, r] = $e();
1168
+ this._infoPromise = s, Ce.fetchSlideInfo(t).then(({ preview: a, slide: l }) => {
1169
+ if (!this._destroyed) {
1170
+ if (this._slideCount = l.slideCount, a) {
1171
+ const { taskId: d, url: b } = t, { slideCount: g } = l, { width: m, height: c } = a, f = qe(d, b), E = Array.from({ length: g }, ($, A) => ({
1172
+ width: m,
1173
+ height: c,
1174
+ thumbnail: `${f}/preview/${A + 1}.png`
1175
+ }));
1176
+ this.sidebar.set_pages(E), this.footer.set_sidebar(!0);
1177
+ }
1178
+ this.footer.set_page_count(l.slideCount), r(l);
1179
+ }
1180
+ }).catch((a) => {
1181
+ console.log("[Slide] fetch slide info error"), console.error(a), this.events.emit("prepareError", a);
1182
+ });
1183
+ const [i, n] = $e();
1184
+ this._readyPromise = i, this.slide = new ue({
1185
+ anchor: this.$slide,
1186
+ mode: "local",
1187
+ interactive: !0,
1188
+ enableGlobalClick: !0,
1189
+ useLocalCache: !0,
1190
+ ...t
1191
+ }), this.slide.setResource(t.taskId, t.url || Fe), this.slide.on("renderStart", () => {
1192
+ this._destroyed || this.events.emit("renderStart");
1193
+ }), this.slide.on("slideChange", (a) => {
1194
+ this._destroyed || (this.setPage(a), this.$overlay.style.opacity = "", this.events.emit("renderEnd"));
1195
+ }), this.slide.once("renderEnd", () => {
1196
+ this._ready || setTimeout(() => {
1197
+ this._ready = !0, n();
1198
+ }, 1e3);
1199
+ }), this.slide.on("renderError", (a) => {
1200
+ this._destroyed || a.error && (console.error(a.error), this.$overlay.textContent = `Error on slide.index=${a.index}: ${a.error.message}`, this.$overlay.style.opacity = "1", this.events.emit("renderError", a));
1201
+ }), this.ready(() => {
1202
+ this._isFrozen && this.freeze();
1203
+ });
1204
+ }
1205
+ prepare(t) {
1206
+ return this._infoPromise.then(t);
1207
+ }
1208
+ ready(t) {
1209
+ return this._readyPromise.then(t);
1210
+ }
1211
+ destroy() {
1212
+ this._destroyed = !0, this.sideEffect.flushAll();
1213
+ }
1214
+ setReadonly(t) {
1215
+ this.slide.setInteractive(!t), this.sidebar.set_readonly(t), this.footer.set_readonly(t);
1216
+ }
1217
+ setPage(t) {
1218
+ this.sidebar.set_page_index(t - 1, !0), this.footer.set_page_index(t - 1, !0);
1219
+ }
1220
+ freeze() {
1221
+ this._destroyed || (this._isFrozen = !0, this._ready && (this.slide.frozen(), this.events.emit("freeze")));
1222
+ }
1223
+ unfreeze() {
1224
+ this._destroyed || (this._isFrozen = !1, this._ready && (this.slide.release(), this.events.emit("unfreeze")));
1225
+ }
1226
+ };
1227
+ let F = Ce;
1228
+ u(F, "styles", qt), u(F, "fetchSlideInfo", Ut);
1229
+ function ar(e) {
1230
+ return e.displayer.logger;
1231
+ }
1232
+ const N = class {
1233
+ constructor(t) {
1234
+ u(this, "info", (t) => {
1235
+ N.roomLogger && this.context ? N.roomLogger.info(t + ` (${this.context.appId})`) : this.context ? console.debug(t + ` (${this.context.appId})`) : console.debug(t);
1236
+ });
1237
+ this.context = t, t && (N.active.add(t.appId), N.roomLogger = ar(t));
1238
+ }
1239
+ destroy() {
1240
+ this.context && N.active.delete(this.context.appId), N.active.size === 0 && (N.roomLogger = null);
1241
+ }
1242
+ };
1243
+ let X = N;
1244
+ u(X, "active", /* @__PURE__ */ new Set()), u(X, "roomLogger", null);
1245
+ function ir({ context: e, storage: t, viewer: s, sideEffect: r, logger: o }) {
1246
+ const i = o.info.bind(o);
1247
+ let n = null;
1248
+ s.prepare(({ width: c, height: f, slideCount: E }) => {
1249
+ e.destroyed || (c && e.box.setStageRatio(f / c), n = e.createWhiteBoardView({ size: E }), n.setBaseRect({ width: c, height: f }), s._slideTitle = e.box.title, s._getWhiteSnapshot = ($, A, v) => {
1250
+ if (!n)
1251
+ return null;
1252
+ const p = n.pageState.pages[$ - 1], { width: w, height: k } = n.view.size;
1253
+ A.width = w, A.height = k, n.view.screenshotToCanvas(v, p, w, k, n.view.camera);
1254
+ }, d());
1255
+ });
1256
+ const { slide: a } = s;
1257
+ function l(c = t.state.state) {
1258
+ return JSON.stringify(c);
1259
+ }
1260
+ function d() {
1261
+ if (t.state.state)
1262
+ i("[Slide] restore " + l()), a.setSlideState(t.state.state);
1263
+ else if (e.isAddApp)
1264
+ i("[Slide] kick start"), a.renderSlide(1);
1265
+ else {
1266
+ i("[Slide] wait for restore");
1267
+ const c = r.add(() => {
1268
+ const E = setInterval(() => {
1269
+ t.state.state || (i("[Slide] timeout"), a.renderSlide(1));
1270
+ }, 15e3);
1271
+ return () => clearInterval(E);
1272
+ }), f = r.push(
1273
+ t.on("stateChanged", () => {
1274
+ t.state.state && (i("[Slide] restore " + l()), a.setSlideState(t.state.state), r.flush(f), r.flush(c));
1275
+ })
1276
+ );
1277
+ }
1278
+ }
1279
+ a.on("stateChange", () => {
1280
+ t.isWritable && t.setState({ state: a.slideState });
1281
+ }), a.on("syncDispatch", (c) => {
1282
+ e.isWritable && (i("[Slide] dispatch " + l(ze(c, "uuid"))), e.dispatchMagixEvent("syncDispatch", c));
1283
+ }), r.push(
1284
+ e.addMagixEventListener(
1285
+ "syncDispatch",
1286
+ ({ payload: c }) => {
1287
+ i("[Slide] receive " + l(ze(c, "uuid"))), a.emit("syncReceive", c);
1288
+ },
1289
+ { fireSelfEventAfterCommit: !0 }
1290
+ )
1291
+ ), a.on("slideChange", (c) => {
1292
+ e.isWritable && n && (i("[Slide] page to " + c), n.jumpPage(c - 1));
1293
+ });
1294
+ function b() {
1295
+ n && n.view.divElement && n.view.divElement.classList.add(_("wb-view-hidden"));
1296
+ }
1297
+ function g() {
1298
+ n && n.view.divElement && n.view.divElement.classList.remove(_("wb-view-hidden"));
1299
+ }
1300
+ s.setReadonly(!e.isWritable), r.push([
1301
+ e.emitter.on("writableChange", () => s.setReadonly(!e.isWritable)),
1302
+ s.events.on("renderStart", b),
1303
+ s.events.on("renderEnd", g)
1304
+ ]);
1305
+ const m = (c) => {
1306
+ if (!c)
1307
+ return !1;
1308
+ const f = c.tagName;
1309
+ return f === "INPUT" || f === "TEXTAREA" || f === "SELECT";
1310
+ };
1311
+ r.addEventListener(window, "keydown", (c) => {
1312
+ !c || c.target.className === "telebox-quarantine-outer" || e.box.focus && !e.box.readonly && !m(c.target) && ((c.key === "ArrowUp" || c.key === "ArrowLeft") && s.slide.prevStep(), (c.key === "ArrowRight" || c.key === "ArrowDown") && s.slide.nextStep());
1313
+ });
1314
+ }
1315
+ function ur(e) {
1316
+ const { container: t, ...s } = e, r = y("div", "preview-wrapper"), o = new F(s);
1317
+ return r.appendChild(document.createElement("style")).textContent = F.styles, r.appendChild(o.$content), r.appendChild(o.$footer), t.appendChild(r), o.prepare(() => o.slide.renderSlide(1)), o;
1318
+ }
1319
+ const pr = /* @__PURE__ */ ue.usePlugin.bind(ue), hr = "0.3.0-canary.20", fr = {
1320
+ kind: "Slide",
1321
+ config: { enableShadowDOM: !1 },
1322
+ setup(e) {
1323
+ console.log("[Slide] setup @ 0.3.0-canary.20 (" + e.appId + ")");
1324
+ const t = new X(e);
1325
+ if (t.info("[Slide] setup @ 0.3.0-canary.20"), !e.attributes.taskId)
1326
+ throw new Error("[Slide] no taskId");
1327
+ const s = e.createStorage("slide", e.attributes), r = e.getAppOptions() || {}, o = r.renderOptions || {}, i = new De(), n = new F({
1328
+ interactive: !0,
1329
+ mode: "interactive",
1330
+ enableGlobalClick: !0,
1331
+ timestamp: Rt(e),
1332
+ logger: r.logger || t,
1333
+ renderOptions: {
1334
+ minFPS: o.minFPS || 25,
1335
+ maxFPS: o.maxFPS || 30,
1336
+ autoFPS: o.autoFPS ?? !0,
1337
+ autoResolution: o.autoResolution ?? !0,
1338
+ resolution: o.resolution,
1339
+ maxResolutionLevel: o.maxResolutionLevel,
1340
+ transactionBgColor: o.transactionBgColor || Be(e.box.$content)
1341
+ },
1342
+ rtcAudio: r.rtcAudio,
1343
+ useLocalCache: r.useLocalCache,
1344
+ resourceTimeout: r.resourceTimeout,
1345
+ loaderDelegate: r.loaderDelegate,
1346
+ navigatorDelegate: r.navigatorDelegate,
1347
+ fixedFrameSize: r.fixedFrameSize,
1348
+ taskId: s.state.taskId,
1349
+ url: s.state.url
1350
+ });
1351
+ return Object.assign(n, { context: e, logger: t }), i.push(Re.set(e.appId, n, e.box)), i.push(n.events.on("freeze", () => t.info("[Slide] freeze"))), i.push(n.events.on("unfreeze", () => t.info("[Slide] unfreeze"))), i.push(
1352
+ n.events.on(
1353
+ "prepareError",
1354
+ (a) => t.info("[Slide] fetch slide info failed: " + a.message)
1355
+ )
1356
+ ), i.push(
1357
+ n.events.on(
1358
+ "renderError",
1359
+ ({ error: a, index: l }) => t.info(`[Slide] render failed [${l}]: ${a.message}`)
1360
+ )
1361
+ ), e.box.mountStyles(F.styles), e.box.mountStage(n.$slide), e.box.mountFooter(n.$footer), e.box.mountContent(n.$content), i.push(() => n.destroy()), ir({ context: e, storage: s, viewer: n, sideEffect: i, logger: t }), e.emitter.on("destroy", () => {
1362
+ t.info("[Slide] destroy"), t.destroy(), i.flushAll();
1363
+ }), n;
1364
+ }
1365
+ };
1366
+ export {
1367
+ Fe as DefaultUrl,
1368
+ mr as Slide,
1369
+ F as SlideViewer,
1370
+ dr as addHooks,
1371
+ fr as default,
1372
+ ur as previewSlide,
1373
+ Re as refrigerator,
1374
+ pr as usePlugin,
1375
+ hr as version
1376
+ };
1377
+ //# sourceMappingURL=main.mjs.map