@netless/slide 1.4.31-alpha.3 → 1.4.32-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.md +3 -0
- package/lib/AliTrackLogger.js +1 -1
- package/lib/LocalFileSystem.d.ts +0 -0
- package/lib/LocalFileSystem.js +1 -0
- package/lib/PlayerController.js +1 -1
- package/lib/RenderingTaskManager.js +2 -2
- package/lib/Slide.js +2 -2
- package/lib/StateDriveSlide.d.ts +237 -0
- package/lib/StateDriveSlide.js +664 -0
- package/lib/SyncEventQueue.d.ts +13 -0
- package/lib/SyncEventQueue.js +83 -0
- package/lib/Ticker.d.ts +2 -0
- package/lib/Ticker.js +2 -0
- package/lib/global.js +1 -1
- package/lib/waitUntil.d.ts +2 -0
- package/lib/waitUntil.js +56 -0
- package/package.json +2 -2
- package/lib/Slide.js.map +0 -1
- package/lib/typeGuard/SyncEvent.d.ts +0 -10
- package/lib/typeGuard/SyncEvent.js +0 -27
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
export declare const SLIDE_EVENTS: {
|
|
2
|
+
/** 当前 slide 渲染开始触发 */
|
|
3
|
+
renderStart: string;
|
|
4
|
+
/** 当前 slide 渲染完毕触发 */
|
|
5
|
+
renderEnd: string;
|
|
6
|
+
/** 当前 slide 渲染出错触发 */
|
|
7
|
+
renderError: string;
|
|
8
|
+
/** slide 页码变化时触发 */
|
|
9
|
+
slideChange: string;
|
|
10
|
+
animateStart: string;
|
|
11
|
+
animateEnd: string;
|
|
12
|
+
/** slide 状态变化触发 */
|
|
13
|
+
stateChange: string;
|
|
14
|
+
};
|
|
15
|
+
export interface ISlideRenderOptions {
|
|
16
|
+
/** 预期最低渲染 fps, 默认 40 */
|
|
17
|
+
minFPS?: number;
|
|
18
|
+
/** 预期最高渲染 fps, 默认 50 */
|
|
19
|
+
maxFPS?: number;
|
|
20
|
+
/** 渲染分辨倍率, 整数, 默认为 window.devicePixelRatio */
|
|
21
|
+
resolution?: number;
|
|
22
|
+
/** 最小分辨倍率, 默认为 1 */
|
|
23
|
+
minResolution?: number;
|
|
24
|
+
/** 是否根据 fps, 自动调整分辨率, 默认为 false */
|
|
25
|
+
autoResolution?: boolean;
|
|
26
|
+
/** 是否自动降低渲染 fps */
|
|
27
|
+
autoFPS?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface ITimeNodeSeqState {
|
|
30
|
+
id: string;
|
|
31
|
+
step: number;
|
|
32
|
+
state: "idle" | "running" | "end";
|
|
33
|
+
isMain: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface ISlideConfig {
|
|
36
|
+
/** canvas 挂载点 */
|
|
37
|
+
anchor: HTMLDivElement;
|
|
38
|
+
/** 是否可互动 */
|
|
39
|
+
interactive: boolean;
|
|
40
|
+
/** 渲染选项, 可选 */
|
|
41
|
+
renderOptions?: ISlideRenderOptions;
|
|
42
|
+
/** 是否展示控制栏和stats */
|
|
43
|
+
controller?: boolean;
|
|
44
|
+
/** 是否根据窗口大小自动调整分辨率 */
|
|
45
|
+
resize?: boolean;
|
|
46
|
+
/** 获取房间时间 */
|
|
47
|
+
timestamp?: () => number;
|
|
48
|
+
}
|
|
49
|
+
interface MediaState {
|
|
50
|
+
type: "pause" | "play";
|
|
51
|
+
time: number;
|
|
52
|
+
}
|
|
53
|
+
interface ISlideState {
|
|
54
|
+
taskId: string;
|
|
55
|
+
url: string;
|
|
56
|
+
currentSlideIndex: number;
|
|
57
|
+
timeNodeSeqState: {
|
|
58
|
+
[key: string]: ITimeNodeSeqState;
|
|
59
|
+
};
|
|
60
|
+
mediaState: {
|
|
61
|
+
[key: string]: MediaState;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export interface SlideEventEmitter {
|
|
65
|
+
removeListener(event: keyof typeof SLIDE_EVENTS, fn?: any): this;
|
|
66
|
+
emit(event: typeof SLIDE_EVENTS.renderStart, index: number): boolean;
|
|
67
|
+
on(event: typeof SLIDE_EVENTS.renderStart, listener: (index: number) => void): this;
|
|
68
|
+
emit(event: typeof SLIDE_EVENTS.renderEnd, index: number): boolean;
|
|
69
|
+
on(event: typeof SLIDE_EVENTS.renderEnd, listener: (index: number) => void): this;
|
|
70
|
+
emit(event: typeof SLIDE_EVENTS.slideChange, nextSlideIndex: number): boolean;
|
|
71
|
+
on(event: typeof SLIDE_EVENTS.slideChange, listener: (nextSlideIndex: number) => void): this;
|
|
72
|
+
emit(event: typeof SLIDE_EVENTS.renderError, args: {
|
|
73
|
+
error: Error;
|
|
74
|
+
index: number;
|
|
75
|
+
}): boolean;
|
|
76
|
+
on(event: typeof SLIDE_EVENTS.renderError, listener: (args: {
|
|
77
|
+
error: Error;
|
|
78
|
+
index: number;
|
|
79
|
+
}) => void): this;
|
|
80
|
+
emit(event: typeof SLIDE_EVENTS.animateStart): boolean;
|
|
81
|
+
on(event: typeof SLIDE_EVENTS.animateStart, listener: () => void): this;
|
|
82
|
+
emit(event: typeof SLIDE_EVENTS.animateEnd): boolean;
|
|
83
|
+
on(event: typeof SLIDE_EVENTS.animateEnd, listener: () => void): this;
|
|
84
|
+
emit(event: typeof SLIDE_EVENTS.stateChange, state: ISlideState): boolean;
|
|
85
|
+
on(event: typeof SLIDE_EVENTS.stateChange, listener: (state: ISlideState) => void): this;
|
|
86
|
+
}
|
|
87
|
+
declare const StateDriveSlide_base: new () => SlideEventEmitter;
|
|
88
|
+
export declare class StateDriveSlide extends StateDriveSlide_base {
|
|
89
|
+
private __slideState;
|
|
90
|
+
private resize;
|
|
91
|
+
private isAnimating;
|
|
92
|
+
private renderingTaskManager;
|
|
93
|
+
private isLoading;
|
|
94
|
+
private interactive;
|
|
95
|
+
private anchor;
|
|
96
|
+
private player;
|
|
97
|
+
private frameWidth;
|
|
98
|
+
private frameHeight;
|
|
99
|
+
private frame;
|
|
100
|
+
private medianController;
|
|
101
|
+
private frameResizeObserver;
|
|
102
|
+
private timestamp;
|
|
103
|
+
private mode;
|
|
104
|
+
private log;
|
|
105
|
+
private logId;
|
|
106
|
+
private lastEmitedState;
|
|
107
|
+
private persistLogId;
|
|
108
|
+
constructor(config: ISlideConfig);
|
|
109
|
+
private persistLog;
|
|
110
|
+
private handleSlideStateLog;
|
|
111
|
+
private handleLogDownload;
|
|
112
|
+
private setMedianControllerAttribute;
|
|
113
|
+
private frameResizeHandler;
|
|
114
|
+
private resizeView;
|
|
115
|
+
/**
|
|
116
|
+
* 设置整个 slide 的状态, slide 会以传入的状态更新画面.
|
|
117
|
+
* 供整体同步时候调用.
|
|
118
|
+
* @param state ISlideState
|
|
119
|
+
*/
|
|
120
|
+
setSlideState(state: Partial<ISlideState>): Promise<void>;
|
|
121
|
+
private initMedia;
|
|
122
|
+
/**
|
|
123
|
+
* 返回 slide 总页数
|
|
124
|
+
*/
|
|
125
|
+
get slideCount(): number;
|
|
126
|
+
/**
|
|
127
|
+
* 整个 slide 的状态, 将获取的值传递给另一个客户端, 并调用 setSlideState
|
|
128
|
+
* 可以完成整体同步. 只读属性.
|
|
129
|
+
* @readonly
|
|
130
|
+
*/
|
|
131
|
+
get slideState(): ISlideState;
|
|
132
|
+
/**
|
|
133
|
+
* 主序列动画步数, 只读属性
|
|
134
|
+
* @readonly
|
|
135
|
+
*/
|
|
136
|
+
get mainSeqLength(): number;
|
|
137
|
+
/**
|
|
138
|
+
* 主序列动画, 当前步, 只读属性
|
|
139
|
+
* @readonly
|
|
140
|
+
*/
|
|
141
|
+
get mainSeqStep(): number;
|
|
142
|
+
/**
|
|
143
|
+
* 主序列动画, 当前状态, 只读属性
|
|
144
|
+
* "idle": 动画尚未运行
|
|
145
|
+
* "running": 动画运行中
|
|
146
|
+
* "end": 动画已经结束
|
|
147
|
+
* null: 当前 Slide 没有主序列动画
|
|
148
|
+
* @readonly
|
|
149
|
+
*/
|
|
150
|
+
get mainSeqState(): "idle" | "running" | "end" | null;
|
|
151
|
+
/**
|
|
152
|
+
* 实时渲染属性, 只读属性.
|
|
153
|
+
* @readonly
|
|
154
|
+
*/
|
|
155
|
+
get renderOptions(): ISlideRenderOptions;
|
|
156
|
+
/**
|
|
157
|
+
* drawCall 次数, 即每帧调用 gpu drawElements 次数, 只读属性.
|
|
158
|
+
* @readonly
|
|
159
|
+
*/
|
|
160
|
+
get drawCall(): number;
|
|
161
|
+
/**
|
|
162
|
+
* 渲染 fps, 只读属性.
|
|
163
|
+
* @readonly
|
|
164
|
+
*/
|
|
165
|
+
get renderFps(): number;
|
|
166
|
+
/**
|
|
167
|
+
* js 运行时 fps, 只读属性.
|
|
168
|
+
* @readonly
|
|
169
|
+
*/
|
|
170
|
+
get runtimeFps(): number;
|
|
171
|
+
/**
|
|
172
|
+
* 渲染 Slide 的 canvas 元素.
|
|
173
|
+
* @readonly
|
|
174
|
+
*/
|
|
175
|
+
get view(): HTMLCanvasElement;
|
|
176
|
+
/**
|
|
177
|
+
* Slide 宽度. 此宽度为设计宽度, 由 ppt 决定. 只读属性.
|
|
178
|
+
* @readonly
|
|
179
|
+
*/
|
|
180
|
+
get width(): number;
|
|
181
|
+
/**
|
|
182
|
+
* Slide 高度. 此高度为设计高度, 由 ppt 决定. 只读属性.
|
|
183
|
+
* @readonly
|
|
184
|
+
*/
|
|
185
|
+
get height(): number;
|
|
186
|
+
/**
|
|
187
|
+
* 更新渲染属性
|
|
188
|
+
* @param renderOptions
|
|
189
|
+
*/
|
|
190
|
+
updateRenderOption(renderOptions: ISlideRenderOptions): void;
|
|
191
|
+
/**
|
|
192
|
+
* 设置 ppt 转换后的资源
|
|
193
|
+
* @param taskId 转换任务 id
|
|
194
|
+
* @param url 资源 url 前缀
|
|
195
|
+
*/
|
|
196
|
+
setResource(taskId: string, url: string): void;
|
|
197
|
+
private _renderSlide;
|
|
198
|
+
/**
|
|
199
|
+
* 渲染 index 参数对应的 ppt 页.
|
|
200
|
+
* @param index 要显示的页码, 从 1 开始
|
|
201
|
+
*/
|
|
202
|
+
renderSlide(index: number): void;
|
|
203
|
+
private doRenderSlide;
|
|
204
|
+
/**
|
|
205
|
+
* 执行下一个主序列动画
|
|
206
|
+
*/
|
|
207
|
+
nextStep(): void;
|
|
208
|
+
/**
|
|
209
|
+
* 执行上一个主序列动画
|
|
210
|
+
*/
|
|
211
|
+
prevStep(): void;
|
|
212
|
+
private emitStateChange;
|
|
213
|
+
/**
|
|
214
|
+
* 重置主序列动画
|
|
215
|
+
* @param index 将要重置到的步数
|
|
216
|
+
* @param status 将要重置到的状态, "start" 重置到动画开始, "end" 重置到动画结束
|
|
217
|
+
*/
|
|
218
|
+
setMainSeqStep(index: number, status: "idle" | "running" | "end"): void;
|
|
219
|
+
/**
|
|
220
|
+
* 设置是否可以互动
|
|
221
|
+
* @param val boolean
|
|
222
|
+
*/
|
|
223
|
+
setInteractive(val: boolean): void;
|
|
224
|
+
/**
|
|
225
|
+
* 暂停播放
|
|
226
|
+
*/
|
|
227
|
+
pause(): void;
|
|
228
|
+
/**
|
|
229
|
+
* 恢复播放状态
|
|
230
|
+
*/
|
|
231
|
+
resume(): void;
|
|
232
|
+
/**
|
|
233
|
+
* 销毁方法.
|
|
234
|
+
*/
|
|
235
|
+
destroy(): void;
|
|
236
|
+
}
|
|
237
|
+
export {};
|