Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions src/components/Live2DComponent.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,33 @@ const Live2DComponent = () => {
}
}

const handleDragOver = (event: DragEvent) => {
event.preventDefault()
}

const handleDrop = (event: DragEvent) => {
event.preventDefault()

const files = event.dataTransfer?.files
if (!files) {
return
}

const file = files[0]
if (!file) {
return
}

if (file.type.startsWith('image/')) {
const reader = new FileReader()
reader.readAsDataURL(file)
reader.onload = function () {
const image = reader.result as string
image !== '' && homeStore.setState({ modalImage: image })
}
}
}

// タッチイベント処理
const handleTouchStart = (event: TouchEvent) => {
if (event.touches.length === 2) {
Expand Down Expand Up @@ -195,6 +222,8 @@ const Live2DComponent = () => {
canvas.addEventListener('pointermove', handlePointerMove)
canvas.addEventListener('pointerup', handlePointerUp)
canvas.addEventListener('wheel', handleWheel, { passive: false })
canvas.addEventListener('dragover', handleDragOver)
canvas.addEventListener('drop', handleDrop)

// タッチイベントリスナーの登録
canvas.addEventListener('touchstart', handleTouchStart)
Expand All @@ -207,6 +236,8 @@ const Live2DComponent = () => {
canvas.removeEventListener('pointermove', handlePointerMove)
canvas.removeEventListener('pointerup', handlePointerUp)
canvas.removeEventListener('wheel', handleWheel)
canvas.removeEventListener('dragover', handleDragOver)
canvas.removeEventListener('drop', handleDrop)

// タッチイベントリスナーの削除
canvas.removeEventListener('touchstart', handleTouchStart)
Expand Down