@netless/app-slide 0.2.56 → 0.2.57

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@netless/app-slide",
3
- "version": "0.2.56",
3
+ "version": "0.2.57",
4
4
  "main": "dist/main.cjs.js",
5
5
  "module": "dist/main.es.js",
6
6
  "types": "dist/index.d.ts",
@@ -41,6 +41,7 @@ export interface SlideControllerOptions {
41
41
  onRenderError?: (error: Error, pageIndex: number) => void;
42
42
  onNavigate?: (index: number, origin?: string) => void;
43
43
  showRenderError?: boolean;
44
+ invisibleBehavior?: "frozen" | "pause";
44
45
  }
45
46
 
46
47
  const noop = function noop() {
@@ -73,6 +74,8 @@ export class SlideController {
73
74
  private visible: boolean;
74
75
  private savedIsFrozen: boolean;
75
76
 
77
+ private invisibleBehavior: "frozen" | "pause";
78
+
76
79
  public constructor({
77
80
  context,
78
81
  anchor,
@@ -84,7 +87,9 @@ export class SlideController {
84
87
  onError,
85
88
  onRenderError,
86
89
  showRenderError,
90
+ invisibleBehavior,
87
91
  }: SlideControllerOptions) {
92
+ this.invisibleBehavior = invisibleBehavior ?? "frozen";
88
93
  this.onRenderStart = onRenderStart;
89
94
  this.onPageChanged = onPageChanged;
90
95
  this.onTransitionStart = onTransitionStart;
@@ -341,7 +346,11 @@ export class SlideController {
341
346
  this.isFrozen = true;
342
347
  if (this.ready) {
343
348
  log("[Slide] freeze", this.context.appId);
344
- this.slide.frozen();
349
+ if (this.invisibleBehavior === "frozen") {
350
+ this.slide.frozen();
351
+ } else {
352
+ this.slide.pause();
353
+ }
345
354
  } else {
346
355
  this._toFreeze = 1;
347
356
  }
@@ -352,7 +361,11 @@ export class SlideController {
352
361
  this.isFrozen = false;
353
362
  if (this.ready) {
354
363
  log("[Slide] unfreeze", this.context.appId);
355
- this.slide.release();
364
+ if (this.invisibleBehavior === "frozen") {
365
+ this.slide.release();
366
+ } else {
367
+ this.slide.resume();
368
+ }
356
369
  } else {
357
370
  this._toFreeze = -1;
358
371
  }
package/src/index.ts CHANGED
@@ -69,6 +69,8 @@ export interface AppOptions
69
69
  onRenderError?: (error: Error, pageIndex: number) => void;
70
70
  /** whether to show an overlay of error message @default: true */
71
71
  showRenderError?: boolean;
72
+ /** Specify the behavior after hiding the slide; Freeze will destroy the slide and replace it with a snapshot, while Pause simply pauses the slide @default: 'frozen' */
73
+ invisibleBehavior?: "frozen" | "pause";
72
74
  }
73
75
 
74
76
  export interface ILogger {
@@ -150,6 +152,7 @@ const SlideApp: NetlessApp<Attributes, MagixEvents, AppOptions, AppResult> = {
150
152
  onNavigate: options.onNavigate,
151
153
  onRenderError: appOptions.onRenderError,
152
154
  showRenderError: appOptions.showRenderError,
155
+ invisibleBehavior: appOptions.invisibleBehavior,
153
156
  });
154
157
  if (useFreezer) apps.set(context.appId, slideController, box);
155
158
  logger.setAppController(context.appId, slideController);