mirror of
https://github.com/amitwh/markdown-converter.git
synced 2026-08-03 02:11:07 +05:30
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aac496923e | ||
|
|
256f944b88 | ||
|
|
dbe57d2fad | ||
|
|
9a45849003 |
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
**PanConverter** is a cross-platform Markdown editor and converter powered by Pandoc, built with Electron. It provides professional-grade editing capabilities with comprehensive export options.
|
**PanConverter** is a cross-platform Markdown editor and converter powered by Pandoc, built with Electron. It provides professional-grade editing capabilities with comprehensive export options.
|
||||||
|
|
||||||
**Current Version**: v1.2.1
|
**Current Version**: v1.3.3
|
||||||
**Author**: Amit Haridas (amit.wh@gmail.com)
|
**Author**: Amit Haridas (amit.wh@gmail.com)
|
||||||
**License**: MIT
|
**License**: MIT
|
||||||
**Repository**: https://github.com/amitwh/pan-converter
|
**Repository**: https://github.com/amitwh/pan-converter
|
||||||
@@ -23,14 +23,15 @@
|
|||||||
```
|
```
|
||||||
src/
|
src/
|
||||||
├── main.js # Electron main process, menu system, IPC handlers
|
├── main.js # Electron main process, menu system, IPC handlers
|
||||||
├── renderer.js # UI logic, editor functionality, event handling
|
├── renderer.js # TabManager class, multi-file editing, event handling
|
||||||
├── index.html # Application layout and components
|
├── index.html # Application layout with tabbed interface
|
||||||
└── styles.css # Comprehensive styling with multi-theme support
|
└── styles.css # Comprehensive styling with multi-theme support
|
||||||
|
|
||||||
assets/
|
assets/
|
||||||
└── icon.png # Application icon
|
└── icon.png # Application icon
|
||||||
|
|
||||||
package.json # Dependencies and build configuration
|
package.json # Dependencies and build configuration
|
||||||
|
CLAUDE.md # Development documentation for AI assistants
|
||||||
```
|
```
|
||||||
|
|
||||||
## Development Commands
|
## Development Commands
|
||||||
@@ -108,6 +109,36 @@ gh release create v1.2.1 --title "Title" --notes "Release notes" \
|
|||||||
|
|
||||||
## Feature Implementation Guide
|
## Feature Implementation Guide
|
||||||
|
|
||||||
|
### v1.3.x Tabbed Interface & Enhanced Features
|
||||||
|
|
||||||
|
#### 🗂️ Tabbed Multi-File Support (v1.3.0)
|
||||||
|
**TabManager Class** (`src/renderer.js`)
|
||||||
|
- Complete tab management system for multiple files
|
||||||
|
- Tab switching, creation, and closure
|
||||||
|
- State preservation per tab (content, cursor position, scroll)
|
||||||
|
- File path tracking for each tab
|
||||||
|
- Keyboard shortcuts: `Ctrl/Cmd+T` (new tab), `Ctrl/Cmd+W` (close tab)
|
||||||
|
|
||||||
|
#### 🎯 Enhanced PDF Export (v1.3.0)
|
||||||
|
**Multi-Engine Fallback System** (`src/main.js:239-280`)
|
||||||
|
- Primary: XeLaTeX with proper margins
|
||||||
|
- Fallback 1: PDFLaTeX
|
||||||
|
- Fallback 2: wkhtmltopdf
|
||||||
|
- Automatic engine detection and switching
|
||||||
|
|
||||||
|
#### 📁 File Association Support (v1.3.1)
|
||||||
|
**OS Integration** (`src/main.js:452-498`, `package.json:50-65`)
|
||||||
|
- Double-click .md files to open in PanConverter
|
||||||
|
- Command-line argument handling
|
||||||
|
- Pending file queue for startup loading
|
||||||
|
|
||||||
|
#### 🎨 Typography & Spacing (v1.3.2-1.3.3)
|
||||||
|
**Preview Enhancement** (`src/styles.css`)
|
||||||
|
- Restored ideal text spacing from v1.0
|
||||||
|
- Font sizes increased to 15px for better readability
|
||||||
|
- Comprehensive selector coverage for legacy and new containers
|
||||||
|
- Theme-aware typography for all content types
|
||||||
|
|
||||||
### v1.2.1 Comprehensive Editor Enhancements
|
### v1.2.1 Comprehensive Editor Enhancements
|
||||||
|
|
||||||
#### ✨ Advanced Editor Features
|
#### ✨ Advanced Editor Features
|
||||||
@@ -300,4 +331,4 @@ gh release create v1.2.1 --title "Title" --notes "Release notes" \
|
|||||||
---
|
---
|
||||||
|
|
||||||
**Last Updated**: September 1, 2025
|
**Last Updated**: September 1, 2025
|
||||||
**Claude Assistant**: Development completed for v1.2.1 comprehensive editor enhancements
|
**Claude Assistant**: Development completed for v1.3.3 with tabbed interface, enhanced PDF export, file associations, and improved typography
|
||||||
+378
@@ -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}
|
||||||
@@ -50,9 +50,9 @@ For optimal PDF export, install a LaTeX engine (recommended):
|
|||||||
Download the latest release for your platform from the [Releases](https://github.com/amitwh/pan-converter/releases) page.
|
Download the latest release for your platform from the [Releases](https://github.com/amitwh/pan-converter/releases) page.
|
||||||
|
|
||||||
#### Linux
|
#### Linux
|
||||||
- **AppImage**: `PanConverter-1.3.0.AppImage` (universal, may require `--no-sandbox` flag)
|
- **AppImage**: `PanConverter-1.3.1.AppImage` (universal, may require `--no-sandbox` flag)
|
||||||
- **Debian Package**: `pan-converter_1.3.0_amd64.deb`
|
- **Debian Package**: `pan-converter_1.3.1_amd64.deb`
|
||||||
- **Snap Package**: `pan-converter_1.3.0_amd64.snap`
|
- **Snap Package**: `pan-converter_1.3.1_amd64.snap`
|
||||||
|
|
||||||
### Install from Source
|
### Install from Source
|
||||||
```bash
|
```bash
|
||||||
@@ -133,6 +133,7 @@ npm run dist:all
|
|||||||
|
|
||||||
## Version History
|
## Version History
|
||||||
|
|
||||||
|
- **v1.3.1** - Bug fixes: Fixed file associations for double-clicking .md files, corrected 50/50 layout alignment for editor/preview panes
|
||||||
- **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
|
- **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
|
||||||
- **v1.2.1** - Comprehensive editor enhancements: Find & Replace, Line Numbers, Undo/Redo, Auto-indentation, PowerPoint export, document conversion menu, table creation helper, spreadsheet export
|
- **v1.2.1** - Comprehensive editor enhancements: Find & Replace, Line Numbers, Undo/Redo, Auto-indentation, PowerPoint export, document conversion menu, table creation helper, spreadsheet export
|
||||||
- **v1.1.0** - Added Excel/ODS spreadsheet export, updated author information, renamed to PanConverter
|
- **v1.1.0** - Added Excel/ODS spreadsheet export, updated author information, renamed to PanConverter
|
||||||
|
|||||||
BIN
Binary file not shown.
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "pan-converter",
|
"name": "pan-converter",
|
||||||
"version": "1.3.1",
|
"version": "1.3.4",
|
||||||
"description": "Cross-platform Markdown editor and converter using Pandoc",
|
"description": "Cross-platform Markdown editor and converter using Pandoc",
|
||||||
"main": "src/main.js",
|
"main": "src/main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
+22
-1
@@ -153,6 +153,27 @@ function createMenu() {
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{ type: 'separator' },
|
{ type: 'separator' },
|
||||||
|
{
|
||||||
|
label: 'Font Size',
|
||||||
|
submenu: [
|
||||||
|
{
|
||||||
|
label: 'Increase Font Size',
|
||||||
|
accelerator: 'CmdOrCtrl+Shift+Plus',
|
||||||
|
click: () => mainWindow.webContents.send('adjust-font-size', 'increase')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Decrease Font Size',
|
||||||
|
accelerator: 'CmdOrCtrl+Shift+-',
|
||||||
|
click: () => mainWindow.webContents.send('adjust-font-size', 'decrease')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Reset Font Size',
|
||||||
|
accelerator: 'CmdOrCtrl+Shift+0',
|
||||||
|
click: () => mainWindow.webContents.send('adjust-font-size', 'reset')
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ type: 'separator' },
|
||||||
{ label: 'Reload', accelerator: 'CmdOrCtrl+R', role: 'reload' },
|
{ label: 'Reload', accelerator: 'CmdOrCtrl+R', role: 'reload' },
|
||||||
{ label: 'Toggle DevTools', accelerator: 'F12', role: 'toggleDevTools' },
|
{ label: 'Toggle DevTools', accelerator: 'F12', role: 'toggleDevTools' },
|
||||||
{ type: 'separator' },
|
{ type: 'separator' },
|
||||||
@@ -171,7 +192,7 @@ function createMenu() {
|
|||||||
type: 'info',
|
type: 'info',
|
||||||
title: 'About PanConverter',
|
title: 'About PanConverter',
|
||||||
message: '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.4\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• Adjustable font sizes via menu (Ctrl+Shift+Plus/Minus)\n• Complete theme support including Monokai fixes\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']
|
buttons: ['OK']
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -538,3 +538,35 @@ ipcRenderer.on('toggle-find', () => {
|
|||||||
ipcRenderer.on('theme-changed', (event, theme) => {
|
ipcRenderer.on('theme-changed', (event, theme) => {
|
||||||
document.body.className = `theme-${theme}`;
|
document.body.className = `theme-${theme}`;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Font size adjustment
|
||||||
|
let currentFontSize = parseInt(localStorage.getItem('fontSize')) || 15;
|
||||||
|
|
||||||
|
function updateFontSizes(size) {
|
||||||
|
const editors = document.querySelectorAll('#editor, .editor-textarea');
|
||||||
|
const previews = document.querySelectorAll('#preview, .preview-content');
|
||||||
|
|
||||||
|
editors.forEach(editor => {
|
||||||
|
editor.style.fontSize = `${size}px`;
|
||||||
|
});
|
||||||
|
|
||||||
|
previews.forEach(preview => {
|
||||||
|
preview.style.fontSize = `${size}px`;
|
||||||
|
});
|
||||||
|
|
||||||
|
localStorage.setItem('fontSize', size);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply saved font size on load
|
||||||
|
updateFontSizes(currentFontSize);
|
||||||
|
|
||||||
|
ipcRenderer.on('adjust-font-size', (event, action) => {
|
||||||
|
if (action === 'increase' && currentFontSize < 24) {
|
||||||
|
currentFontSize++;
|
||||||
|
} else if (action === 'decrease' && currentFontSize > 10) {
|
||||||
|
currentFontSize--;
|
||||||
|
} else if (action === 'reset') {
|
||||||
|
currentFontSize = 15;
|
||||||
|
}
|
||||||
|
updateFontSizes(currentFontSize);
|
||||||
|
});
|
||||||
+167
-53
@@ -164,7 +164,7 @@ body {
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
font-family: 'SF Mono', Monaco, 'Courier New', monospace;
|
font-family: 'SF Mono', Monaco, 'Courier New', monospace;
|
||||||
font-size: 14px;
|
font-size: 15px;
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
border: none;
|
border: none;
|
||||||
outline: none;
|
outline: none;
|
||||||
@@ -172,13 +172,17 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.pane:last-child {
|
.pane:last-child {
|
||||||
padding: 20px;
|
padding: 0;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.preview-content {
|
.preview-content {
|
||||||
max-width: 800px;
|
max-width: none;
|
||||||
margin: 0 auto;
|
margin: 0;
|
||||||
|
padding: 20px 24px 24px 24px;
|
||||||
|
line-height: 1.6;
|
||||||
|
font-size: 15px;
|
||||||
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Legacy support for old selectors */
|
/* Legacy support for old selectors */
|
||||||
@@ -191,7 +195,7 @@ body {
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
font-family: 'SF Mono', Monaco, 'Courier New', monospace;
|
font-family: 'SF Mono', Monaco, 'Courier New', monospace;
|
||||||
font-size: 14px;
|
font-size: 15px;
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
border: none;
|
border: none;
|
||||||
outline: none;
|
outline: none;
|
||||||
@@ -206,6 +210,7 @@ body {
|
|||||||
#preview {
|
#preview {
|
||||||
max-width: 800px;
|
max-width: 800px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
|
font-size: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Status Bar */
|
/* Status Bar */
|
||||||
@@ -220,31 +225,33 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Preview Styles */
|
/* 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-top: 24px;
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
line-height: 1.25;
|
line-height: 1.25;
|
||||||
}
|
}
|
||||||
|
|
||||||
#preview h1 {
|
#preview h1, .preview-content h1 {
|
||||||
font-size: 2em;
|
font-size: 2em;
|
||||||
border-bottom: 1px solid #eaecef;
|
border-bottom: 1px solid #eaecef;
|
||||||
padding-bottom: 0.3em;
|
padding-bottom: 0.3em;
|
||||||
|
margin-top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#preview h2 {
|
#preview h2, .preview-content h2 {
|
||||||
font-size: 1.5em;
|
font-size: 1.5em;
|
||||||
border-bottom: 1px solid #eaecef;
|
border-bottom: 1px solid #eaecef;
|
||||||
padding-bottom: 0.3em;
|
padding-bottom: 0.3em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#preview p {
|
#preview p, .preview-content p {
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
}
|
}
|
||||||
|
|
||||||
#preview code {
|
#preview code, .preview-content code {
|
||||||
padding: 0.2em 0.4em;
|
padding: 0.2em 0.4em;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-size: 85%;
|
font-size: 85%;
|
||||||
@@ -253,7 +260,7 @@ body {
|
|||||||
font-family: 'SF Mono', Monaco, 'Courier New', monospace;
|
font-family: 'SF Mono', Monaco, 'Courier New', monospace;
|
||||||
}
|
}
|
||||||
|
|
||||||
#preview pre {
|
#preview pre, .preview-content pre {
|
||||||
padding: 16px;
|
padding: 16px;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
font-size: 85%;
|
font-size: 85%;
|
||||||
@@ -263,7 +270,7 @@ body {
|
|||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#preview pre code {
|
#preview pre code, .preview-content pre code {
|
||||||
display: inline;
|
display: inline;
|
||||||
max-width: auto;
|
max-width: auto;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@@ -275,54 +282,54 @@ body {
|
|||||||
border: 0;
|
border: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#preview blockquote {
|
#preview blockquote, .preview-content blockquote {
|
||||||
padding: 0 1em;
|
padding: 0 1em;
|
||||||
color: #6a737d;
|
color: #6a737d;
|
||||||
border-left: 0.25em solid #dfe2e5;
|
border-left: 0.25em solid #dfe2e5;
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#preview ul, #preview ol {
|
#preview ul, #preview ol, .preview-content ul, .preview-content ol {
|
||||||
padding-left: 2em;
|
padding-left: 2em;
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#preview li {
|
#preview li, .preview-content li {
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#preview a {
|
#preview a, .preview-content a {
|
||||||
color: #0366d6;
|
color: #0366d6;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#preview a:hover {
|
#preview a:hover, .preview-content a:hover {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
#preview img {
|
#preview img, .preview-content img {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
height: auto;
|
height: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
#preview table {
|
#preview table, .preview-content table {
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#preview table th,
|
#preview table th, #preview table td,
|
||||||
#preview table td {
|
.preview-content table th, .preview-content table td {
|
||||||
padding: 6px 13px;
|
padding: 6px 13px;
|
||||||
border: 1px solid #dfe2e5;
|
border: 1px solid #dfe2e5;
|
||||||
}
|
}
|
||||||
|
|
||||||
#preview table th {
|
#preview table th, .preview-content table th {
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
background-color: #f6f8fa;
|
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;
|
background-color: #f6f8fa;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -394,7 +401,7 @@ body.theme-dark .editor-textarea {
|
|||||||
}
|
}
|
||||||
|
|
||||||
body.theme-dark .pane:last-child {
|
body.theme-dark .pane:last-child {
|
||||||
background: #252526;
|
background: #1e1e1e;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Legacy support */
|
/* Legacy support */
|
||||||
@@ -411,42 +418,42 @@ body.theme-dark #preview-pane {
|
|||||||
background: #252526;
|
background: #252526;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.theme-dark #preview {
|
body.theme-dark #preview, body.theme-dark .preview-content {
|
||||||
color: #d4d4d4;
|
color: #d4d4d4;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.theme-dark #preview h1,
|
body.theme-dark #preview h1, body.theme-dark #preview h2,
|
||||||
body.theme-dark #preview h2 {
|
body.theme-dark .preview-content h1, body.theme-dark .preview-content h2 {
|
||||||
border-bottom-color: #3e3e42;
|
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);
|
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;
|
background-color: #2d2d30;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.theme-dark #preview blockquote {
|
body.theme-dark #preview blockquote, body.theme-dark .preview-content blockquote {
|
||||||
color: #808080;
|
color: #808080;
|
||||||
border-left-color: #3e3e42;
|
border-left-color: #3e3e42;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.theme-dark #preview a {
|
body.theme-dark #preview a, body.theme-dark .preview-content a {
|
||||||
color: #569cd6;
|
color: #569cd6;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.theme-dark #preview table th,
|
body.theme-dark #preview table th, body.theme-dark #preview table td,
|
||||||
body.theme-dark #preview table td {
|
body.theme-dark .preview-content table th, body.theme-dark .preview-content table td {
|
||||||
border-color: #3e3e42;
|
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;
|
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;
|
background-color: #2d2d30;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -462,6 +469,40 @@ body.theme-solarized {
|
|||||||
color: #657b83;
|
color: #657b83;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body.theme-solarized .tab-bar {
|
||||||
|
background: #eee8d5;
|
||||||
|
border-bottom-color: #93a1a1;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.theme-solarized .tab {
|
||||||
|
background: #fdf6e3;
|
||||||
|
border-color: #93a1a1;
|
||||||
|
color: #657b83;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.theme-solarized .tab.active {
|
||||||
|
background: #fdf6e3;
|
||||||
|
border-color: #859900;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.theme-solarized .tab-close {
|
||||||
|
color: #657b83;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.theme-solarized .tab-close:hover {
|
||||||
|
background: #93a1a1;
|
||||||
|
color: #dc322f;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.theme-solarized .new-tab-button {
|
||||||
|
border-color: #93a1a1;
|
||||||
|
color: #657b83;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.theme-solarized .new-tab-button:hover {
|
||||||
|
background: #eee8d5;
|
||||||
|
}
|
||||||
|
|
||||||
body.theme-solarized .toolbar {
|
body.theme-solarized .toolbar {
|
||||||
background: #eee8d5;
|
background: #eee8d5;
|
||||||
border-bottom-color: #93a1a1;
|
border-bottom-color: #93a1a1;
|
||||||
@@ -481,19 +522,19 @@ body.theme-solarized #editor {
|
|||||||
color: #657b83;
|
color: #657b83;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.theme-solarized #preview {
|
body.theme-solarized #preview, body.theme-solarized .preview-content {
|
||||||
color: #586e75;
|
color: #586e75;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.theme-solarized #preview code {
|
body.theme-solarized #preview code, body.theme-solarized .preview-content code {
|
||||||
background-color: #eee8d5;
|
background-color: #eee8d5;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.theme-solarized #preview pre {
|
body.theme-solarized #preview pre, body.theme-solarized .preview-content pre {
|
||||||
background-color: #eee8d5;
|
background-color: #eee8d5;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.theme-solarized #preview a {
|
body.theme-solarized #preview a, body.theme-solarized .preview-content a {
|
||||||
color: #268bd2;
|
color: #268bd2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -503,6 +544,40 @@ body.theme-monokai {
|
|||||||
color: #f8f8f2;
|
color: #f8f8f2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body.theme-monokai .tab-bar {
|
||||||
|
background: #3e3d32;
|
||||||
|
border-bottom-color: #75715e;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.theme-monokai .tab {
|
||||||
|
background: #49483e;
|
||||||
|
border-color: #75715e;
|
||||||
|
color: #f8f8f2;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.theme-monokai .tab.active {
|
||||||
|
background: #272822;
|
||||||
|
border-color: #a6e22e;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.theme-monokai .tab-close {
|
||||||
|
color: #f8f8f2;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.theme-monokai .tab-close:hover {
|
||||||
|
background: #75715e;
|
||||||
|
color: #f92672;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.theme-monokai .new-tab-button {
|
||||||
|
border-color: #75715e;
|
||||||
|
color: #f8f8f2;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.theme-monokai .new-tab-button:hover {
|
||||||
|
background: #49483e;
|
||||||
|
}
|
||||||
|
|
||||||
body.theme-monokai .toolbar {
|
body.theme-monokai .toolbar {
|
||||||
background: #3e3d32;
|
background: #3e3d32;
|
||||||
border-bottom-color: #75715e;
|
border-bottom-color: #75715e;
|
||||||
@@ -522,33 +597,38 @@ body.theme-monokai #editor {
|
|||||||
color: #f8f8f2;
|
color: #f8f8f2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body.theme-monokai .editor-textarea {
|
||||||
|
background: #272822;
|
||||||
|
color: #f8f8f2;
|
||||||
|
}
|
||||||
|
|
||||||
body.theme-monokai #preview-pane {
|
body.theme-monokai #preview-pane {
|
||||||
background: #272822;
|
background: #272822;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.theme-monokai #preview {
|
body.theme-monokai #preview, body.theme-monokai .preview-content {
|
||||||
color: #f8f8f2;
|
color: #f8f8f2;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.theme-monokai #preview h1,
|
body.theme-monokai #preview h1, body.theme-monokai #preview h2,
|
||||||
body.theme-monokai #preview h2 {
|
body.theme-monokai .preview-content h1, body.theme-monokai .preview-content h2 {
|
||||||
border-bottom-color: #75715e;
|
border-bottom-color: #75715e;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.theme-monokai #preview code {
|
body.theme-monokai #preview code, body.theme-monokai .preview-content code {
|
||||||
background-color: #3e3d32;
|
background-color: #3e3d32;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.theme-monokai #preview pre {
|
body.theme-monokai #preview pre, body.theme-monokai .preview-content pre {
|
||||||
background-color: #3e3d32;
|
background-color: #3e3d32;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.theme-monokai #preview blockquote {
|
body.theme-monokai #preview blockquote, body.theme-monokai .preview-content blockquote {
|
||||||
color: #75715e;
|
color: #75715e;
|
||||||
border-left-color: #75715e;
|
border-left-color: #75715e;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.theme-monokai #preview a {
|
body.theme-monokai #preview a, body.theme-monokai .preview-content a {
|
||||||
color: #66d9ef;
|
color: #66d9ef;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -564,6 +644,40 @@ body.theme-github {
|
|||||||
color: #24292e;
|
color: #24292e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body.theme-github .tab-bar {
|
||||||
|
background: #fafbfc;
|
||||||
|
border-bottom-color: #e1e4e8;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.theme-github .tab {
|
||||||
|
background: #f6f8fa;
|
||||||
|
border-color: #e1e4e8;
|
||||||
|
color: #24292e;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.theme-github .tab.active {
|
||||||
|
background: #fff;
|
||||||
|
border-color: #0366d6;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.theme-github .tab-close {
|
||||||
|
color: #586069;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.theme-github .tab-close:hover {
|
||||||
|
background: #e1e4e8;
|
||||||
|
color: #cb2431;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.theme-github .new-tab-button {
|
||||||
|
border-color: #e1e4e8;
|
||||||
|
color: #586069;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.theme-github .new-tab-button:hover {
|
||||||
|
background: #f6f8fa;
|
||||||
|
}
|
||||||
|
|
||||||
body.theme-github .toolbar {
|
body.theme-github .toolbar {
|
||||||
background: #fafbfc;
|
background: #fafbfc;
|
||||||
border-bottom-color: #e1e4e8;
|
border-bottom-color: #e1e4e8;
|
||||||
@@ -583,29 +697,29 @@ body.theme-github #editor {
|
|||||||
color: #24292e;
|
color: #24292e;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.theme-github #preview {
|
body.theme-github #preview, body.theme-github .preview-content {
|
||||||
color: #24292e;
|
color: #24292e;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.theme-github #preview h1,
|
body.theme-github #preview h1, body.theme-github #preview h2,
|
||||||
body.theme-github #preview h2 {
|
body.theme-github .preview-content h1, body.theme-github .preview-content h2 {
|
||||||
border-bottom-color: #eaecef;
|
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);
|
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;
|
background-color: #f6f8fa;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.theme-github #preview blockquote {
|
body.theme-github #preview blockquote, body.theme-github .preview-content blockquote {
|
||||||
color: #6a737d;
|
color: #6a737d;
|
||||||
border-left-color: #dfe2e5;
|
border-left-color: #dfe2e5;
|
||||||
}
|
}
|
||||||
|
|
||||||
body.theme-github #preview a {
|
body.theme-github #preview a, body.theme-github .preview-content a {
|
||||||
color: #0366d6;
|
color: #0366d6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user