Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -25,6 +25,7 @@ DEFAULT_STYLES = {
|
|
25 |
"text_color": "#333333",
|
26 |
"background_color": "#ffffff",
|
27 |
"code_bg_color": "#f4f4f4",
|
|
|
28 |
"custom_css": ""
|
29 |
}
|
30 |
|
@@ -49,6 +50,7 @@ def index():
|
|
49 |
"text_color": request.form.get("text_color", DEFAULT_STYLES["text_color"]),
|
50 |
"background_color": request.form.get("background_color", DEFAULT_STYLES["background_color"]),
|
51 |
"code_bg_color": request.form.get("code_bg_color", DEFAULT_STYLES["code_bg_color"]),
|
|
|
52 |
"custom_css": request.form.get("custom_css", DEFAULT_STYLES["custom_css"])
|
53 |
}
|
54 |
include_fontawesome = "include_fontawesome" in request.form
|
@@ -82,11 +84,6 @@ def index():
|
|
82 |
padding: 25px;
|
83 |
display: inline-block; /* Helps imgkit to crop correctly */
|
84 |
}}
|
85 |
-
pre, code {{
|
86 |
-
background: {styles['code_bg_color']};
|
87 |
-
padding: 10px;
|
88 |
-
border-radius: 5px;
|
89 |
-
}}
|
90 |
table {{
|
91 |
border-collapse: collapse;
|
92 |
width: 100%;
|
@@ -103,6 +100,36 @@ def index():
|
|
103 |
max-width: 100%;
|
104 |
height: auto;
|
105 |
}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
/* User-defined custom CSS */
|
107 |
{styles['custom_css']}
|
108 |
</style>
|
@@ -167,15 +194,15 @@ def index():
|
|
167 |
h1 { text-align: center; color: #333; }
|
168 |
form { background: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); }
|
169 |
textarea { width: 100%; height: 300px; margin-bottom: 10px; box-sizing: border-box; border: 1px solid #ccc; border-radius: 4px; padding: 10px; }
|
170 |
-
.controls { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 20px; }
|
171 |
-
.main-actions
|
172 |
fieldset { border: 1px solid #ddd; padding: 15px; border-radius: 5px; margin-top: 20px; }
|
173 |
-
legend { font-weight: bold; color: #555; }
|
174 |
.style-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 15px; }
|
175 |
.style-grid > div { display: flex; flex-direction: column; }
|
176 |
-
label { margin-bottom: 5px; color: #666; }
|
177 |
select, input[type="number"], input[type="color"], input[type="text"] { padding: 8px; border: 1px solid #ccc; border-radius: 4px; }
|
178 |
-
button { padding: 12px 20px; border: none; border-radius: 4px; cursor: pointer; font-size: 16px; }
|
179 |
.generate-btn { background-color: #007BFF; color: white; }
|
180 |
.generate-btn:hover { background-color: #0056b3; }
|
181 |
.download-btn { background-color: #28a745; color: white; }
|
@@ -188,7 +215,7 @@ def index():
|
|
188 |
<body>
|
189 |
<h1>Advanced Markdown to PNG/HTML Converter</h1>
|
190 |
<form method="post">
|
191 |
-
<textarea name="markdown_text" placeholder="Paste your Markdown here...">{{
|
192 |
<div class="info">
|
193 |
<b>Tip:</b> To include images, use full public URLs (e.g., `https://.../image.png`).
|
194 |
To use icons, check "Include Font Awesome" below and use tags like `<i class="fa-solid fa-star"></i>`.
|
@@ -223,6 +250,10 @@ def index():
|
|
223 |
<label for="code_bg_color">Code BG Color:</label>
|
224 |
<input type="color" id="code_bg_color" name="code_bg_color" value="{{ styles.code_bg_color }}">
|
225 |
</div>
|
|
|
|
|
|
|
|
|
226 |
</div>
|
227 |
<div>
|
228 |
<input type="checkbox" id="include_fontawesome" name="include_fontawesome" {% if include_fontawesome %}checked{% endif %}>
|
|
|
25 |
"text_color": "#333333",
|
26 |
"background_color": "#ffffff",
|
27 |
"code_bg_color": "#f4f4f4",
|
28 |
+
"code_padding": "15", # Default padding for code blocks
|
29 |
"custom_css": ""
|
30 |
}
|
31 |
|
|
|
50 |
"text_color": request.form.get("text_color", DEFAULT_STYLES["text_color"]),
|
51 |
"background_color": request.form.get("background_color", DEFAULT_STYLES["background_color"]),
|
52 |
"code_bg_color": request.form.get("code_bg_color", DEFAULT_STYLES["code_bg_color"]),
|
53 |
+
"code_padding": request.form.get("code_padding", DEFAULT_STYLES["code_padding"]),
|
54 |
"custom_css": request.form.get("custom_css", DEFAULT_STYLES["custom_css"])
|
55 |
}
|
56 |
include_fontawesome = "include_fontawesome" in request.form
|
|
|
84 |
padding: 25px;
|
85 |
display: inline-block; /* Helps imgkit to crop correctly */
|
86 |
}}
|
|
|
|
|
|
|
|
|
|
|
87 |
table {{
|
88 |
border-collapse: collapse;
|
89 |
width: 100%;
|
|
|
100 |
max-width: 100%;
|
101 |
height: auto;
|
102 |
}}
|
103 |
+
|
104 |
+
/* --- Enhanced Code Block Styling --- */
|
105 |
+
|
106 |
+
/* Style for the code block container */
|
107 |
+
pre {{
|
108 |
+
background: {styles['code_bg_color']};
|
109 |
+
padding: {styles['code_padding']}px;
|
110 |
+
border-radius: 5px;
|
111 |
+
white-space: pre-wrap; /* Wrap long lines of code */
|
112 |
+
word-wrap: break-word; /* Break long words if necessary */
|
113 |
+
}}
|
114 |
+
|
115 |
+
/* Style for inline `code` snippets */
|
116 |
+
code {{
|
117 |
+
background: {styles['code_bg_color']};
|
118 |
+
padding: 0.2em 0.4em;
|
119 |
+
margin: 0;
|
120 |
+
font-size: 85%;
|
121 |
+
border-radius: 3px;
|
122 |
+
}}
|
123 |
+
|
124 |
+
/* Reset styling for <code> inside <pre> to avoid double-styling */
|
125 |
+
pre > code {{
|
126 |
+
padding: 0;
|
127 |
+
margin: 0;
|
128 |
+
font-size: inherit;
|
129 |
+
background: transparent;
|
130 |
+
border-radius: 0;
|
131 |
+
}}
|
132 |
+
|
133 |
/* User-defined custom CSS */
|
134 |
{styles['custom_css']}
|
135 |
</style>
|
|
|
194 |
h1 { text-align: center; color: #333; }
|
195 |
form { background: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); }
|
196 |
textarea { width: 100%; height: 300px; margin-bottom: 10px; box-sizing: border-box; border: 1px solid #ccc; border-radius: 4px; padding: 10px; }
|
197 |
+
.controls { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 20px; margin-top: 20px; }
|
198 |
+
.main-actions { display: flex; flex-wrap: wrap; gap: 15px; align-items: center; }
|
199 |
fieldset { border: 1px solid #ddd; padding: 15px; border-radius: 5px; margin-top: 20px; }
|
200 |
+
legend { font-weight: bold; color: #555; padding: 0 10px; }
|
201 |
.style-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 15px; }
|
202 |
.style-grid > div { display: flex; flex-direction: column; }
|
203 |
+
label { margin-bottom: 5px; color: #666; font-size: 14px; }
|
204 |
select, input[type="number"], input[type="color"], input[type="text"] { padding: 8px; border: 1px solid #ccc; border-radius: 4px; }
|
205 |
+
button { padding: 12px 20px; border: none; border-radius: 4px; cursor: pointer; font-size: 16px; transition: background-color 0.2s; }
|
206 |
.generate-btn { background-color: #007BFF; color: white; }
|
207 |
.generate-btn:hover { background-color: #0056b3; }
|
208 |
.download-btn { background-color: #28a745; color: white; }
|
|
|
215 |
<body>
|
216 |
<h1>Advanced Markdown to PNG/HTML Converter</h1>
|
217 |
<form method="post">
|
218 |
+
<textarea name="markdown_text" placeholder="Paste your Markdown here...">{{ markdown_text }}</textarea>
|
219 |
<div class="info">
|
220 |
<b>Tip:</b> To include images, use full public URLs (e.g., `https://.../image.png`).
|
221 |
To use icons, check "Include Font Awesome" below and use tags like `<i class="fa-solid fa-star"></i>`.
|
|
|
250 |
<label for="code_bg_color">Code BG Color:</label>
|
251 |
<input type="color" id="code_bg_color" name="code_bg_color" value="{{ styles.code_bg_color }}">
|
252 |
</div>
|
253 |
+
<div>
|
254 |
+
<label for="code_padding">Code Padding (px):</label>
|
255 |
+
<input type="number" id="code_padding" name="code_padding" value="{{ styles.code_padding }}">
|
256 |
+
</div>
|
257 |
</div>
|
258 |
<div>
|
259 |
<input type="checkbox" id="include_fontawesome" name="include_fontawesome" {% if include_fontawesome %}checked{% endif %}>
|