@open-file-viewer/core 0.1.8 → 0.1.10

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.d.cts CHANGED
@@ -140,6 +140,11 @@ interface PdfPluginOptions {
140
140
  cMapPacked?: boolean;
141
141
  standardFontDataUrl?: string;
142
142
  useSystemFonts?: boolean;
143
+ disableStream?: boolean;
144
+ disableAutoFetch?: boolean;
145
+ disableRange?: boolean;
146
+ rangeChunkSize?: number;
147
+ useFetchData?: boolean;
143
148
  }
144
149
  declare function pdfPlugin(options?: PdfJsModule | PdfPluginOptions): PreviewPlugin;
145
150
 
package/dist/index.d.ts CHANGED
@@ -140,6 +140,11 @@ interface PdfPluginOptions {
140
140
  cMapPacked?: boolean;
141
141
  standardFontDataUrl?: string;
142
142
  useSystemFonts?: boolean;
143
+ disableStream?: boolean;
144
+ disableAutoFetch?: boolean;
145
+ disableRange?: boolean;
146
+ rangeChunkSize?: number;
147
+ useFetchData?: boolean;
143
148
  }
144
149
  declare function pdfPlugin(options?: PdfJsModule | PdfPluginOptions): PreviewPlugin;
145
150
 
package/dist/index.js CHANGED
@@ -2516,6 +2516,11 @@ function objectFit(fit) {
2516
2516
  }
2517
2517
 
2518
2518
  // src/plugins/video.ts
