관리자 슬래시 명령 적용 계획 분리

This commit is contained in:
2026-07-27 18:18:55 +09:00
parent cb6e368375
commit b3f3cbd0ec
10 changed files with 123 additions and 28 deletions

View File

@@ -59,13 +59,12 @@ import {
toggleMediaSelectionState
} from '../../lib/markdown-editor-media.js'
import {
getMediaPickerKindFromSlashAction,
createSlashCommandApplyPlan,
getNextSlashHighlightedIndex,
getSlashCommandFocusTarget,
getSlashCommandTextareaSelection,
getSlashMenuKeyboardAction,
insertMarkdownLinesAtSlashTarget,
isMediaSlashAction,
parseSlashInput,
resolveSlashCommand,
shouldIgnorePendingMediaSlashCommit
@@ -2480,36 +2479,32 @@ const focusTextareaAfterSlashCommand = (line, replacementLines) => {
* @returns {void}
*/
const applyLiveSlashCommand = (command) => {
if (!command || liveSlashSourceLine.value === null) {
const plan = createSlashCommandApplyPlan({
command,
sourceLine: liveSlashSourceLine.value
})
if (plan.kind === 'none') {
return
}
const line = liveSlashSourceLine.value
if (isMediaSlashAction(command.action)) {
const mediaKind = getMediaPickerKindFromSlashAction(command.action)
if (!mediaKind) {
return
}
liveSlashInsertLine.value = line
replaceLineRange(line, line, [], false)
if (plan.kind === 'media') {
liveSlashInsertLine.value = plan.line
replaceLineRange(plan.line, plan.line, [], false)
onLiveSlashEnd()
openMediaPicker(mediaKind)
openMediaPicker(plan.mediaKind)
return
}
if (command.action === 'lines' && Array.isArray(command.lines)) {
const replacementLines = command.lines
releaseLiveSlashLine(line)
replaceLineRange(line, line, replacementLines, false)
if (plan.kind === 'lines') {
releaseLiveSlashLine(plan.line)
replaceLineRange(plan.line, plan.line, plan.lines, false)
clearLiveSlashState()
if (activeMode.value === 'write') {
focusTextareaAfterSlashCommand(line, replacementLines)
focusTextareaAfterSlashCommand(plan.line, plan.lines)
} else {
focusPreviewAfterSlashCommand(line, replacementLines)
focusPreviewAfterSlashCommand(plan.line, plan.lines)
}
}
}