@netless/app-slide 0.2.49 → 0.2.51

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.49",
3
+ "version": "0.2.51",
4
4
  "main": "dist/main.cjs.js",
5
5
  "module": "dist/main.es.js",
6
6
  "types": "dist/index.d.ts",
@@ -10,7 +10,7 @@
10
10
  "README-zh.md"
11
11
  ],
12
12
  "devDependencies": {
13
- "@netless/slide": "^1.2.0",
13
+ "@netless/slide": "^1.2.1",
14
14
  "@types/color-string": "^1.5.2",
15
15
  "color-string": "^1.9.1",
16
16
  "jspdf": "2.5.1",
@@ -20,13 +20,15 @@ export interface DocsViewerConfig {
20
20
  onNewPageIndex: (index: number) => void;
21
21
  onPlay?: () => void;
22
22
  urlInterrupter?: (url: string) => Promise<string>;
23
+ onPagesReady?: (pages: DocsViewerPage[]) => void;
23
24
  }
24
25
 
25
26
  export class DocsViewer {
26
- public constructor({ readonly, onNewPageIndex, onPlay, urlInterrupter }: DocsViewerConfig) {
27
+ public constructor({ readonly, onNewPageIndex, onPlay, onPagesReady, urlInterrupter }: DocsViewerConfig) {
27
28
  this.readonly = readonly;
28
29
  this.onNewPageIndex = onNewPageIndex;
29
30
  this.onPlay = onPlay;
31
+ this.onPagesReady = onPagesReady;
30
32
  this.urlInterrupter = urlInterrupter || (url => url);
31
33
 
32
34
  this.render();
@@ -35,6 +37,7 @@ export class DocsViewer {
35
37
  protected readonly: boolean;
36
38
  protected onNewPageIndex: (index: number) => void;
37
39
  protected onPlay?: () => void;
40
+ protected onPagesReady?: (pages: DocsViewerPage[]) => void
38
41
  protected urlInterrupter: (url: string) => Promise<string> | string;
39
42
 
40
43
  private _pages: DocsViewerPage[] = [];
@@ -43,6 +46,9 @@ export class DocsViewer {
43
46
  this._pages = value;
44
47
  this.refreshPreview().then(this.refreshBtnSidebar.bind(this));
45
48
  this.refreshTotalPage();
49
+ if (this.onPagesReady) {
50
+ this.onPagesReady(value);
51
+ }
46
52
  }
47
53
 
48
54
  public get pages() {
@@ -3,7 +3,7 @@ import type { SlideController, SlideControllerOptions } from "../SlideController
3
3
 
4
4
  import { SideEffectManager } from "side-effect-manager";
5
5
  import { createDocsViewerPages } from "../SlideController";
6
- import { DocsViewer } from "../DocsViewer";
6
+ import { DocsViewer, DocsViewerPage } from "../DocsViewer";
7
7
  import { logger } from "../utils/logger";
8
8
  import { isEditable } from "../utils/helpers";
9
9
 
@@ -21,6 +21,7 @@ export interface SlideDocsViewerConfig {
21
21
  baseScenePath: string;
22
22
  appId: string;
23
23
  urlInterrupter?: (url: string) => Promise<string>;
24
+ onPagesReady?: (pages: DocsViewerPage[]) => void;
24
25
  }
25
26
 
26
27
  export interface SavePdfConfig {
@@ -48,6 +49,7 @@ export class SlideDocsViewer {
48
49
  baseScenePath,
49
50
  appId,
50
51
  urlInterrupter,
52
+ onPagesReady,
51
53
  }: SlideDocsViewerConfig) {
52
54
  this.box = box;
53
55
  this.whiteboardView = view;
@@ -60,6 +62,7 @@ export class SlideDocsViewer {
60
62
  onNewPageIndex: this.onNewPageIndex,
61
63
  onPlay: this.onPlay,
62
64
  urlInterrupter,
65
+ onPagesReady,
63
66
  });
64
67
 
65
68
  this.sideEffect.add(() => {
package/src/index.ts CHANGED
@@ -133,6 +133,10 @@ const SlideApp: NetlessApp<Attributes, MagixEvents, AppOptions, AppResult> = {
133
133
  docsViewer.viewer.setPageIndex(page - 1);
134
134
  docsViewer.viewer.setPaused();
135
135
  docsViewer.onPageChanged();
136
+ const length = docsViewer.viewer.pages.length;
137
+ if (length > 0) {
138
+ context.dispatchAppEvent("pageStateChange", { index: page - 1, length });
139
+ }
136
140
  }
137
141
  };
138
142
 
@@ -174,6 +178,10 @@ const SlideApp: NetlessApp<Attributes, MagixEvents, AppOptions, AppResult> = {
174
178
  baseScenePath,
175
179
  appId: context.appId,
176
180
  urlInterrupter: context.getAppOptions()?.urlInterrupter,
181
+ onPagesReady: ({ length }) => {
182
+ const index = docsViewer?.viewer.pageIndex || 0;
183
+ context.dispatchAppEvent("pageStateChange", { index, length });
184
+ }
177
185
  });
178
186
 
179
187
  if (import.meta.env.DEV) {