feat:Setup Prettier for code formatting

This commit is contained in:
NanditaPatil-dotcom
2025-10-17 11:37:32 +05:30
parent 87c191213c
commit f1d830d81d
96 changed files with 9420 additions and 7154 deletions

View File

@@ -3,35 +3,41 @@ import { showLoader, hideLoader, showAlert } from '../ui.js';
import { downloadFile } from '../utils/helpers.js';
import html2canvas from 'html2canvas';
export async function mdToPdf() {
// @ts-expect-error TS(2339) FIXME: Property 'jspdf' does not exist on type 'Window & ... Remove this comment to see the full error message
if (typeof window.jspdf === 'undefined' || typeof window.html2canvas === 'undefined') {
showAlert('Libraries Not Ready', 'PDF generation libraries are loading. Please try again.');
return;
}
// @ts-expect-error TS(2339) FIXME: Property 'jspdf' does not exist on type 'Window & ... Remove this comment to see the full error message
if (
typeof window.jspdf === 'undefined' ||
typeof window.html2canvas === 'undefined'
) {
showAlert(
'Libraries Not Ready',
'PDF generation libraries are loading. Please try again.'
);
return;
}
// @ts-expect-error TS(2339) FIXME: Property 'value' does not exist on type 'HTMLEleme... Remove this comment to see the full error message
const markdownContent = document.getElementById('md-input').value.trim();
if (!markdownContent) {
showAlert('Input Required', 'Please enter some Markdown text.');
return;
}
showLoader('Generating High-Quality PDF...');
try {
// @ts-expect-error TS(2304) FIXME: Cannot find name 'marked'.
const htmlContent = marked.parse(markdownContent);
// @ts-expect-error TS(2339) FIXME: Property 'value' does not exist on type 'HTMLEleme... Remove this comment to see the full error message
const markdownContent = document.getElementById('md-input').value.trim();
if (!markdownContent) {
showAlert('Input Required', 'Please enter some Markdown text.');
return;
}
showLoader('Generating High-Quality PDF...');
const pageFormat = document.getElementById('page-format').value;
// @ts-expect-error TS(2339) FIXME: Property 'value' does not exist on type 'HTMLEleme... Remove this comment to see the full error message
const orientation = document.getElementById('orientation').value;
// @ts-expect-error TS(2339) FIXME: Property 'value' does not exist on type 'HTMLEleme... Remove this comment to see the full error message
const marginSize = document.getElementById('margin-size').value;
try {
// @ts-expect-error TS(2304) FIXME: Cannot find name 'marked'.
const htmlContent = marked.parse(markdownContent);
// @ts-expect-error TS(2339) FIXME: Property 'value' does not exist on type 'HTMLEleme... Remove this comment to see the full error message
const pageFormat = document.getElementById('page-format').value;
// @ts-expect-error TS(2339) FIXME: Property 'value' does not exist on type 'HTMLEleme... Remove this comment to see the full error message
const orientation = document.getElementById('orientation').value;
// @ts-expect-error TS(2339) FIXME: Property 'value' does not exist on type 'HTMLEleme... Remove this comment to see the full error message
const marginSize = document.getElementById('margin-size').value;
const tempContainer = document.createElement('div');
tempContainer.style.cssText = 'position: absolute; top: -9999px; left: -9999px; width: 800px; padding: 40px; background: white; color: black;';
const styleSheet = document.createElement('style');
styleSheet.textContent = `
const tempContainer = document.createElement('div');
tempContainer.style.cssText =
'position: absolute; top: -9999px; left: -9999px; width: 800px; padding: 40px; background: white; color: black;';
const styleSheet = document.createElement('style');
styleSheet.textContent = `
body { font-family: Helvetica, Arial, sans-serif; line-height: 1.6; font-size: 12px; }
h1, h2, h3 { margin: 20px 0 10px 0; font-weight: 600; border-bottom: 1px solid #eaecef; padding-bottom: .3em; }
h1 { font-size: 2em; } h2 { font-size: 1.5em; }
@@ -42,44 +48,48 @@ export async function mdToPdf() {
table { width: 100%; border-collapse: collapse; } th, td { padding: 6px 13px; border: 1px solid #dfe2e5; }
img { max-width: 100%; }
`;
tempContainer.appendChild(styleSheet);
tempContainer.innerHTML += htmlContent;
document.body.appendChild(tempContainer);
tempContainer.appendChild(styleSheet);
tempContainer.innerHTML += htmlContent;
document.body.appendChild(tempContainer);
const canvas = await html2canvas(tempContainer, { scale: 2, useCORS: true });
document.body.removeChild(tempContainer);
const canvas = await html2canvas(tempContainer, {
scale: 2,
useCORS: true,
});
document.body.removeChild(tempContainer);
// @ts-expect-error TS(2339) FIXME: Property 'jspdf' does not exist on type 'Window & ... Remove this comment to see the full error message
const { jsPDF } = window.jspdf;
const pdf = new jsPDF({ orientation, unit: 'mm', format: pageFormat });
const pageFormats = { 'a4': [210, 297], 'letter': [216, 279] };
const format = pageFormats[pageFormat];
const [pageWidth, pageHeight] = orientation === 'landscape' ? [format[1], format[0]] : format;
const margins = { 'narrow': 10, 'normal': 20, 'wide': 30 };
const margin = margins[marginSize];
const contentWidth = pageWidth - (margin * 2);
const contentHeight = pageHeight - (margin * 2);
const imgData = canvas.toDataURL('image/png');
const imgHeight = (canvas.height * contentWidth) / canvas.width;
// @ts-expect-error TS(2339) FIXME: Property 'jspdf' does not exist on type 'Window & ... Remove this comment to see the full error message
const { jsPDF } = window.jspdf;
const pdf = new jsPDF({ orientation, unit: 'mm', format: pageFormat });
const pageFormats = { a4: [210, 297], letter: [216, 279] };
const format = pageFormats[pageFormat];
const [pageWidth, pageHeight] =
orientation === 'landscape' ? [format[1], format[0]] : format;
const margins = { narrow: 10, normal: 20, wide: 30 };
const margin = margins[marginSize];
const contentWidth = pageWidth - margin * 2;
const contentHeight = pageHeight - margin * 2;
const imgData = canvas.toDataURL('image/png');
const imgHeight = (canvas.height * contentWidth) / canvas.width;
let heightLeft = imgHeight;
let position = margin;
pdf.addImage(imgData, 'PNG', margin, position, contentWidth, imgHeight);
heightLeft -= contentHeight;
let heightLeft = imgHeight;
let position = margin;
pdf.addImage(imgData, 'PNG', margin, position, contentWidth, imgHeight);
heightLeft -= contentHeight;
while (heightLeft > 0) {
position = position - pageHeight;
pdf.addPage();
pdf.addImage(imgData, 'PNG', margin, position, contentWidth, imgHeight);
heightLeft -= contentHeight;
}
const pdfBlob = pdf.output('blob');
downloadFile(pdfBlob, 'markdown-document.pdf');
} catch (error) {
console.error('MD to PDF conversion error:', error);
showAlert('Conversion Error', 'Failed to generate PDF.');
} finally {
hideLoader();
while (heightLeft > 0) {
position = position - pageHeight;
pdf.addPage();
pdf.addImage(imgData, 'PNG', margin, position, contentWidth, imgHeight);
heightLeft -= contentHeight;
}
}
const pdfBlob = pdf.output('blob');
downloadFile(pdfBlob, 'markdown-document.pdf');
} catch (error) {
console.error('MD to PDF conversion error:', error);
showAlert('Conversion Error', 'Failed to generate PDF.');
} finally {
hideLoader();
}
}