@netless/app-slide 0.2.105-beta.0 → 0.2.105-beta.1

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/main.es.js CHANGED
@@ -42853,11 +42853,12 @@ class SlidePreviewer {
42853
42853
  }
42854
42854
  }
42855
42855
  const usePlugin = /* @__PURE__ */ Slide.Slide.usePlugin.bind(Slide.Slide);
42856
- const version = "0.2.105-beta.0";
42856
+ const version = "0.2.105-beta.1";
42857
+ const DEFAULT_SLIDE_SETUP_READY_TIMEOUT = 5e3;
42857
42858
  const SlideApp = {
42858
42859
  kind: "Slide",
42859
42860
  setup(context) {
42860
- var _a, _b, _c, _d, _e;
42861
+ var _a, _b, _c, _d, _e, _f;
42861
42862
  console.log("[Slide] setup @ " + version);
42862
42863
  if (context.getIsWritable()) {
42863
42864
  context.storage.ensureState(EmptyAttributes);
@@ -42878,6 +42879,8 @@ const SlideApp = {
42878
42879
  }
42879
42880
  const baseScenePath = context.getInitScenePath();
42880
42881
  let docsViewer = null;
42882
+ let slideControllerRef;
42883
+ let firstRenderFailed = false;
42881
42884
  const onPageChanged = (page) => {
42882
42885
  const room2 = context.getRoom();
42883
42886
  if (docsViewer && docsViewer.slideController) {
@@ -42903,10 +42906,15 @@ const SlideApp = {
42903
42906
  ...options,
42904
42907
  onPageChanged,
42905
42908
  onNavigate: options.onNavigate,
42906
- onRenderError: appOptions2.onRenderError,
42909
+ onRenderError: (error, pageIndex) => {
42910
+ var _a2;
42911
+ firstRenderFailed = true;
42912
+ (_a2 = appOptions2.onRenderError) == null ? void 0 : _a2.call(appOptions2, error, pageIndex);
42913
+ },
42907
42914
  showRenderError: appOptions2.showRenderError,
42908
42915
  invisibleBehavior: appOptions2.invisibleBehavior
42909
42916
  });
42917
+ slideControllerRef = slideController;
42910
42918
  if (useFreezer)
42911
42919
  apps.set(context.appId, slideController, box);
42912
42920
  logger.setAppController(context.appId, slideController);
@@ -42987,7 +42995,29 @@ const SlideApp = {
42987
42995
  docsViewer.mount();
42988
42996
  SlideApp.__teardownByContext || (SlideApp.__teardownByContext = /* @__PURE__ */ new WeakMap());
42989
42997
  SlideApp.__teardownByContext.set(context, teardown);
42990
- return {
42998
+ const waitForFirstRender = (timeoutMs) => new Promise((resolve) => {
42999
+ let settled = false;
43000
+ let pollTimer;
43001
+ const settle = (loaded) => {
43002
+ if (settled)
43003
+ return;
43004
+ settled = true;
43005
+ window.clearTimeout(timeoutTimer);
43006
+ if (pollTimer !== void 0)
43007
+ window.clearInterval(pollTimer);
43008
+ resolve(loaded);
43009
+ };
43010
+ const timeoutTimer = window.setTimeout(() => settle(false), timeoutMs);
43011
+ slideControllerRef == null ? void 0 : slideControllerRef.readyPromise.then(
43012
+ () => settle(!firstRenderFailed),
43013
+ () => settle(false)
43014
+ );
43015
+ pollTimer = window.setInterval(() => {
43016
+ if (disposed || firstRenderFailed)
43017
+ settle(false);
43018
+ }, 100);
43019
+ });
43020
+ const appResult = {
42991
43021
  onScaleChanged: (cb) => {
42992
43022
  if (!docsViewer) {
42993
43023
  return () => void 0;
@@ -43106,6 +43136,16 @@ const SlideApp = {
43106
43136
  return false;
43107
43137
  }
43108
43138
  };
43139
+ const setupReadyTimeout = (_f = appOptions == null ? void 0 : appOptions.setupReadyTimeout) != null ? _f : DEFAULT_SLIDE_SETUP_READY_TIMEOUT;
43140
+ return waitForFirstRender(setupReadyTimeout).then(() => {
43141
+ if (firstRenderFailed) {
43142
+ throw new Error("[Slide] first render failed before ready");
43143
+ }
43144
+ if (!disposed && !(slideControllerRef == null ? void 0 : slideControllerRef.ready)) {
43145
+ log("[Slide] setup ready wait timed out, slide keeps loading in background");
43146
+ }
43147
+ return appResult;
43148
+ });
43109
43149
  },
43110
43150
  teardown(context) {
43111
43151
  var _a, _b, _c;