@file-viewer/vite-plugin 2.1.30 → 2.2.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/README.en.md +1 -1
- package/README.md +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +141 -35
- package/package.json +1 -1
package/README.en.md
CHANGED
|
@@ -98,7 +98,7 @@ const options = {
|
|
|
98
98
|
|
|
99
99
|
When host apps split `node_modules` by package name, circular dependencies between `@codemirror/*`, `@lezer/*`, and Sandpack can show up in production as `codemirror-view.* Cannot access ... before initialization`. The plugin wraps existing `manualChunks` functions by default, stabilizes only those known interop chunks, and preserves the rest of the app's custom grouping. Set `stabilizeInteropChunks:false` only when the host build needs total control.
|
|
100
100
|
|
|
101
|
-
`copyAssets.baseDir` overrides automatic placement. It must be relative and cannot contain `..`; an empty string explicitly selects the root. The plugin
|
|
101
|
+
`copyAssets.baseDir` overrides automatic placement. It must be relative and cannot contain `..`; an empty string explicitly selects the root. The plugin now aligns the shared runtime asset base for standard packages, presets, and full packages; full packages also keep `setDefaultFullAssetBaseUrl()` synchronized. Only integrations that set `inject:false` and do not import the virtual module must call `setDefaultFileViewerAssetBaseUrl()` themselves (plus `setDefaultFullAssetBaseUrl()` for a full package). With Vite `base:'/app/'`, full-package dev URLs start with `/app/file-viewer/...`, while production files remain under `outDir/file-viewer/`.
|
|
102
102
|
|
|
103
103
|
For strict registry control, disable injection and pass the virtual module explicitly:
|
|
104
104
|
|
package/README.md
CHANGED
|
@@ -98,7 +98,7 @@ const options = {
|
|
|
98
98
|
|
|
99
99
|
如果宿主项目按包名拆分 `node_modules`,`@codemirror/*`、`@lezer/*` 和 Sandpack 之间的循环依赖可能在生产构建中表现为 `codemirror-view.* Cannot access ... before initialization`。插件默认会包裹已有的 `manualChunks` 函数,只稳定这些已知互操作 chunk,保留其它自定义分组;确实需要完全接管时可设置 `stabilizeInteropChunks:false`。
|
|
100
100
|
|
|
101
|
-
`copyAssets.baseDir` 可以覆盖自动目录:必须是相对路径,不能包含
|
|
101
|
+
`copyAssets.baseDir` 可以覆盖自动目录:必须是相对路径,不能包含 `..`;传空字符串表示显式复制到根目录。插件会为标准包、preset 和 full 包同步统一运行时资源根;full 包仍同时同步 `setDefaultFullAssetBaseUrl()`。只有设置 `inject:false` 且不手动导入虚拟模块时,业务才需要调用 `setDefaultFileViewerAssetBaseUrl()`(full 包同时调用 `setDefaultFullAssetBaseUrl()`)。Vite 配置了 `base:'/app/'` 时,full 包开发 URL 为 `/app/file-viewer/...`,构建文件仍位于 `outDir/file-viewer/`。
|
|
102
102
|
|
|
103
103
|
如果你需要严格控制 registry,可以关闭注入并手动传入:
|
|
104
104
|
|
package/dist/index.d.ts
CHANGED
|
@@ -35,8 +35,8 @@ export interface FileViewerCopyAssetsOptions {
|
|
|
35
35
|
* Directory below publicDir/outDir where assets are published. When omitted,
|
|
36
36
|
* projects with an installed @file-viewer/*-full package use `file-viewer`;
|
|
37
37
|
* other projects keep the existing output-root layout. Use an empty string
|
|
38
|
-
* to explicitly publish at the output root.
|
|
39
|
-
*
|
|
38
|
+
* to explicitly publish at the output root. The injected runtime module
|
|
39
|
+
* keeps every renderer's default asset base aligned with this directory.
|
|
40
40
|
*/
|
|
41
41
|
baseDir?: string;
|
|
42
42
|
/**
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,16 @@ import { createRequire } from 'node:module';
|
|
|
4
4
|
import { dirname, extname, isAbsolute, join, relative, resolve, sep } from 'node:path';
|
|
5
5
|
const virtualModuleId = 'virtual:file-viewer-renderers';
|
|
6
6
|
const resolvedVirtualModuleId = `\0${virtualModuleId}`;
|
|
7
|
+
const packagedPptFallbackModuleId = 'virtual:file-viewer-packaged-ppt-fallback';
|
|
8
|
+
const resolvedPackagedPptFallbackModuleId = `\0${packagedPptFallbackModuleId}`;
|
|
9
|
+
const isPresentationRendererImporter = (importer) => {
|
|
10
|
+
if (!importer)
|
|
11
|
+
return false;
|
|
12
|
+
const normalized = importer.replace(/\\/g, '/');
|
|
13
|
+
return (normalized.includes('/@file-viewer/renderer-presentation/') ||
|
|
14
|
+
normalized.includes('/@file-viewer+renderer-presentation@') ||
|
|
15
|
+
normalized.includes('/packages/renderers/presentation/'));
|
|
16
|
+
};
|
|
7
17
|
const pluginRequire = createRequire(import.meta.url);
|
|
8
18
|
let workspacePackageJsonCache = null;
|
|
9
19
|
const rendererModules = [
|
|
@@ -43,8 +53,17 @@ const rendererModules = [
|
|
|
43
53
|
id: 'presentation',
|
|
44
54
|
packageName: '@file-viewer/renderer-presentation',
|
|
45
55
|
exportName: 'presentationRenderer',
|
|
46
|
-
formats: [
|
|
47
|
-
|
|
56
|
+
formats: [
|
|
57
|
+
'presentation',
|
|
58
|
+
'ppt',
|
|
59
|
+
'pptx',
|
|
60
|
+
'pptm',
|
|
61
|
+
'potx',
|
|
62
|
+
'potm',
|
|
63
|
+
'ppsx',
|
|
64
|
+
'ppsm'
|
|
65
|
+
],
|
|
66
|
+
rendererIds: ['office-presentation-binary', 'office-presentation'],
|
|
48
67
|
chunkName: 'file-viewer-presentation'
|
|
49
68
|
},
|
|
50
69
|
{
|
|
@@ -400,6 +419,7 @@ const fileViewerFullPackages = [
|
|
|
400
419
|
// CommonJS/UMD helper dependencies below.
|
|
401
420
|
const fileViewerOptimizationExcludedPackages = [
|
|
402
421
|
'@file-viewer/core',
|
|
422
|
+
'@file-viewer/ppt',
|
|
403
423
|
'@file-viewer/pptx',
|
|
404
424
|
...rendererModules.map((descriptor) => descriptor.packageName),
|
|
405
425
|
...Object.values(presetModules).map((preset) => preset.packageName),
|
|
@@ -408,6 +428,7 @@ const fileViewerOptimizationExcludedPackages = [
|
|
|
408
428
|
const cjsInteropPackages = [
|
|
409
429
|
'@file-viewer/docx',
|
|
410
430
|
'@xmldom/xmldom',
|
|
431
|
+
'occt-import-js',
|
|
411
432
|
'jszip'
|
|
412
433
|
];
|
|
413
434
|
const defaultScanRoots = ['src', 'app', 'pages', 'components'];
|
|
@@ -456,6 +477,7 @@ const mimeFormatHints = {
|
|
|
456
477
|
'application/vnd.rar': ['rar'],
|
|
457
478
|
'text/markdown': ['md'],
|
|
458
479
|
'text/csv': ['csv'],
|
|
480
|
+
'text/tab-separated-values': ['tsv'],
|
|
459
481
|
'text/html': ['html'],
|
|
460
482
|
'text/css': ['css'],
|
|
461
483
|
'text/plain': ['txt'],
|
|
@@ -635,7 +657,7 @@ function expandDescriptorRendererIds(ids) {
|
|
|
635
657
|
return descriptor ? [...descriptor.rendererIds] : [id];
|
|
636
658
|
}));
|
|
637
659
|
}
|
|
638
|
-
function renderVirtualModule(selection, formats, autoPresetIds = [],
|
|
660
|
+
function renderVirtualModule(selection, formats, autoPresetIds = [], runtimeAssetBase = null, configureFullAssetBase = false) {
|
|
639
661
|
const presetModule = selection.preset ? presetModules[selection.preset] : null;
|
|
640
662
|
const autoPresetModules = autoPresetIds
|
|
641
663
|
.filter((id) => id !== selection.preset)
|
|
@@ -675,33 +697,47 @@ function renderVirtualModule(selection, formats, autoPresetIds = [], fullAssetBa
|
|
|
675
697
|
: !selection.preset && autoPresetModules.length === 1
|
|
676
698
|
? autoPresetModules[0].id
|
|
677
699
|
: '@file-viewer/vite-plugin:configured';
|
|
678
|
-
const
|
|
679
|
-
?
|
|
680
|
-
? `import {
|
|
681
|
-
: `import {
|
|
700
|
+
const runtimeAssetBaseImport = runtimeAssetBase
|
|
701
|
+
? runtimeAssetBase.kind === 'deployment'
|
|
702
|
+
? `import { resolveFileViewerRuntimeAssetBaseUrl, setDefaultFileViewerAssetBaseUrl } from '@file-viewer/core/assets';`
|
|
703
|
+
: `import { setDefaultFileViewerAssetBaseUrl } from '@file-viewer/core/assets';`
|
|
704
|
+
: null;
|
|
705
|
+
const fullAssetBaseImport = runtimeAssetBase && configureFullAssetBase
|
|
706
|
+
? `import { setDefaultFullAssetBaseUrl } from '@file-viewer/preset-all';`
|
|
682
707
|
: null;
|
|
683
708
|
const autoRegistrationImport = rendererNames.length
|
|
684
709
|
? `import { registerFileViewerAutoRendererPreset } from '@file-viewer/core';`
|
|
685
710
|
: null;
|
|
686
|
-
const
|
|
711
|
+
const runtimeAssetBaseSetup = !runtimeAssetBase
|
|
687
712
|
? []
|
|
688
|
-
:
|
|
689
|
-
? [
|
|
713
|
+
: runtimeAssetBase.kind === 'literal'
|
|
714
|
+
? [
|
|
715
|
+
`setDefaultFileViewerAssetBaseUrl(${JSON.stringify(runtimeAssetBase.url)});`,
|
|
716
|
+
...(configureFullAssetBase
|
|
717
|
+
? [`setDefaultFullAssetBaseUrl(${JSON.stringify(runtimeAssetBase.url)});`]
|
|
718
|
+
: []),
|
|
719
|
+
''
|
|
720
|
+
]
|
|
690
721
|
: [
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
'
|
|
694
|
-
|
|
695
|
-
`
|
|
722
|
+
"const fileViewerDeploymentBaseUrl = typeof document === 'undefined'",
|
|
723
|
+
" ? '/'",
|
|
724
|
+
' : resolveFileViewerRuntimeAssetBaseUrl(document);',
|
|
725
|
+
"const fileViewerRuntimeAssetBaseUrl = typeof document === 'undefined'",
|
|
726
|
+
` ? '/' + ${JSON.stringify(runtimeAssetBase.encodedBaseDir)}`,
|
|
727
|
+
` : new URL(${JSON.stringify(runtimeAssetBase.encodedBaseDir)}, fileViewerDeploymentBaseUrl.endsWith('/') ? fileViewerDeploymentBaseUrl : fileViewerDeploymentBaseUrl + '/').href;`,
|
|
728
|
+
'setDefaultFileViewerAssetBaseUrl(fileViewerRuntimeAssetBaseUrl);',
|
|
729
|
+
...(configureFullAssetBase
|
|
730
|
+
? ['setDefaultFullAssetBaseUrl(fileViewerRuntimeAssetBaseUrl);']
|
|
731
|
+
: []),
|
|
696
732
|
''
|
|
697
733
|
];
|
|
698
734
|
return [
|
|
699
|
-
...[autoRegistrationImport, fullAssetBaseImport].filter(Boolean),
|
|
735
|
+
...[autoRegistrationImport, runtimeAssetBaseImport, fullAssetBaseImport].filter(Boolean),
|
|
700
736
|
...[presetImport].filter(Boolean),
|
|
701
737
|
...autoPresetImports,
|
|
702
738
|
...rendererImports,
|
|
703
739
|
'',
|
|
704
|
-
...
|
|
740
|
+
...runtimeAssetBaseSetup,
|
|
705
741
|
`export const configuredFileViewerRenderers = [${rendererNames.join(', ')}];`,
|
|
706
742
|
`export const fileViewerRendererPlan = ${JSON.stringify(plan, null, 2)};`,
|
|
707
743
|
...(rendererNames.length
|
|
@@ -980,11 +1016,11 @@ function readPackageVersion(packageRoot) {
|
|
|
980
1016
|
return null;
|
|
981
1017
|
}
|
|
982
1018
|
}
|
|
983
|
-
function assertOwnedPackageVersion(packageName, packageRoot, ownerPackageName) {
|
|
1019
|
+
function assertOwnedPackageVersion(packageName, packageRoot, ownerPackageName, anchorPackages = []) {
|
|
984
1020
|
if (!packageRoot) {
|
|
985
1021
|
return null;
|
|
986
1022
|
}
|
|
987
|
-
const ownerPackageJsonPath = resolvePackageJson(ownerPackageName);
|
|
1023
|
+
const ownerPackageJsonPath = resolvePackageJson(ownerPackageName, anchorPackages);
|
|
988
1024
|
if (!ownerPackageJsonPath) {
|
|
989
1025
|
return readPackageVersion(packageRoot);
|
|
990
1026
|
}
|
|
@@ -1196,11 +1232,65 @@ async function copyKnownRendererAssets(targetRoot, rendererIds) {
|
|
|
1196
1232
|
await push('pdf', 'pdf-cjk-font-fallback', join(targetRoot, 'vendor/pdf/fonts'), () => copyPdfCjkFontAssets(pdfCjkFontRoot, join(targetRoot, 'vendor/pdf/fonts')));
|
|
1197
1233
|
const pptxRoot = resolvePackageRoot('@file-viewer/pptx', ['@file-viewer/renderer-presentation']);
|
|
1198
1234
|
await push('office-presentation', 'pptx-worker', join(targetRoot, 'vendor/pptx/pptx.worker.js'), () => copyFileIfPresent(pptxRoot ? join(pptxRoot, 'dist/worker/pptx.worker.js') : null, join(targetRoot, 'vendor/pptx/pptx.worker.js')));
|
|
1235
|
+
const pptRoot = resolvePackageRoot('@file-viewer/ppt', ['@file-viewer/renderer-presentation']);
|
|
1236
|
+
const pptVersion = readPackageVersion(pptRoot);
|
|
1237
|
+
const pptSource = pptRoot
|
|
1238
|
+
? { sourcePackage: '@file-viewer/ppt', sourceVersion: pptVersion || undefined }
|
|
1239
|
+
: undefined;
|
|
1240
|
+
for (const [id, filename] of [
|
|
1241
|
+
['ppt-module', 'index.mjs'],
|
|
1242
|
+
['ppt-worker', 'worker.mjs'],
|
|
1243
|
+
['ppt-frame-cache', 'frame-cache.mjs'],
|
|
1244
|
+
['ppt-wasm', 'ppt-native.wasm'],
|
|
1245
|
+
['ppt-cjk-font', 'ppt-font-cjk.otf'],
|
|
1246
|
+
['ppt-manifest', 'manifest.json'],
|
|
1247
|
+
['ppt-package', 'package.json'],
|
|
1248
|
+
['ppt-license', 'LICENSE'],
|
|
1249
|
+
['ppt-notice', 'NOTICE']
|
|
1250
|
+
]) {
|
|
1251
|
+
await push('office-presentation-binary', id, join(targetRoot, `vendor/ppt/${filename}`), () => copyFileIfPresent(pptRoot ? join(pptRoot, filename) : null, join(targetRoot, `vendor/ppt/${filename}`)), undefined, pptSource);
|
|
1252
|
+
}
|
|
1199
1253
|
const docxRoot = resolvePackageRoot('@file-viewer/docx', ['@file-viewer/renderer-word']);
|
|
1200
1254
|
await push('office-word-openxml', 'docx-worker', join(targetRoot, 'vendor/docx/docx.worker.js'), () => copyFileIfPresent(docxRoot ? join(docxRoot, 'dist/docx-preview.worker.js') : null, join(targetRoot, 'vendor/docx/docx.worker.js')));
|
|
1201
1255
|
await push('office-word-openxml', 'docx-worker-jszip', join(targetRoot, 'vendor/docx/jszip.min.js'), () => copyFileIfPresent(docxRoot ? join(docxRoot, 'dist/jszip.min.js') : null, join(targetRoot, 'vendor/docx/jszip.min.js')));
|
|
1256
|
+
const spreadsheetRoot = resolvePackageRoot('@file-viewer/renderer-spreadsheet', [
|
|
1257
|
+
'@file-viewer/renderer-spreadsheet',
|
|
1258
|
+
'@file-viewer/preset-office',
|
|
1259
|
+
'@file-viewer/preset-all'
|
|
1260
|
+
]);
|
|
1261
|
+
const spreadsheetVersion = readPackageVersion(spreadsheetRoot);
|
|
1262
|
+
await push('spreadsheet-openxml', 'spreadsheet-worker', join(targetRoot, 'vendor/xlsx/sheet.worker.js'), () => copyFileIfPresent(spreadsheetRoot ? join(spreadsheetRoot, 'dist/worker/sheet.worker.js') : null, join(targetRoot, 'vendor/xlsx/sheet.worker.js')), undefined, spreadsheetRoot
|
|
1263
|
+
? {
|
|
1264
|
+
sourcePackage: '@file-viewer/renderer-spreadsheet',
|
|
1265
|
+
sourceVersion: spreadsheetVersion || undefined
|
|
1266
|
+
}
|
|
1267
|
+
: undefined);
|
|
1202
1268
|
const cadRoot = resolvePackageRoot('@flyfish-dev/cad-viewer', ['@file-viewer/renderer-cad']);
|
|
1203
1269
|
await push('cad', 'cad-wasm-directory', join(targetRoot, 'wasm/cad'), () => copyDirectoryIfPresent(cadRoot ? join(cadRoot, 'dist/wasm') : null, join(targetRoot, 'wasm/cad')));
|
|
1270
|
+
const modelDependencyAnchors = [
|
|
1271
|
+
'@file-viewer/renderer-3d',
|
|
1272
|
+
'@file-viewer/geometry-engine'
|
|
1273
|
+
];
|
|
1274
|
+
const occtRoot = resolvePackageRoot('occt-import-js', modelDependencyAnchors);
|
|
1275
|
+
const geometryEngineRoot = resolvePackageRoot('@file-viewer/geometry-engine', [
|
|
1276
|
+
'@file-viewer/renderer-3d'
|
|
1277
|
+
]);
|
|
1278
|
+
const occtVersion = assertOwnedPackageVersion('occt-import-js', occtRoot, '@file-viewer/geometry-engine', modelDependencyAnchors);
|
|
1279
|
+
const occtSource = occtRoot
|
|
1280
|
+
? { sourcePackage: 'occt-import-js', sourceVersion: occtVersion || undefined }
|
|
1281
|
+
: undefined;
|
|
1282
|
+
await push('model', 'model-occt-worker', join(targetRoot, 'wasm/model/occt-worker.js'), () => copyFileIfPresent(geometryEngineRoot ? join(geometryEngineRoot, 'assets/occt-worker.js') : null, join(targetRoot, 'wasm/model/occt-worker.js')));
|
|
1283
|
+
for (const [id, filename] of [
|
|
1284
|
+
['model-occt-runtime', 'occt-import-js.js'],
|
|
1285
|
+
['model-occt-wasm', 'occt-import-js.wasm'],
|
|
1286
|
+
['model-occt-license', 'license.occt.txt'],
|
|
1287
|
+
['model-occt-import-license', 'license.occt-import-js.txt']
|
|
1288
|
+
]) {
|
|
1289
|
+
const targetFilename = filename.startsWith('license.')
|
|
1290
|
+
? filename.replace(/^license\./, 'LICENSE.')
|
|
1291
|
+
: filename;
|
|
1292
|
+
await push('model', id, join(targetRoot, `wasm/model/${targetFilename}`), () => copyFileIfPresent(occtRoot ? join(occtRoot, `dist/${filename}`) : null, join(targetRoot, `wasm/model/${targetFilename}`)), undefined, occtSource);
|
|
1293
|
+
}
|
|
1204
1294
|
const typstCompilerRoot = resolvePackageRoot('@myriaddreamin/typst-ts-web-compiler', [
|
|
1205
1295
|
'@file-viewer/renderer-typst'
|
|
1206
1296
|
]);
|
|
@@ -1528,12 +1618,16 @@ function resolveViteFullAssetBase(base, baseDir) {
|
|
|
1528
1618
|
return { kind: 'literal', url: `${normalizedBase}${encodedBaseDirWithSlash}` };
|
|
1529
1619
|
}
|
|
1530
1620
|
function resolveDevAssetRequestPath(targetRoot, baseDir, requestPathname, viteBasePath) {
|
|
1531
|
-
if (!requestPathname.startsWith(viteBasePath)) {
|
|
1532
|
-
return null;
|
|
1533
|
-
}
|
|
1534
1621
|
let requestRelativePath;
|
|
1535
1622
|
try {
|
|
1536
|
-
|
|
1623
|
+
// Depending on the Vite major and middleware ordering, configureServer can
|
|
1624
|
+
// observe either the original base-prefixed URL or the pathname after
|
|
1625
|
+
// Vite's base middleware has stripped it. Accept both shapes, then keep the
|
|
1626
|
+
// strict viewer-asset allowlist and target-root boundary checks below.
|
|
1627
|
+
const encodedRelativePath = viteBasePath === '/' || requestPathname.startsWith(viteBasePath)
|
|
1628
|
+
? requestPathname.slice(viteBasePath === '/' ? 1 : viteBasePath.length)
|
|
1629
|
+
: requestPathname.replace(/^\/+/, '');
|
|
1630
|
+
requestRelativePath = decodeURIComponent(encodedRelativePath);
|
|
1537
1631
|
}
|
|
1538
1632
|
catch {
|
|
1539
1633
|
return null;
|
|
@@ -1574,6 +1668,7 @@ function reportAssetCopy(results, targetRoot, mode) {
|
|
|
1574
1668
|
const failedRequired = results.filter((result) => !result.copied && (result.required ?? [
|
|
1575
1669
|
'pdf',
|
|
1576
1670
|
'office-word-openxml',
|
|
1671
|
+
'office-presentation-binary',
|
|
1577
1672
|
'office-presentation',
|
|
1578
1673
|
'archive',
|
|
1579
1674
|
'cad',
|
|
@@ -1613,7 +1708,7 @@ export function fileViewerRenderers(options = {}) {
|
|
|
1613
1708
|
let autoPresetIds = resolveAutoPresetIds(options);
|
|
1614
1709
|
let resolvedConfig = null;
|
|
1615
1710
|
let installedFullPackages = [];
|
|
1616
|
-
let
|
|
1711
|
+
let runtimeAssetBase = null;
|
|
1617
1712
|
const refreshSelection = (projectRoot) => {
|
|
1618
1713
|
if (projectRoot) {
|
|
1619
1714
|
scanFormats = collectFileViewerRendererScanTokens(projectRoot, options.scan);
|
|
@@ -1628,16 +1723,14 @@ export function fileViewerRenderers(options = {}) {
|
|
|
1628
1723
|
const refreshFullAssetRuntime = (projectRoot, viteBase) => {
|
|
1629
1724
|
if (!options.copyAssets) {
|
|
1630
1725
|
installedFullPackages = [];
|
|
1631
|
-
|
|
1726
|
+
runtimeAssetBase = null;
|
|
1632
1727
|
return;
|
|
1633
1728
|
}
|
|
1634
1729
|
const target = resolveFileViewerCopyAssetsTarget('dev', options.copyAssets, {
|
|
1635
1730
|
projectRoot
|
|
1636
1731
|
});
|
|
1637
1732
|
installedFullPackages = target.installedFullPackages;
|
|
1638
|
-
|
|
1639
|
-
? resolveViteFullAssetBase(viteBase, target.baseDir)
|
|
1640
|
-
: null;
|
|
1733
|
+
runtimeAssetBase = resolveViteFullAssetBase(viteBase, target.baseDir);
|
|
1641
1734
|
};
|
|
1642
1735
|
const hasConfiguredRenderers = () => Boolean(selection.preset || selection.descriptors.length || autoPresetIds.length);
|
|
1643
1736
|
return {
|
|
@@ -1647,13 +1740,13 @@ export function fileViewerRenderers(options = {}) {
|
|
|
1647
1740
|
const projectRoot = resolve(process.cwd(), userConfig.root || '.');
|
|
1648
1741
|
refreshSelection(projectRoot);
|
|
1649
1742
|
refreshFullAssetRuntime(projectRoot, userConfig.base);
|
|
1650
|
-
const selectedPackages = collectSelectedPackages(selection, autoPresetIds);
|
|
1651
1743
|
const dependencyAnchorPackages = collectDependencyAnchorPackages(selection, autoPresetIds);
|
|
1652
|
-
const resolvedDependencyAnchorPackages =
|
|
1744
|
+
const resolvedDependencyAnchorPackages = runtimeAssetBase
|
|
1653
1745
|
? unique([
|
|
1654
1746
|
...dependencyAnchorPackages,
|
|
1747
|
+
'@file-viewer/core',
|
|
1655
1748
|
...installedFullPackages,
|
|
1656
|
-
'@file-viewer/preset-all'
|
|
1749
|
+
...(installedFullPackages.length ? ['@file-viewer/preset-all'] : [])
|
|
1657
1750
|
])
|
|
1658
1751
|
: dependencyAnchorPackages;
|
|
1659
1752
|
const optimizeDepsExclude = createOptimizeDepsExclude(userConfig);
|
|
@@ -1730,7 +1823,7 @@ export function fileViewerRenderers(options = {}) {
|
|
|
1730
1823
|
const viteBasePath = normalizeViteDevBasePath(resolvedConfig?.base || '/');
|
|
1731
1824
|
if (server?.middlewares?.use) {
|
|
1732
1825
|
const realTargetRoot = await realpath(targetRoot).catch(() => targetRoot);
|
|
1733
|
-
server.middlewares.use(async (request, response, next)
|
|
1826
|
+
server.middlewares.use(async function fileViewerAssetMiddleware(request, response, next) {
|
|
1734
1827
|
const requestUrl = request.url || '';
|
|
1735
1828
|
const queryIndex = requestUrl.indexOf('?');
|
|
1736
1829
|
const pathname = queryIndex >= 0 ? requestUrl.slice(0, queryIndex) : requestUrl;
|
|
@@ -1789,7 +1882,7 @@ export function fileViewerRenderers(options = {}) {
|
|
|
1789
1882
|
transformIndexHtml: {
|
|
1790
1883
|
order: 'pre',
|
|
1791
1884
|
handler() {
|
|
1792
|
-
if (options.inject === false || (!hasConfiguredRenderers() && !
|
|
1885
|
+
if (options.inject === false || (!hasConfiguredRenderers() && !runtimeAssetBase)) {
|
|
1793
1886
|
return undefined;
|
|
1794
1887
|
}
|
|
1795
1888
|
return [
|
|
@@ -1837,15 +1930,28 @@ export function fileViewerRenderers(options = {}) {
|
|
|
1837
1930
|
const results = await copyRendererAssets(copyTarget, collectAssetRendererIds(selection, autoPresetIds, copyTarget.installedFullPackages.length > 0));
|
|
1838
1931
|
reportAssetCopy(results, targetRoot, missingMode);
|
|
1839
1932
|
},
|
|
1840
|
-
resolveId(id) {
|
|
1933
|
+
resolveId(id, importer) {
|
|
1934
|
+
if (id === '@file-viewer/ppt' &&
|
|
1935
|
+
options.copyAssets &&
|
|
1936
|
+
installedFullPackages.length > 0 &&
|
|
1937
|
+
isPresentationRendererImporter(importer)) {
|
|
1938
|
+
return resolvedPackagedPptFallbackModuleId;
|
|
1939
|
+
}
|
|
1841
1940
|
if (id === moduleId || id === virtualModuleId || id === injectedModulePath) {
|
|
1842
1941
|
return id === virtualModuleId ? resolvedVirtualModuleId : resolvedModuleId;
|
|
1843
1942
|
}
|
|
1844
1943
|
return undefined;
|
|
1845
1944
|
},
|
|
1846
1945
|
load(id) {
|
|
1946
|
+
if (id === resolvedPackagedPptFallbackModuleId) {
|
|
1947
|
+
return `
|
|
1948
|
+
export async function createPptViewer() {
|
|
1949
|
+
throw new Error('Packaged PPT runtime URL was not initialized.')
|
|
1950
|
+
}
|
|
1951
|
+
`;
|
|
1952
|
+
}
|
|
1847
1953
|
if (id === resolvedModuleId || id === resolvedVirtualModuleId) {
|
|
1848
|
-
return renderVirtualModule(selection, requestedFormats, autoPresetIds,
|
|
1954
|
+
return renderVirtualModule(selection, requestedFormats, autoPresetIds, runtimeAssetBase, installedFullPackages.length > 0);
|
|
1849
1955
|
}
|
|
1850
1956
|
return undefined;
|
|
1851
1957
|
}
|
package/package.json
CHANGED