@netless/slide 0.3.8 → 0.4.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 +65 -0
- package/lib/RenderingTaskManager.d.ts +1 -0
- package/lib/RenderingTaskManager.js +3 -0
- package/lib/Slide.d.ts +25 -3
- package/lib/Slide.js +14 -14
- package/lib/SyncTaskManager.d.ts +2 -0
- package/lib/SyncTaskManager.js +5 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -358,6 +358,63 @@ clearSlideCache(): void;
|
|
|
358
358
|
static clearLocalCache(): void;
|
|
359
359
|
```
|
|
360
360
|
|
|
361
|
+
### 资源代理
|
|
362
|
+
|
|
363
|
+
**注意: `@netless/slide@0.4.0` 版本才开始支持。**
|
|
364
|
+
|
|
365
|
+
从 `@netless/slide@0.4.0` 开始, 你可以在创建 Slide 对象时提供一个 loaderDelegate 对象, 从而代理 Slide 内部所有远程资源, 进而可以实现
|
|
366
|
+
资源重定向, 资源鉴权等需求.
|
|
367
|
+
|
|
368
|
+
loaderDelegate 属性需符合 `ILoaderDelegate` 接口, 需要注意对于媒体资源, 并不能直接返回资源内容, 只能同步的返回重定向后的资源地址.
|
|
369
|
+
|
|
370
|
+
```typescript
|
|
371
|
+
export interface ILoaderDelegate {
|
|
372
|
+
/**
|
|
373
|
+
* 加载 json 资源, 需返回 json 文本
|
|
374
|
+
* @param url 原始资源地址
|
|
375
|
+
*/
|
|
376
|
+
loadJson(url: string): Promise<string>;
|
|
377
|
+
/**
|
|
378
|
+
* 加载图片资源, 需返回 Blob 对象
|
|
379
|
+
* @param url 原始资源地址
|
|
380
|
+
*/
|
|
381
|
+
loadImage(url: string): Promise<Blob>;
|
|
382
|
+
/**
|
|
383
|
+
* 媒体文件重定向, mp3 和 mp4 资源会调用这个代理函数, 需返回重定向后的 url
|
|
384
|
+
* @param url 原始资源地址
|
|
385
|
+
*/
|
|
386
|
+
redirectMedia(url: string): string;
|
|
387
|
+
}
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
一个什么也不干的 loaderDelegate 如下所示, 但是你可以对传入的 url 进行加工:
|
|
391
|
+
|
|
392
|
+
```typescript
|
|
393
|
+
import { Slide, ILoaderDelegate } from "@netless/slide"
|
|
394
|
+
|
|
395
|
+
const delegate: ILoaderDelegate = {
|
|
396
|
+
loadJson(url: string): Promise<string> {
|
|
397
|
+
return fetch(url).then(res => {
|
|
398
|
+
return res.text();
|
|
399
|
+
});
|
|
400
|
+
},
|
|
401
|
+
loadImage(url: string): Promise<Blob> {
|
|
402
|
+
return fetch(url).then(res => {
|
|
403
|
+
return res.blob();
|
|
404
|
+
});
|
|
405
|
+
},
|
|
406
|
+
redirectMedia(url: string): string {
|
|
407
|
+
return url;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
const slide = new Slide({
|
|
412
|
+
/// ... 其他初始化配置
|
|
413
|
+
loaderDelegate: delegate,
|
|
414
|
+
})
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
|
|
361
418
|
## [示例及具体文档参考](https://github.com/netless-io/netless-slide-demo)
|
|
362
419
|
|
|
363
420
|
## changelog
|
|
@@ -495,3 +552,11 @@ static clearLocalCache(): void;
|
|
|
495
552
|
|
|
496
553
|
#### 0.3.8
|
|
497
554
|
* subtask 错误添加子任务类型输出,方便定位 bug
|
|
555
|
+
|
|
556
|
+
#### 0.3.9
|
|
557
|
+
* 新增 resourceTimeout 配置
|
|
558
|
+
* 修复资源加载引起的错误无法跳转下一页的问题
|
|
559
|
+
|
|
560
|
+
#### 0.3.10
|
|
561
|
+
* 新增本地日志下载功能
|
|
562
|
+
* 修复加载状态不一致导致无法下一步的问题
|
|
@@ -131,6 +131,9 @@ var RenderingTaskManager = /** @class */ (function () {
|
|
|
131
131
|
RenderingTaskManager.prototype.hasStartTask = function () {
|
|
132
132
|
return this.tasks.some(function (t) { return t.state === "start"; });
|
|
133
133
|
};
|
|
134
|
+
RenderingTaskManager.prototype.destroy = function () {
|
|
135
|
+
this.eventHub.removeAllListeners();
|
|
136
|
+
};
|
|
134
137
|
return RenderingTaskManager;
|
|
135
138
|
}());
|
|
136
139
|
export { RenderingTaskManager };
|
package/lib/Slide.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { SlideError, ILoaderDelegate } from "@netless/ppt-player";
|
|
1
2
|
export { ErrorType } from "@netless/ppt-player";
|
|
3
|
+
export type { ILoaderDelegate } from "@netless/ppt-player";
|
|
2
4
|
export interface RtcAudio {
|
|
3
5
|
/**
|
|
4
6
|
* 开始播放音频.
|
|
@@ -153,6 +155,14 @@ export interface ISlideConfig {
|
|
|
153
155
|
* 默认为 true
|
|
154
156
|
*/
|
|
155
157
|
useLocalCache?: boolean;
|
|
158
|
+
/**
|
|
159
|
+
* 资源加载超时时间, 默认 15 秒
|
|
160
|
+
*/
|
|
161
|
+
resourceTimeout?: number;
|
|
162
|
+
/**
|
|
163
|
+
* 远程资源代理, 详细使用参考 README
|
|
164
|
+
*/
|
|
165
|
+
loaderDelegate?: ILoaderDelegate;
|
|
156
166
|
}
|
|
157
167
|
interface MediaState {
|
|
158
168
|
type: "pause" | "play";
|
|
@@ -235,11 +245,11 @@ export interface SlideEventEmitter {
|
|
|
235
245
|
emit(event: typeof SLIDE_EVENTS.syncReceive, args: SyncEvent): boolean;
|
|
236
246
|
on(event: typeof SLIDE_EVENTS.syncReceive, listener: (event: SyncEvent) => void): this;
|
|
237
247
|
emit(event: typeof SLIDE_EVENTS.renderError, args: {
|
|
238
|
-
error:
|
|
248
|
+
error: SlideError;
|
|
239
249
|
index: number;
|
|
240
250
|
}): boolean;
|
|
241
251
|
on(event: typeof SLIDE_EVENTS.renderError, listener: (args: {
|
|
242
|
-
error:
|
|
252
|
+
error: SlideError;
|
|
243
253
|
index: number;
|
|
244
254
|
}) => void): this;
|
|
245
255
|
emit(event: typeof SLIDE_EVENTS.animateStart): boolean;
|
|
@@ -257,6 +267,10 @@ export interface SlideEventEmitter {
|
|
|
257
267
|
}
|
|
258
268
|
declare const Slide_base: new () => SlideEventEmitter;
|
|
259
269
|
export declare class Slide extends Slide_base {
|
|
270
|
+
static logStore: LocalForage;
|
|
271
|
+
static _tempLog: string;
|
|
272
|
+
static _tempLogIndex: number;
|
|
273
|
+
static flushLog(): Promise<void>;
|
|
260
274
|
private iosResetCache;
|
|
261
275
|
private iosNewPlayer?;
|
|
262
276
|
private needClearCacheImage;
|
|
@@ -264,6 +278,7 @@ export declare class Slide extends Slide_base {
|
|
|
264
278
|
private __slideState;
|
|
265
279
|
private userInputTime;
|
|
266
280
|
private isSyncingSlideState;
|
|
281
|
+
private randomId;
|
|
267
282
|
private resize;
|
|
268
283
|
private isAnimating;
|
|
269
284
|
private renderingTaskManager;
|
|
@@ -299,6 +314,7 @@ export declare class Slide extends Slide_base {
|
|
|
299
314
|
private _receiveIncrId;
|
|
300
315
|
private get dispatchIncrId();
|
|
301
316
|
constructor(config: ISlideConfig);
|
|
317
|
+
static handleLogDownload: () => Promise<void>;
|
|
302
318
|
private initPlayer;
|
|
303
319
|
private userInputHandle;
|
|
304
320
|
private handleViewClick;
|
|
@@ -408,7 +424,13 @@ export declare class Slide extends Slide_base {
|
|
|
408
424
|
renderSlide(index: number, isForward?: boolean): void;
|
|
409
425
|
private needCreateNewPlayer;
|
|
410
426
|
private poseRenderSlide;
|
|
411
|
-
|
|
427
|
+
/**
|
|
428
|
+
* 直接渲染 index 指定的页码, 不论当前是 sync 还是 interactive 模式.
|
|
429
|
+
* 即调用此方法不会触发 syncDispatch 事件
|
|
430
|
+
* @param index 要渲染的页码
|
|
431
|
+
* @param isForward 是否向前翻页, 影响切页动画时正放还是倒放
|
|
432
|
+
*/
|
|
433
|
+
doRenderSlide(index: number, isForward?: boolean): Promise<void>;
|
|
412
434
|
/**
|
|
413
435
|
* 执行下一个主序列动画
|
|
414
436
|
*/
|