@netless/app-slide 0.1.2 → 0.1.5

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,4 +1,7 @@
1
1
  import type { SlideController } from "../SlideController";
2
+ declare type DebugMessage = {
3
+ slide: boolean | "__instance" | "__debug";
4
+ };
2
5
  declare class Logger {
3
6
  enable: boolean;
4
7
  apps: Record<string, {
@@ -10,9 +13,12 @@ declare class Logger {
10
13
  log(...args: Parameters<Console["log"]>): void;
11
14
  verbose(...args: Parameters<Console["log"]>): void;
12
15
  dispose(appId: string): void;
13
- _onMessage: (ev: MessageEvent<{
14
- slide: boolean | "__instance";
15
- }>) => void;
16
+ /**
17
+ * @example
18
+ * window.postMessage({ slide: '__debug' })
19
+ * window.dispatchEvent(new MessageEvent('message', { data: { slide: '__debug' } }))
20
+ */
21
+ _onMessage: (ev: MessageEvent<DebugMessage> | CustomEvent<DebugMessage>) => void;
16
22
  }
17
23
  export declare const logger: Logger;
18
24
  export declare const log: (...args: Parameters<Console["log"]>) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@netless/app-slide",
3
- "version": "0.1.2",
3
+ "version": "0.1.5",
4
4
  "main": "dist/main.cjs.js",
5
5
  "module": "dist/main.es.js",
6
6
  "types": "dist/index.d.ts",
@@ -11,7 +11,7 @@
11
11
  ],
12
12
  "devDependencies": {
13
13
  "@netless/app-shared": "^0.1.1",
14
- "@netless/slide": "^0.2.9",
14
+ "@netless/slide": "^0.2.10",
15
15
  "@types/color-string": "^1.5.2",
16
16
  "color-string": "^1.9.0",
17
17
  "side-effect-manager": "^0.1.5",
@@ -11,6 +11,7 @@
11
11
  import type { AppContext, Player, Room } from "@netless/window-manager";
12
12
  import type { SyncEvent } from "@netless/slide";
13
13
  import type { Attributes, MagixEvents, MagixPayload, SlideState } from "../typings";
14
+ import type { AppOptions } from "..";
14
15
 
15
16
  import { SideEffectManager } from "side-effect-manager";
16
17
  import { Slide, SLIDE_EVENTS } from "@netless/slide";
@@ -28,7 +29,7 @@ export const EmptyAttributes: Attributes = {
28
29
  };
29
30
 
30
31
  export interface SlideControllerOptions {
31
- context: AppContext<Attributes, MagixEvents>;
32
+ context: AppContext<Attributes, MagixEvents, AppOptions>;
32
33
  anchor: HTMLDivElement;
33
34
  onPageChanged: (page: number) => void;
34
35
  onTransitionStart: () => void;
@@ -246,10 +247,10 @@ export class SlideController {
246
247
  controller: logger.enable,
247
248
  enableGlobalClick: true,
248
249
  renderOptions: {
249
- minFPS: 25,
250
- maxFPS: 30,
251
- autoFPS: true,
252
- autoResolution: true,
250
+ minFPS: this.context.getAppOptions()?.minFPS || 25,
251
+ maxFPS: this.context.getAppOptions()?.maxFPS || 30,
252
+ autoFPS: this.context.getAppOptions()?.autoFPS ?? true,
253
+ autoResolution: this.context.getAppOptions()?.autoResolution ?? true,
253
254
  resolution: this.context.getAppOptions()?.resolution,
254
255
  transactionBgColor: this.context.getAppOptions()?.bgColor || cachedGetBgColor(anchor),
255
256
  },
package/src/index.ts CHANGED
@@ -27,9 +27,20 @@ export const version = __APP_VERSION__;
27
27
  export { DefaultUrl, apps, FreezerLength, addHooks };
28
28
 
29
29
  export interface AppOptions {
30
+ /** show debug controller */
30
31
  debug?: boolean;
32
+ /** scale */
31
33
  resolution?: number;
34
+ /** background color for slide animations */
32
35
  bgColor?: string;
36
+ /** minimal fps @default 25 */
37
+ minFPS?: number;
38
+ /** maximal fps @default 30 */
39
+ maxFPS?: number;
40
+ /** automatically decrease fps @default true */
41
+ autoFPS?: boolean;
42
+ /** whether to re-scale automatically @default true */
43
+ autoResolution?: boolean;
33
44
  }
34
45
 
35
46
  export interface Controller {
@@ -1,6 +1,8 @@
1
1
  import type { SlideController } from "../SlideController";
2
2
  import { isObj } from "./helpers";
3
3
 
4
+ type DebugMessage = { slide: boolean | "__instance" | "__debug" };
5
+
4
6
  class Logger {
5
7
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
8
  public apps: Record<string, { context?: any; controller?: SlideController }> = {};
@@ -23,12 +25,28 @@ class Logger {
23
25
  delete this.apps[appId];
24
26
  window.removeEventListener("message", this._onMessage);
25
27
  }
26
- _onMessage = (ev: MessageEvent<{ slide: boolean | "__instance" }>) => {
27
- if (isObj(ev.data)) {
28
- if (typeof ev.data.slide === "boolean") {
29
- this.enable = ev.data.slide;
30
- } else if (ev.data.slide === "__instance") {
28
+ /**
29
+ * @example
30
+ * window.postMessage({ slide: '__debug' })
31
+ * window.dispatchEvent(new MessageEvent('message', { data: { slide: '__debug' } }))
32
+ */
33
+ _onMessage = (ev: MessageEvent<DebugMessage> | CustomEvent<DebugMessage>) => {
34
+ let data: DebugMessage | undefined;
35
+ if (ev instanceof CustomEvent) {
36
+ data = ev.detail;
37
+ } else if (isObj(ev.data)) {
38
+ data = ev.data;
39
+ }
40
+ if (data) {
41
+ if (typeof data.slide === "boolean") {
42
+ this.enable = data.slide;
43
+ } else if (data.slide === "__instance") {
31
44
  console.log(this);
45
+ } else if (data.slide === "__debug") {
46
+ Object.values(this.apps).forEach(app => {
47
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
48
+ (app.controller?.slide as any)?.createController();
49
+ });
32
50
  }
33
51
  }
34
52
  };