()
| 841 | } |
| 842 | |
| 843 | function wireRailTrashDrop() { |
| 844 | const trash = document.querySelector(".rail-trash"); |
| 845 | if (!trash || trash.dataset.dropReady === "1") return; |
| 846 | trash.dataset.dropReady = "1"; |
| 847 | |
| 848 | trash.addEventListener("dragover", (e) => { |
| 849 | if (!isTrackDragEvent(e)) return; |
| 850 | e.preventDefault(); |
| 851 | e.dataTransfer.dropEffect = "move"; |
| 852 | trash.classList.add("drop-target"); |
| 853 | }); |
| 854 | trash.addEventListener("dragleave", (e) => { |
| 855 | if (!trash.contains(e.relatedTarget)) trash.classList.remove("drop-target"); |
| 856 | }); |
| 857 | trash.addEventListener("drop", (e) => { |
| 858 | const trackId = getDraggedTrackId(e); |
| 859 | if (!trackId || !tracks[trackId]) return; |
| 860 | e.preventDefault(); |
| 861 | trash.classList.remove("drop-target"); |
| 862 | moveTrackToTrash(trackId); |
| 863 | }); |
| 864 | } |
| 865 | |
| 866 | function restoreTrackFromTrash(trackId) { |
| 867 | if (!tracks[trackId]) return; |
no test coverage detected