Spaces:
Sleeping
Sleeping
| 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; | |
| } | |
| }); | |