@@ -4222,15 +4222,18 @@ private struct InspectorPanel: View {
42224222 let snippet = element. sourceSnippet ?? " "
42234223 guard sourceDraftElementID != element. id else {
42244224 if sourceDraftOriginalSnippet != snippet {
4225+ invalidateSourceDraftValidationPreview ( )
42254226 sourceDraft = snippet
42264227 sourceDraftOriginalSnippet = snippet
42274228 scheduleSourceDraftValidationPreview ( for: element, delay: 0 )
42284229 } else if sourceDraft. isEmpty, !snippet. isEmpty {
4230+ invalidateSourceDraftValidationPreview ( )
42294231 sourceDraft = snippet
42304232 scheduleSourceDraftValidationPreview ( for: element, delay: 0 )
42314233 }
42324234 return
42334235 }
4236+ invalidateSourceDraftValidationPreview ( )
42344237 sourceDraftElementID = element. id
42354238 sourceDraftOriginalSnippet = snippet
42364239 sourceDraft = snippet
@@ -5100,10 +5103,10 @@ private struct InspectorPanel: View {
51005103
51015104 private func restoreSourceDraft( for element: EditorElement ) {
51025105 let snippet = element. sourceSnippet ?? " "
5106+ invalidateSourceDraftValidationPreview ( )
51035107 sourceDraft = snippet
51045108 sourceDraftElementID = element. id
51055109 sourceDraftOriginalSnippet = snippet
5106- model. sourceDraftMappingSummary = nil
51075110 model. status = " 已恢复为当前选中对象的原始源码片段 "
51085111 }
51095112
@@ -5166,6 +5169,12 @@ private struct InspectorPanel: View {
51665169 }
51675170 }
51685171
5172+ private func invalidateSourceDraftValidationPreview( ) {
5173+ sourceDraftValidationTask? . cancel ( )
5174+ pendingSourceDraftValidationID = UUID ( )
5175+ model. sourceDraftMappingSummary = nil
5176+ }
5177+
51695178 private func sourceSyncTitle( for element: EditorElement ) -> String {
51705179 let tag = element. tagName? . uppercased ( ) ?? " HTML "
51715180 return " \( tag) 源码片段 "
@@ -5285,6 +5294,7 @@ private struct InspectorPanel: View {
52855294 return
52865295 }
52875296
5297+ invalidateSourceDraftValidationPreview ( )
52885298 model. selectHTMLNode ( id: previousID)
52895299 model. status = item. slot == " unmatched " ? " 已定位将被替换的原对象 " : " 已定位将保留的原对象 "
52905300 }
0 commit comments