refactor: externalize editor upload context

This commit is contained in:
lix-2026
2026-05-24 23:43:22 +08:00
parent 5a96ea9eba
commit 437c690a39
4 changed files with 182 additions and 1 deletions
@@ -3775,6 +3775,15 @@ const SIDEBAR_TREE_JS: &str = r##"
}
function resolveEditorUploadContext(detail) {
var runtimeFn = localUploadRuntimeFunction('resolveEditorUploadContext');
if (runtimeFn) {
return runtimeFn(detail || {}, {
rootSelector: EDITOR_UPLOAD_ROOT_SELECTOR,
editorUploadRootFromElement: editorUploadRootFromElement,
currentDocumentId: currentDocumentId,
resolveWorkspaceId: resolveWorkspaceId
});
}
var root = null;
var selector = detail && detail.editorRootSelector ? String(detail.editorRootSelector) : '';
if (selector) {
@@ -3823,6 +3832,13 @@ const SIDEBAR_TREE_JS: &str = r##"
}
function editorRootFromUploadOptions(options) {
var runtimeFn = localUploadRuntimeFunction('editorRootFromUploadOptions');
if (runtimeFn) {
return runtimeFn(options || {}, {
rootSelector: EDITOR_UPLOAD_ROOT_SELECTOR,
editorUploadRootFromElement: editorUploadRootFromElement
});
}
if (options && options.editorRoot instanceof HTMLElement) return options.editorRoot;
if (window.__mnoteIntendedSlashRoot instanceof HTMLElement && window.__mnoteIntendedSlashRoot.isConnected) {
return window.__mnoteIntendedSlashRoot;
@@ -4029,6 +4045,16 @@ const SIDEBAR_TREE_JS: &str = r##"
}
function openEditorUploadFilePicker(detail) {
var runtimeFn = localUploadRuntimeFunction('openEditorUploadFilePicker');
if (runtimeFn) {
return runtimeFn(detail || {}, {
rootSelector: EDITOR_UPLOAD_ROOT_SELECTOR,
editorUploadRootFromElement: editorUploadRootFromElement,
currentDocumentId: currentDocumentId,
resolveWorkspaceId: resolveWorkspaceId,
uploadFilesWithResolvedTarget: uploadFilesWithResolvedTarget
});
}
var uploadContext = resolveEditorUploadContext(detail || {});
var input = document.createElement('input');
input.type = 'file';
@@ -10795,12 +10821,29 @@ mod tests {
assert!(SIDEBAR_TREE_JS.contains("refreshLocalFolderSidebarSnapshot"));
assert!(SIDEBAR_TREE_JS.contains("wolai:local-assets-changed"));
assert!(SIDEBAR_TREE_JS.contains("function resolveEditorUploadContext"));
assert!(
SIDEBAR_TREE_JS.contains("localUploadRuntimeFunction('resolveEditorUploadContext')")
);
assert!(
SIDEBAR_TREE_JS.contains("localUploadRuntimeFunction('openEditorUploadFilePicker')")
);
assert!(SIDEBAR_TREE_JS.contains("__mnoteLastEditorUploadRoot"));
assert!(SIDEBAR_TREE_JS.contains("data-pane-role=\"primary\""));
assert!(SIDEBAR_TREE_JS.contains("insertUploadedAssetIntoEditor(localPayload.asset, editorRootFromUploadOptions(options))"));
assert!(SIDEBAR_TREE_JS.contains("editorRoot: uploadContext.root"));
}
#[test]
fn local_upload_runtime_contains_editor_upload_context_helpers() {
const LOCAL_UPLOAD_RUNTIME_JS: &str =
include_str!("../../../browser/local-upload-runtime.js");
assert!(LOCAL_UPLOAD_RUNTIME_JS.contains("function resolveEditorUploadContext"));
assert!(LOCAL_UPLOAD_RUNTIME_JS.contains("function editorRootFromUploadOptions"));
assert!(LOCAL_UPLOAD_RUNTIME_JS.contains("function openEditorUploadFilePicker"));
assert!(LOCAL_UPLOAD_RUNTIME_JS.contains("uploadFilesWithResolvedTarget"));
assert!(LOCAL_UPLOAD_RUNTIME_JS.contains("__mnoteLastEditorUploadRoot"));
}
#[test]
fn sidebar_tree_runtime_focuses_restored_local_folder_row() {
assert!(SIDEBAR_TREE_JS.contains("applyPendingLocalFolderRestoreFocusOnce"));