@netless/forge-slide 1.1.0-beta.1 → 1.1.0-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/dist/Slide.d.ts CHANGED
@@ -87,5 +87,15 @@ export declare class SlideForge extends EventEmitter<SlideEvents> implements App
87
87
  width: number;
88
88
  height: number;
89
89
  }>;
90
+ /**
91
+ * 冻结当前幻灯片, 释放资源
92
+ * @param {() => void} [callback] 冻结完成回调
93
+ */
94
+ frozen: (callback?: () => void) => void;
95
+ /**
96
+ * 解冻冻结的幻灯片, 重新获取资源
97
+ * @param {() => void} [callback] 解冻完成回调
98
+ */
99
+ release: (callback?: () => void) => void;
90
100
  }
91
101
  //# sourceMappingURL=Slide.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Slide.d.ts","sourceRoot":"","sources":["../src/Slide.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAEzF,MAAM,WAAW,WAAW;IACxB;;;;;OAKG;IACH,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,wBAAwB,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7F;;;OAGG;IACH,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzC;;;OAGG;IACH,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvC;;;OAGG;IACH,cAAc,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAE/C;;;OAGG;IACH,gBAAgB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD;AAGD,qBAAa,UAAW,SAAQ,YAAY,CAAC,WAAW,CAAE,YAAW,uBAAuB;IAE1F,SAAgB,IAAI,EAAG,cAAc,CAAC;IACtC,SAAgB,WAAW,EAAG,qBAAqB,CAAC;IACpD,SAAgB,QAAQ,EAAG,cAAc,CAAC;IAC1C,SAAgB,WAAW,EAAG,cAAc,CAAC;IAC7C,SAAgB,MAAM,EAAE,WAAW,GAAG,SAAS,CAAa;IAC5D;;SAEK;IACL,SAAgB,SAAS,EAAG,MAAM,CAAC;IACnC;;SAEK;IACL,SAAgB,SAAS,EAAG,MAAM,CAAC;IACnC;;;SAGK;IACE,IAAI,EAAG,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC;;SAEK;IACE,QAAQ,EAAG,MAAM,IAAI,CAAC;IAC7B;;SAEK;IACE,QAAQ,EAAG,MAAM,IAAI,CAAC;IAC7B;;SAEK;IACE,QAAQ,EAAG,MAAM,IAAI,CAAC;IAC7B;;SAEK;IACE,QAAQ,EAAG,MAAM,IAAI,CAAC;IAC7B;;SAEK;IACE,aAAa,EAAG,MAAM,IAAI,CAAC;IAElC;;;SAGK;IACE,UAAU,EAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD;;;SAGK;IACE,MAAM,EAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD;;;SAGK;IACE,OAAO,EAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;CAC9E"}
