@netless/slide 0.1.7 → 0.1.11

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.
@@ -1,3 +1,4 @@
1
+ // @ts-ignore
1
2
  import { GUI } from "dat.gui";
2
3
  import md5 from "blueimp-md5";
3
4
  var PlayerController = /** @class */ (function () {
package/lib/Slide.d.ts CHANGED
@@ -17,6 +17,8 @@ export declare const SLIDE_EVENTS: {
17
17
  mainSeqStepEnd: string;
18
18
  animateStart: string;
19
19
  animateEnd: string;
20
+ /** slide 状态变化触发 */
21
+ stateChange: string;
20
22
  };
21
23
  export interface ISlideRenderOptions {
22
24
  /** 预期最低渲染 fps, 默认 40 */
@@ -43,6 +45,20 @@ export interface ISlideConfig {
43
45
  controller?: boolean;
44
46
  /** 是否根据窗口大小自动调整分辨率 */
45
47
  resize?: boolean;
48
+ /** 获取房间时间 */
49
+ timestamp?: () => number;
50
+ /**
51
+ * 运行模式
52
+ *
53
+ * "interactive" 互动模式, 所有人都可以操作 ppt
54
+ * "sync" 同步模式, 只有一个人能操作 ppt
55
+ * "local" 本地模式, 不会触发任意同步事件
56
+ */
57
+ mode: "interactive" | "sync" | "local";
58
+ }
59
+ interface MediaState {
60
+ type: "pause" | "play";
61
+ time: number;
46
62
  }
47
63
  interface ISlideState {
48
64
  taskId: string;
@@ -51,10 +67,29 @@ interface ISlideState {
51
67
  mainSeqStep: number;
52
68
  mainSeqState: "idle" | "running" | "end" | null;
53
69
  appliedInteractiveSeqIds: string[];
70
+ mediaState: {
71
+ [key: string]: MediaState;
72
+ };
54
73
  }
55
- export declare type SyncEvent = SyncInteractiveAnimEvent | SyncPrevStepEvent | SyncNextStepEvent | SyncRenderSlideEvent | SyncSetResourceEvent;
74
+ export declare type SyncEvent = SyncInteractiveAnimEvent | SyncPrevStepEvent | SyncNextStepEvent | SyncRenderSlideEvent | SyncSetResourceEvent | SyncMediaPlayEvent | SyncMediaPauseEvent | SyncMediaSeekEvent;
56
75
  export interface BasicSyncEvent {
57
76
  }
77
+ export interface SyncMediaPlayEvent extends BasicSyncEvent {
78
+ type: "mediaPlay";
79
+ id: string;
80
+ state: MediaState;
81
+ }
82
+ export interface SyncMediaPauseEvent extends BasicSyncEvent {
83
+ type: "mediaPause";
84
+ id: string;
85
+ state: MediaState;
86
+ }
87
+ export interface SyncMediaSeekEvent extends BasicSyncEvent {
88
+ type: "mediaSeek";
89
+ id: string;
90
+ time: number;
91
+ state: MediaState;
92
+ }
58
93
  export interface SyncInteractiveAnimEvent extends BasicSyncEvent {
59
94
  type: "interactiveAnim";
60
95
  action: string;
@@ -77,6 +112,7 @@ export interface SyncSetResourceEvent extends BasicSyncEvent {
77
112
  url: string;
78
113
  }
79
114
  export interface SlideEventEmitter {
115
+ removeListener(event: keyof typeof SLIDE_EVENTS, fn?: any): this;
80
116
  emit(event: typeof SLIDE_EVENTS.renderStart, index: number): boolean;
81
117
  on(event: typeof SLIDE_EVENTS.renderStart, listener: (index: number) => void): this;
82
118
  emit(event: typeof SLIDE_EVENTS.renderEnd, index: number): boolean;
@@ -101,6 +137,8 @@ export interface SlideEventEmitter {
101
137
  on(event: typeof SLIDE_EVENTS.mainSeqStepStart, listener: (index: number) => void): this;
102
138
  emit(event: typeof SLIDE_EVENTS.mainSeqStepEnd, index: number): boolean;
103
139
  on(event: typeof SLIDE_EVENTS.mainSeqStepEnd, listener: (index: number) => void): this;
140
+ emit(event: typeof SLIDE_EVENTS.stateChange, state: ISlideState): boolean;
141
+ on(event: typeof SLIDE_EVENTS.stateChange, listener: (state: ISlideState) => void): this;
104
142
  }
105
143
  declare const Slide_base: new () => SlideEventEmitter;
106
144
  export declare class Slide extends Slide_base {
@@ -115,8 +153,19 @@ export declare class Slide extends Slide_base {
115
153
  private frameWidth;
116
154
  private frameHeight;
117
155
  private frame;
156
+ private medianController;
118
157
  private frameResizeObserver;
158
+ private timestamp;
159
+ private mode;
160
+ private log;
161
+ private logId;
162
+ private lastEmitedState;
163
+ private persistLogId;
119
164
  constructor(config: ISlideConfig);
165
+ private persistLog;
166
+ private handleSlideStateLog;
167
+ private handleLogDownload;
168
+ private setMedianControllerAttribute;
120
169
  private frameResizeHandler;
121
170
  private resizeView;
122
171
  private receiveSyncHandler;
@@ -126,6 +175,7 @@ export declare class Slide extends Slide_base {
126
175
  * @param state ISlideState
127
176
  */
128
177
  setSlideState(state: Partial<ISlideState>): Promise<void>;
178
+ private initMedia;
129
179
  /**
130
180
  * 返回 slide 总页数
131
181
  */
@@ -135,7 +185,7 @@ export declare class Slide extends Slide_base {
135
185
  * 可以完成整体同步. 只读属性.
136
186
  * @readonly
137
187
  */
138
- get slideState(): Partial<ISlideState>;
188
+ get slideState(): ISlideState;
139
189
  /**
140
190
  * 主序列动画步数, 只读属性
141
191
  * @readonly
@@ -206,15 +256,20 @@ export declare class Slide extends Slide_base {
206
256
  * 渲染 index 参数对应的 ppt 页.
207
257
  * @param index 要显示的页码, 从 1 开始
208
258
  */
209
- renderSlide(index: number, isReceive?: boolean): void;
259
+ renderSlide(index: number): void;
260
+ private doRenderSlide;
210
261
  /**
211
262
  * 执行下一个主序列动画
212
263
  */
213
- nextStep(isReceive?: boolean): void;
264
+ nextStep(): void;
265
+ private doNextStep;
214
266
  /**
215
267
  * 执行上一个主序列动画
216
268
  */
217
- prevStep(isReceive?: boolean): void;
269
+ prevStep(): void;
270
+ private doPrevStep;
271
+ private emitStateChange;
272
+ private emitSyncDispatch;
218
273
  /**
219
274
  * 重置主序列动画
220
275
  * @param index 将要重置到的步数