@netless/app-slide 0.2.48 → 0.2.50
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/dist/index.d.ts +21 -2
- package/dist/main.cjs.js +110 -110
- package/dist/main.cjs.js.map +1 -1
- package/dist/main.es.js +534 -494
- package/dist/main.es.js.map +1 -1
- package/dist/main.iife.js +228 -228
- package/dist/main.iife.js.map +1 -1
- package/package.json +2 -2
- package/src/DocsViewer/index.ts +7 -1
- package/src/SlideController/index.ts +7 -3
- package/src/SlideDocsViewer/index.ts +4 -1
- package/src/index.ts +8 -0
- package/src/utils/tracker.ts +6 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@netless/app-slide",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.50",
|
|
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.
|
|
13
|
+
"@netless/slide": "^1.2.0",
|
|
14
14
|
"@types/color-string": "^1.5.2",
|
|
15
15
|
"color-string": "^1.9.1",
|
|
16
16
|
"jspdf": "2.5.1",
|
package/src/DocsViewer/index.ts
CHANGED
|
@@ -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() {
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
// 5. pages information are loaded dynamically by the slide package
|
|
10
10
|
|
|
11
11
|
import type { AppContext, Player, Room, Displayer } from "@netless/window-manager";
|
|
12
|
-
import type { SyncEvent } from "@netless/slide";
|
|
12
|
+
import type { ISlideConfig, SyncEvent } from "@netless/slide";
|
|
13
13
|
import type { Attributes, MagixEvents, MagixPayload, SlideState } from "../typings";
|
|
14
14
|
import type { AppOptions } from "..";
|
|
15
15
|
|
|
@@ -18,6 +18,7 @@ import { Slide, SLIDE_EVENTS } from "@netless/slide";
|
|
|
18
18
|
import { clamp } from "../utils/helpers";
|
|
19
19
|
import { cachedGetBgColor } from "../utils/bgcolor";
|
|
20
20
|
import { logger, log, verbose, setRoomLogger } from "../utils/logger";
|
|
21
|
+
import { getRoomTracker } from "../utils/tracker";
|
|
21
22
|
export { syncSceneWithSlide, createDocsViewerPages } from "./helpers";
|
|
22
23
|
|
|
23
24
|
export const DefaultUrl = "https://convertcdn.netless.link/dynamicConvert";
|
|
@@ -89,7 +90,9 @@ export class SlideController {
|
|
|
89
90
|
this.room = context.getRoom();
|
|
90
91
|
this.player = this.room ? undefined : (context.getDisplayer() as Player);
|
|
91
92
|
setRoomLogger((this.room || this.player) as Displayer);
|
|
92
|
-
this.slide = this.createSlide(anchor
|
|
93
|
+
this.slide = this.createSlide(anchor, {
|
|
94
|
+
whiteTracker: getRoomTracker(context.getDisplayer()),
|
|
95
|
+
});
|
|
93
96
|
|
|
94
97
|
// the adder does not need to sync state
|
|
95
98
|
this.syncStateOnceFlag = !this.context.isAddApp;
|
|
@@ -259,7 +262,7 @@ export class SlideController {
|
|
|
259
262
|
return this.slide.slideState.currentSlideIndex;
|
|
260
263
|
}
|
|
261
264
|
|
|
262
|
-
private createSlide(anchor: HTMLDivElement) {
|
|
265
|
+
private createSlide(anchor: HTMLDivElement, defaults: Partial<ISlideConfig> = {}) {
|
|
263
266
|
const options = this.context.getAppOptions() || {};
|
|
264
267
|
const slide = new Slide({
|
|
265
268
|
anchor,
|
|
@@ -286,6 +289,7 @@ export class SlideController {
|
|
|
286
289
|
rtcAudio: options.rtcAudio,
|
|
287
290
|
useLocalCache: options.useLocalCache,
|
|
288
291
|
logger: options.logger,
|
|
292
|
+
whiteTracker: defaults.whiteTracker,
|
|
289
293
|
timestamp: this.timestamp,
|
|
290
294
|
});
|
|
291
295
|
if (import.meta.env.DEV) {
|
|
@@ -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) {
|