Spaces:
Running
Running
const { convertHtmlToMarkdown } = htmlToSMD; | |
// Handle copy markdown button | |
document.getElementById("copy-markdown").addEventListener("click", async function() { | |
const markdownOutput = document.getElementById("markdown-output"); | |
try { | |
await navigator.clipboard.writeText(markdownOutput.textContent); | |
} catch (err) { | |
console.error('Failed to copy text: ', err); | |
} | |
}); | |
// Handle toggle between URL and HTML input | |
document.getElementById("input-html-toggle").addEventListener("change", function(e) { | |
const urlInput = document.getElementById("url-input"); | |
const htmlInput = document.getElementById("html-input"); | |
if (e.target.checked) { | |
urlInput.classList.add("hidden"); | |
htmlInput.classList.remove("hidden"); | |
urlInput.removeAttribute("required"); | |
} else { | |
urlInput.classList.remove("hidden"); | |
htmlInput.classList.add("hidden"); | |
urlInput.setAttribute("required", ""); | |
} | |
}); | |
function isValidUrl(string) { | |
try { | |
new URL(string); | |
return true; | |
} catch (_) { | |
return false; | |
} | |
} | |
document | |
.getElementById("converter-form") | |
.addEventListener("submit", async function (e) { | |
e.preventDefault(); | |
const isHtmlInput = document.getElementById("input-html-toggle").checked; | |
const urlInput = document.getElementById("url-input").value; | |
const htmlInput = document.getElementById("html-input").value; | |
const markdownOutput = document.getElementById("markdown-output"); | |
if (!isHtmlInput && !isValidUrl(urlInput)) { | |
alert("Please enter a valid URL"); | |
return; | |
} | |
const extractMainContent = document.getElementById( | |
"extract-main-content" | |
).checked; | |
const refifyUrls = document.getElementById("refify-urls").checked; | |
const enableTableColumnTracking = document.getElementById( | |
"enable-table-column-tracking" | |
).checked; | |
const websiteDomain = document.getElementById("website-domain").value; | |
const options = { | |
extractMainContent, | |
refifyUrls, | |
enableTableColumnTracking, | |
websiteDomain: websiteDomain || undefined, | |
}; | |
try { | |
let htmlContent; | |
if (isHtmlInput) { | |
htmlContent = htmlInput; | |
} else { | |
// Fetch HTML content from the server | |
const response = await fetch( | |
`/fetch-html?url=${encodeURIComponent(urlInput)}` | |
); | |
if (!response.ok) { | |
throw new Error("Failed to fetch HTML content"); | |
} | |
htmlContent = await response.text(); | |
} | |
// Convert HTML to Markdown | |
const markdown = await convertHtmlToMarkdown(htmlContent, options); | |
markdownOutput.textContent = markdown; | |
document.getElementById("copy-markdown").disabled = false; | |
} catch (error) { | |
markdownOutput.textContent = "Error: " + error.message; | |
} | |
}); | |