@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/README-zh.md +53 -53
- package/README.md +68 -68
- package/dist/index.d.ts +320 -294
- package/dist/main.cjs.js +120 -120
- package/dist/main.cjs.js.map +1 -1
- package/dist/main.es.js +1723 -1507
- package/dist/main.es.js.map +1 -1
- package/dist/main.iife.js +120 -120
- package/dist/main.iife.js.map +1 -1
- package/package.json +9 -9
- package/src/DocsViewer/icons/arrow-left.svg +4 -4
- package/src/DocsViewer/icons/arrow-left.ts +18 -18
- package/src/DocsViewer/icons/arrow-right.svg +4 -4
- package/src/DocsViewer/icons/arrow-right.ts +18 -18
- package/src/DocsViewer/icons/pause.svg +4 -4
- package/src/DocsViewer/icons/pause.ts +18 -18
- package/src/DocsViewer/icons/play.svg +4 -4
- package/src/DocsViewer/icons/play.ts +18 -18
- package/src/DocsViewer/icons/sidebar.svg +4 -4
- package/src/DocsViewer/icons/sidebar.ts +18 -18
- package/src/DocsViewer/index.ts +381 -381
- package/src/DocsViewer/style.scss +228 -228
- package/src/DocsViewer/variables.scss +1 -1
- package/src/SlideController/helpers.ts +48 -48
- package/src/SlideController/index.ts +351 -351
- package/src/SlideDocsViewer/index.ts +11 -11
- package/src/SlideDocsViewer/style.scss +28 -28
- package/src/SlidePreviewer/index.ts +225 -225
- package/src/index.ts +283 -283
- package/src/style.scss +14 -14
- package/src/typings.ts +21 -21
- package/src/utils/bgcolor.ts +45 -45
- package/src/utils/freezer.ts +116 -116
- package/src/utils/helpers.ts +32 -32
- package/src/utils/logger.ts +106 -106
- package/LICENSE +0 -21
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
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
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 };
|