에디터 미디어 선택 상태 로직 분리
This commit is contained in:
@@ -23,10 +23,13 @@ import {
|
||||
} from '../../lib/markdown-editor-history.js'
|
||||
import {
|
||||
createMediaBlockMarkdown,
|
||||
getGallerySelectionOrder as getGallerySelectionOrderFromSelection,
|
||||
getMediaItemKind,
|
||||
getMediaPickerPreviewUrl,
|
||||
isMediaItemSelectableForTarget,
|
||||
isUploadFileAllowedForMediaTarget
|
||||
isUploadFileAllowedForMediaTarget,
|
||||
resolveSelectedMediaItems,
|
||||
toggleMediaSelectionState
|
||||
} from '../../lib/markdown-editor-media.js'
|
||||
import {
|
||||
filterSlashCommands,
|
||||
@@ -3131,8 +3134,7 @@ const getGallerySelectionOrder = (url) => {
|
||||
return 0
|
||||
}
|
||||
|
||||
const index = selectedMediaUrls.value.indexOf(url)
|
||||
return index >= 0 ? index + 1 : 0
|
||||
return getGallerySelectionOrderFromSelection(selectedMediaUrls.value, url)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3169,27 +3171,15 @@ watch(activeMediaPickerTab, async (tab) => {
|
||||
* @returns {void}
|
||||
*/
|
||||
const toggleMediaSelection = (mediaItem) => {
|
||||
if (!isGalleryMediaPicker.value) {
|
||||
selectedMediaUrls.value = [mediaItem.url]
|
||||
selectedMediaItemMap.value = {
|
||||
[mediaItem.url]: mediaItem
|
||||
}
|
||||
return
|
||||
}
|
||||
const nextSelection = toggleMediaSelectionState({
|
||||
selectedUrls: selectedMediaUrls.value,
|
||||
selectedItemMap: selectedMediaItemMap.value,
|
||||
mediaItem,
|
||||
isGallery: isGalleryMediaPicker.value
|
||||
})
|
||||
|
||||
if (selectedMediaUrls.value.includes(mediaItem.url)) {
|
||||
selectedMediaUrls.value = selectedMediaUrls.value.filter((url) => url !== mediaItem.url)
|
||||
const nextMap = { ...selectedMediaItemMap.value }
|
||||
delete nextMap[mediaItem.url]
|
||||
selectedMediaItemMap.value = nextMap
|
||||
return
|
||||
}
|
||||
|
||||
selectedMediaUrls.value = [...selectedMediaUrls.value, mediaItem.url]
|
||||
selectedMediaItemMap.value = {
|
||||
...selectedMediaItemMap.value,
|
||||
[mediaItem.url]: mediaItem
|
||||
}
|
||||
selectedMediaUrls.value = nextSelection.selectedUrls
|
||||
selectedMediaItemMap.value = nextSelection.selectedItemMap
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3268,9 +3258,11 @@ const insertSelectedMediaItems = (selectedItems) => {
|
||||
* @returns {void}
|
||||
*/
|
||||
const applyMediaSelection = () => {
|
||||
const selectedItems = selectedMediaUrls.value
|
||||
.map((url) => selectedMediaItemMap.value[url] || mediaItems.value.find((item) => item.url === url))
|
||||
.filter(Boolean)
|
||||
const selectedItems = resolveSelectedMediaItems(
|
||||
selectedMediaUrls.value,
|
||||
selectedMediaItemMap.value,
|
||||
mediaItems.value
|
||||
)
|
||||
|
||||
insertSelectedMediaItems(selectedItems)
|
||||
closeMediaPicker()
|
||||
|
||||
Reference in New Issue
Block a user