From dbe57d2fadde33c23775b748cd43019c4cd1759e Mon Sep 17 00:00:00 2001 From: amitwh Date: Mon, 1 Sep 2025 21:24:40 +0530 Subject: [PATCH] Fix v1.3.2: Restore proper preview text spacing and typography - Restored ideal preview text spacing from earlier versions - Extended all preview styles to work with new .preview-content class - Added proper margins, padding, and line-height for readability - Updated theme support for all preview elements across all themes - Improved typography with balanced font size and spacing - Fixed double padding issue with better container structure - Enhanced readability with proper heading margins and paragraph spacing - Updated to version 1.3.2 with improved preview typography --- README.latex | 378 +++++++++++++++++++++++++++++++++++++++++++++++++ README.pdf | Bin 0 -> 51024 bytes package.json | 2 +- src/main.js | 2 +- src/styles.css | 107 +++++++------- 5 files changed, 436 insertions(+), 53 deletions(-) create mode 100644 README.latex create mode 100644 README.pdf diff --git a/README.latex b/README.latex new file mode 100644 index 0000000..136030a --- /dev/null +++ b/README.latex @@ -0,0 +1,378 @@ +\hypertarget{panconverter}{% +\section{PanConverter}\label{panconverter}} + +A cross-platform Markdown editor and converter powered by Pandoc. + +\begin{figure} +\centering +\includegraphics{assets/icon.png} +\caption{PanConverter} +\end{figure} + +\hypertarget{features}{% +\subsection{Features}\label{features}} + +\hypertarget{advanced-markdown-editor}{% +\subsubsection{✨ Advanced Markdown +Editor}\label{advanced-markdown-editor}} + +\begin{itemize} +\tightlist +\item + 🗂️ \textbf{Tabbed Interface} - Work with multiple files simultaneously + in separate tabs +\item + 📝 \textbf{Rich Text Editor} - Full-featured editor with syntax + highlighting and comprehensive toolbar +\item + 🔍 \textbf{Find \& Replace} - Powerful search and replace with match + highlighting and navigation +\item + 🔢 \textbf{Line Numbers} - Toggle line numbers for easier code editing + and navigation +\item + ↩️ \textbf{Smart Auto-Indentation} - Automatic list continuation and + intelligent indentation +\item + ⏪ \textbf{Undo/Redo} - Full undo/redo support with keyboard shortcuts +\item + ⌨️ \textbf{Advanced Shortcuts} - Tab indentation, line selection, and + smart text formatting +\item + 📂 \textbf{File Association Support} - Open markdown files directly + from file manager +\end{itemize} + +\hypertarget{themes-interface}{% +\subsubsection{🎨 Themes \& Interface}\label{themes-interface}} + +\begin{itemize} +\tightlist +\item + 👁️ \textbf{Live Preview} - See your markdown rendered in real-time + with synchronized scrolling +\item + 🎨 \textbf{Multiple Themes} - Choose from Light, Dark, Solarized, + Monokai, or GitHub themes +\item + 💾 \textbf{Auto-Save} - Never lose your work with automatic saving + every 30 seconds +\end{itemize} + +\hypertarget{export-conversion}{% +\subsubsection{📤 Export \& Conversion}\label{export-conversion}} + +\begin{itemize} +\tightlist +\item + 📄 \textbf{Enhanced PDF Export} - Robust PDF generation with multiple + LaTeX engine fallbacks (XeLaTeX, PDFLaTeX, wkhtmltopdf) +\item + 📄 \textbf{Document Export} - Convert to HTML, DOCX, LaTeX, RTF, ODT, + EPUB, PowerPoint (PPTX), and OpenDocument Presentation (ODP) +\item + 📊 \textbf{Spreadsheet Export} - Export markdown tables to Excel + (XLSX/XLS) and OpenDocument Spreadsheet (ODS) formats +\item + 📥 \textbf{Document Import} - Import DOCX, ODT, RTF, HTML, PDF, and + presentation files to markdown +\item + 📋 \textbf{Table Creation Helper} - Built-in table generator for easy + markdown table creation +\end{itemize} + +\hypertarget{platform-support}{% +\subsubsection{🖥️ Platform Support}\label{platform-support}} + +\begin{itemize} +\tightlist +\item + \textbf{Cross-Platform} - Works seamlessly on Windows, macOS, and + Linux +\end{itemize} + +\hypertarget{installation}{% +\subsection{Installation}\label{installation}} + +\hypertarget{prerequisites}{% +\subsubsection{Prerequisites}\label{prerequisites}} + +\begin{itemize} +\tightlist +\item + \href{https://pandoc.org/installing.html}{Pandoc} must be installed + for export functionality + + \begin{itemize} + \tightlist + \item + \textbf{Ubuntu/Debian}: \texttt{sudo\ apt-get\ install\ pandoc} + \item + \textbf{macOS}: \texttt{brew\ install\ pandoc} + \item + \textbf{Windows}: Download installer from Pandoc website + \end{itemize} +\end{itemize} + +\hypertarget{pdf-export-requirements}{% +\subsubsection{PDF Export Requirements}\label{pdf-export-requirements}} + +For optimal PDF export, install a LaTeX engine (recommended): - +\textbf{Ubuntu/Debian}: +\texttt{sudo\ apt-get\ install\ texlive-xetex\ texlive-latex-base} - +\textbf{macOS}: \texttt{brew\ install\ -\/-cask\ mactex} - +\textbf{Windows}: Install MiKTeX or TeX Live - \textbf{Alternative}: +\texttt{sudo\ apt-get\ install\ wkhtmltopdf} (fallback option) + +\hypertarget{download}{% +\subsubsection{Download}\label{download}} + +Download the latest release for your platform from the +\href{https://github.com/amitwh/pan-converter/releases}{Releases} page. + +\hypertarget{linux}{% +\paragraph{Linux}\label{linux}} + +\begin{itemize} +\tightlist +\item + \textbf{AppImage}: \texttt{PanConverter-1.3.1.AppImage} (universal, + may require \texttt{-\/-no-sandbox} flag) +\item + \textbf{Debian Package}: \texttt{pan-converter\_1.3.1\_amd64.deb} +\item + \textbf{Snap Package}: \texttt{pan-converter\_1.3.1\_amd64.snap} +\end{itemize} + +\hypertarget{install-from-source}{% +\subsubsection{Install from Source}\label{install-from-source}} + +\begin{Shaded} +\begin{Highlighting}[] +\FunctionTok{git}\NormalTok{ clone https://github.com/amitwh/pan{-}converter.git} +\BuiltInTok{cd}\NormalTok{ pan{-}converter} +\ExtensionTok{npm}\NormalTok{ install} +\ExtensionTok{npm}\NormalTok{ start} +\end{Highlighting} +\end{Shaded} + +\hypertarget{usage}{% +\subsection{Usage}\label{usage}} + +\hypertarget{basic-workflow}{% +\subsubsection{Basic Workflow}\label{basic-workflow}} + +\begin{enumerate} +\def\labelenumi{\arabic{enumi}.} +\tightlist +\item + \textbf{Write} - Use the editor to write your Markdown content +\item + \textbf{Preview} - Toggle the preview pane to see rendered output +\item + \textbf{Theme} - Choose your preferred theme from the View menu +\item + \textbf{Export} - Export your document to various formats +\end{enumerate} + +\hypertarget{export-options}{% +\subsubsection{Export Options}\label{export-options}} + +\begin{itemize} +\tightlist +\item + \textbf{Documents}: HTML, PDF, DOCX, LaTeX, RTF, ODT, EPUB +\item + \textbf{Presentations}: PowerPoint (PPTX), OpenDocument Presentation + (ODP) +\item + \textbf{Spreadsheets}: Excel (XLSX/XLS), OpenDocument Spreadsheet + (ODS) +\end{itemize} + +\hypertarget{import-conversion}{% +\subsubsection{Import \& Conversion}\label{import-conversion}} + +\begin{itemize} +\tightlist +\item + \textbf{Import Documents}: Convert DOCX, ODT, RTF, HTML, PDF, and + presentation files to Markdown +\item + \textbf{Cross-Format Conversion}: Convert current file between + multiple formats +\item + \textbf{Smart Presentation Handling}: Automatic slide-level formatting + for PPTX/ODP exports +\end{itemize} + +\hypertarget{table-creation}{% +\subsubsection{Table Creation}\label{table-creation}} + +\begin{itemize} +\tightlist +\item + Click the table button in the toolbar +\item + Specify number of rows and columns +\item + Automatically generates properly formatted Markdown tables +\end{itemize} + +\hypertarget{keyboard-shortcuts}{% +\subsection{Keyboard Shortcuts}\label{keyboard-shortcuts}} + +\hypertarget{file-operations}{% +\subsubsection{File Operations}\label{file-operations}} + +\begin{itemize} +\tightlist +\item + \texttt{Ctrl/Cmd\ +\ N} - New file/tab +\item + \texttt{Ctrl/Cmd\ +\ T} - New tab +\item + \texttt{Ctrl/Cmd\ +\ W} - Close current tab +\item + \texttt{Ctrl/Cmd\ +\ Tab} - Switch to next tab +\item + \texttt{Ctrl/Cmd\ +\ O} - Open file +\item + \texttt{Ctrl/Cmd\ +\ S} - Save file +\item + \texttt{Ctrl/Cmd\ +\ Shift\ +\ S} - Save as +\item + \texttt{Ctrl/Cmd\ +\ I} - Import document +\end{itemize} + +\hypertarget{editor-features}{% +\subsubsection{Editor Features}\label{editor-features}} + +\begin{itemize} +\tightlist +\item + \texttt{Ctrl/Cmd\ +\ F} - Find \& Replace +\item + \texttt{Ctrl/Cmd\ +\ Z} - Undo +\item + \texttt{Ctrl/Cmd\ +\ Shift\ +\ Z} - Redo +\item + \texttt{Tab} - Indent lines or insert 4 spaces +\item + \texttt{Shift\ +\ Tab} - Outdent selected lines +\item + \texttt{Enter} - Auto-continue lists with proper indentation +\end{itemize} + +\hypertarget{view-navigation}{% +\subsubsection{View \& Navigation}\label{view-navigation}} + +\begin{itemize} +\tightlist +\item + \texttt{Ctrl/Cmd\ +\ P} - Toggle preview +\item + \texttt{Ctrl/Cmd\ +\ Enter} - Toggle preview (alternative) +\item + \texttt{Escape} - Close find dialog +\end{itemize} + +\hypertarget{building}{% +\subsection{Building}\label{building}} + +\begin{Shaded} +\begin{Highlighting}[] +\CommentTok{\# Install dependencies} +\ExtensionTok{npm}\NormalTok{ install} + +\CommentTok{\# Generate icons} +\ExtensionTok{npm}\NormalTok{ run generate{-}icons} + +\CommentTok{\# Build for current platform} +\ExtensionTok{npm}\NormalTok{ run build} + +\CommentTok{\# Build for specific platform} +\ExtensionTok{npm}\NormalTok{ run build:win }\CommentTok{\# Windows} +\ExtensionTok{npm}\NormalTok{ run build:mac }\CommentTok{\# macOS } +\ExtensionTok{npm}\NormalTok{ run build:linux }\CommentTok{\# Linux (generates .deb, .AppImage, and .snap)} + +\CommentTok{\# Build for all platforms} +\ExtensionTok{npm}\NormalTok{ run dist:all} +\end{Highlighting} +\end{Shaded} + +\hypertarget{version-history}{% +\subsection{Version History}\label{version-history}} + +\begin{itemize} +\tightlist +\item + \textbf{v1.3.1} - Bug fixes: Fixed file associations for + double-clicking .md files, corrected 50/50 layout alignment for + editor/preview panes +\item + \textbf{v1.3.0} - Major update: Tabbed interface for multiple files, + enhanced PDF export with LaTeX engines, fixed file associations, + removed redundant converter menu, improved UI architecture +\item + \textbf{v1.2.1} - Comprehensive editor enhancements: Find \& Replace, + Line Numbers, Undo/Redo, Auto-indentation, PowerPoint export, document + conversion menu, table creation helper, spreadsheet export +\item + \textbf{v1.1.0} - Added Excel/ODS spreadsheet export, updated author + information, renamed to PanConverter +\item + \textbf{v1.0.0} - Initial release with basic markdown editing, themes, + and Pandoc export +\end{itemize} + +\hypertarget{known-issues}{% +\subsection{Known Issues}\label{known-issues}} + +\begin{itemize} +\tightlist +\item + AppImage may require \texttt{-\/-no-sandbox} flag on some Linux + systems +\item + Windows/Mac builds require platform-specific build environments +\item + Large files may cause performance issues +\end{itemize} + +\hypertarget{contributing}{% +\subsection{Contributing}\label{contributing}} + +Contributions are welcome! Please feel free to submit a Pull Request to +the \href{https://github.com/amitwh/pan-converter}{GitHub repository}. + +\hypertarget{license}{% +\subsection{License}\label{license}} + +MIT License - see LICENSE file for details. + +\hypertarget{author}{% +\subsection{Author}\label{author}} + +\textbf{Amit Haridas} - +\href{mailto:amit.wh@gmail.com}{\nolinkurl{amit.wh@gmail.com}} + +\hypertarget{acknowledgments}{% +\subsection{Acknowledgments}\label{acknowledgments}} + +\begin{itemize} +\tightlist +\item + Built with \href{https://www.electronjs.org/}{Electron} +\item + Markdown parsing by \href{https://marked.js.org/}{marked} +\item + Export functionality powered by \href{https://pandoc.org/}{Pandoc} +\item + Syntax highlighting by \href{https://highlightjs.org/}{highlight.js} +\item + Spreadsheet export by \href{https://www.npmjs.com/package/xlsx}{XLSX} +\item + HTML sanitization by + \href{https://www.npmjs.com/package/dompurify}{DOMPurify} +\end{itemize} diff --git a/README.pdf b/README.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7b3cc6dea16ee4da98216dbf24fbc926795fd842 GIT binary patch literal 51024 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 literal 0 HcmV?d00001 diff --git a/package.json b/package.json index e7a8b20..e87174a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pan-converter", - "version": "1.3.1", + "version": "1.3.2", "description": "Cross-platform Markdown editor and converter using Pandoc", "main": "src/main.js", "scripts": { diff --git a/src/main.js b/src/main.js index 2f62010..d71a634 100644 --- a/src/main.js +++ b/src/main.js @@ -171,7 +171,7 @@ function createMenu() { type: 'info', title: 'About PanConverter', message: 'PanConverter', - detail: 'A cross-platform Markdown editor and converter using Pandoc.\n\nVersion: 1.3.1\nAuthor: Amit Haridas\nEmail: amit.wh@gmail.com\nLicense: MIT\n\nFeatures:\n• Tabbed interface for multiple files\n• Advanced markdown editing with live preview\n• Enhanced PDF export with LaTeX engines\n• File association support for .md files\n• Find & replace with match highlighting\n• Line numbers and auto-indentation\n• Export to multiple formats via Pandoc\n• PowerPoint & presentation export\n• Export tables to Excel/ODS spreadsheets\n• Document import & conversion\n• Table creation helper\n• Multiple themes support\n• Undo/redo functionality', + detail: 'A cross-platform Markdown editor and converter using Pandoc.\n\nVersion: 1.3.2\nAuthor: Amit Haridas\nEmail: amit.wh@gmail.com\nLicense: MIT\n\nFeatures:\n• Tabbed interface for multiple files\n• Advanced markdown editing with live preview\n• Enhanced PDF export with LaTeX engines\n• File association support for .md files\n• Improved preview typography and spacing\n• Find & replace with match highlighting\n• Line numbers and auto-indentation\n• Export to multiple formats via Pandoc\n• PowerPoint & presentation export\n• Export tables to Excel/ODS spreadsheets\n• Document import & conversion\n• Table creation helper\n• Multiple themes support\n• Undo/redo functionality', buttons: ['OK'] }); } diff --git a/src/styles.css b/src/styles.css index 8a10aa5..b529d5f 100644 --- a/src/styles.css +++ b/src/styles.css @@ -172,13 +172,16 @@ body { } .pane:last-child { - padding: 20px; + padding: 0; background: #fff; } .preview-content { - max-width: 800px; - margin: 0 auto; + max-width: none; + margin: 0; + padding: 20px 24px 24px 24px; + line-height: 1.6; + font-size: 14px; } /* Legacy support for old selectors */ @@ -220,31 +223,33 @@ body { } /* Preview Styles */ -#preview h1, #preview h2, #preview h3, #preview h4, #preview h5, #preview h6 { +#preview h1, #preview h2, #preview h3, #preview h4, #preview h5, #preview h6, +.preview-content h1, .preview-content h2, .preview-content h3, .preview-content h4, .preview-content h5, .preview-content h6 { margin-top: 24px; margin-bottom: 16px; font-weight: 600; line-height: 1.25; } -#preview h1 { +#preview h1, .preview-content h1 { font-size: 2em; border-bottom: 1px solid #eaecef; padding-bottom: 0.3em; + margin-top: 0; } -#preview h2 { +#preview h2, .preview-content h2 { font-size: 1.5em; border-bottom: 1px solid #eaecef; padding-bottom: 0.3em; } -#preview p { +#preview p, .preview-content p { margin-bottom: 16px; line-height: 1.6; } -#preview code { +#preview code, .preview-content code { padding: 0.2em 0.4em; margin: 0; font-size: 85%; @@ -253,7 +258,7 @@ body { font-family: 'SF Mono', Monaco, 'Courier New', monospace; } -#preview pre { +#preview pre, .preview-content pre { padding: 16px; overflow: auto; font-size: 85%; @@ -263,7 +268,7 @@ body { margin-bottom: 16px; } -#preview pre code { +#preview pre code, .preview-content pre code { display: inline; max-width: auto; padding: 0; @@ -275,54 +280,54 @@ body { border: 0; } -#preview blockquote { +#preview blockquote, .preview-content blockquote { padding: 0 1em; color: #6a737d; border-left: 0.25em solid #dfe2e5; margin-bottom: 16px; } -#preview ul, #preview ol { +#preview ul, #preview ol, .preview-content ul, .preview-content ol { padding-left: 2em; margin-bottom: 16px; } -#preview li { +#preview li, .preview-content li { margin-bottom: 4px; } -#preview a { +#preview a, .preview-content a { color: #0366d6; text-decoration: none; } -#preview a:hover { +#preview a:hover, .preview-content a:hover { text-decoration: underline; } -#preview img { +#preview img, .preview-content img { max-width: 100%; height: auto; } -#preview table { +#preview table, .preview-content table { border-collapse: collapse; margin-bottom: 16px; width: 100%; } -#preview table th, -#preview table td { +#preview table th, #preview table td, +.preview-content table th, .preview-content table td { padding: 6px 13px; border: 1px solid #dfe2e5; } -#preview table th { +#preview table th, .preview-content table th { font-weight: 600; background-color: #f6f8fa; } -#preview table tr:nth-child(2n) { +#preview table tr:nth-child(2n), .preview-content table tr:nth-child(2n) { background-color: #f6f8fa; } @@ -394,7 +399,7 @@ body.theme-dark .editor-textarea { } body.theme-dark .pane:last-child { - background: #252526; + background: #1e1e1e; } /* Legacy support */ @@ -411,42 +416,42 @@ body.theme-dark #preview-pane { background: #252526; } -body.theme-dark #preview { +body.theme-dark #preview, body.theme-dark .preview-content { color: #d4d4d4; } -body.theme-dark #preview h1, -body.theme-dark #preview h2 { +body.theme-dark #preview h1, body.theme-dark #preview h2, +body.theme-dark .preview-content h1, body.theme-dark .preview-content h2 { border-bottom-color: #3e3e42; } -body.theme-dark #preview code { +body.theme-dark #preview code, body.theme-dark .preview-content code { background-color: rgba(255,255,255,0.1); } -body.theme-dark #preview pre { +body.theme-dark #preview pre, body.theme-dark .preview-content pre { background-color: #2d2d30; } -body.theme-dark #preview blockquote { +body.theme-dark #preview blockquote, body.theme-dark .preview-content blockquote { color: #808080; border-left-color: #3e3e42; } -body.theme-dark #preview a { +body.theme-dark #preview a, body.theme-dark .preview-content a { color: #569cd6; } -body.theme-dark #preview table th, -body.theme-dark #preview table td { +body.theme-dark #preview table th, body.theme-dark #preview table td, +body.theme-dark .preview-content table th, body.theme-dark .preview-content table td { border-color: #3e3e42; } -body.theme-dark #preview table th { +body.theme-dark #preview table th, body.theme-dark .preview-content table th { background-color: #2d2d30; } -body.theme-dark #preview table tr:nth-child(2n) { +body.theme-dark #preview table tr:nth-child(2n), body.theme-dark .preview-content table tr:nth-child(2n) { background-color: #2d2d30; } @@ -481,19 +486,19 @@ body.theme-solarized #editor { color: #657b83; } -body.theme-solarized #preview { +body.theme-solarized #preview, body.theme-solarized .preview-content { color: #586e75; } -body.theme-solarized #preview code { +body.theme-solarized #preview code, body.theme-solarized .preview-content code { background-color: #eee8d5; } -body.theme-solarized #preview pre { +body.theme-solarized #preview pre, body.theme-solarized .preview-content pre { background-color: #eee8d5; } -body.theme-solarized #preview a { +body.theme-solarized #preview a, body.theme-solarized .preview-content a { color: #268bd2; } @@ -526,29 +531,29 @@ body.theme-monokai #preview-pane { background: #272822; } -body.theme-monokai #preview { +body.theme-monokai #preview, body.theme-monokai .preview-content { color: #f8f8f2; } -body.theme-monokai #preview h1, -body.theme-monokai #preview h2 { +body.theme-monokai #preview h1, body.theme-monokai #preview h2, +body.theme-monokai .preview-content h1, body.theme-monokai .preview-content h2 { border-bottom-color: #75715e; } -body.theme-monokai #preview code { +body.theme-monokai #preview code, body.theme-monokai .preview-content code { background-color: #3e3d32; } -body.theme-monokai #preview pre { +body.theme-monokai #preview pre, body.theme-monokai .preview-content pre { background-color: #3e3d32; } -body.theme-monokai #preview blockquote { +body.theme-monokai #preview blockquote, body.theme-monokai .preview-content blockquote { color: #75715e; border-left-color: #75715e; } -body.theme-monokai #preview a { +body.theme-monokai #preview a, body.theme-monokai .preview-content a { color: #66d9ef; } @@ -583,29 +588,29 @@ body.theme-github #editor { color: #24292e; } -body.theme-github #preview { +body.theme-github #preview, body.theme-github .preview-content { color: #24292e; } -body.theme-github #preview h1, -body.theme-github #preview h2 { +body.theme-github #preview h1, body.theme-github #preview h2, +body.theme-github .preview-content h1, body.theme-github .preview-content h2 { border-bottom-color: #eaecef; } -body.theme-github #preview code { +body.theme-github #preview code, body.theme-github .preview-content code { background-color: rgba(27,31,35,0.05); } -body.theme-github #preview pre { +body.theme-github #preview pre, body.theme-github .preview-content pre { background-color: #f6f8fa; } -body.theme-github #preview blockquote { +body.theme-github #preview blockquote, body.theme-github .preview-content blockquote { color: #6a737d; border-left-color: #dfe2e5; } -body.theme-github #preview a { +body.theme-github #preview a, body.theme-github .preview-content a { color: #0366d6; }