@netless/app-presentation 0.1.13-beta.4 → 0.1.14

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/index.mjs CHANGED
@@ -1301,6 +1301,7 @@ var Presentation = class {
1301
1301
  var _a;
1302
1302
  this.pages = config.pages;
1303
1303
  this.preload = new Preload(this.pages);
1304
+ this.onThumbnailError = config.onThumbnailError;
1304
1305
  if (config.thumbnail)
1305
1306
  this.thumbnail = config.thumbnail;
1306
1307
  this.dispose.add(this.preload);
@@ -1516,12 +1517,16 @@ var Presentation = class {
1516
1517
  }
1517
1518
  /** Returns a modified URL that points to the thumbnail image. */
1518
1519
  thumbnail(src) {
1520
+ var _a;
1519
1521
  try {
1520
1522
  const url = new URL(src);
1521
1523
  url.searchParams.set("x-oss-process", "image/resize,l_50");
1522
1524
  return url.toString();
1523
1525
  } catch (err) {
1524
- console.error(err);
1526
+ try {
1527
+ (_a = this.onThumbnailError) == null ? void 0 : _a.call(this, err);
1528
+ } catch (e) {
1529
+ }
1525
1530
  return src;
1526
1531
  }
1527
1532
  }
@@ -2116,7 +2121,8 @@ var setupBlurThumbnailDegradation = (config) => {
2116
2121
  const box = context.getBox();
2117
2122
  const boxBlurClass = box.wrapClassName("blur");
2118
2123
  let blurEpisode = false;
2119
- let reDegradeEnabled = false;
2124
+ let failedThumbnailPageIndex = null;
2125
+ const canReDegrade = () => blurEpisode && failedThumbnailPageIndex !== pageIndex$.value;
2120
2126
  let previewSuspended = false;
2121
2127
  let appliedFocusState = true;
2122
2128
  let logicalFocused = true;
@@ -2173,15 +2179,16 @@ var setupBlurThumbnailDegradation = (config) => {
2173
2179
  app.suspendPreviewResources();
2174
2180
  }
2175
2181
  const page = pages[pageIndex$.value];
2176
- if (!page || !hasUsableThumbnail(page) || reDegradeEnabled) {
2182
+ if (!page || !hasUsableThumbnail(page) || canReDegrade()) {
2177
2183
  degrade();
2178
2184
  }
2179
2185
  };
2180
2186
  const restoreFocusedResources = () => {
2187
+ appliedFocusState = true;
2181
2188
  if (!blurEpisode)
2182
2189
  return;
2183
2190
  blurEpisode = false;
2184
- reDegradeEnabled = false;
2191
+ failedThumbnailPageIndex = null;
2185
2192
  previewSuspended = false;
2186
2193
  restore2();
2187
2194
  app.preload.resume(pageIndex$.value);
@@ -2200,18 +2207,22 @@ var setupBlurThumbnailDegradation = (config) => {
2200
2207
  return !!(el && el.contains(target));
2201
2208
  };
2202
2209
  const onImgLoad = (ev) => {
2203
- if (!blurEpisode || !reDegradeEnabled)
2210
+ if (!canReDegrade())
2204
2211
  return;
2205
2212
  if (!ownsTarget(ev.target))
2206
2213
  return;
2207
2214
  degrade();
2208
2215
  };
2209
2216
  const onImgError = (ev) => {
2210
- if (!blurEpisode || !reDegradeEnabled)
2217
+ var _a;
2218
+ if (!canReDegrade())
2211
2219
  return;
2212
2220
  if (!ownsTarget(ev.target))
2213
2221
  return;
2214
- reDegradeEnabled = false;
2222
+ const thumbnailURL = (_a = pages[pageIndex$.value]) == null ? void 0 : _a.thumbnail;
2223
+ if (thumbnailURL && resolveImageUrl(ev.target.src) === resolveImageUrl(thumbnailURL)) {
2224
+ failedThumbnailPageIndex = pageIndex$.value;
2225
+ }
2215
2226
  };
2216
2227
  const applyActivity = () => {
2217
2228
  var _a;
@@ -2225,7 +2236,7 @@ var setupBlurThumbnailDegradation = (config) => {
2225
2236
  restoreFocusedResources();
2226
2237
  } else {
2227
2238
  blurEpisode = true;
2228
- reDegradeEnabled = true;
2239
+ failedThumbnailPageIndex = null;
2229
2240
  degrade();
2230
2241
  app.preload.pause();
2231
2242
  suspendCachedResources();
@@ -2272,26 +2283,21 @@ var setupBlurThumbnailDegradation = (config) => {
2272
2283
  document.removeEventListener("error", onImgError, true);
2273
2284
  });
2274
2285
  };
2275
- var createLogger = (room) => {
2276
- if (room && room.logger) {
2277
- return (...args) => room.logger.info(...args);
2278
- } else {
2279
- return (...args) => console.log(...args);
2280
- }
2286
+ var getLogger = (context) => {
2287
+ var _a, _b, _c;
2288
+ return (_c = (_a = context.getWindowManager()) == null ? void 0 : _a.Logger) != null ? _c : (_b = context.getRoom()) == null ? void 0 : _b.logger;
2289
+ };
2290
+ var createLogger = (context) => {
2291
+ return (...args) => {
2292
+ var _a, _b;
2293
+ return (_b = (_a = getLogger(context)) == null ? void 0 : _a.info) == null ? void 0 : _b.call(_a, ...args);
2294
+ };
2281
2295
  };
2282
2296
  var createDiagnosticLogger = (context) => {
2283
- var _a;
2284
- const createAppLogger = context.createLogger;
2285
- if (typeof createAppLogger === "function") {
2286
- return createAppLogger.call(context, "camera", {
2287
- debounceTime: 300,
2288
- maxWaitTime: 2e3
2289
- });
2290
- }
2291
- const roomLogger = (_a = context.getRoom()) == null ? void 0 : _a.logger;
2292
2297
  const prefix = `[Presentation][${context.appId}][camera]`;
2293
2298
  const emit = (level, event, ...data) => {
2294
2299
  try {
2300
+ const roomLogger = getLogger(context);
2295
2301
  const printer = roomLogger == null ? void 0 : roomLogger[level];
2296
2302
  if (typeof printer === "function")
2297
2303
  printer.call(roomLogger, `${prefix}[${event}]`, ...data);
@@ -2356,9 +2362,11 @@ var NetlessAppPresentation = {
2356
2362
  );
2357
2363
  const options = context.getAppOptions() || {};
2358
2364
  const room = context.getRoom();
2359
- const log = options.log || createLogger(room);
2360
- const roomLogger = room == null ? void 0 : room.logger;
2361
- const warn = (...data) => (roomLogger == null ? void 0 : roomLogger.warn) ? roomLogger.warn(...data) : log(...data);
2365
+ const log = options.log || createLogger(context);
2366
+ const warn = (...data) => {
2367
+ var _a2, _b2;
2368
+ return (_b2 = (_a2 = getLogger(context)) == null ? void 0 : _a2.warn) == null ? void 0 : _b2.call(_a2, ...data);
2369
+ };
2362
2370
  const configuredOriginSize = context.storage.state.originSize;
2363
2371
  const originSize = isValidSize(configuredOriginSize) ? {
2364
2372
  width: configuredOriginSize.width,
@@ -2690,10 +2698,14 @@ var NetlessAppPresentation = {
2690
2698
  pageIndex$,
2691
2699
  view,
2692
2700
  options.thumbnail,
2693
- options.useClipView
2701
+ options.useClipView,
2702
+ (error) => {
2703
+ var _a2, _b2;
2704
+ return (_b2 = (_a2 = getLogger(context)) == null ? void 0 : _a2.error) == null ? void 0 : _b2.call(_a2, "[Presentation] thumbnail URL parsing failed", context.appId, error);
2705
+ }
2694
2706
  )
2695
2707
  );
2696
- app.contentDOM.dataset.appPresentationVersion = "0.1.13-beta.4";
2708
+ app.contentDOM.dataset.appPresentationVersion = "0.1.14";
2697
2709
  app.scaleDocsToFit = scaleDocsToFit;
2698
2710
  app.log = log;
2699
2711
  app.warn = warn;
@@ -3173,10 +3185,7 @@ var NetlessAppPresentation = {
3173
3185
  );
3174
3186
  if (disposed)
3175
3187
  throw new Error("[Presentation] disposed before setup ready");
3176
- if (result === "error" && context.waitForActualSetupReady) {
3177
- throw new Error("[Presentation] setup page image failed to load");
3178
- }
3179
- if (result === "error" && !disposed) {
3188
+ if (result === "error") {
3180
3189
  warn("[Presentation] setup page image failed to load; continuing setup");
3181
3190
  }
3182
3191
  return controller;
@@ -3212,13 +3221,14 @@ var AppPresentation = class extends Presentation {
3212
3221
  }
3213
3222
  }
3214
3223
  };
3215
- function createPresentation(box, pages, jumpPage, pageIndex$, view, thumbnail, useClipView) {
3224
+ function createPresentation(box, pages, jumpPage, pageIndex$, view, thumbnail, useClipView, onThumbnailError) {
3216
3225
  box.mountStyles(style_default);
3217
3226
  const app = new AppPresentation({
3218
3227
  pages,
3219
3228
  readonly: box.readonly,
3220
3229
  jumpPage,
3221
- thumbnail
3230
+ thumbnail,
3231
+ onThumbnailError
3222
3232
  });
3223
3233
  app.box = box;
3224
3234
  box.mountContent(app.contentDOM);
@@ -3266,7 +3276,7 @@ var install = (register, options = {}) => {
3266
3276
  };
3267
3277
 
3268
3278
  // src/index.ts
3269
- var version = "0.1.13-beta.4";
3279
+ var version = "0.1.14";
3270
3280
 
3271
- export { NetlessAppPresentation, Presentation, Scrollbar, NetlessAppPresentation as default, install, setupBlurThumbnailDegradation, version };
3281
+ export { NetlessAppPresentation, Presentation, Scrollbar, createDiagnosticLogger, NetlessAppPresentation as default, install, setupBlurThumbnailDegradation, version };
3272
3282
  //# sourceMappingURL=index.mjs.map