1
+ {"version":3,"file":"Slide.d.ts","sourceRoot":"","sources":["../src/Slide.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAEzF,MAAM,WAAW,WAAW;IACxB;;;;;OAKG;IACH,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,wBAAwB,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7F;;;OAGG;IACH,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzC;;;OAGG;IACH,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvC;;;OAGG;IACH,cAAc,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAE/C;;;OAGG;IACH,gBAAgB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD;AAGD,qBAAa,UAAW,SAAQ,YAAY,CAAC,WAAW,CAAE,YAAW,uBAAuB;IAE1F,SAAgB,IAAI,EAAG,cAAc,CAAC;IACtC,SAAgB,WAAW,EAAG,qBAAqB,CAAC;IACpD,SAAgB,QAAQ,EAAG,cAAc,CAAC;IAC1C,SAAgB,WAAW,EAAG,cAAc,CAAC;IAC7C,SAAgB,MAAM,EAAE,WAAW,GAAG,SAAS,CAAa;IAC5D;;SAEK;IACL,SAAgB,SAAS,EAAG,MAAM,CAAC;IACnC;;SAEK;IACL,SAAgB,SAAS,EAAG,MAAM,CAAC;IACnC;;;SAGK;IACE,IAAI,EAAG,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC;;SAEK;IACE,QAAQ,EAAG,MAAM,IAAI,CAAC;IAC7B;;SAEK;IACE,QAAQ,EAAG,MAAM,IAAI,CAAC;IAC7B;;SAEK;IACE,QAAQ,EAAG,MAAM,IAAI,CAAC;IAC7B;;SAEK;IACE,QAAQ,EAAG,MAAM,IAAI,CAAC;IAC7B;;SAEK;IACE,aAAa,EAAG,MAAM,IAAI,CAAC;IAElC;;;SAGK;IACE,UAAU,EAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD;;;SAGK;IACE,MAAM,EAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD;;;SAGK;IACE,OAAO,EAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IAE7E;;;SAGK;IACE,MAAM,EAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAChD;;;SAGK;IACE,OAAO,EAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CAClD"}
@@ -1,6 +1,7 @@
1
1
  import { ISlideConfig } from '@netless/slide';
2
2
  import { AbstractApplication } from '@netless/forge-room';
3
3
  import { SlideForge } from './Slide';
4
+ import { SlidePool } from './SlidePool';
4
5
  export interface SlideApplicationOption {
5
6
  prefix: string;
6
7
  taskId: string;
@@ -13,6 +14,7 @@ export interface SlideApplicationOption {
13
14
  export declare const Slide_APP_NAME = "forge_slide";
14
15
  export declare class SlideApplication extends AbstractApplication<SlideApplicationOption, SlideForge> {
15
16
  static applicationName: string;
17
+ static slidePool: SlidePool;
16
18
  readonly name: string;
17
19
  readonly emitter: SlideForge;
18
20
  private whiteboardApp;
@@ -37,7 +39,6 @@ export declare class SlideApplication extends AbstractApplication<SlideApplicati
37
39
  private getImageUrl;
38
40
  private getImageSize;
39
41
  private getImageContent;
40
- private nextTick;
41
42
  private applySlideState;
42
43
  private onSlideEventHandler;
43
44
  private keyBoardEvents;
@@ -1 +1 @@
1
- {"version":3,"file":"SlideApplication.d.ts","sourceRoot":"","sources":["../src/SlideApplication.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAuB,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAW,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAOrC,MAAM,WAAW,sBAAsB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC;AASD,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAE5C,qBAAa,gBAAiB,SAAQ,mBAAmB,CAAC,sBAAsB,EAAE,UAAU,CAAC;IAE3F,MAAM,CAAC,eAAe,SAAkB;IAExC,SAAgB,IAAI,EAAE,MAAM,CAAkB;IAC9C,SAAgB,OAAO,EAAE,UAAU,CAAoB;IAEvD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,QAAQ,CAAiD;IACjE,OAAO,CAAC,gBAAgB,CAAiD;IACzE,OAAO,CAAC,mBAAmB,CAAiD;IAC5E,OAAO,CAAC,cAAc,CAAiD;IACvE,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,gBAAgB,CAAuC;IAC/D,OAAO,CAAC,SAAS,CAAkB;;IAqLnC,OAAO,CAAC,kBAAkB;YAOZ,WAAW;YAIX,YAAY;YAiBZ,eAAe;IAiB7B,OAAO,CAAC,QAAQ,CAOd;IAEF,OAAO,CAAC,eAAe,CA8BrB;IAEF,OAAO,CAAC,mBAAmB,CAiBzB;IAEF,OAAO,CAAC,cAAc,CAUpB;IAEF,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,mBAAmB;YAIb,eAAe;IAK7B,OAAO,CAAC,iBAAiB;IAKZ,UAAU,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8LtE,OAAO,CAAC,OAAO;IAIF,OAAO,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAc3D"}
1
+ {"version":3,"file":"SlideApplication.d.ts","sourceRoot":"","sources":["../src/SlideApplication.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAuB,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAW,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAMrC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,WAAW,sBAAsB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC;AASD,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAE5C,qBAAa,gBAAiB,SAAQ,mBAAmB,CAAC,sBAAsB,EAAE,UAAU,CAAC;IAE3F,MAAM,CAAC,eAAe,SAAkB;IACxC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAmB;IAE9C,SAAgB,IAAI,EAAE,MAAM,CAAkB;IAC9C,SAAgB,OAAO,EAAE,UAAU,CAAoB;IAEvD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,QAAQ,CAAiD;IACjE,OAAO,CAAC,gBAAgB,CAAiD;IACzE,OAAO,CAAC,mBAAmB,CAAiD;IAC5E,OAAO,CAAC,cAAc,CAAiD;IACvE,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,gBAAgB,CAAuC;IAC/D,OAAO,CAAC,SAAS,CAAkB;;IAkMnC,OAAO,CAAC,kBAAkB;YAOZ,WAAW;YAIX,YAAY;YAiBZ,eAAe;IAiB7B,OAAO,CAAC,eAAe,CA8BrB;IAEF,OAAO,CAAC,mBAAmB,CAiBzB;IAEF,OAAO,CAAC,cAAc,CAUpB;IAEF,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,mBAAmB;YAIb,eAAe;IAK7B,OAAO,CAAC,iBAAiB;IAKZ,UAAU,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgMtE,OAAO,CAAC,OAAO;IAIF,OAAO,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAc3D"}
package/dist/slide.esm.js CHANGED
@@ -59376,7 +59376,7 @@ var require_lodash = __commonJS2({
59376
59376
  var defer = baseRest(function(func, args) {
59377
59377
  return baseDelay(func, 1, args);
59378
59378
  });
59379
- var delay2 = baseRest(function(func, wait, args) {
59379
+ var delay22 = baseRest(function(func, wait, args) {
59380
59380
  return baseDelay(func, toNumber(wait) || 0, args);
59381
59381
  });
59382
59382
  function flip(func) {
@@ -60490,7 +60490,7 @@ var require_lodash = __commonJS2({
60490
60490
  lodash.defaults = defaults;
60491
60491
  lodash.defaultsDeep = defaultsDeep;
60492
60492
  lodash.defer = defer;
60493
- lodash.delay = delay2;
60493
+ lodash.delay = delay22;
60494
60494
  lodash.difference = difference;
60495
60495
  lodash.differenceBy = differenceBy;
60496
60496
  lodash.differenceWith = differenceWith;
@@ -65179,6 +65179,8 @@ var Camera = class extends EventEmitter7 {
65179
65179
  this.emit("userViewModeChange", userId, this.requestUserMap(userId).get(WhiteboardKeys.cameraMode), value.oldValue);
65180
65180
  }
65181
65181
  }
65182
+ } else if (value.action === "delete") {
65183
+ debugger;
65182
65184
  }
65183
65185
  }
65184
65186
  });
@@ -67514,6 +67516,7 @@ var WhiteboardApplication = class _WhiteboardApplication extends AbstractApplica
67514
67516
  _WhiteboardApplication.instanceCount.set(this.appId, (_WhiteboardApplication.instanceCount.get(this.appId) ?? 0) + 1);
67515
67517
  log4(`whiteboard ${this.appId} initialize. instance count: ${_WhiteboardApplication.instanceCount.get(this.appId) ?? 0}`, {}, "info");
67516
67518
  this.appDoc.transact(() => {
67519
+ console.warn("initialize whiteboard application");
67517
67520
  this.permissions = new WhiteboardPermissions(this.writableManager, this.userManager, (userId) => {
67518
67521
  return this.userMap(userId);
67519
67522
  });
@@ -67642,6 +67645,7 @@ var WhiteboardApplication = class _WhiteboardApplication extends AbstractApplica
67642
67645
  this.shadowScope.settings.insertItems = false;
67643
67646
  this.snapshotCanvasElement.setAttribute("id", `${this.appId}-snapshot`);
67644
67647
  this.snapshotScope.setup(this.snapshotCanvasElement);
67648
+ this.snapshotScope.settings.insertItems = false;
67645
67649
  this.resizeObserver = new ResizeObserver(() => {
67646
67650
  if (this.internalResizeObserver) {
67647
67651
  const rootBounds = this.rootElement.getBoundingClientRect();
@@ -67711,6 +67715,8 @@ var WhiteboardApplication = class _WhiteboardApplication extends AbstractApplica
67711
67715
  this.rootElement.appendChild(this.liveCursor.container);
67712
67716
  this.getMap("attrs").observe(this.handleViewportUpdate);
67713
67717
  this.writableManager().on("writableChanged", this.handleWritableChanged);
67718
+ console.warn("initialize whiteboard application end");
67719
+ console.log(this.appDoc.toJSON());
67714
67720
  }, "whiteboard-initialize");
67715
67721
  }
67716
67722
  clearElements() {
@@ -67971,6 +67977,16 @@ var SlideForge = class extends EventEmitter13 {
67971
67977
  * @param {number} index 页面索引
67972
67978
  */
67973
67979
  imgSize;
67980
+ /**
67981
+ * 冻结当前幻灯片, 释放资源
67982
+ * @param {() => void} [callback] 冻结完成回调
67983
+ */
67984
+ frozen;
67985
+ /**
67986
+ * 解冻冻结的幻灯片, 重新获取资源
67987
+ * @param {() => void} [callback] 解冻完成回调
67988
+ */
67989
+ release;
67974
67990
  };
67975
67991
 
67976
67992
  // src/ForgeSlidePermession.ts
@@ -68356,11 +68372,109 @@ function arrayEqual(arr1, arr2) {
68356
68372
  }
68357
68373
  return true;
68358
68374
  }
68375
+ async function delay2(time) {
68376
+ return new Promise((resolve) => setTimeout(resolve, time));
68377
+ }
68378
+
68379
+ // src/SlidePool.ts
68380
+ var SlidePool = class {
68381
+ pool = [];
68382
+ maxActiveSize = 2;
68383
+ renderingQueue = [];
68384
+ renderingQueueCallback;
68385
+ constructor(maxActiveSize) {
68386
+ if (maxActiveSize) {
68387
+ this.setMaxActiveSize(maxActiveSize);
68388
+ }
68389
+ }
68390
+ async freeze(poolItem) {
68391
+ return new Promise((resolve, _reject) => {
68392
+ if (!poolItem.slide.view) {
68393
+ resolve(false);
68394
+ } else {
68395
+ poolItem.slide.frozen(() => {
68396
+ resolve(true);
68397
+ });
68398
+ }
68399
+ });
68400
+ }
68401
+ async unfreeze(poolItem) {
68402
+ return new Promise((resolve, _reject) => {
68403
+ if (poolItem.slide.view) {
68404
+ resolve(false);
68405
+ } else {
68406
+ poolItem.slide.release(() => {
68407
+ resolve(true);
68408
+ });
68409
+ }
68410
+ });
68411
+ }
68412
+ async checkPool() {
68413
+ for (let i = 0; i < this.pool.length; i++) {
68414
+ const poolItem = this.pool[i];
68415
+ if (i < this.maxActiveSize) {
68416
+ await this.unfreeze(poolItem);
68417
+ } else {
68418
+ await this.freeze(poolItem);
68419
+ }
68420
+ }
68421
+ }
68422
+ onRenderEnd(appId, isFocus) {
68423
+ const index = this.renderingQueue.findIndex((item) => item === appId);
68424
+ if (index > -1) {
68425
+ this.renderingQueue.splice(index, 1);
68426
+ }
68427
+ if (isFocus) {
68428
+ this.renderingQueueCallback = () => {
68429
+ const poolItem = this.pool.find((item) => item.key === appId);
68430
+ if (poolItem) {
68431
+ this.active(appId, poolItem.slide);
68432
+ }
68433
+ };
68434
+ }
68435
+ if (this.renderingQueue.length === 0 && this.renderingQueueCallback) {
68436
+ this.renderingQueueCallback();
68437
+ }
68438
+ }
68439
+ setMaxActiveSize(maxActiveSize) {
68440
+ this.maxActiveSize = maxActiveSize > 8 ? 8 : maxActiveSize;
68441
+ if (maxActiveSize > 8) {
68442
+ console.warn("maxActiveSize should not be greater than 8");
68443
+ }
68444
+ }
68445
+ async waitUntilReady(appId) {
68446
+ if (this.renderingQueue.length < this.maxActiveSize) {
68447
+ this.renderingQueue.push(appId);
68448
+ return;
68449
+ } else {
68450
+ await delay2(200);
68451
+ await this.waitUntilReady(appId);
68452
+ }
68453
+ }
68454
+ async active(key, slide) {
68455
+ const index = this.pool.findIndex((item) => item.key === key);
68456
+ if (index < 0) {
68457
+ this.pool.unshift({ key, slide });
68458
+ } else {
68459
+ this.pool.splice(index, 1);
68460
+ this.pool.unshift({ key, slide });
68461
+ }
68462
+ await this.checkPool();
68463
+ }
68464
+ remove(key) {
68465
+ const index = this.pool.findIndex((item) => item.key === key);
68466
+ if (index >= 0) {
68467
+ this.pool.splice(index, 1);
68468
+ }
68469
+ }
68470
+ };
68471
+ var slidePool = new SlidePool();
68359
68472
 
68360
68473
  // src/SlideApplication.ts
68361
68474
  var Slide_APP_NAME = "forge_slide";
68362
- var SlideApplication = class extends AbstractApplication2 {
68475
+ var SlideApplication = class _SlideApplication extends AbstractApplication2 {
68363
68476
  static applicationName = Slide_APP_NAME;
68477
+ static slidePool = new SlidePool();
68364
68478
  name = Slide_APP_NAME;
68365
68479
  emitter = new SlideForge();
68366
68480
  whiteboardApp;
@@ -68549,7 +68663,20 @@ var SlideApplication = class extends AbstractApplication2 {
68549
68663
  return this.getImageSize(pageIndex);
68550
68664
  }
68551
68665
  });
68552
- this.applySlideState();
68666
+ Object.defineProperty(this.emitter, "frozen", {
68667
+ writable: false,
68668
+ enumerable: false,
68669
+ value: (callback) => {
68670
+ return this.slide.frozen(callback);
68671
+ }
68672
+ });
68673
+ Object.defineProperty(this.emitter, "release", {
68674
+ writable: false,
68675
+ enumerable: false,
68676
+ value: (callback) => {
68677
+ return this.slide.release(callback);
68678
+ }
68679
+ });
68553
68680
  }
68554
68681
  getPreviewImageUrl(pageIndex) {
68555
68682
  if (pageIndex < 1 || pageIndex > this.slideCount) {
@@ -68592,24 +68719,17 @@ var SlideApplication = class extends AbstractApplication2 {
68592
68719
  await kvStore2.setItem(imageUrl, JSON.stringify(preview));
68593
68720
  return preview.src;
68594
68721
  }
68595
- nextTick = () => {
68596
- this.isSyncing = false;
68597
- requestAnimationFrame(() => {
68598
- this.applySlideState().catch((error) => {
68599
- console.error("Error in applySlideState:", error);
68600
- });
68601
- });
68602
- };
68603
68722
  applySlideState = async () => {
68604
68723
  if (this.isSyncing) {
68724
+ requestAnimationFrame(this.applySlideState);
68605
68725
  return;
68606
68726
  }
68607
68727
  const lastSyncMessage = this.syncMessageQueue.pop();
68608
68728
  if (!lastSyncMessage) {
68609
- return this.nextTick();
68729
+ return;
68610
68730
  }
68611
- this.syncMessageQueue = [];
68612
68731
  this.isSyncing = true;
68732
+ this.syncMessageQueue = [];
68613
68733
  const { state, dispatch } = lastSyncMessage;
68614
68734
  let ignoreKeys = void 0;
68615
68735
  if (dispatch.type === "mediaPlay" || dispatch.type === "mediaPause" || dispatch.type === "mediaFullscreen") {
@@ -68617,14 +68737,13 @@ var SlideApplication = class extends AbstractApplication2 {
68617
68737
  }
68618
68738
  if (this.slide.slideState.currentSlideIndex < 0 || state.currentSlideIndex < 0) {
68619
68739
  await this.slide.receiveSyncHandler(dispatch);
68620
- return this.nextTick();
68621
68740
  } else if (!deepEqual(this.slide.slideState, state, ignoreKeys)) {
68622
68741
  await this.slide.setSlideState(state);
68623
68742
  await this.slide.receiveSyncHandler(dispatch);
68624
68743
  } else {
68625
68744
  this.slide.emit(import_slide.SLIDE_EVENTS.syncReceive, dispatch);
68626
68745
  }
68627
- return this.nextTick();
68746
+ this.isSyncing = false;
68628
68747
  };
68629
68748
  onSlideEventHandler = async (event) => {
68630
68749
  for (const [key, value] of event.changes.keys.entries()) {
@@ -68663,6 +68782,7 @@ var SlideApplication = class extends AbstractApplication2 {
68663
68782
  }
68664
68783
  async onFocusInstance() {
68665
68784
  this.bindKeyBoardEvent();
68785
+ await _SlideApplication.slidePool.active(this.appId, this.slide);
68666
68786
  }
68667
68787
  onRefocusInstance() {
68668
68788
  this.unbindKeyBoardEvent();
@@ -68712,7 +68832,12 @@ var SlideApplication = class extends AbstractApplication2 {
68712
68832
  whiteboardApp.linkToWhiteboard(option.inheritWhiteboardId);
68713
68833
  }
68714
68834
  this.whiteboard.setViewModeToMain();
68835
+ for (let i = 0; i < json.slideCount; i++) {
68836
+ this.whiteboardApp.addPage(String(i), true);
68837
+ }
68838
+ this.whiteboard.setViewModeToFree();
68715
68839
  this.slideContainer.setAttribute("builder", "slide-builder");
68840
+ await _SlideApplication.slidePool.waitUntilReady(this.appId);
68716
68841
  this.slide = new import_slide.Slide({
68717
68842
  ...option.options,
68718
68843
  interactive: true,
@@ -68755,8 +68880,7 @@ var SlideApplication = class extends AbstractApplication2 {
68755
68880
  if (slideIndex >= 0) {
68756
68881
  this.sideBar.pauseGetPreviewImageSchedule();
68757
68882
  this.whiteboardApp.emitter.view.style.opacity = "0";
68758
- this.whiteboardApp.emitter.addPage(`${slideIndex}`);
68759
- this.whiteboardApp.emitter.gotoPage(`${slideIndex}`);
68883
+ this.whiteboardApp.emitter.gotoPage(String(slideIndex));
68760
68884
  this.sideBar.hidden();
68761
68885
  this.footer.changeIconToPause();
68762
68886
  this.emitter.emit("renderStart", slideIndex);
@@ -68768,6 +68892,8 @@ var SlideApplication = class extends AbstractApplication2 {
68768
68892
  this.currentSlideIndex = slideIndex;
68769
68893
  this.whiteboardApp.emitter.view.style.opacity = "1";
68770
68894
  this.footer.setCurrentPageIndex(slideIndex);
68895
+ _SlideApplication.slidePool.active(this.appId, this.slide);
68896
+ _SlideApplication.slidePool.onRenderEnd(this.appId, this.window?.focused ?? false);
68771
68897
  this.footer.changeIconToNextStep();
68772
68898
  this.emitter.emit("renderEnd", slideIndex);
68773
68899
  }
@@ -68843,6 +68969,7 @@ var SlideApplication = class extends AbstractApplication2 {
68843
68969
  this.getMap(this.name).unobserve(this.onSlideEventHandler);
68844
68970
  this.permissions.dispose();
68845
68971
  this.footer.dispose();
68972
+ _SlideApplication.slidePool.remove(this.appId);
68846
68973
  }
68847
68974
  };
68848
68975
  export {