2519
+ var mpegtsPackageName = "mpegts.js";
2520
+ var loadMpegts = () => import(
2521
+ /* @vite-ignore */
2522
+ mpegtsPackageName
2523
+ );
2519
2524
  var videoExtensions = /* @__PURE__ */ new Set([
2520
2525
  "mp4",
2521
2526
  "mpg",
@@ -2630,7 +2635,8 @@ function videoPlugin() {
2630
2635
  showTranscodeFallback();
2631
2636
  }
2632
2637
  } else if (isFlv || isMpegTs) {
2633
- const mpegts = (await import("mpegts.js")).default;
2638
+ const mpegtsModule = await loadMpegts();
2639
+ const mpegts = resolveMpegtsApi(mpegtsModule);
2634
2640
  if (mpegts.isSupported()) {
2635
2641
  mpegtsPlayer = mpegts.createPlayer({
2636
2642
  type: isFlv ? "flv" : "mpegts",
@@ -2682,6 +2688,13 @@ function videoPlugin() {
2682
2688
  }
2683
2689
  };
2684
2690
  }
2691
+ function resolveMpegtsApi(module) {
2692
+ const api = module.default || module;
2693
+ if (!api.Events || !api.isSupported || !api.createPlayer) {
2694
+ throw new Error("mpegts.js is not available.");
2695
+ }
2696
+ return api;
2697
+ }
2685
2698
  function createVideoTransformController(video, ctx) {
2686
2699
  let scale = 1;
2687
2700
  let rotation = 0;
@@ -4510,14 +4523,7 @@ async function renderPdfDocumentPreview(options) {
4510
4523
  scroller.className = "ofv-pdf ofv-pdf-pages";
4511
4524
  viewer.append(summary, scroller);
4512
4525
  options.viewport.append(viewer);
4513
- const documentTask = pdf.getDocument({
4514
- url: options.fileUrl,
4515
- cMapUrl: options.cMapUrl ?? `https://cdn.jsdelivr.net/npm/pdfjs-dist@${pdf.version}/cmaps/`,
4516
- cMapPacked: options.cMapPacked ?? true,
4517
- standardFontDataUrl: options.standardFontDataUrl ?? `https://cdn.jsdelivr.net/npm/pdfjs-dist@${pdf.version}/standard_fonts/`,
4518
- useSystemFonts: options.useSystemFonts ?? true
4519
- });
4520
- const doc = await documentTask.promise.catch((error) => {
4526
+ const showDocumentFallback = (error) => {
4521
4527
  viewer.remove();
4522
4528
  options.viewport.classList.add("ofv-center");
4523
4529
  const fileLike = {
@@ -4534,8 +4540,29 @@ async function renderPdfDocumentPreview(options) {
4534
4540
  action: options.encryptedAction || "\u4E0B\u8F7D PDF"
4535
4541
  }) : createPdfFallback(options.fileName, options.fileUrl, normalizePdfError(error), options.fallbackTitle);
4536
4542
  options.viewport.append(fallback);
4537
- return void 0;
4538
- });
4543
+ };
4544
+ let documentTask;
4545
+ let doc;
4546
+ try {
4547
+ const pdfData = options.useFetchData ? await loadPdfData(options.fileUrl) : void 0;
4548
+ documentTask = pdf.getDocument({
4549
+ ...pdfData ? { data: pdfData } : { url: options.fileUrl },
4550
+ cMapUrl: options.cMapUrl ?? `https://cdn.jsdelivr.net/npm/pdfjs-dist@${pdf.version}/cmaps/`,
4551
+ cMapPacked: options.cMapPacked ?? true,
4552
+ standardFontDataUrl: options.standardFontDataUrl ?? `https://cdn.jsdelivr.net/npm/pdfjs-dist@${pdf.version}/standard_fonts/`,
4553
+ useSystemFonts: options.useSystemFonts ?? true,
4554
+ disableStream: options.disableStream,
4555
+ disableAutoFetch: options.disableAutoFetch,
4556
+ disableRange: options.disableRange,
4557
+ rangeChunkSize: options.rangeChunkSize
4558
+ });
4559
+ doc = await documentTask.promise.catch((error) => {
4560
+ showDocumentFallback(error);
4561
+ return void 0;
4562
+ });
4563
+ } catch (error) {
4564
+ showDocumentFallback(error);
4565
+ }
4539
4566
  if (!doc) {
4540
4567
  return {
4541
4568
  canCommand() {
@@ -4548,17 +4575,18 @@ async function renderPdfDocumentPreview(options) {
4548
4575
  },
4549
4576
  destroy() {
4550
4577
  options.viewport.classList.remove("ofv-center");
4551
- documentTask.destroy?.();
4578
+ documentTask?.destroy?.();
4552
4579
  if (options.revokeUrlOnDestroy) {
4553
4580
  revokeObjectUrl(options.fileUrl, Boolean(options.isExternal));
4554
4581
  }
4555
4582
  }
4556
4583
  };
4557
4584
  }
4585
+ const pdfDocument = doc;
4558
4586
  const pagesMeta = [];
4559
- for (let pageNumber = 1; pageNumber <= doc.numPages; pageNumber += 1) {
4587
+ for (let pageNumber = 1; pageNumber <= pdfDocument.numPages; pageNumber += 1) {
4560
4588
  try {
4561
- const page = await doc.getPage(pageNumber);
4589
+ const page = await pdfDocument.getPage(pageNumber);
4562
4590
  const baseViewport = page.getViewport({ scale: 1 });
4563
4591
  pagesMeta.push({
4564
4592
  width: baseViewport.width,
@@ -4574,7 +4602,7 @@ async function renderPdfDocumentPreview(options) {
4574
4602
  let zoomFactor = 1;
4575
4603
  let rotation = 0;
4576
4604
  const updateSummary = () => {
4577
- renderPdfSummary(summary, doc.numPages, pagesMeta, options.fit, zoomFactor);
4605
+ renderPdfSummary(summary, pdfDocument.numPages, pagesMeta, options.fit, zoomFactor);
4578
4606
  options.toolbar?.setZoom(zoomFactor);
4579
4607
  };
4580
4608
  const clearPage = (pageIdx) => {
@@ -4597,7 +4625,7 @@ async function renderPdfDocumentPreview(options) {
4597
4625
  if (!state || state.rendered) return;
4598
4626
  state.rendered = true;
4599
4627
  try {
4600
- const page = await doc.getPage(pageIdx + 1);
4628
+ const page = await pdfDocument.getPage(pageIdx + 1);
4601
4629
  const meta = pagesMeta[pageIdx];
4602
4630
  const scale = options.fit === "actual" ? zoomFactor : Math.max(0.05, Math.min(5, getPdfAvailableWidth(size.width) / rotatedPdfWidth(meta, rotation) * zoomFactor));
4603
4631
  const viewport = page.getViewport({ scale, rotation });
@@ -4684,7 +4712,7 @@ async function renderPdfDocumentPreview(options) {
4684
4712
  if (!state.rendered) {
4685
4713
  void renderPage(pageIdx, size);
4686
4714
  }
4687
- } else if (state.rendered && doc.numPages > 8) {
4715
+ } else if (state.rendered && pdfDocument.numPages > 8) {
4688
4716
  clearPage(pageIdx);
4689
4717
  }
4690
4718
  });
@@ -4695,7 +4723,7 @@ async function renderPdfDocumentPreview(options) {
4695
4723
  }
4696
4724
  );
4697
4725
  }
4698
- for (let i = 0; i < doc.numPages; i++) {
4726
+ for (let i = 0; i < pdfDocument.numPages; i++) {
4699
4727
  const meta = pagesMeta[i];
4700
4728
  const rotatedWidth = rotatedPdfWidth(meta, rotation);
4701
4729
  const rotatedHeight = rotatedPdfHeight(meta, rotation);
@@ -4723,7 +4751,7 @@ async function renderPdfDocumentPreview(options) {
4723
4751
  }
4724
4752
  if (observer) {
4725
4753
  window.setTimeout(() => {
4726
- const eagerPages = doc.numPages > 8 ? 2 : doc.numPages;
4754
+ const eagerPages = pdfDocument.numPages > 8 ? 2 : pdfDocument.numPages;
4727
4755
  for (let i = 0; i < eagerPages; i++) {
4728
4756
  void renderPage(i, size);
4729
4757
  }
@@ -4780,10 +4808,10 @@ async function renderPdfDocumentPreview(options) {
4780
4808
  }
4781
4809
  });
4782
4810
  pageStates.length = 0;
4811
+ void pdfDocument.destroy?.();
4783
4812
  if (options.revokeUrlOnDestroy) {
4784
4813
  revokeObjectUrl(options.fileUrl, Boolean(options.isExternal));
4785
4814
  }
4786
- void doc.destroy();
4787
4815
  }
4788
4816
  };
4789
4817
  }
@@ -4846,6 +4874,13 @@ function normalizePdfOptions(options) {
4846
4874
  }
4847
4875
  return options;
4848
4876
  }
4877
+ async function loadPdfData(url) {
4878
+ const response = await fetch(url);
4879
+ if (!response.ok) {
4880
+ throw new Error(`Failed to load PDF data: ${response.status} ${response.statusText}`);
4881
+ }
4882
+ return new Uint8Array(await response.arrayBuffer());
4883
+ }
4849
4884
  function isCanvasVisuallyBlank(canvas, context) {
4850
4885
  if (canvas.width === 0 || canvas.height === 0 || typeof context.getImageData !== "function") {
4851
4886
  return false;