슬래시 명령 효과 계획 분리

This commit is contained in:
2026-07-28 11:23:46 +09:00
parent 9f3ef337ef
commit b953001f32
10 changed files with 123 additions and 17 deletions

View File

@@ -44,6 +44,7 @@ import {
} from '../../lib/markdown-editor-media.js'
import {
createSlashCommandApplyPlan,
createSlashCommandEditorEffectPlan,
getNextSlashHighlightedIndex,
getSlashCommandFocusTarget,
getSlashCommandTextareaSelection,
@@ -2490,28 +2491,32 @@ const applyLiveSlashCommand = (command) => {
command,
sourceLine: liveSlashSourceLine.value
})
const effectPlan = createSlashCommandEditorEffectPlan({
plan,
activeMode: activeMode.value
})
if (plan.kind === 'none') {
if (effectPlan.kind === 'none') {
return
}
if (plan.kind === 'media') {
liveSlashInsertLine.value = plan.line
replaceLineRange(plan.line, plan.line, [], false)
if (effectPlan.kind === 'media') {
liveSlashInsertLine.value = effectPlan.line
replaceLineRange(effectPlan.line, effectPlan.line, [], false)
onLiveSlashEnd()
openMediaPicker(plan.mediaKind)
openMediaPicker(effectPlan.mediaKind)
return
}
if (plan.kind === 'lines') {
releaseLiveSlashLine(plan.line)
replaceLineRange(plan.line, plan.line, plan.lines, false)
if (effectPlan.kind === 'lines') {
releaseLiveSlashLine(effectPlan.line)
replaceLineRange(effectPlan.line, effectPlan.line, effectPlan.lines, false)
clearLiveSlashState()
if (activeMode.value === 'write') {
focusTextareaAfterSlashCommand(plan.line, plan.lines)
if (effectPlan.focusTarget === 'textarea') {
focusTextareaAfterSlashCommand(effectPlan.line, effectPlan.lines)
} else {
focusPreviewAfterSlashCommand(plan.line, plan.lines)
focusPreviewAfterSlashCommand(effectPlan.line, effectPlan.lines)
}
}
}