@netless/slide 0.4.7 → 0.5.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
@@ -584,3 +584,6 @@ const slide = new Slide({
584
584
 
585
585
  #### 0.4.7
586
586
  * syncReceive 引起的切页不发 syncDispatch 事件
587
+
588
+ #### 0.5.0
589
+ * 修改 Slide.frozen 和 Slide.release 为同步方法
@@ -0,0 +1,14 @@
1
+ export interface FrozenTask {
2
+ type: "frozen" | "release";
3
+ status: "running" | "wait";
4
+ fn: () => Promise<void>;
5
+ }
6
+ export declare class FrozenTaskManager {
7
+ private tasks;
8
+ private isDestroy;
9
+ constructor();
10
+ private schedule;
11
+ private getRunningTask;
12
+ addTask(type: "frozen" | "release", fn: () => Promise<void>): void;
13
+ destroy(): void;
14
+ }
@@ -0,0 +1,48 @@
1
+ var FrozenTaskManager = /** @class */ (function () {
2
+ function FrozenTaskManager() {
3
+ var _this = this;
4
+ this.tasks = [];
5
+ this.isDestroy = false;
6
+ this.schedule = function () {
7
+ var task = _this.tasks.shift();
8
+ if (task && !_this.isDestroy) {
9
+ task.status = "running";
10
+ task.fn.apply(null).then(function () {
11
+ window.requestAnimationFrame(_this.schedule);
12
+ }).catch(function () {
13
+ window.requestAnimationFrame(_this.schedule);
14
+ });
15
+ }
16
+ else {
17
+ window.requestAnimationFrame(_this.schedule);
18
+ }
19
+ };
20
+ this.schedule();
21
+ }
22
+ FrozenTaskManager.prototype.getRunningTask = function () {
23
+ if (this.tasks[0] && this.tasks[0].status === "running") {
24
+ return this.tasks[0];
25
+ }
26
+ return null;
27
+ };
28
+ FrozenTaskManager.prototype.addTask = function (type, fn) {
29
+ var task = {
30
+ type: type,
31
+ status: "wait",
32
+ fn: fn,
33
+ };
34
+ var runningTask = this.getRunningTask();
35
+ if (runningTask && type === runningTask.type) {
36
+ return;
37
+ }
38
+ else {
39
+ this.tasks = this.tasks.filter(function (v) { return v.type !== type; });
40
+ this.tasks.push(task);
41
+ }
42
+ };
43
+ FrozenTaskManager.prototype.destroy = function () {
44
+ this.isDestroy = true;
45
+ };
46
+ return FrozenTaskManager;
47
+ }());
48
+ export { FrozenTaskManager };
package/lib/Slide.d.ts CHANGED
@@ -285,6 +285,7 @@ export declare class Slide extends Slide_base {
285
285
  private __slideState;
286
286
  private userInputTime;
287
287
  private isSyncingSlideState;
288
+ private frozenTaskManager;
288
289
  private randomId;
289
290
  private resize;
290
291
  private isAnimating;
@@ -309,8 +310,6 @@ export declare class Slide extends Slide_base {
309
310
  private isInitResized;
310
311
  private cacheImage;
311
312
  private config;
312
- private isFrowning;
313
- private isReleasing;
314
313
  private isTouchStart;
315
314
  private touchStartId;
316
315
  private taskId;
@@ -476,14 +475,16 @@ export declare class Slide extends Slide_base {
476
475
  * 恢复播放状态
477
476
  */
478
477
  resume(): void;
478
+ private _doFrozen;
479
479
  /**
480
480
  * 进入冻结状态, 将 ppt 画面缓存为一张图片, 并释放 webgl 上下文
481
481
  */
482
- frozen(): Promise<void>;
482
+ frozen(): void;
483
+ private _doRelease;
483
484
  /**
484
485
  * 从冻结状态恢复
485
486
  */
486
- release(): Promise<void>;
487
+ release(): void;
487
488
  private _doDestroy;
488
489
  private waitLoadEnd;
489
490
  /**