@netless/app-slide 0.2.37 → 0.2.39-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -2,6 +2,25 @@ import { ReadonlyTeleBox, RegisterParams, AppContext, View, NetlessApp } from '@
2
2
  import { VolumeAdjuster, SlideError } from '@netless/ppt-player';
3
3
  import { IPlugin } from '@netless/plugin-system';
4
4
 
5
+ declare class AliTrackLogger {
6
+ private logList;
7
+ private checkTimer;
8
+ private config;
9
+ private retryTimes;
10
+ private enable;
11
+ constructor();
12
+ private uploadLoggerGlobalEvent;
13
+ start(): Promise<void>;
14
+ pause(): void;
15
+ addLog(message: string, level: Level, taskId: string, randomId: string): void;
16
+ destroy(): void;
17
+ uploadLog(focus?: boolean): Promise<void>;
18
+ setEnable(enable: boolean): void;
19
+ }
20
+ declare type Level = "info" | "warn" | "error";
21
+
22
+ declare function preloadResource(taskId: string, prefix: string, onProgress: (p: number) => void): Promise<void>;
23
+
5
24
  declare type UrlInterrupter = (url: string) => Promise<string>;
6
25
  interface ILoaderDelegate {
7
26
  /**
@@ -234,6 +253,11 @@ interface ISlideConfig {
234
253
  */
235
254
  clientId?: string;
236
255
  urlInterrupter?: UrlInterrupter;
256
+ /**
257
+ * 是否开启日志追踪, 开启后会向 sdk 远程服务器定时定量上传本地日志
258
+ * 默认 true
259
+ */
260
+ enableTracking?: boolean;
237
261
  }
