@netless/forge-slide 1.0.10 → 1.1.0-beta.2

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/build.mjs CHANGED
@@ -18,14 +18,14 @@ const settings = {
18
18
 
19
19
  esbuild.build({
20
20
  ...settings,
21
- outfile: 'dist/index.js',
21
+ outfile: 'dist/slide.js',
22
22
  platform: 'browser',
23
23
  format: 'cjs',
24
24
  }).then(console.log).catch(console.log);
25
25
 
26
26
  esbuild.build({
27
27
  ...settings,
28
- outfile: 'dist/index.esm.js',
28
+ outfile: 'dist/slide.esm.js',
29
29
  platform: 'browser',
30
30
  format: 'esm',
31
31
  }).then(console.log).catch(console.log);
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;IAgMtE,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;
@@ -67642,6 +67642,7 @@ var WhiteboardApplication = class _WhiteboardApplication extends AbstractApplica
67642
67642
  this.shadowScope.settings.insertItems = false;
67643
67643
  this.snapshotCanvasElement.setAttribute("id", `${this.appId}-snapshot`);
67644
67644
  this.snapshotScope.setup(this.snapshotCanvasElement);
67645
+ this.snapshotScope.settings.insertItems = false;
67645
67646
  this.resizeObserver = new ResizeObserver(() => {
67646
67647
  if (this.internalResizeObserver) {
67647
67648
  const rootBounds = this.rootElement.getBoundingClientRect();
@@ -67971,6 +67972,16 @@ var SlideForge = class extends EventEmitter13 {
67971
67972
  * @param {number} index 页面索引
67972
67973
  */
67973
67974
  imgSize;
67975
+ /**
67976
+ * 冻结当前幻灯片, 释放资源
67977
+ * @param {() => void} [callback] 冻结完成回调
67978
+ */
67979
+ frozen;
67980
+ /**
67981
+ * 解冻冻结的幻灯片, 重新获取资源
67982
+ * @param {() => void} [callback] 解冻完成回调
67983
+ */
67984
+ release;
67974
67985
  };
67975
67986
 
67976
67987
  // src/ForgeSlidePermession.ts
@@ -68356,11 +68367,109 @@ function arrayEqual(arr1, arr2) {
68356
68367
  }
68357
68368
  return true;
68358
68369
  }
68370
+ async function delay2(time) {
68371
+ return new Promise((resolve) => setTimeout(resolve, time));
68372
+ }
68373
+
68374
+ // src/SlidePool.ts
68375
+ var SlidePool = class {
68376
+ pool = [];
68377
+ maxActiveSize = 2;
68378
+ renderingQueue = [];
68379
+ renderingQueueCallback;
68380
+ constructor(maxActiveSize) {
68381
+ if (maxActiveSize) {
68382
+ this.setMaxActiveSize(maxActiveSize);
68383
+ }
68384
+ }
68385
+ async freeze(poolItem) {
68386
+ return new Promise((resolve, _reject) => {
68387
+ if (!poolItem.slide.view) {
68388
+ resolve(false);
68389
+ } else {
68390
+ poolItem.slide.frozen(() => {
68391
+ resolve(true);
68392
+ });
68393
+ }
68394
+ });
68395
+ }
68396
+ async unfreeze(poolItem) {
68397
+ return new Promise((resolve, _reject) => {
68398
+ if (poolItem.slide.view) {
68399
+ resolve(false);
68400
+ } else {
68401
+ poolItem.slide.release(() => {
68402
+ resolve(true);
68403
+ });
68404
+ }
68405
+ });
68406
+ }
68407
+ async checkPool() {
68408
+ for (let i = 0; i < this.pool.length; i++) {
68409
+ const poolItem = this.pool[i];
68410
+ if (i < this.maxActiveSize) {
68411
+ await this.unfreeze(poolItem);
68412
+ } else {
68413
+ await this.freeze(poolItem);
68414
+ }
68415
+ }
68416
+ }
68417
+ onRenderEnd(appId, isFocus) {
68418
+ const index = this.renderingQueue.findIndex((item) => item === appId);
68419
+ if (index > -1) {
68420
+ this.renderingQueue.splice(index, 1);
68421
+ }
68422
+ if (isFocus) {
68423
+ this.renderingQueueCallback = () => {
68424
+ const poolItem = this.pool.find((item) => item.key === appId);
68425
+ if (poolItem) {
68426
+ this.active(appId, poolItem.slide);
68427
+ }
68428
+ };
68429
+ }
68430
+ if (this.renderingQueue.length === 0 && this.renderingQueueCallback) {
68431
+ this.renderingQueueCallback();
68432
+ }
68433
+ }
68434
+ setMaxActiveSize(maxActiveSize) {
68435
+ this.maxActiveSize = maxActiveSize > 8 ? 8 : maxActiveSize;
68436
+ if (maxActiveSize > 8) {
68437
+ console.warn("maxActiveSize should not be greater than 8");
68438
+ }
68439
+ }
68440
+ async waitUntilReady(appId) {
68441
+ if (this.renderingQueue.length < this.maxActiveSize) {
68442
+ this.renderingQueue.push(appId);
68443
+ return;
68444
+ } else {
68445
+ await delay2(200);
68446
+ await this.waitUntilReady(appId);
68447
+ }
68448
+ }
68449
+ async active(key, slide) {
68450
+ const index = this.pool.findIndex((item) => item.key === key);
68451
+ if (index < 0) {
68452
+ this.pool.unshift({ key, slide });
68453
+ } else {
68454
+ this.pool.splice(index, 1);
68455
+ this.pool.unshift({ key, slide });
68456
+ }
68457
+ await this.checkPool();
68458
+ }
68459
+ remove(key) {
68460
+ const index = this.pool.findIndex((item) => item.key === key);
68461
+ if (index >= 0) {
68462
+ this.pool.splice(index, 1);
68463
+ }
68464
+ }
68465
+ };
68466
+ var slidePool = new SlidePool();
68359
68467
 
68360
68468
  // src/SlideApplication.ts
68361
68469
  var Slide_APP_NAME = "forge_slide";
68362
- var SlideApplication = class extends AbstractApplication2 {
68470
+ var SlideApplication = class _SlideApplication extends AbstractApplication2 {
68363
68471
  static applicationName = Slide_APP_NAME;
68472
+ static slidePool = new SlidePool();
68364
68473
  name = Slide_APP_NAME;
68365
68474
  emitter = new SlideForge();
68366
68475
  whiteboardApp;
@@ -68549,7 +68658,20 @@ var SlideApplication = class extends AbstractApplication2 {
68549
68658
  return this.getImageSize(pageIndex);
68550
68659
  }
68551
68660
  });
68552
- this.applySlideState();
68661
+ Object.defineProperty(this.emitter, "frozen", {
68662
+ writable: false,
68663
+ enumerable: false,
68664
+ value: (callback) => {
68665
+ return this.slide.frozen(callback);
68666
+ }
68667
+ });
68668
+ Object.defineProperty(this.emitter, "release", {
68669
+ writable: false,
68670
+ enumerable: false,
68671
+ value: (callback) => {
68672
+ return this.slide.release(callback);
68673
+ }
68674
+ });
68553
68675
  }
68554
68676
  getPreviewImageUrl(pageIndex) {
68555
68677
  if (pageIndex < 1 || pageIndex > this.slideCount) {
@@ -68592,24 +68714,17 @@ var SlideApplication = class extends AbstractApplication2 {
68592
68714
  await kvStore2.setItem(imageUrl, JSON.stringify(preview));
68593
68715
  return preview.src;
68594
68716
  }
68595
- nextTick = () => {
68596
- this.isSyncing = false;
68597
- requestAnimationFrame(() => {
68598
- this.applySlideState().catch((error) => {
68599
- console.error("Error in applySlideState:", error);
68600
- });
68601
- });
68602
- };
68603
68717
  applySlideState = async () => {
68604
68718
  if (this.isSyncing) {
68719
+ requestAnimationFrame(this.applySlideState);
68605
68720
  return;
68606
68721
  }
68607
68722
  const lastSyncMessage = this.syncMessageQueue.pop();
68608
68723
  if (!lastSyncMessage) {
68609
- return this.nextTick();
68724
+ return;
68610
68725
  }
68611
- this.syncMessageQueue = [];
68612
68726
  this.isSyncing = true;
68727
+ this.syncMessageQueue = [];
68613
68728
  const { state, dispatch } = lastSyncMessage;
68614
68729
  let ignoreKeys = void 0;
68615
68730
  if (dispatch.type === "mediaPlay" || dispatch.type === "mediaPause" || dispatch.type === "mediaFullscreen") {
@@ -68617,14 +68732,13 @@ var SlideApplication = class extends AbstractApplication2 {
68617
68732
  }
68618
68733
  if (this.slide.slideState.currentSlideIndex < 0 || state.currentSlideIndex < 0) {
68619
68734
  await this.slide.receiveSyncHandler(dispatch);
68620
- return this.nextTick();
68621
68735
  } else if (!deepEqual(this.slide.slideState, state, ignoreKeys)) {
68622
68736
  await this.slide.setSlideState(state);
68623
68737
  await this.slide.receiveSyncHandler(dispatch);
68624
68738
  } else {
68625
68739
  this.slide.emit(import_slide.SLIDE_EVENTS.syncReceive, dispatch);
68626
68740
  }
68627
- return this.nextTick();
68741
+ this.isSyncing = false;
68628
68742
  };
68629
68743
  onSlideEventHandler = async (event) => {
68630
68744
  for (const [key, value] of event.changes.keys.entries()) {
@@ -68663,6 +68777,7 @@ var SlideApplication = class extends AbstractApplication2 {
68663
68777
  }
68664
68778
  async onFocusInstance() {
68665
68779
  this.bindKeyBoardEvent();
68780
+ await _SlideApplication.slidePool.active(this.appId, this.slide);
68666
68781
  }
68667
68782
  onRefocusInstance() {
68668
68783
  this.unbindKeyBoardEvent();
@@ -68712,7 +68827,12 @@ var SlideApplication = class extends AbstractApplication2 {
68712
68827
  whiteboardApp.linkToWhiteboard(option.inheritWhiteboardId);
68713
68828
  }
68714
68829
  this.whiteboard.setViewModeToMain();
68830
+ for (let i = 0; i < json.slideCount; i++) {
68831
+ this.whiteboardApp.addPage(String(i), true);
68832
+ }
68833
+ this.whiteboard.setViewModeToFree();
68715
68834
  this.slideContainer.setAttribute("builder", "slide-builder");
68835
+ await _SlideApplication.slidePool.waitUntilReady(this.appId);
68716
68836
  this.slide = new import_slide.Slide({
68717
68837
  ...option.options,
68718
68838
  interactive: true,
@@ -68755,8 +68875,7 @@ var SlideApplication = class extends AbstractApplication2 {
68755
68875
  if (slideIndex >= 0) {
68756
68876
  this.sideBar.pauseGetPreviewImageSchedule();
68757
68877
  this.whiteboardApp.emitter.view.style.opacity = "0";
68758
- this.whiteboardApp.emitter.addPage(`${slideIndex}`);
68759
- this.whiteboardApp.emitter.gotoPage(`${slideIndex}`);
68878
+ this.whiteboardApp.emitter.gotoPage(String(slideIndex));
68760
68879
  this.sideBar.hidden();
68761
68880
  this.footer.changeIconToPause();
68762
68881
  this.emitter.emit("renderStart", slideIndex);
@@ -68768,6 +68887,8 @@ var SlideApplication = class extends AbstractApplication2 {
68768
68887
  this.currentSlideIndex = slideIndex;
68769
68888
  this.whiteboardApp.emitter.view.style.opacity = "1";
68770
68889
  this.footer.setCurrentPageIndex(slideIndex);
68890
+ _SlideApplication.slidePool.active(this.appId, this.slide);
68891
+ _SlideApplication.slidePool.onRenderEnd(this.appId, this.window?.focused ?? false);
68771
68892
  this.footer.changeIconToNextStep();
68772
68893
  this.emitter.emit("renderEnd", slideIndex);
68773
68894
  }
@@ -68843,6 +68964,7 @@ var SlideApplication = class extends AbstractApplication2 {
68843
68964
  this.getMap(this.name).unobserve(this.onSlideEventHandler);
68844
68965
  this.permissions.dispose();
68845
68966
  this.footer.dispose();
68967
+ _SlideApplication.slidePool.remove(this.appId);
68846
68968
  }
68847
68969
  };
68848
68970
  export {