@netless/app-slide 0.2.101 → 0.2.103

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.101",
3
+ "version": "0.2.103",
4
4
  "main": "dist/main.cjs.js",
5
5
  "module": "dist/main.es.js",
6
6
  "types": "dist/index.d.ts",
@@ -16,7 +16,7 @@
16
16
  "README-zh.md"
17
17
  ],
18
18
  "devDependencies": {
19
- "@netless/slide": "1.4.56",
19
+ "@netless/slide": "1.4.57",
20
20
  "@types/color-string": "^1.5.2",
21
21
  "color-string": "^1.9.1",
22
22
  "jspdf": "2.5.1",
@@ -9,6 +9,7 @@ export class ResizableContainer {
9
9
  public container: HTMLDivElement;
10
10
  private scrollContainer: HTMLDivElement;
11
11
  public onScaleChanged: ((scale: number) => void) | null = null;
12
+ public onLayoutUpdated: (() => void) | null = null;
12
13
 
13
14
  private parent: HTMLElement;
14
15
  private whiteboardContainer: HTMLDivElement | null = null;
@@ -131,6 +132,12 @@ export class ResizableContainer {
131
132
  triggerScrollBar: true,
132
133
  triggerSync: true,
133
134
  });
135
+
136
+ // enableScale / scaleView 只改变内部 container 的像素尺寸,box 本身不变。
137
+ // Slide 内部 ResizeObserver 已关闭,box 上的 observer / boxSizeChange 都不会触发,
138
+ // 必须在这里主动通知 canvas 按新的 frame 尺寸重绘。
139
+ this.slide?.notifyFrameResize();
140
+ this.onLayoutUpdated?.();
134
141
  }
135
142
 
136
143
  // x, y 范围 0 ~ 1
@@ -199,6 +206,7 @@ export class ResizableContainer {
199
206
  }
200
207
 
201
208
  public destroy(_box?: ReadonlyTeleBox): void {
209
+ this.onLayoutUpdated = null;
202
210
  this.scrollBar?.destroy();
203
211
  }
204
212
  }
@@ -398,10 +398,14 @@ export class SlideControllerBase {
398
398
  let isNeedSyncState = false;
399
399
  log("[Slide] unfreeze", this.context.appId);
400
400
  if (this.invisibleBehavior === "frozen") {
401
- this.slide.release();
401
+ this.slide.release(() => {
402
+ // release 会重建 player,内部 observer 已关闭,需要按当前 frame 尺寸重绘
403
+ this.slide.notifyFrameResize();
404
+ });
402
405
  isNeedSyncState = true;
403
406
  } else {
404
407
  this.slide.resume();
408
+ this.slide.notifyFrameResize();
405
409
  }
406
410
  if (isNeedSyncState) {
407
411
  const state = this.context.storage.state.state;
@@ -223,6 +223,9 @@ export class SlideDocsViewer {
223
223
  this.enableScale,
224
224
  this.box,
225
225
  );
226
+ this.resizableContainer.onLayoutUpdated = () => {
227
+ this.scaleDocsToFit();
228
+ };
226
229
  }
227
230
 
228
231
  // 创建元素