@netless/app-slide 0.2.106-beta.1 → 0.2.106-beta.3
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-zh.md +11 -0
- package/README.md +11 -0
- package/dist/index.d.ts +19 -4
- package/dist/main.cjs.js +172 -172
- package/dist/main.cjs.js.map +1 -1
- package/dist/main.es.js +322 -153
- package/dist/main.es.js.map +1 -1
- package/dist/main.iife.js +176 -176
- package/dist/main.iife.js.map +1 -1
- package/package.json +3 -3
- package/src/SlideController/index.ts +137 -39
- package/src/SlideDocsViewer/index.ts +44 -18
- package/src/SlideDocsViewer/navigation.ts +33 -0
- package/src/index.ts +45 -39
- package/src/utils/focus-transition.ts +51 -0
package/README-zh.md
CHANGED
|
@@ -72,6 +72,17 @@ manager.addApp({
|
|
|
72
72
|
|
|
73
73
|
用于匹配课件笔记的固定白板分辨率。添加 app 时传入主白板尺寸;传入 `null` 时使用 PPT 自身分辨率。
|
|
74
74
|
|
|
75
|
+
5. (可选) `navigationButtonMode`
|
|
76
|
+
|
|
77
|
+
底部左右按钮的导航模式,默认值为 `"page"`。
|
|
78
|
+
|
|
79
|
+
```ts
|
|
80
|
+
appOptions: {
|
|
81
|
+
navigationButtonMode: "page", // 上一页/下一页
|
|
82
|
+
// navigationButtonMode: "step", // 上一步/下一步
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
75
86
|
### 协议
|
|
76
87
|
|
|
77
88
|
MIT @ [netless](https://github.com/netless-io)
|
package/README.md
CHANGED
|
@@ -85,6 +85,17 @@ Parameters:
|
|
|
85
85
|
|
|
86
86
|
Fixed whiteboard resolution used to fit the slide notes. Pass the main view size when adding the app; use `null` to use the slide resolution.
|
|
87
87
|
|
|
88
|
+
5. (optional) `navigationButtonMode`
|
|
89
|
+
|
|
90
|
+
Controls the footer left/right buttons. It defaults to `"page"`.
|
|
91
|
+
|
|
92
|
+
```ts
|
|
93
|
+
appOptions: {
|
|
94
|
+
navigationButtonMode: "page", // previous/next page
|
|
95
|
+
// navigationButtonMode: "step", // previous/next animation step
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
88
99
|
### Preview
|
|
89
100
|
|
|
90
101
|
```ts
|
package/dist/index.d.ts
CHANGED
|
@@ -1032,6 +1032,7 @@ declare class SlideControllerBase {
|
|
|
1032
1032
|
protected syncStateOnceFlag: boolean;
|
|
1033
1033
|
protected visible: boolean;
|
|
1034
1034
|
protected savedIsFrozen: boolean;
|
|
1035
|
+
protected focused: boolean;
|
|
1035
1036
|
protected invisibleBehavior: "frozen" | "pause";
|
|
1036
1037
|
previewList: string[];
|
|
1037
1038
|
constructor(props: SlideControllerOptions);
|
|
@@ -1057,7 +1058,13 @@ declare class SlideControllerBase {
|
|
|
1057
1058
|
destroy(): Promise<void>;
|
|
1058
1059
|
timestamp: () => number;
|
|
1059
1060
|
isFrozen: boolean;
|
|
1061
|
+
private resourceStateUnknown;
|
|
1062
|
+
private managedActivity;
|
|
1060
1063
|
protected _toFreeze: -1 | 0 | 1;
|
|
1064
|
+
setFocusedState: (focused: boolean) => Promise<void>;
|
|
1065
|
+
private resourceTransition;
|
|
1066
|
+
private shouldBeActive;
|
|
1067
|
+
reconcileActivity: (force?: boolean) => Promise<void>;
|
|
1061
1068
|
freeze: () => Promise<void>;
|
|
1062
1069
|
unfreeze: () => Promise<void>;
|
|
1063
1070
|
protected bindAppStateChangeEvent: () => void;
|
|
@@ -1067,6 +1074,7 @@ declare class SlideControllerBase {
|
|
|
1067
1074
|
status: "normal" | "minimized" | "maximized";
|
|
1068
1075
|
}) => void;
|
|
1069
1076
|
protected getAppStatus: () => "normal" | "minimized" | "maximized" | undefined;
|
|
1077
|
+
protected isLazySetupMode: () => boolean;
|
|
1070
1078
|
protected onVisibilityChange: () => Promise<void>;
|
|
1071
1079
|
}
|
|
1072
1080
|
declare class SlideController extends SlideControllerBase {
|
|
@@ -1130,6 +1138,7 @@ interface SlideDocsViewerConfig {
|
|
|
1130
1138
|
appId: string;
|
|
1131
1139
|
urlInterrupter?: (url: string) => Promise<string>;
|
|
1132
1140
|
enableScale?: boolean;
|
|
1141
|
+
navigationButtonMode?: NavigationButtonMode;
|
|
1133
1142
|
onPagesReady?: (pages: DocsViewerPage[]) => void;
|
|
1134
1143
|
onNavigate?: (index: number, origin?: string) => void;
|
|
1135
1144
|
}
|
|
@@ -1147,6 +1156,7 @@ declare class SlideDocsViewer {
|
|
|
1147
1156
|
protected isViewMounted: boolean;
|
|
1148
1157
|
protected justSildeReadonly: boolean;
|
|
1149
1158
|
protected syncEventQueuePolicy: SyncEventQueuePolicy;
|
|
1159
|
+
private readonly navigationButtonMode;
|
|
1150
1160
|
private enableScale;
|
|
1151
1161
|
private boxSizeEventCount;
|
|
1152
1162
|
private latestBoxSize;
|
|
@@ -1155,7 +1165,7 @@ declare class SlideDocsViewer {
|
|
|
1155
1165
|
private lastAppliedSource;
|
|
1156
1166
|
private offBoxSizeChange;
|
|
1157
1167
|
private contentResizeObserver;
|
|
1158
|
-
constructor({ context, box, view, mountSlideController, mountWhiteboard, baseScenePath, appId, urlInterrupter, enableScale, onPagesReady, onNavigate, }: SlideDocsViewerConfig);
|
|
1168
|
+
constructor({ context, box, view, mountSlideController, mountWhiteboard, baseScenePath, appId, urlInterrupter, enableScale, navigationButtonMode, onPagesReady, onNavigate, }: SlideDocsViewerConfig);
|
|
1159
1169
|
$slide: HTMLDivElement;
|
|
1160
1170
|
$whiteboardView: HTMLDivElement;
|
|
1161
1171
|
$overlay: HTMLDivElement;
|
|
@@ -1187,6 +1197,8 @@ declare class SlideDocsViewer {
|
|
|
1187
1197
|
protected _onPageChanged: () => void;
|
|
1188
1198
|
protected refreshPages: () => void;
|
|
1189
1199
|
protected getPageIndex(page: number): number;
|
|
1200
|
+
protected unmountPromise?: Promise<this>;
|
|
1201
|
+
protected destroyPromise?: Promise<void>;
|
|
1190
1202
|
unmount(): Promise<this>;
|
|
1191
1203
|
setReadonly(readonly: boolean): void;
|
|
1192
1204
|
destroy(): Promise<void>;
|
|
@@ -1297,6 +1309,7 @@ declare class SlidePreviewer {
|
|
|
1297
1309
|
declare const usePlugin: (plugin: any) => any;
|
|
1298
1310
|
declare const version: string;
|
|
1299
1311
|
|
|
1312
|
+
type NavigationButtonMode = "page" | "step";
|
|
1300
1313
|
interface AppOptions extends Pick<ISlideConfig, "rtcAudio" | "useLocalCache" | "resourceTimeout" | "loaderDelegate" | "urlInterrupter" | "navigatorDelegate" | "fixedFrameSize" | "logger" | "enableGlobalClick" | "skipActionWhenFrozen" | "syncEventQueuePolicy"> {
|
|
1301
1314
|
/** show debug controller */
|
|
1302
1315
|
debug?: boolean;
|
|
@@ -1326,12 +1339,14 @@ interface AppOptions extends Pick<ISlideConfig, "rtcAudio" | "useLocalCache" | "
|
|
|
1326
1339
|
invisibleBehavior?: "frozen" | "pause";
|
|
1327
1340
|
/** just readonly, no operate silder */
|
|
1328
1341
|
justSildeReadonly?: true;
|
|
1342
|
+
/** footer navigation button behavior @default 'page' */
|
|
1343
|
+
navigationButtonMode?: NavigationButtonMode;
|
|
1329
1344
|
enableScale?: boolean;
|
|
1330
1345
|
resourceMaxRetries?: number;
|
|
1331
1346
|
onResourceMaxRetries: (url: string, error: Error) => void;
|
|
1332
1347
|
/**
|
|
1333
|
-
*
|
|
1334
|
-
*
|
|
1348
|
+
* First-render warning threshold in ms. Default: 5_000. New lazy hosts
|
|
1349
|
+
* continue awaiting real readiness; legacy/eager hosts resolve on timeout.
|
|
1335
1350
|
*/
|
|
1336
1351
|
setupReadyTimeout?: number;
|
|
1337
1352
|
}
|
|
@@ -1364,4 +1379,4 @@ declare const SlideApp: NetlessApp<Attributes, MagixEvents, AppOptions, AppResul
|
|
|
1364
1379
|
};
|
|
1365
1380
|
|
|
1366
1381
|
export { DefaultUrl, DocsViewer, FreezerLength, SideEffectManager, Slide, SlideController, SlideControllerBase, SlideDocsViewer, SlidePreviewer, addHooks, apps, SlideApp as default, getFreezerLength, log, logger, onCreated, onDestroyed, previewSlide, setFreezerLength, syncSceneWithSlide, useFreezer, usePlugin, version };
|
|
1367
|
-
export type { AddHooks, AppOptions, AppResult, Attributes, FreezableSlide, ILogger, PreviewParams };
|
|
1382
|
+
export type { AddHooks, AppOptions, AppResult, Attributes, FreezableSlide, ILogger, NavigationButtonMode, PreviewParams };
|