// MNote 资源打开运行时外置模块。 // 当前先承接 SIDEBAR_TREE_JS 中的低风险纯辅助函数。 // 本文件以 type="module" 加载,执行时机可能晚于 inline script。 // SIDEBAR_TREE_JS 会在运行时优先委托到 window.__mnoteResourceOpenRuntime。 // 模块尚未加载或加载失败时,inline script 保留原实现兜底。 function localFilePathFromAssetId(assetId) { var value = String(assetId || '').trim(); return value.indexOf('local-file:') === 0 ? value.slice('local-file:'.length) : value.indexOf('local:asset:') === 0 ? value.slice('local:asset:'.length) : ''; } function buildLocalFileOpenUrl(relativePath, download) { var rootUri = currentRootUri(); if (!rootUri || !relativePath) return ''; var url = new URL('/api/local-folder/files/open', window.location.origin); url.searchParams.set('rootUri', rootUri); url.searchParams.set('path', relativePath); if (download) url.searchParams.set('download', 'true'); return url.toString(); } function buildOnlyOfficeOpenPath(input) { var params = new URLSearchParams(); params.set('fileUrl', input.fileUrl || ''); params.set('fileName', input.fileName || '未命名资源'); params.set('fileType', input.fileType || 'docx'); if (input.assetId) params.set('assetId', input.assetId); if (input.documentId) params.set('documentId', input.documentId); if (input.userId) params.set('userId', input.userId); params.set('mode', input.mode || 'view'); if (input.documentId && input.assetId) { return '/office/' + encodeURIComponent(input.documentId) + '/' + encodeURIComponent(input.assetId) + '?' + params.toString(); } return '/onlyoffice?' + params.toString(); } function currentRootUri() { var params = new URLSearchParams(window.location.search); var fromUrl = (params.get('rootUri') || '').trim(); if (fromUrl) return fromUrl; return document.body instanceof HTMLElement ? (document.body.getAttribute('data-mnote-root-uri') || '').trim() : ''; } window.__mnoteResourceOpenRuntime = { localFilePathFromAssetId: localFilePathFromAssetId, buildLocalFileOpenUrl: buildLocalFileOpenUrl, buildOnlyOfficeOpenPath: buildOnlyOfficeOpenPath };