const { convertHtmlToMarkdown } = htmlToSMD;
function isValidUrl(string) {
try {
new URL(string);
return true;
} catch (_) {
return false;
}
}
document
.getElementById("converter-form")
.addEventListener("submit", async function (e) {
e.preventDefault();
const urlInput = document.getElementById("url-input").value;
const markdownOutput = document.getElementById("markdown-output");
if (!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 {
// 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");
}
const htmlContent = await response.text();
// Convert HTML to Markdown
const markdown = await convertHtmlToMarkdown(htmlContent, options);
markdownOutput.textContent = markdown;
} catch (error) {
markdownOutput.textContent = "Error: " + error.message;
}
});