',e.addEventListener("click",function(){o.remove(),u()}),o.appendChild(t),o.appendChild(e),l.appendChild(o)}function u(){let o=[];l.querySelectorAll("li.todo-item").forEach(e=>{var t=e.querySelector("span.todo-text-content");t&&(t=t.textContent,e=e.classList.contains("completed"),o.push({text:t,completed:e}))}),localStorage.setItem(c,JSON.stringify(o))}function m(){var e=localStorage.getItem(c),e=e?JSON.parse(e):[];l.innerHTML="",0{e&&"string"==typeof e.text&&"boolean"==typeof e.completed?s(e.text,e.completed):console.warn("Skipping invalid item from localStorage:",e)})}function f(){var e=document.createElement("input");e.type="file",e.accept=".csv, text/csv",e.onchange=e=>{var t,e=e.target.files[0];e&&((t=new FileReader).onload=e=>{e=e.target.result;try{var t,o=(e=>{var t=e.trim().split(/\r?\n/),o=[];if(!(t.length<2)){"text,completed"!==t[0].toLowerCase().trim()&&console.warn("CSV header mismatch. Expected 'Text,Completed'. Found:",t[0]);for(let e=1;e{console.error("Error reading file:",e),alert("Error reading the selected file.")},t.readAsText(e))},e.click()}window.addEventListener("load",()=>{m();{let n=null;l.addEventListener("dragstart",function(e){"LI"===e.target.tagName&&e.target.classList.contains("todo-item")?(n=e.target,setTimeout(()=>n.classList.add("dragging"),0),e.dataTransfer.effectAllowed="move"):e.preventDefault()}),l.addEventListener("dragover",function(e){e.preventDefault(),e.dataTransfer.dropEffect="move";var t,o=e.target.closest("li.todo-item");o&&o!==n&&(t=(t=o.getBoundingClientRect()).top+t.height/2,e.clientY{var t=e.text.replace(/"/g,'""');o+=`"${t}","${e.completed}"
`});e=new Blob([o],{type:"text/csv;charset=utf-8"});try{window.saveAs?window.saveAs(e,"todos.csv"):(alert("FileSaver library not found. Cannot export."),console.error("FileSaver.js is required for exporting."))}catch(e){console.error("Error during export:",e),alert("An error occurred during export.")}}}),d&&d.addEventListener("click",f)})