238
262
  interface MediaState {
239
263
  type: "pause" | "play";
@@ -349,6 +373,7 @@ interface SlideEventEmitter {
349
373
  }
350
374
  declare const Slide_base: new () => SlideEventEmitter;
351
375
  declare class Slide extends Slide_base {
376
+ static preloadResource: typeof preloadResource;
352
377
  static instances: Slide[];
353
378
  static _tempFrozenIds: string[];
354
379
  static _tempLog: string;
@@ -406,6 +431,7 @@ declare class Slide extends Slide_base {
406
431
  private logger;
407
432
  private _dispatchIncrId;
408
433
  private _receiveIncrId;
434
+ static trackLogger: AliTrackLogger;
409
435
  private get dispatchIncrId();
410
436
  constructor(initConfig: ISlideConfig);
411
437
  private _updateVolumeByStaticAdjuster;
@@ -635,48 +661,48 @@ declare class Slide extends Slide_base {
635
661
  static disposeLocalCache(): void;
636
662
  }
637
663
 
638
- declare type SlideState = Slide["slideState"];
639
- interface Attributes {
640
- /** convert task id */
641
- taskId: string;
642
- /** base url of converted resources */
643
- url: string;
644
- /** internal state of slide, do not change */
645
- state: SlideState | null;
646
- }
647
- declare type MagixPayload = {
648
- type: typeof SLIDE_EVENTS.syncDispatch;
649
- payload: SyncEvent;
650
- };
651
- declare type MagixEvents = {
652
- [SLIDE_EVENTS.syncDispatch]: MagixPayload;
664
+ declare type SlideState = Slide["slideState"];
665
+ interface Attributes {
666
+ /** convert task id */
667
+ taskId: string;
668
+ /** base url of converted resources */
669
+ url: string;
670
+ /** internal state of slide, do not change */
671
+ state: SlideState | null;
672
+ }
673
+ declare type MagixPayload = {
674
+ type: typeof SLIDE_EVENTS.syncDispatch;
675
+ payload: SyncEvent;
676
+ };
677
+ declare type MagixEvents = {
678
+ [SLIDE_EVENTS.syncDispatch]: MagixPayload;
653
679
  };
654
680
 
655
- interface FreezableSlide {
656
- freeze: () => void;
657
- unfreeze: () => void;
658
- }
659
- declare let FreezerLength: number;
660
- declare function getFreezerLength(): number;
661
- /** @param length - must be >= 1, default is 2 */
662
- declare function setFreezerLength(length: number): void;
663
- declare const apps: {
664
- map: Map<string, FreezableSlide>;
665
- boxes: Map<string, ReadonlyTeleBox>;
666
- queue: string[];
667
- validateQueue(): void;
668
- set(appId: string, slide: FreezableSlide, box: ReadonlyTeleBox): void;
669
- delete(appId: string): void;
670
- focus(appId: string): void;
671
- };
672
- declare function onCreated(callback: (appId: string) => void): () => boolean;
673
- declare function onDestroyed(callback: (appId: string) => void): () => boolean;
674
- declare type AddHooks = NonNullable<RegisterParams["addHooks"]>;
675
- /**
676
- * Put this function in your register code:
677
- * `WindowManager.register({ kind: 'Slide', src: SlideApp, addHooks })`
678
- * So that it will automatically freeze the app when it is not in focus.
679
- */
681
+ interface FreezableSlide {
682
+ freeze: () => void;
683
+ unfreeze: () => void;
684
+ }
685
+ declare let FreezerLength: number;
686
+ declare function getFreezerLength(): number;
687
+ /** @param length - must be >= 1, default is 2 */
688
+ declare function setFreezerLength(length: number): void;
689
+ declare const apps: {
690
+ map: Map<string, FreezableSlide>;
691
+ boxes: Map<string, ReadonlyTeleBox>;
692
+ queue: string[];
693
+ validateQueue(): void;
694
+ set(appId: string, slide: FreezableSlide, box: ReadonlyTeleBox): void;
695
+ delete(appId: string): void;
696
+ focus(appId: string): void;
697
+ };
698
+ declare function onCreated(callback: (appId: string) => void): () => boolean;
699
+ declare function onDestroyed(callback: (appId: string) => void): () => boolean;
700
+ declare type AddHooks = NonNullable<RegisterParams["addHooks"]>;
701
+ /**
702
+ * Put this function in your register code:
703
+ * `WindowManager.register({ kind: 'Slide', src: SlideApp, addHooks })`
704
+ * So that it will automatically freeze the app when it is not in focus.
705
+ */
680
706
  declare const addHooks: AddHooks;
681
707
 
682
708
  declare type SideEffectDisposer = () => any;
@@ -753,268 +779,268 @@ declare class SideEffectManager {
753
779
  genUID(): string;
754
780
  }
755
781
 
756
- interface DocsViewerPage {
757
- src: string;
758
- height: number;
759
- width: number;
760
- thumbnail?: string;
761
- }
762
- interface DocsViewerConfig {
763
- readonly: boolean;
764
- onNewPageIndex: (index: number) => void;
765
- onPlay?: () => void;
766
- urlInterrupter?: (url: string) => Promise<string>;
767
- }
768
- declare class DocsViewer {
769
- constructor({ readonly, onNewPageIndex, onPlay, urlInterrupter }: DocsViewerConfig);
770
- protected readonly: boolean;
771
- protected onNewPageIndex: (index: number) => void;
772
- protected onPlay?: () => void;
773
- protected urlInterrupter: (url: string) => Promise<string> | string;
774
- private _pages;
775
- set pages(value: DocsViewerPage[]);
776
- get pages(): DocsViewerPage[];
777
- $content: HTMLElement;
778
- $preview: HTMLElement;
779
- $previewMask: HTMLElement;
780
- $footer: HTMLElement;
781
- $pageNumberInput: HTMLInputElement;
782
- $totalPage: HTMLSpanElement;
783
- $btnPlay: HTMLButtonElement;
784
- $btnSidebar: HTMLButtonElement;
785
- pageIndex: number;
786
- unmount(): void;
787
- setReadonly(readonly: boolean): void;
788
- destroy(): void;
789
- setPageIndex(pageIndex: number): void;
790
- refreshTotalPage(): void;
791
- setSmallBox(isSmallBox: boolean): void;
792
- render(): HTMLElement;
793
- protected renderContent(): HTMLElement;
794
- private previewLazyLoad?;
795
- protected renderPreview(): HTMLElement;
796
- private refreshPreview;
797
- protected renderPreviewMask(): HTMLElement;
798
- setPaused: () => void;
799
- setPlaying: () => void;
800
- refreshBtnSidebar(): void;
801
- protected renderFooter(): HTMLElement;
802
- protected renderFooterBtn(className: string, $icon: SVGElement, $iconActive?: SVGElement): HTMLButtonElement;
803
- protected togglePreview(isShowPreview?: boolean): void;
804
- protected wrapClassName(className: string): string;
805
- protected namespace: string;
806
- protected isShowPreview: boolean;
807
- protected isSmallBox: boolean;
808
- protected sideEffect: SideEffectManager;
782
+ interface DocsViewerPage {
783
+ src: string;
784
+ height: number;
785
+ width: number;
786
+ thumbnail?: string;
787
+ }
788
+ interface DocsViewerConfig {
789
+ readonly: boolean;
790
+ onNewPageIndex: (index: number) => void;
791
+ onPlay?: () => void;
792
+ urlInterrupter?: (url: string) => Promise<string>;
793
+ }
794
+ declare class DocsViewer {
795
+ constructor({ readonly, onNewPageIndex, onPlay, urlInterrupter }: DocsViewerConfig);
796
+ protected readonly: boolean;
797
+ protected onNewPageIndex: (index: number) => void;
798
+ protected onPlay?: () => void;
799
+ protected urlInterrupter: (url: string) => Promise<string> | string;
800
+ private _pages;
801
+ set pages(value: DocsViewerPage[]);
802
+ get pages(): DocsViewerPage[];
803
+ $content: HTMLElement;
804
+ $preview: HTMLElement;
805
+ $previewMask: HTMLElement;
806
+ $footer: HTMLElement;
807
+ $pageNumberInput: HTMLInputElement;
808
+ $totalPage: HTMLSpanElement;
809
+ $btnPlay: HTMLButtonElement;
810
+ $btnSidebar: HTMLButtonElement;
811
+ pageIndex: number;
812
+ unmount(): void;
813
+ setReadonly(readonly: boolean): void;
814
+ destroy(): void;
815
+ setPageIndex(pageIndex: number): void;
816
+ refreshTotalPage(): void;
817
+ setSmallBox(isSmallBox: boolean): void;
818
+ render(): HTMLElement;
819
+ protected renderContent(): HTMLElement;
820
+ private previewLazyLoad?;
821
+ protected renderPreview(): HTMLElement;
822
+ private refreshPreview;
823
+ protected renderPreviewMask(): HTMLElement;
824
+ setPaused: () => void;
825
+ setPlaying: () => void;
826
+ refreshBtnSidebar(): void;
827
+ protected renderFooter(): HTMLElement;
828
+ protected renderFooterBtn(className: string, $icon: SVGElement, $iconActive?: SVGElement): HTMLButtonElement;
829
+ protected togglePreview(isShowPreview?: boolean): void;
830
+ protected wrapClassName(className: string): string;
831
+ protected namespace: string;
832
+ protected isShowPreview: boolean;
833
+ protected isSmallBox: boolean;
834
+ protected sideEffect: SideEffectManager;
809
835
  }
810
836
 
811
- declare const DefaultUrl = "https://convertcdn.netless.link/dynamicConvert";
812
- interface SlideControllerOptions {
813
- context: AppContext<Attributes, MagixEvents, AppOptions>;
814
- anchor: HTMLDivElement;
815
- onRenderEnd: () => void;
816
- onPageChanged: (page: number) => void;
817
- onTransitionStart: () => void;
818
- onTransitionEnd: () => void;
819
- onError: (args: {
820
- error: Error;
821
- index: number;
822
- }) => void;
823
- onRenderError?: (error: Error, pageIndex: number) => void;
824
- showRenderError?: boolean;
825
- }
826
- declare class SlideController {
827
- readonly context: SlideControllerOptions["context"];
828
- readonly slide: Slide;
829
- readonly showRenderError: boolean;
830
- readonly onRenderError?: (error: Error, pageIndex: number) => void;
831
- private readonly room?;
832
- private readonly player?;
833
- private readonly sideEffect;
834
- private readonly onPageChanged;
835
- private readonly onTransitionStart;
836
- private readonly onTransitionEnd;
837
- private readonly onError;
838
- private syncStateOnceFlag;
839
- private visible;
840
- private savedIsFrozen;
841
- constructor({ context, anchor, onPageChanged, onTransitionStart, onTransitionEnd, onError, onRenderError, showRenderError, }: SlideControllerOptions);
842
- ready: boolean;
843
- private resolveReady;
844
- readonly readyPromise: Promise<void>;
845
- jumpToPage(page: number): void;
846
- private initialize;
847
- private kickStart;
848
- private registerEventListeners;
849
- private onSyncDispatch;
850
- private magixEventListener;
851
- private syncStateOnce;
852
- private onStateChange;
853
- private pollCount;
854
- private pollReadyState;
855
- private _pageCount;
856
- get pageCount(): number;
857
- get page(): number;
858
- private createSlide;
859
- private destroyed;
860
- destroy(): void;
861
- timestamp: () => number;
862
- isFrozen: boolean;
863
- private _toFreeze;
864
- freeze: () => void;
865
- unfreeze: () => Promise<void>;
866
- private onVisibilityChange;
837
+ declare const DefaultUrl = "https://convertcdn.netless.link/dynamicConvert";
838
+ interface SlideControllerOptions {
839
+ context: AppContext<Attributes, MagixEvents, AppOptions>;
840
+ anchor: HTMLDivElement;
841
+ onRenderEnd: () => void;
842
+ onPageChanged: (page: number) => void;
843
+ onTransitionStart: () => void;
844
+ onTransitionEnd: () => void;
845
+ onError: (args: {
846
+ error: Error;
847
+ index: number;
848
+ }) => void;
849
+ onRenderError?: (error: Error, pageIndex: number) => void;
850
+ showRenderError?: boolean;
851
+ }
852
+ declare class SlideController {
853
+ readonly context: SlideControllerOptions["context"];
854
+ readonly slide: Slide;
855
+ readonly showRenderError: boolean;
856
+ readonly onRenderError?: (error: Error, pageIndex: number) => void;
857
+ private readonly room?;
858
+ private readonly player?;
859
+ private readonly sideEffect;
860
+ private readonly onPageChanged;
861
+ private readonly onTransitionStart;
862
+ private readonly onTransitionEnd;
863
+ private readonly onError;
864
+ private syncStateOnceFlag;
865
+ private visible;
866
+ private savedIsFrozen;
867
+ constructor({ context, anchor, onPageChanged, onTransitionStart, onTransitionEnd, onError, onRenderError, showRenderError, }: SlideControllerOptions);
868
+ ready: boolean;
869
+ private resolveReady;
870
+ readonly readyPromise: Promise<void>;
871
+ jumpToPage(page: number): void;
872
+ private initialize;
873
+ private kickStart;
874
+ private registerEventListeners;
875
+ private onSyncDispatch;
876
+ private magixEventListener;
877
+ private syncStateOnce;
878
+ private onStateChange;
879
+ private pollCount;
880
+ private pollReadyState;
881
+ private _pageCount;
882
+ get pageCount(): number;
883
+ get page(): number;
884
+ private createSlide;
885
+ private destroyed;
886
+ destroy(): void;
887
+ timestamp: () => number;
888
+ isFrozen: boolean;
889
+ private _toFreeze;
890
+ freeze: () => void;
891
+ unfreeze: () => Promise<void>;
892
+ private onVisibilityChange;
867
893
  }
868
894
 
869
- declare type MountSlideOptions = Omit<SlideControllerOptions, "context" | "onPageChanged"> & {
870
- onReady: () => void;
871
- };
872
- interface SlideDocsViewerConfig {
873
- box: ReadonlyTeleBox;
874
- view: View;
875
- mountSlideController: (options: MountSlideOptions) => SlideController;
876
- mountWhiteboard: (dom: HTMLDivElement) => void;
877
- baseScenePath: string;
878
- appId: string;
879
- urlInterrupter?: (url: string) => Promise<string>;
880
- }
881
- declare class SlideDocsViewer {
882
- viewer: DocsViewer;
883
- slideController: SlideController | null;
884
- protected readonly box: ReadonlyTeleBox;
885
- protected readonly whiteboardView: SlideDocsViewerConfig["view"];
886
- protected readonly mountSlideController: SlideDocsViewerConfig["mountSlideController"];
887
- protected readonly mountWhiteboard: SlideDocsViewerConfig["mountWhiteboard"];
888
- private readonly baseScenePath;
889
- private readonly appId;
890
- private isViewMounted;
891
- constructor({ box, view, mountSlideController, mountWhiteboard, baseScenePath, appId, urlInterrupter, }: SlideDocsViewerConfig);
892
- $slide: HTMLDivElement;
893
- $whiteboardView: HTMLDivElement;
894
- $overlay: HTMLDivElement;
895
- render(): void;
896
- protected renderOverlay(): HTMLDivElement;
897
- protected renderSlideContainer(): HTMLDivElement;
898
- protected renderWhiteboardView(): HTMLDivElement;
899
- mount(): this;
900
- protected onError: ({ error, index }: {
901
- error: Error;
902
- index: number;
903
- }) => void;
904
- protected onRenderEnd: () => void;
905
- protected refreshPages: () => void;
906
- protected getPageIndex(page: number): number;
907
- unmount(): this;
908
- setReadonly(readonly: boolean): void;
909
- destroy(): void;
910
- toggleClickThrough(tool?: string): void;
911
- protected scaleDocsToFit: () => void;
912
- protected onPlay: () => void;
913
- protected onNewPageIndex: (index: number) => void;
914
- protected sideEffect: SideEffectManager;
915
- protected wrapClassName(className: string): string;
916
- protected namespace: string;
917
- private getWhiteSnapshot;
918
- private reportProgress;
919
- private toPdf;
895
+ declare type MountSlideOptions = Omit<SlideControllerOptions, "context" | "onPageChanged"> & {
896
+ onReady: () => void;
897
+ };
898
+ interface SlideDocsViewerConfig {
899
+ box: ReadonlyTeleBox;
900
+ view: View;
901
+ mountSlideController: (options: MountSlideOptions) => SlideController;
902
+ mountWhiteboard: (dom: HTMLDivElement) => void;
903
+ baseScenePath: string;
904
+ appId: string;
905
+ urlInterrupter?: (url: string) => Promise<string>;
906
+ }
907
+ declare class SlideDocsViewer {
908
+ viewer: DocsViewer;
909
+ slideController: SlideController | null;
910
+ protected readonly box: ReadonlyTeleBox;
911
+ protected readonly whiteboardView: SlideDocsViewerConfig["view"];
912
+ protected readonly mountSlideController: SlideDocsViewerConfig["mountSlideController"];
913
+ protected readonly mountWhiteboard: SlideDocsViewerConfig["mountWhiteboard"];
914
+ private readonly baseScenePath;
915
+ private readonly appId;
916
+ private isViewMounted;
917
+ constructor({ box, view, mountSlideController, mountWhiteboard, baseScenePath, appId, urlInterrupter, }: SlideDocsViewerConfig);
918
+ $slide: HTMLDivElement;
919
+ $whiteboardView: HTMLDivElement;
920
+ $overlay: HTMLDivElement;
921
+ render(): void;
922
+ protected renderOverlay(): HTMLDivElement;
923
+ protected renderSlideContainer(): HTMLDivElement;
924
+ protected renderWhiteboardView(): HTMLDivElement;
925
+ mount(): this;
926
+ protected onError: ({ error, index }: {
927
+ error: Error;
928
+ index: number;
929
+ }) => void;
930
+ protected onRenderEnd: () => void;
931
+ protected refreshPages: () => void;
932
+ protected getPageIndex(page: number): number;
933
+ unmount(): this;
934
+ setReadonly(readonly: boolean): void;
935
+ destroy(): void;
936
+ toggleClickThrough(tool?: string): void;
937
+ protected scaleDocsToFit: () => void;
938
+ protected onPlay: () => void;
939
+ protected onNewPageIndex: (index: number) => void;
940
+ protected sideEffect: SideEffectManager;
941
+ protected wrapClassName(className: string): string;
942
+ protected namespace: string;
943
+ private getWhiteSnapshot;
944
+ private reportProgress;
945
+ private toPdf;
920
946
  }
921
947
 
922
- interface PreviewParams {
923
- container: HTMLElement;
924
- taskId: string;
925
- url?: string;
926
- debug?: boolean;
948
+ interface PreviewParams {
949
+ container: HTMLElement;
950
+ taskId: string;
951
+ url?: string;
952
+ debug?: boolean;
953
+ }
954
+ declare function previewSlide({ container, taskId, url, debug, }: PreviewParams): SlidePreviewer;
955
+ declare class SlidePreviewer {
956
+ readonly viewer: DocsViewer;
957
+ readonly bgColor: string;
958
+ readonly target: HTMLElement;
959
+ slide: Slide | null;
960
+ debug: boolean;
961
+ $slide: HTMLDivElement;
962
+ private readonly sideEffect;
963
+ ready: boolean;
964
+ private resolveReady;
965
+ readonly readyPromise: Promise<void>;
966
+ constructor(config: {
967
+ target: HTMLElement;
968
+ });
969
+ render(): void;
970
+ /**
971
+ * In case you have a different window -- for example, in electron.
972
+ * Use this method to re-register hotkeys.
973
+ *
974
+ * @example
975
+ * previewer.registerHotKeys(windowLike)
976
+ */
977
+ registerHotKeys(windowLike: Window): void;
978
+ private hotkeyListener;
979
+ mount(taskId: string, url: string): void;
980
+ protected renderStyle(): HTMLElement;
981
+ protected registerEventListeners(): void;
982
+ protected onPageChanged: (page: number) => void;
983
+ protected onTransitionStart: () => void;
984
+ protected onTransitionEnd: () => void;
985
+ protected onError: ({ error }: {
986
+ error: Error;
987
+ }) => void;
988
+ private destroyed;
989
+ destroy(): void;
990
+ protected refreshPages: () => void;
991
+ protected getPageIndex(page: number): number;
992
+ protected renderSlideContainer(): HTMLDivElement;
993
+ protected onPlay: () => void;
994
+ protected onNewPageIndex: (index: number) => void;
995
+ protected wrapClassName(className: string): string;
996
+ protected namespace: string;
927
997
  }
928
- declare function previewSlide({ container, taskId, url, debug, }: PreviewParams): SlidePreviewer;
929
- declare class SlidePreviewer {
930
- readonly viewer: DocsViewer;
931
- readonly bgColor: string;
932
- readonly target: HTMLElement;
933
- slide: Slide | null;
934
- debug: boolean;
935
- $slide: HTMLDivElement;
936
- private readonly sideEffect;
937
- ready: boolean;
938
- private resolveReady;
939
- readonly readyPromise: Promise<void>;
940
- constructor(config: {
941
- target: HTMLElement;
942
- });
943
- render(): void;
944
- /**
945
- * In case you have a different window -- for example, in electron.
946
- * Use this method to re-register hotkeys.
947
- *
948
- * @example
949
- * previewer.registerHotKeys(windowLike)
950
- */
951
- registerHotKeys(windowLike: Window): void;
952
- private hotkeyListener;
953
- mount(taskId: string, url: string): void;
954
- protected renderStyle(): HTMLElement;
955
- protected registerEventListeners(): void;
956
- protected onPageChanged: (page: number) => void;
957
- protected onTransitionStart: () => void;
958
- protected onTransitionEnd: () => void;
959
- protected onError: ({ error }: {
960
- error: Error;
961
- }) => void;
962
- private destroyed;
963
- destroy(): void;
964
- protected refreshPages: () => void;
965
- protected getPageIndex(page: number): number;
966
- protected renderSlideContainer(): HTMLDivElement;
967
- protected onPlay: () => void;
968
- protected onNewPageIndex: (index: number) => void;
969
- protected wrapClassName(className: string): string;
970
- protected namespace: string;
971
- }
972
-
973
- declare const usePlugin: (plugin: any) => any;
974
- declare const version: string;
975
998
 
976
- interface AppOptions extends Pick<ISlideConfig, "rtcAudio" | "useLocalCache" | "resourceTimeout" | "loaderDelegate" | "urlInterrupter" | "navigatorDelegate" | "fixedFrameSize" | "logger"> {
977
- /** show debug controller */
978
- debug?: boolean;
979
- /** scale */
980
- resolution?: number;
981
- /** background color for slide animations */
982
- bgColor?: string;
983
- /** minimal fps @default 25 */
984
- minFPS?: number;
985
- /** maximal fps @default 30 */
986
- maxFPS?: number;
987
- /** automatically decrease fps @default true */
988
- autoFPS?: boolean;
989
- /** whether to re-scale automatically @default true */
990
- autoResolution?: boolean;
991
- /** 1~4, default: 3 */
992
- maxResolutionLevel?: number;
993
- /** use canvas2d mode, downside: some 3d effects are lost */
994
- forceCanvas?: boolean;
995
- /** fix windows 11 nvidia rendering bug, downside: render next page slows down */
996
- enableNvidiaDetect?: boolean;
997
- /** custom error handler */
998
- onRenderError?: (error: Error, pageIndex: number) => void;
999
- /** whether to show an overlay of error message @default: true */
1000
- showRenderError?: boolean;
1001
- }
1002
- interface ILogger {
1003
- info?(msg: string): void;
1004
- error?(msg: string): void;
1005
- warn?(msg: string): void;
1006
- }
1007
- interface AppResult {
1008
- viewer: () => SlideDocsViewer | null;
1009
- controller: () => SlideController | null | undefined;
1010
- slide: () => Slide | undefined;
1011
- position: () => [page: number, pageCount: number] | undefined;
1012
- nextStep: () => boolean;
1013
- prevStep: () => boolean;
1014
- nextPage: () => boolean;
1015
- prevPage: () => boolean;
1016
- jumpToPage: (page: number) => boolean;
1017
- }
999
+ declare const usePlugin: (plugin: any) => any;
1000
+ declare const version: string;
1001
+
1002
+ interface AppOptions extends Pick<ISlideConfig, "rtcAudio" | "useLocalCache" | "resourceTimeout" | "loaderDelegate" | "urlInterrupter" | "navigatorDelegate" | "fixedFrameSize" | "logger"> {
1003
+ /** show debug controller */
1004
+ debug?: boolean;
1005
+ /** scale */
1006
+ resolution?: number;
1007
+ /** background color for slide animations */
1008
+ bgColor?: string;
1009
+ /** minimal fps @default 25 */
1010
+ minFPS?: number;
1011
+ /** maximal fps @default 30 */
1012
+ maxFPS?: number;
1013
+ /** automatically decrease fps @default true */
1014
+ autoFPS?: boolean;
1015
+ /** whether to re-scale automatically @default true */
1016
+ autoResolution?: boolean;
1017
+ /** 1~4, default: 3 */
1018
+ maxResolutionLevel?: number;
1019
+ /** use canvas2d mode, downside: some 3d effects are lost */
1020
+ forceCanvas?: boolean;
1021
+ /** fix windows 11 nvidia rendering bug, downside: render next page slows down */
1022
+ enableNvidiaDetect?: boolean;
1023
+ /** custom error handler */
1024
+ onRenderError?: (error: Error, pageIndex: number) => void;
1025
+ /** whether to show an overlay of error message @default: true */
1026
+ showRenderError?: boolean;
1027
+ }
1028
+ interface ILogger {
1029
+ info?(msg: string): void;
1030
+ error?(msg: string): void;
1031
+ warn?(msg: string): void;
1032
+ }
1033
+ interface AppResult {
1034
+ viewer: () => SlideDocsViewer | null;
1035
+ controller: () => SlideController | null | undefined;
1036
+ slide: () => Slide | undefined;
1037
+ position: () => [page: number, pageCount: number] | undefined;
1038
+ nextStep: () => boolean;
1039
+ prevStep: () => boolean;
1040
+ nextPage: () => boolean;
1041
+ prevPage: () => boolean;
1042
+ jumpToPage: (page: number) => boolean;
1043
+ }
1018
1044
  declare const SlideApp: NetlessApp<Attributes, MagixEvents, AppOptions, AppResult>;
1019
1045
 
1020
1046
  export { AddHooks, AppOptions, AppResult, Attributes, DefaultUrl, FreezableSlide, FreezerLength, ILogger, PreviewParams, Slide, SlidePreviewer, addHooks, apps, SlideApp as default, getFreezerLength, onCreated, onDestroyed, previewSlide, setFreezerLength, usePlugin, version };