@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/README-zh.md CHANGED
@@ -5,16 +5,13 @@ WebGL 版 PPT 展示插件。
5
5
  ### 用法
6
6
 
7
7
  ```ts
8
- import type { Attributes as SlideAttributes } from "@netless/app-slide";
8
+ import AppSlide, { addHooks } from "@netless/app-slide";
9
9
 
10
10
  // 1. 在加入房间前注册此 app
11
11
  WindowManager.register({
12
12
  kind: "Slide",
13
- appOptions: {
14
- // 打开这个选项显示 debug 工具栏
15
- debug: false,
16
- },
17
- src: () => import("@netless/app-slide"),
13
+ src: AppSlide,
14
+ addHooks, // 启用自动冻结功能,优化 CPU 和内存占用
18
15
  });
19
16
 
20
17
  // 2. 加入房间后,这样插入 PPT
@@ -27,7 +24,7 @@ manager.addApp({
27
24
  attributes: {
28
25
  taskId: "1234567...", // [2]
29
26
  url: "https://convertcdn.netless.link/dynamicConvert", // [3]
30
- } as SlideAttributes,
27
+ },
31
28
  });
32
29
  ```
33
30
 
@@ -45,6 +42,19 @@ manager.addApp({
45
42
 
46
43
  PPT 转码后资源存储服务器链接前缀,默认为 `https://convertcdn.netless.link/dynamicConvert`。
47
44
 
45
+ ### 本地预览
46
+
47
+ ```ts
48
+ import { previewSlide } from "@netless/app-slide";
49
+
50
+ const previewer = previewSlide({
51
+ container: document.getElementById("preview"),
52
+ taskId: "1234567...",
53
+ });
54
+
55
+ previewer.destroy();
56
+ ```
57
+
48
58
  ### 协议
49
59
 
50
60
  MIT @ [netless](https://github.com/netless-io)
package/README.md CHANGED
@@ -7,16 +7,13 @@ Netless App for viewing animated slides, in our new engine.
7
7
  ### Usage
8
8
 
9
9
  ```ts
10
- import type { Attributes as SlideAttributes } from "@netless/app-slide";
10
+ import AppSlide, { addHooks } from "@netless/app-slide";
11
11
 
12
12
  // 1. register before joining room
13
13
  WindowManager.register({
14
14
  kind: "Slide",
15
- appOptions: {
16
- // turn on to show debug controller
17
- debug: false,
18
- },
19
- src: () => import("@netless/app-slide"),
15
+ src: AppSlide,
16
+ addHooks, // enables auto-freeze
20
17
  });
21
18
 
22
19
  // 2. when joined room, add ppt to whiteboard
@@ -29,7 +26,7 @@ manager.addApp({
29
26
  attributes: {
30
27
  taskId: "1234567...", // [2]
31
28
  url: "https://convertcdn.netless.link/dynamicConvert", // [3]
32
- } as SlideAttributes,
29
+ },
33
30
  });
34
31
  ```
35
32
 
@@ -0,0 +1,12 @@
1
+ import type { AppContext } from "@netless/window-manager";
2
+ export interface ILogger {
3
+ info(this: void, msg: string): void;
4
+ }
5
+ export declare class Logger implements ILogger {
6
+ readonly context: AppContext | null;
7
+ static active: Set<string>;
8
+ static roomLogger: ILogger | null;
9
+ constructor(context: AppContext | null);
10
+ info: (msg: string) => void;
11
+ destroy(): void;
12
+ }
@@ -1,10 +1,12 @@
1
+ import type { ReadonlyTeleBox } from "@netless/window-manager";
1
2
  import type { SlideViewer } from "./SlideViewer";
2
3
  import type { AddHooks } from "./typings";
3
4
  export declare class Refrigerator {
4
5
  threshold: number;
5
6
  private _map;
7
+ private _box;
6
8
  private _queue;
7
- set(appId: string, viewer: SlideViewer): () => void;
9
+ set(appId: string, viewer: SlideViewer, box: ReadonlyTeleBox): () => void;
8
10
  delete(appId: string): void;
9
11
  focus(appId: string): void;
10
12
  private _refresh;
@@ -0,0 +1,12 @@
1
+ export declare function create_footer(): {
2
+ $footer: HTMLDivElement;
3
+ $pageNumberInput: HTMLInputElement;
4
+ set_readonly: (readonly_: boolean) => void;
5
+ set_sidebar: (sidebar_: boolean) => void;
6
+ set_page_index: (page_index_: number, force?: boolean) => void;
7
+ set_page_count: (page_count_: number) => void;
8
+ on_new_page_index: (callback: (newPageIndex: number) => void) => void;
9
+ on_toggle_preview: (callback: () => void) => void;
10
+ on_play: (callback: () => void) => void;
11
+ on_save_to_pdf: (callback: (progressCallback: (p: number) => void) => void) => void;
12
+ };
@@ -1,36 +1,43 @@
1
1
  import type { ISlideConfig } from "@netless/slide";
2
+ import type { SlideAttributes } from "./typings";
2
3
  import { Slide } from "@netless/slide";
3
- interface SlideAttributes {
4
- taskId: string;
5
- url?: string;
6
- }
7
- interface PreviewPage {
8
- width: number;
9
- height: number;
10
- thumbnail: string;
11
- }
12
- export declare type SlideViewerOptions = Omit<ISlideConfig, "anchor" | "mode" | "interactive"> & {
13
- mode?: ISlideConfig["mode"];
14
- interactive?: ISlideConfig["interactive"];
15
- } & SlideAttributes;
4
+ import { SideEffectManager } from "side-effect-manager";
5
+ import { Remitter } from "remitter";
6
+ import { fetch_slide_info } from "./utils";
7
+ export type MakeOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
8
+ export type SlideViewerOptions = MakeOptional<Omit<ISlideConfig & SlideAttributes, "anchor">, "mode" | "interactive">;
16
9
  export interface SlideViewerInfoResponse {
17
10
  width: number;
18
11
  height: number;
19
12
  slideCount: number;
20
13
  }
14
+ export interface SlideViewerEventData {
15
+ freeze: void;
16
+ unfreeze: void;
17
+ renderError: {
18
+ error: Error;
19
+ index: number;
20
+ };
21
+ prepareError: Error;
22
+ renderStart: void;
23
+ renderEnd: void;
24
+ }
21
25
  export declare class SlideViewer {
22
26
  static styles: string;
23
- private readonly sideEffect;
27
+ static fetchSlideInfo: typeof fetch_slide_info;
28
+ readonly sideEffect: SideEffectManager;
29
+ readonly events: Remitter<SlideViewerEventData>;
24
30
  readonly $slide: HTMLDivElement;
31
+ readonly $overlay: HTMLDivElement;
25
32
  readonly sidebar: {
26
33
  $content: HTMLDivElement;
27
34
  $preview: HTMLDivElement;
28
35
  set_readonly: (readonly_: boolean) => void;
29
36
  set_active: (active_: boolean) => void;
30
37
  get_active: () => boolean;
31
- set_pages: (pages_: PreviewPage[]) => void;
38
+ set_pages: (pages_: import("./typings").PreviewPage[]) => void;
32
39
  on_new_page_index: (callback: (newPageIndex: number) => void) => void;
33
- set_page_index: (page_index_: number) => void;
40
+ set_page_index: (page_index_: number, force?: boolean) => void;
34
41
  destroy: () => void;
35
42
  };
36
43
  readonly footer: {
@@ -38,29 +45,35 @@ export declare class SlideViewer {
38
45
  $pageNumberInput: HTMLInputElement;
39
46
  set_readonly: (readonly_: boolean) => void;
40
47
  set_sidebar: (sidebar_: boolean) => void;
41
- set_page_index: (page_index_: number) => void;
48
+ set_page_index: (page_index_: number, force?: boolean) => void;
42
49
  set_page_count: (page_count_: number) => void;
43
50
  on_new_page_index: (callback: (newPageIndex: number) => void) => void;
44
51
  on_toggle_preview: (callback: () => void) => void;
45
52
  on_play: (callback: () => void) => void;
53
+ on_save_to_pdf: (callback: (progressCallback: (p: number) => void) => void) => void;
46
54
  };
47
55
  readonly $content: HTMLElement;
48
56
  readonly $footer: HTMLElement;
49
57
  readonly slide: Slide;
58
+ _slideTitle: string;
59
+ _getWhiteSnapshot: ((index: number, canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D) => void) | null;
50
60
  private readonly _readyPromise;
51
61
  private readonly _infoPromise;
52
62
  private _ready;
53
63
  private _slideCount;
54
64
  private _destroyed;
65
+ private _isFrozen;
66
+ private _cachedIsFrozen;
55
67
  constructor(options: SlideViewerOptions);
56
68
  prepare(callback: (response: SlideViewerInfoResponse) => void): Promise<void>;
57
69
  ready(callback: () => void): Promise<void>;
58
70
  destroy(): void;
71
+ onPlay: () => void;
72
+ onNewPageIndex: (index: number) => void;
73
+ onTogglePreview: () => void;
59
74
  setReadonly(readonly: boolean): void;
60
75
  setPage(page: number): void;
61
- private _isFrozen;
62
- private _freezePromise;
63
76
  freeze(): void;
64
77
  unfreeze(): void;
78
+ toPdf: (progressCallback: (progress: number) => void) => Promise<null | undefined>;
65
79
  }
66
- export {};
@@ -0,0 +1,12 @@
1
+ import type { PreviewPage } from "./typings";
2
+ export declare function create_sidebar(): {
3
+ $content: HTMLDivElement;
4
+ $preview: HTMLDivElement;
5
+ set_readonly: (readonly_: boolean) => void;
6
+ set_active: (active_: boolean) => void;
7
+ get_active: () => boolean;
8
+ set_pages: (pages_: PreviewPage[]) => void;
9
+ on_new_page_index: (callback: (newPageIndex: number) => void) => void;
10
+ set_page_index: (page_index_: number, force?: boolean) => void;
11
+ destroy: () => void;
12
+ };
@@ -0,0 +1,18 @@
1
+ export interface SlideAttributes {
2
+ taskId: string;
3
+ url?: string;
4
+ }
5
+ export interface PreviewPage {
6
+ width: number;
7
+ height: number;
8
+ thumbnail: string;
9
+ }
10
+ export interface PreviewInfo {
11
+ width: number;
12
+ height: number;
13
+ }
14
+ export interface SlideInfo {
15
+ width: number;
16
+ height: number;
17
+ slideCount: number;
18
+ }
@@ -0,0 +1,7 @@
1
+ import type { PreviewInfo, SlideAttributes, SlideInfo } from "./typings";
2
+ export declare function make_prefix(taskId: string, url?: string): string;
3
+ export declare function fetch_slide_info({ taskId, url }: SlideAttributes): Promise<{
4
+ preview: PreviewInfo | null;
5
+ slide: SlideInfo;
6
+ }>;
7
+ export declare function on_visibility_change(callback: (visible: boolean) => void): () => void;
@@ -0,0 +1,14 @@
1
+ import type { AppContext, Storage } from "@netless/window-manager";
2
+ import type { SideEffectManager } from "side-effect-manager";
3
+ import type { SlideViewer } from "./SlideViewer";
4
+ import type { Attributes } from "./typings";
5
+ export interface ConnectParams {
6
+ context: AppContext;
7
+ storage: Storage<Attributes>;
8
+ viewer: SlideViewer;
9
+ sideEffect: SideEffectManager;
10
+ logger: {
11
+ info: (msg: string) => void;
12
+ };
13
+ }
14
+ export declare function connect({ context, storage, viewer, sideEffect, logger }: ConnectParams): void;
@@ -1,2 +1,2 @@
1
- export declare const namespace = "netless-app-slide";
1
+ export declare const class_name = "netless-app-slide";
2
2
  export declare const DefaultUrl = "https://convertcdn.netless.link/dynamicConvert";
@@ -0,0 +1,5 @@
1
+ export { sidebarSVG } from "./sidebar";
2
+ export { arrowLeftSVG } from "./arrow-left";
3
+ export { playSVG } from "./play";
4
+ export { pauseSVG } from "./pause";
5
+ export { arrowRightSVG } from "./arrow-right";
@@ -0,0 +1 @@
1
+ export declare function saveSVG(namespace: string): SVGElement;
@@ -0,0 +1 @@
1
+ export declare function spinnerSVG(namespace: string): SVGElement;
package/dist/index.d.ts CHANGED
@@ -1,13 +1,14 @@
1
1
  import type { NetlessApp } from "@netless/window-manager";
2
- import type { AddHooks, AppOptions, Attributes, MagixEvents, SlideState } from "./typings";
3
2
  import type { SlideViewerOptions } from "./SlideViewer";
3
+ import type { AddHooks, AppOptions, Attributes, MagixEvents, SlideState } from "./typings";
4
4
  export type { SlideState, AddHooks, AppOptions, Attributes, MagixEvents, SlideViewerOptions };
5
+ import { Slide } from "@netless/slide";
6
+ import { DefaultUrl } from "./constants";
7
+ import { addHooks, refrigerator } from "./Refrigerator";
5
8
  import { SlideViewer } from "./SlideViewer";
6
- import { refrigerator, addHooks } from "./Refrigerator";
7
- export { SlideViewer, refrigerator, addHooks };
9
+ import { previewSlide } from "./preview";
10
+ export { Slide, SlideViewer, refrigerator, addHooks, DefaultUrl, previewSlide };
11
+ export declare const usePlugin: (plugin: any) => void;
8
12
  export declare const version: string;
9
13
  declare const SlideApp: NetlessApp<Attributes, MagixEvents, AppOptions, void>;
10
14
  export default SlideApp;
11
- export declare function previewSlide(options: SlideViewerOptions & {
12
- container: HTMLElement;
13
- }): SlideViewer;
package/dist/main.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";var kt=Object.create;var ue=Object.defineProperty;var St=Object.getOwnPropertyDescriptor;var xt=Object.getOwnPropertyNames;var Et=Object.getPrototypeOf,Ct=Object.prototype.hasOwnProperty;var At=(e,t,s)=>t in e?ue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var It=(e,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of xt(t))!Ct.call(e,o)&&o!==s&&ue(e,o,{get:()=>t[o],enumerable:!(r=St(t,o))||r.enumerable});return e};var zt=(e,t,s)=>(s=e!=null?kt(Et(e)):{},It(t||!e||!e.__esModule?ue(s,"default",{value:e,enumerable:!0}):s,e));var u=(e,t,s)=>(At(e,typeof t!="symbol"?t+"":t,s),s);Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const ne=require("@netless/slide"),$t="!#%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",Lt=87,Mt=20,$e=[],Nt=()=>{for(let e=0;e<Mt;e++)$e[e]=$t.charAt(Math.random()*Lt);return $e.join("")};function Re(e){try{return e()}catch(t){console.error(t)}}class Ve{constructor(){this.push=this.addDisposer,this.disposers=new Map}addDisposer(t,s=this.genUID()){return this.flush(s),this.disposers.set(s,Array.isArray(t)?Ot(t):t),s}add(t,s=this.genUID()){const r=t();return r?this.addDisposer(r,s):s}addEventListener(t,s,r,o,a=this.genUID()){return t.addEventListener(s,r,o),this.addDisposer(()=>t.removeEventListener(s,r,o),a),a}setTimeout(t,s,r=this.genUID()){const o=window.setTimeout(()=>{this.remove(r),t()},s);return this.addDisposer(()=>window.clearTimeout(o),r)}setInterval(t,s,r=this.genUID()){const o=window.setInterval(t,s);return this.addDisposer(()=>window.clearInterval(o),r)}remove(t){const s=this.disposers.get(t);return this.disposers.delete(t),s}flush(t){const s=this.remove(t);s&&s()}flushAll(){this.disposers.forEach(Re),this.disposers.clear()}genUID(){let t;do t=Nt();while(this.disposers.has(t));return t}}function Ot(e){return()=>e.forEach(Re)}const F="netless-app-slide",be="https://convertcdn.netless.link/dynamicConvert";class Pt{constructor(){u(this,"threshold",2);u(this,"_map",new Map);u(this,"_box",new Map);u(this,"_queue",[])}set(t,s,r){return this._map.set(t,s),this._box.set(t,r),this._queue.includes(t)||this._queue.unshift(t),this._refresh(),()=>{this.delete(t)}}delete(t){this._map.delete(t),this._box.delete(t),this._queue=this._queue.filter(s=>s!==t),this._refresh()}focus(t){const s=this._queue.indexOf(t);s>=0&&this._queue.splice(s,1),this._queue.unshift(t),this._refresh()}_refresh(){let t;this._queue.sort((s,r)=>{var n,i;const o=((n=this._box.get(s))==null?void 0:n.zIndex)??0,a=((i=this._box.get(r))==null?void 0:i.zIndex)??0;return-(o-a)}),this._queue.forEach((s,r)=>{(t=this._map.get(s))&&(r<this.threshold?t.unfreeze():t.freeze())})}}const ve=new Pt,Tt=function(t){t.on("focus",s=>{ve.focus(s.appId)})};class Dt{constructor(){this.a=new Map,this.b=new Set}emit(t,s){const r=this.a.get(t);if(r)for(const o of r)try{o(s)}catch(a){console.error(a)}}on(t,s){let r=this.a.get(t);if(r||(r=new Set,this.a.set(t,r)),r.add(s),r.size===1)for(const o of this.b)o.e(t);return()=>{this.off(t,s)}}once(t,s){const r=o=>(this.off(t,s),s(o));return this.c=this.c||new WeakMap,this.c.set(s,r),this.on(t,r)}off(t,s){var r;const o=this.a.get(t);if(o){const a=o.delete(((r=this.c)==null?void 0:r.get(s))||s);if(o.size<=0){this.a.delete(t);for(const n of this.b)n.d(t)}return a}return!1}clear(t){var s;t?(s=this.a.get(t))==null||s.clear():this.a.clear()}count(t){var s;if(t)return((s=this.a.get(t))==null?void 0:s.size)||0;{let r=0;for(const o of this.a.values())r+=o.size;return r}}remit(t,s){var r;let o;const a={e:n=>{if(n===t)try{o=s(this)}catch(i){console.error(i)}},d:n=>{if(o&&(!n||n===t))try{o()}catch(i){console.error(i)}}};return this.b.add(a),(r=this.a.get(t))!=null&&r.size&&a.e(t),()=>{this.b.delete(a),a.d()}}destroy(){this.clear();for(const t of this.b)t.d();this.b.clear()}}var he={},Ft={get exports(){return he},set exports(e){he=e}},Rt={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},fe={},Vt={get exports(){return fe},set exports(e){fe=e}},Ut=function(t){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")},qt=Ut,Bt=Array.prototype.concat,Ht=Array.prototype.slice,Le=Vt.exports=function(t){for(var s=[],r=0,o=t.length;r<o;r++){var a=t[r];qt(a)?s=Bt.call(s,Ht.call(a)):s.push(a)}return s};Le.wrap=function(e){return function(){return e(Le(arguments))}};var Z=Rt,Q=fe,Ue=Object.hasOwnProperty,qe=Object.create(null);for(var pe in Z)Ue.call(Z,pe)&&(qe[Z[pe]]=pe);var C=Ft.exports={to:{},get:{}};C.get=function(e){var t=e.substring(0,3).toLowerCase(),s,r;switch(t){case"hsl":s=C.get.hsl(e),r="hsl";break;case"hwb":s=C.get.hwb(e),r="hwb";break;default:s=C.get.rgb(e),r="rgb";break}return s?{model:r,value:s}:null};C.get.rgb=function(e){if(!e)return null;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*)?\)$/,a=/^(\w+)$/,n=[0,0,0,1],i,l,d;if(i=e.match(s)){for(d=i[2],i=i[1],l=0;l<3;l++){var b=l*2;n[l]=parseInt(i.slice(b,b+2),16)}d&&(n[3]=parseInt(d,16)/255)}else if(i=e.match(t)){for(i=i[1],d=i[3],l=0;l<3;l++)n[l]=parseInt(i[l]+i[l],16);d&&(n[3]=parseInt(d+d,16)/255)}else if(i=e.match(r)){for(l=0;l<3;l++)n[l]=parseInt(i[l+1],0);i[4]&&(i[5]?n[3]=parseFloat(i[4])*.01:n[3]=parseFloat(i[4]))}else if(i=e.match(o)){for(l=0;l<3;l++)n[l]=Math.round(parseFloat(i[l+1])*2.55);i[4]&&(i[5]?n[3]=parseFloat(i[4])*.01:n[3]=parseFloat(i[4]))}else return(i=e.match(a))?i[1]==="transparent"?[0,0,0,0]:Ue.call(Z,i[1])?(n=Z[i[1]],n[3]=1,n):null:null;for(l=0;l<3;l++)n[l]=R(n[l],0,255);return n[3]=R(n[3],0,1),n};C.get.hsl=function(e){if(!e)return null;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);if(s){var r=parseFloat(s[4]),o=(parseFloat(s[1])%360+360)%360,a=R(parseFloat(s[2]),0,100),n=R(parseFloat(s[3]),0,100),i=R(isNaN(r)?1:r,0,1);return[o,a,n,i]}return null};C.get.hwb=function(e){if(!e)return null;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);if(s){var r=parseFloat(s[4]),o=(parseFloat(s[1])%360+360)%360,a=R(parseFloat(s[2]),0,100),n=R(parseFloat(s[3]),0,100),i=R(isNaN(r)?1:r,0,1);return[o,a,n,i]}return null};C.to.hex=function(){var e=Q(arguments);return"#"+re(e[0])+re(e[1])+re(e[2])+(e[3]<1?re(Math.round(e[3]*255)):"")};C.to.rgb=function(){var e=Q(arguments);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]+")"};C.to.rgb.percent=function(){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);return e.length<4||e[3]===1?"rgb("+t+"%, "+s+"%, "+r+"%)":"rgba("+t+"%, "+s+"%, "+r+"%, "+e[3]+")"};C.to.hsl=function(){var e=Q(arguments);return e.length<4||e[3]===1?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"};C.to.hwb=function(){var e=Q(arguments),t="";return e.length>=4&&e[3]!==1&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"};C.to.keyword=function(e){return qe[e.slice(0,3)]};function R(e,t,s){return Math.min(Math.max(t,e),s)}function re(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}function G(){}function oe(e){return document.createElement(e)}function y(e,t){const s=oe(e);return jt(s,t),s}function B(e,t){return e.appendChild(t)}function _(e){return`${F}-${e}`}function jt(e,t){e.className=_(t)}function Gt(e){return e.endsWith("/")?e.slice(0,-1):e}function Me(e,t){if(typeof e=="object"&&e!==null)return e[t]}function Ne(){let e;return[new Promise(s=>{e=s}),e]}function Wt(e){const t=e.room,s=e.displayer;return t?()=>t.calibrationTimestamp:s?()=>s.beginTimestamp+s.progressTime:()=>Date.now()}function Be(e){try{let t=window.getComputedStyle(e).backgroundColor;if(t!=="rgba(0, 0, 0, 0)"&&t!=="transparent")return t=Jt(t),console.log("[Slide] guess bg color:",t),t;if(e.parentElement)return Be(e.parentElement)}catch{}return"#ffffff"}function Jt(e){const t=he.get(e);if(t&&t.model==="rgb"){const s=t.value,o=(((Math.round(s[0])&255)<<16)+((Math.round(s[1])&255)<<8)+(Math.round(s[2])&255)).toString(16);return"#"+"000000".substring(o.length)+o}else return e}function He(e,t){return`${Gt(t||be)}/${e}`}async function Xt({taskId:e,url:t}){const s=He(e,t),r=`${s}/preview/1.png`,o=`${s}/jsonOutput/slide-1.json`,a=new Promise(i=>{const l=new Image;l.onload=()=>i(l),l.onerror=()=>i(null),l.src=r}),n=fetch(o).then(i=>i.json());return{preview:await a,slide:await n}}function Zt(e){if(typeof document<"u"){const t=()=>e(document.visibilityState==="visible");return document.addEventListener("visibilitychange",t),()=>document.removeEventListener("visibilitychange",t)}return G}const Kt=`.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}
2
+ `;function Qt(e){const t="http://www.w3.org/2000/svg",s=document.createElementNS(t,"svg");s.setAttribute("class",`${e}-footer-icon-sidebar`),s.setAttribute("viewBox","0 0 64 64");const r=document.createElementNS(t,"path");return r.setAttribute("fill","currentColor"),r.setAttribute("d","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"),s.appendChild(r),s}function Yt(e){const t="http://www.w3.org/2000/svg",s=document.createElementNS(t,"svg");s.setAttribute("class",`${e}-footer-icon-arrow-left`),s.setAttribute("viewBox","0 0 500 500");const r=document.createElementNS(t,"path");return r.setAttribute("fill","currentColor"),r.setAttribute("d","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"),s.appendChild(r),s}function es(e){const t="http://www.w3.org/2000/svg",s=document.createElementNS(t,"svg");s.setAttribute("class",`${e}-footer-icon-play`),s.setAttribute("viewBox","0 0 500 500");const r=document.createElementNS(t,"path");return r.setAttribute("fill","currentColor"),r.setAttribute("d","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"),s.appendChild(r),s}function ts(e){const t="http://www.w3.org/2000/svg",s=document.createElementNS(t,"svg");s.setAttribute("class",`${e}-footer-icon-pause`),s.setAttribute("viewBox","0 0 500 500");const r=document.createElementNS(t,"path");return r.setAttribute("fill","currentColor"),r.setAttribute("d","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"),s.appendChild(r),s}function ss(e){const t="http://www.w3.org/2000/svg",s=document.createElementNS(t,"svg");s.setAttribute("class",`${e}-footer-icon-arrow-right`),s.setAttribute("viewBox","0 0 500 500");const r=document.createElementNS(t,"path");return r.setAttribute("fill","currentColor"),r.setAttribute("d","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"),s.appendChild(r),s}function rs(e){const t="http://www.w3.org/2000/svg",s=document.createElementNS(t,"svg");s.setAttribute("class",`${e}-footer-icon-save`),s.setAttribute("viewBox","0 0 448 512");const r=document.createElementNS(t,"path");return r.setAttribute("fill","currentColor"),r.setAttribute("d","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"),s.appendChild(r),s}function os(e){const t="http://www.w3.org/2000/svg",s=document.createElementNS(t,"svg");s.setAttribute("class",`${e}-footer-icon-spinner`),s.setAttribute("viewBox","0 0 512 512");const r=document.createElementNS(t,"path");r.setAttribute("fill","currentColor"),r.setAttribute("d","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");const o=document.createElementNS(t,"animateTransform");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);const a=document.createElementNS(t,"text");return a.setAttribute("x","125"),a.setAttribute("y","345"),a.setAttribute("data-id","progress"),a.style.fontSize="246px",a.textContent="20",s.appendChild(a),s.appendChild(r),s}function ns(){let e=G;const t=h=>{e=h};let s=G;const r=h=>{s=h};let o=G;const a=h=>{o=h};let n=!1,i=!1,l=0,d=0;const b=y("div","footer"),g=y("button","btn-sidebar");g.classList.add(_("footer-btn")),g.appendChild(Qt(F)),g.onclick=function(){n||s()},g.style.display="none",b.appendChild(g);const v=y("div","page-jumps"),c=y("button","btn-page-back");c.classList.add(_("footer-btn")),c.appendChild(Yt(F)),c.onclick=function(){n||e(l-1)},v.appendChild(c);const f=y("button","btn-page-play");f.classList.add(_("footer-btn")),f.appendChild(es(F)),f.appendChild(ts(F));let E=0;f.onclick=function(){n||(f.classList.add(_("footer-btn-playing")),o(),clearTimeout(E),E=window.setTimeout(()=>{f.classList.remove(_("footer-btn-playing"))},500))},v.appendChild(f);const $=y("button","btn-page-next");$.classList.add(_("footer-btn")),$.appendChild(ss(F)),$.onclick=function(){n||e(l+1)},v.appendChild($);const A=y("div","page-number"),m=y("input","page-number-input");m.value=String(l+1),m.onchange=function(){n||m.value&&e(Number(m.value)-1)};const p=y("span","total-page");p.textContent=" / ",A.appendChild(m),A.appendChild(p),b.appendChild(v),b.appendChild(A);const w=_("readonly");let k=G;const S=h=>{k=h},I=h=>{if(h<99){z.style.display="block",M.style.display="none";const se=z.querySelector("[data-id]");se&&(se.textContent=h.toString().padStart(2,"0"))}else z.style.display="none",M.style.display="block"},M=rs(F),z=os(F);z.style.display="none";const T=y("button","footer-btn");T.appendChild(M),T.onclick=function(){k(I)},T.appendChild(z);function D(h){n!==h&&(n=h,b.classList.toggle(w,n),m.disabled=n)}function wt(h){i!==h&&(i=h,g.style.display=i?"":"none")}function _t(h,se=!1){(se||l!==h)&&(l=h,m.value=String(l+1))}function yt(h){d!==h&&(d=h,p.textContent=` / ${d}`)}return{$footer:b,$pageNumberInput:m,set_readonly:D,set_sidebar:wt,set_page_index:_t,set_page_count:yt,on_new_page_index:t,on_toggle_preview:r,on_play:a,on_save_to_pdf:S}}const U=typeof window<"u",je=U&&!("onscroll"in window)||typeof navigator<"u"&&/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent),Ge=U&&"IntersectionObserver"in window,We=U&&"classList"in document.createElement("p"),Je=U&&window.devicePixelRatio>1,is={elements_selector:".lazy",container:je||U?document:null,threshold:300,thresholds:null,data_src:"src",data_srcset:"srcset",data_sizes:"sizes",data_bg:"bg",data_bg_hidpi:"bg-hidpi",data_bg_multi:"bg-multi",data_bg_multi_hidpi:"bg-multi-hidpi",data_bg_set:"bg-set",data_poster:"poster",class_applied:"applied",class_loading:"loading",class_loaded:"loaded",class_error:"error",class_entered:"entered",class_exited:"exited",unobserve_completed:!0,unobserve_entered:!1,cancel_on_exit:!0,callback_enter:null,callback_exit:null,callback_applied:null,callback_loading:null,callback_loaded:null,callback_error:null,callback_finish:null,callback_cancel:null,use_native:!1,restore_on_error:!1},Xe=e=>Object.assign({},is,e),Oe=function(e,t){let s;const r="LazyLoad::Initialized",o=new e(t);try{s=new CustomEvent(r,{detail:{instance:o}})}catch{s=document.createEvent("CustomEvent"),s.initCustomEvent(r,!1,!1,{instance:o})}window.dispatchEvent(s)},as=(e,t)=>{if(t)if(!t.length)Oe(e,t);else for(let s=0,r;r=t[s];s+=1)Oe(e,r)},P="src",me="srcset",we="sizes",Ze="poster",Y="llOriginalAttrs",Ke="data",_e="loading",Qe="loaded",Ye="applied",ls="entered",ye="error",et="native",tt="data-",st="ll-status",x=(e,t)=>e.getAttribute(tt+t),cs=(e,t,s)=>{var r=tt+t;if(s===null){e.removeAttribute(r);return}e.setAttribute(r,s)},ee=e=>x(e,st),j=(e,t)=>cs(e,st,t),ae=e=>j(e,null),ke=e=>ee(e)===null,ds=e=>ee(e)===_e,us=e=>ee(e)===ye,Se=e=>ee(e)===et,ps=[_e,Qe,Ye,ye],hs=e=>ps.indexOf(ee(e))>=0,q=(e,t,s,r)=>{if(e){if(r!==void 0){e(t,s,r);return}if(s!==void 0){e(t,s);return}e(t)}},J=(e,t)=>{if(We){e.classList.add(t);return}e.className+=(e.className?" ":"")+t},L=(e,t)=>{if(We){e.classList.remove(t);return}e.className=e.className.replace(new RegExp("(^|\\s+)"+t+"(\\s+|$)")," ").replace(/^\s+/,"").replace(/\s+$/,"")},fs=e=>{e.llTempImage=document.createElement("IMG")},gs=e=>{delete e.llTempImage},rt=e=>e.llTempImage,le=(e,t)=>{if(!t)return;const s=t._observer;s&&s.unobserve(e)},bs=e=>{e.disconnect()},vs=(e,t,s)=>{t.unobserve_entered&&le(e,s)},xe=(e,t)=>{e&&(e.loadingCount+=t)},ms=e=>{e&&(e.toLoadCount-=1)},ot=(e,t)=>{e&&(e.toLoadCount=t)},ws=e=>e.loadingCount>0,_s=e=>e.toLoadCount>0,nt=e=>{let t=[];for(let s=0,r;r=e.children[s];s+=1)r.tagName==="SOURCE"&&t.push(r);return t},Ee=(e,t)=>{const s=e.parentNode;if(!s||s.tagName!=="PICTURE")return;nt(s).forEach(t)},it=(e,t)=>{nt(e).forEach(t)},ce=[P],at=[P,Ze],K=[P,me,we],lt=[Ke],de=e=>!!e[Y],ct=e=>e[Y],dt=e=>delete e[Y],W=(e,t)=>{if(de(e))return;const s={};t.forEach(r=>{s[r]=e.getAttribute(r)}),e[Y]=s},ys=e=>{de(e)||(e[Y]={backgroundImage:e.style.backgroundImage})},ks=(e,t,s)=>{if(!s){e.removeAttribute(t);return}e.setAttribute(t,s)},H=(e,t)=>{if(!de(e))return;const s=ct(e);t.forEach(r=>{ks(e,r,s[r])})},Ss=e=>{if(!de(e))return;const t=ct(e);e.style.backgroundImage=t.backgroundImage},ut=(e,t,s)=>{J(e,t.class_applied),j(e,Ye),s&&(t.unobserve_completed&&le(e,t),q(t.callback_applied,e,s))},pt=(e,t,s)=>{J(e,t.class_loading),j(e,_e),s&&(xe(s,1),q(t.callback_loading,e,s))},V=(e,t,s)=>{s&&e.setAttribute(t,s)},Pe=(e,t)=>{V(e,we,x(e,t.data_sizes)),V(e,me,x(e,t.data_srcset)),V(e,P,x(e,t.data_src))},xs=(e,t)=>{Ee(e,s=>{W(s,K),Pe(s,t)}),W(e,K),Pe(e,t)},Es=(e,t)=>{W(e,ce),V(e,P,x(e,t.data_src))},Cs=(e,t)=>{it(e,s=>{W(s,ce),V(s,P,x(s,t.data_src))}),W(e,at),V(e,Ze,x(e,t.data_poster)),V(e,P,x(e,t.data_src)),e.load()},As=(e,t)=>{W(e,lt),V(e,Ke,x(e,t.data_src))},Is=(e,t,s)=>{const r=x(e,t.data_bg),o=x(e,t.data_bg_hidpi),a=Je&&o?o:r;a&&(e.style.backgroundImage=`url("${a}")`,rt(e).setAttribute(P,a),pt(e,t,s))},zs=(e,t,s)=>{const r=x(e,t.data_bg_multi),o=x(e,t.data_bg_multi_hidpi),a=Je&&o?o:r;a&&(e.style.backgroundImage=a,ut(e,t,s))},$s=(e,t,s)=>{const r=x(e,t.data_bg_set);if(!r)return;const o=r.split("|");let a=o.map(n=>`image-set(${n})`);e.style.backgroundImage=a.join(),e.style.backgroundImage===""&&(a=o.map(n=>`-webkit-image-set(${n})`),e.style.backgroundImage=a.join()),ut(e,t,s)},ht={IMG:xs,IFRAME:Es,VIDEO:Cs,OBJECT:As},Ls=(e,t)=>{const s=ht[e.tagName];s&&s(e,t)},Ms=(e,t,s)=>{const r=ht[e.tagName];r&&(r(e,t),pt(e,t,s))},Ns=["IMG","IFRAME","VIDEO","OBJECT"],Os=e=>Ns.indexOf(e.tagName)>-1,ft=(e,t)=>{t&&!ws(t)&&!_s(t)&&q(e.callback_finish,t)},Te=(e,t,s)=>{e.addEventListener(t,s),e.llEvLisnrs[t]=s},Ps=(e,t,s)=>{e.removeEventListener(t,s)},Ce=e=>!!e.llEvLisnrs,Ts=(e,t,s)=>{Ce(e)||(e.llEvLisnrs={});const r=e.tagName==="VIDEO"?"loadeddata":"load";Te(e,r,t),Te(e,"error",s)},ge=e=>{if(!Ce(e))return;const t=e.llEvLisnrs;for(let s in t){const r=t[s];Ps(e,s,r)}delete e.llEvLisnrs},gt=(e,t,s)=>{gs(e),xe(s,-1),ms(s),L(e,t.class_loading),t.unobserve_completed&&le(e,s)},Ds=(e,t,s,r)=>{const o=Se(t);gt(t,s,r),J(t,s.class_loaded),j(t,Qe),q(s.callback_loaded,t,r),o||ft(s,r)},Fs=(e,t,s,r)=>{const o=Se(t);gt(t,s,r),J(t,s.class_error),j(t,ye),q(s.callback_error,t,r),s.restore_on_error&&H(t,K),o||ft(s,r)},Ae=(e,t,s)=>{const r=rt(e)||e;if(Ce(r))return;Ts(r,n=>{Ds(n,e,t,s),ge(r)},n=>{Fs(n,e,t,s),ge(r)})},Rs=(e,t,s)=>{fs(e),Ae(e,t,s),ys(e),Is(e,t,s),zs(e,t,s),$s(e,t,s)},Vs=(e,t,s)=>{Ae(e,t,s),Ms(e,t,s)},Ie=(e,t,s)=>{Os(e)?Vs(e,t,s):Rs(e,t,s)},Us=(e,t,s)=>{e.setAttribute("loading","lazy"),Ae(e,t,s),Ls(e,t),j(e,et)},De=e=>{e.removeAttribute(P),e.removeAttribute(me),e.removeAttribute(we)},qs=e=>{Ee(e,t=>{De(t)}),De(e)},bt=e=>{Ee(e,t=>{H(t,K)}),H(e,K)},Bs=e=>{it(e,t=>{H(t,ce)}),H(e,at),e.load()},Hs=e=>{H(e,ce)},js=e=>{H(e,lt)},Gs={IMG:bt,IFRAME:Hs,VIDEO:Bs,OBJECT:js},Ws=e=>{const t=Gs[e.tagName];if(!t){Ss(e);return}t(e)},Js=(e,t)=>{ke(e)||Se(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))},Xs=(e,t)=>{Ws(e),Js(e,t),ae(e),dt(e)},Zs=(e,t,s,r)=>{s.cancel_on_exit&&ds(e)&&e.tagName==="IMG"&&(ge(e),qs(e),bt(e),L(e,s.class_loading),xe(r,-1),ae(e),q(s.callback_cancel,e,t,r))},Ks=(e,t,s,r)=>{const o=hs(e);j(e,ls),J(e,s.class_entered),L(e,s.class_exited),vs(e,s,r),q(s.callback_enter,e,t,r),!o&&Ie(e,s,r)},Qs=(e,t,s,r)=>{ke(e)||(J(e,s.class_exited),Zs(e,t,s,r),q(s.callback_exit,e,t,r))},Ys=["IMG","IFRAME","VIDEO"],vt=e=>e.use_native&&"loading"in HTMLImageElement.prototype,er=(e,t,s)=>{e.forEach(r=>{Ys.indexOf(r.tagName)!==-1&&Us(r,t,s)}),ot(s,0)},tr=e=>e.isIntersecting||e.intersectionRatio>0,sr=e=>({root:e.container===document?null:e.container,rootMargin:e.thresholds||e.threshold+"px"}),rr=(e,t,s)=>{e.forEach(r=>tr(r)?Ks(r.target,r,t,s):Qs(r.target,r,t,s))},or=(e,t)=>{t.forEach(s=>{e.observe(s)})},nr=(e,t)=>{bs(e),or(e,t)},ir=(e,t)=>{!Ge||vt(e)||(t._observer=new IntersectionObserver(s=>{rr(s,e,t)},sr(e)))},mt=e=>Array.prototype.slice.call(e),ie=e=>e.container.querySelectorAll(e.elements_selector),ar=e=>mt(e).filter(ke),lr=e=>us(e),cr=e=>mt(e).filter(lr),Fe=(e,t)=>ar(e||ie(t)),dr=(e,t)=>{cr(ie(e)).forEach(r=>{L(r,e.class_error),ae(r)}),t.update()},ur=(e,t)=>{U&&(t._onlineHandler=()=>{dr(e,t)},window.addEventListener("online",t._onlineHandler))},pr=e=>{U&&window.removeEventListener("online",e._onlineHandler)},te=function(e,t){const s=Xe(e);this._settings=s,this.loadingCount=0,ir(s,this),ur(s,this),this.update(t)};te.prototype={update:function(e){const t=this._settings,s=Fe(e,t);if(ot(this,s.length),je||!Ge){this.loadAll(s);return}if(vt(t)){er(s,t,this);return}nr(this._observer,s)},destroy:function(){this._observer&&this._observer.disconnect(),pr(this),ie(this._settings).forEach(e=>{dt(e)}),delete this._observer,delete this._settings,delete this._onlineHandler,delete this.loadingCount,delete this.toLoadCount},loadAll:function(e){const t=this._settings;Fe(e,t).forEach(r=>{le(r,this),Ie(r,t,this)})},restoreAll:function(){const e=this._settings;ie(e).forEach(t=>{Xs(t,e)})}};te.load=(e,t)=>{const s=Xe(t);Ie(e,s)};te.resetStatus=e=>{ae(e)};U&&as(te,window.lazyLoadOptions);function hr(){let e=G;const t=p=>{e=p};let s=!1,r=!1,o=!1,a=[],n=0;const i=_("readonly"),l=_("preview-active"),d=y("div","content"),b=y("div","preview-mask");b.onclick=function(w){r||w.target===b&&f(!1)},B(d,b);const g=y("div","preview");g.classList.add(_("tele-fancy-scrollbar")),g.onclick=function(w){var S;if(r)return;const k=(S=w.target.dataset)==null?void 0:S.pageIndex;k&&(w.preventDefault(),w.stopPropagation(),w.stopImmediatePropagation(),e(Number(k)),f(!1))},B(d,g);let v;function c(p){r!==p&&(r=p,d.classList.toggle(i,r))}function f(p){o!==p&&(o=p,d.classList.toggle(l,o),o&&!v&&(v=new te({container:g,elements_selector:`.${_("preview-page>img")}`})))}function E(p){if(a!==p){a=p;const w=_("preview-page"),k=_("preview-page-name");a.forEach((S,I)=>{const M=String(I),z=oe("a");z.className=w+" "+_(`preview-page-${I}`),z.href="#",z.dataset.pageIndex=M;const T=oe("span");T.className=k,T.textContent=String(I+1),T.dataset.pageIndex=M;const D=oe("img");D.width=S.width,D.height=S.height,D.alt=`page-${I}`,D.dataset.src=S.thumbnail,D.dataset.pageIndex=M,B(z,D),B(z,T),B(g,z)}),s||v==null||v.update()}}function $(p,w=!1){if(w||n!==p){n=p;const k=g.querySelector(`.${_(`preview-page-${n}`)}`);k&&g.scrollTo({top:k.offsetTop-16})}}function A(){s=!0,v==null||v.destroy()}function m(){return o}return{$content:d,$preview:g,set_readonly:c,set_active:f,get_active:m,set_pages:E,on_new_page_index:t,set_page_index:$,destroy:A}}const ze=class{constructor(t){u(this,"sideEffect",new Ve);u(this,"events",new Dt);u(this,"$slide",y("div","slide"));u(this,"$overlay",y("div","overlay"));u(this,"sidebar",hr());u(this,"footer",ns());u(this,"$content");u(this,"$footer");u(this,"slide");u(this,"_slideTitle","");u(this,"_getWhiteSnapshot",null);u(this,"_readyPromise");u(this,"_infoPromise");u(this,"_ready",!1);u(this,"_slideCount",0);u(this,"_destroyed",!1);u(this,"_isFrozen",!1);u(this,"_cachedIsFrozen",!1);u(this,"onPlay",()=>{this.slide.nextStep()});u(this,"onNewPageIndex",t=>{this._ready&&t>=0&&t<this._slideCount?this.slide.renderSlide(t+1):this.setPage(this.slide.slideState.currentSlideIndex)});u(this,"onTogglePreview",()=>{this.sidebar.set_active(!this.sidebar.get_active())});u(this,"toPdf",async t=>{const r=document.createElement("canvas"),o=r.getContext("2d"),{slideCount:a,width:n,height:i}=this.slide;let l=Math.floor(n),d=Math.floor(i);l>1920&&(l=1920,d=Math.floor(i*l/n)),d>1920&&(d=1920,l=Math.floor(n*d/i)),r.width=l,r.height=d;const b=document.createElement("canvas");b.width=n,b.height=i;const g=b.getContext("2d");if(!g||!this._getWhiteSnapshot||!o)return null;const v=l>d?"l":"p",{jsPDF:c}=await import("jspdf"),f=new c({format:[l,d],orientation:v,compress:!0});for(let p=1;p<=a;p++){const w=await this.slide.snapshotWithTimingEnd(p);if(w){const S=document.createElement("img");S.src=w,await new Promise(I=>S.onload=I),o.drawImage(S,0,0,l,d)}g.clearRect(0,0,n,i),this._getWhiteSnapshot(p,b,g);try{const S=b.toDataURL("image/png"),I=document.createElement("img");I.src=S,await new Promise(M=>I.onload=M),o.drawImage(I,0,0,l,d)}catch{}const k=r.toDataURL("image/jpeg",.6);p>1&&f.addPage(),f.addImage(k,"JPEG",0,0,l,d,"","FAST"),o.clearRect(0,0,l,d),t(Math.ceil(p/a*100))}const E=f.output("arraybuffer"),$=new Blob([E]),A=URL.createObjectURL($),m=document.createElement("a");m.setAttribute("href",A),m.setAttribute("download",`${this._slideTitle||"snapshot"}.pdf`),m.style.display="none",document.body.appendChild(m),m.click(),document.body.removeChild(m),window.postMessage({type:"@app-slide/_download_pdf_",buf:E})});this.$content=this.sidebar.$content,this.$footer=this.footer.$footer,B(this.$content,this.$slide),B(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(()=>{this.$content.parentElement&&this.$content.remove(),this.$footer.parentElement&&this.$footer.remove(),this.$slide.parentElement&&this.$slide.remove()}),this.sideEffect.push(Zt(i=>{this._destroyed||(i?this._cachedIsFrozen||this.unfreeze():(this._cachedIsFrozen=this._isFrozen,this.freeze()))}));const[s,r]=Ne();this._infoPromise=s,ze.fetchSlideInfo(t).then(({preview:i,slide:l})=>{if(!this._destroyed){if(this._slideCount=l.slideCount,i){const{taskId:d,url:b}=t,{slideCount:g}=l,{width:v,height:c}=i,f=He(d,b),E=Array.from({length:g},($,A)=>({width:v,height:c,thumbnail:`${f}/preview/${A+1}.png`}));this.sidebar.set_pages(E),this.footer.set_sidebar(!0)}this.footer.set_page_count(l.slideCount),r(l)}}).catch(i=>{console.log("[Slide] fetch slide info error"),console.error(i),this.events.emit("prepareError",i)});const[a,n]=Ne();this._readyPromise=a,this.slide=new ne.Slide({anchor:this.$slide,mode:"local",interactive:!0,enableGlobalClick:!0,useLocalCache:!0,...t}),this.slide.setResource(t.taskId,t.url||be),this.slide.on("renderStart",()=>{this._destroyed||this.events.emit("renderStart")}),this.slide.on("slideChange",i=>{this._destroyed||(this.setPage(i),this.$overlay.style.opacity="",this.events.emit("renderEnd"))}),this.slide.once("renderEnd",()=>{this._ready||setTimeout(()=>{this._ready=!0,n()},1e3)}),this.slide.on("renderError",i=>{this._destroyed||i.error&&(console.error(i.error),this.$overlay.textContent=`Error on slide.index=${i.index}: ${i.error.message}`,this.$overlay.style.opacity="1",this.events.emit("renderError",i))}),this.ready(()=>{this._isFrozen&&this.freeze()})}prepare(t){return this._infoPromise.then(t)}ready(t){return this._readyPromise.then(t)}destroy(){this._destroyed=!0,this.sideEffect.flushAll()}setReadonly(t){this.slide.setInteractive(!t),this.sidebar.set_readonly(t),this.footer.set_readonly(t)}setPage(t){this.sidebar.set_page_index(t-1,!0),this.footer.set_page_index(t-1,!0)}freeze(){this._destroyed||(this._isFrozen=!0,this._ready&&(this.slide.frozen(),this.events.emit("freeze")))}unfreeze(){this._destroyed||(this._isFrozen=!1,this._ready&&(this.slide.release(),this.events.emit("unfreeze")))}};let O=ze;u(O,"styles",Kt),u(O,"fetchSlideInfo",Xt);function fr(e){return e.displayer.logger}const N=class{constructor(t){u(this,"info",t=>{N.roomLogger&&this.context?N.roomLogger.info(t+` (${this.context.appId})`):this.context?console.debug(t+` (${this.context.appId})`):console.debug(t)});this.context=t,t&&(N.active.add(t.appId),N.roomLogger=fr(t))}destroy(){this.context&&N.active.delete(this.context.appId),N.active.size===0&&(N.roomLogger=null)}};let X=N;u(X,"active",new Set),u(X,"roomLogger",null);function gr({context:e,storage:t,viewer:s,sideEffect:r,logger:o}){const a=o.info.bind(o);let n=null;s.prepare(({width:c,height:f,slideCount:E})=>{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,m)=>{if(!n)return null;const p=n.pageState.pages[$-1],{width:w,height:k}=n.view.size;A.width=w,A.height=k,n.view.screenshotToCanvas(m,p,w,k,n.view.camera)},d())});const{slide:i}=s;function l(c=t.state.state){return JSON.stringify(c)}function d(){if(t.state.state)a("[Slide] restore "+l()),i.setSlideState(t.state.state);else if(e.isAddApp)a("[Slide] kick start"),i.renderSlide(1);else{a("[Slide] wait for restore");const c=r.add(()=>{const E=setInterval(()=>{t.state.state||(a("[Slide] timeout"),i.renderSlide(1))},15e3);return()=>clearInterval(E)}),f=r.push(t.on("stateChanged",()=>{t.state.state&&(a("[Slide] restore "+l()),i.setSlideState(t.state.state),r.flush(f),r.flush(c))}))}}i.on("stateChange",()=>{t.isWritable&&t.setState({state:i.slideState})}),i.on("syncDispatch",c=>{e.isWritable&&(a("[Slide] dispatch "+l(Me(c,"uuid"))),e.dispatchMagixEvent("syncDispatch",c))}),r.push(e.addMagixEventListener("syncDispatch",({payload:c})=>{a("[Slide] receive "+l(Me(c,"uuid"))),i.emit("syncReceive",c)},{fireSelfEventAfterCommit:!0})),i.on("slideChange",c=>{e.isWritable&&n&&(a("[Slide] page to "+c),n.jumpPage(c-1))});function b(){n&&n.view.divElement&&n.view.divElement.classList.add(_("wb-view-hidden"))}function g(){n&&n.view.divElement&&n.view.divElement.classList.remove(_("wb-view-hidden"))}s.setReadonly(!e.isWritable),r.push([e.emitter.on("writableChange",()=>s.setReadonly(!e.isWritable)),s.events.on("renderStart",b),s.events.on("renderEnd",g)]);const v=c=>{if(!c)return!1;const f=c.tagName;return f==="INPUT"||f==="TEXTAREA"||f==="SELECT"};r.addEventListener(window,"keydown",c=>{!c||c.target.className==="telebox-quarantine-outer"||e.box.focus&&!e.box.readonly&&!v(c.target)&&((c.key==="ArrowUp"||c.key==="ArrowLeft")&&s.slide.prevStep(),(c.key==="ArrowRight"||c.key==="ArrowDown")&&s.slide.nextStep())})}function br(e){const{container:t,...s}=e,r=y("div","preview-wrapper"),o=new O(s);return r.appendChild(document.createElement("style")).textContent=O.styles,r.appendChild(o.$content),r.appendChild(o.$footer),t.appendChild(r),o.prepare(()=>o.slide.renderSlide(1)),o}const vr=ne.Slide.usePlugin.bind(ne.Slide),mr="0.3.0-canary.20",wr={kind:"Slide",config:{enableShadowDOM:!1},setup(e){console.log("[Slide] setup @ 0.3.0-canary.20 ("+e.appId+")");const t=new X(e);if(t.info("[Slide] setup @ 0.3.0-canary.20"),!e.attributes.taskId)throw new Error("[Slide] no taskId");const s=e.createStorage("slide",e.attributes),r=e.getAppOptions()||{},o=r.renderOptions||{},a=new Ve,n=new O({interactive:!0,mode:"interactive",enableGlobalClick:!0,timestamp:Wt(e),logger:r.logger||t,renderOptions:{minFPS:o.minFPS||25,maxFPS:o.maxFPS||30,autoFPS:o.autoFPS??!0,autoResolution:o.autoResolution??!0,resolution:o.resolution,maxResolutionLevel:o.maxResolutionLevel,transactionBgColor:o.transactionBgColor||Be(e.box.$content)},rtcAudio:r.rtcAudio,useLocalCache:r.useLocalCache,resourceTimeout:r.resourceTimeout,loaderDelegate:r.loaderDelegate,navigatorDelegate:r.navigatorDelegate,fixedFrameSize:r.fixedFrameSize,taskId:s.state.taskId,url:s.state.url});return Object.assign(n,{context:e,logger:t}),a.push(ve.set(e.appId,n,e.box)),a.push(n.events.on("freeze",()=>t.info("[Slide] freeze"))),a.push(n.events.on("unfreeze",()=>t.info("[Slide] unfreeze"))),a.push(n.events.on("prepareError",i=>t.info("[Slide] fetch slide info failed: "+i.message))),a.push(n.events.on("renderError",({error:i,index:l})=>t.info(`[Slide] render failed [${l}]: ${i.message}`))),e.box.mountStyles(O.styles),e.box.mountStage(n.$slide),e.box.mountFooter(n.$footer),e.box.mountContent(n.$content),a.push(()=>n.destroy()),gr({context:e,storage:s,viewer:n,sideEffect:a,logger:t}),e.emitter.on("destroy",()=>{t.info("[Slide] destroy"),t.destroy(),a.flushAll()}),n}};Object.defineProperty(exports,"Slide",{enumerable:!0,get:()=>ne.Slide});exports.DefaultUrl=be;exports.SlideViewer=O;exports.addHooks=Tt;exports.default=wr;exports.previewSlide=br;exports.refrigerator=ve;exports.usePlugin=vr;exports.version=mr;
3
+ //# sourceMappingURL=main.js.map