@netless/slide 0.3.10 → 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 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
package/lib/Slide.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- import { SlideError } from "@netless/ppt-player";
1
+ import { SlideError, ILoaderDelegate } from "@netless/ppt-player";
2
2
  export { ErrorType } from "@netless/ppt-player";
3
+ export type { ILoaderDelegate } from "@netless/ppt-player";
3
4
  export interface RtcAudio {
4
5
  /**
5
6
  * 开始播放音频.
@@ -158,6 +159,10 @@ export interface ISlideConfig {
158
159
  * 资源加载超时时间, 默认 15 秒
159
160
  */
160
161
  resourceTimeout?: number;
162
+ /**
163
+ * 远程资源代理, 详细使用参考 README
164
+ */
165
+ loaderDelegate?: ILoaderDelegate;
161
166
  }
162
167
  interface MediaState {
163
168
  type: "pause" | "play";