markdown-to-document-cli 1.1.3 → 1.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -9
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +476 -103
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -3
- package/dist/index.js.map +1 -1
- package/dist/services/CoverService.d.ts +43 -0
- package/dist/services/CoverService.d.ts.map +1 -0
- package/dist/services/CoverService.js +316 -0
- package/dist/services/CoverService.js.map +1 -0
- package/dist/services/MarkdownPreprocessor.d.ts +9 -1
- package/dist/services/MarkdownPreprocessor.d.ts.map +1 -1
- package/dist/services/MarkdownPreprocessor.js +23 -10
- package/dist/services/MarkdownPreprocessor.js.map +1 -1
- package/dist/services/PandocService.d.ts +5 -1
- package/dist/services/PandocService.d.ts.map +1 -1
- package/dist/services/PandocService.js +82 -34
- package/dist/services/PandocService.js.map +1 -1
- package/dist/services/TypographyService.d.ts +11 -1
- package/dist/services/TypographyService.d.ts.map +1 -1
- package/dist/services/TypographyService.js +421 -48
- package/dist/services/TypographyService.js.map +1 -1
- package/dist/types/index.d.ts +37 -11
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +28 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/constants.js +224 -0
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/cssBuilder.d.ts +93 -0
- package/dist/utils/cssBuilder.d.ts.map +1 -0
- package/dist/utils/cssBuilder.js +231 -0
- package/dist/utils/cssBuilder.js.map +1 -0
- package/dist/utils/themeUtils.d.ts +70 -0
- package/dist/utils/themeUtils.d.ts.map +1 -0
- package/dist/utils/themeUtils.js +141 -0
- package/dist/utils/themeUtils.js.map +1 -0
- package/package.json +2 -2
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,kDAAkD;AAElD,MAAM,CAAN,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC1B,qCAAe,CAAA;IACf,mDAA6B,CAAA;IAC7B,2CAAqB,CAAA;IACrB,2CAAqB,CAAA;IACrB,2CAAqB,CAAA;AACzB,CAAC,EANW,kBAAkB,KAAlB,kBAAkB,QAM7B;AAED,MAAM,CAAN,IAAY,eAKX;AALD,WAAY,eAAe;IACvB,sCAAmB,CAAA;IACnB,wCAAqB,CAAA;IACrB,gCAAa,CAAA;IACb,oCAAiB,CAAA;AACrB,CAAC,EALW,eAAe,KAAf,eAAe,QAK1B;AAED,MAAM,CAAN,IAAY,wBAIX;AAJD,WAAY,wBAAwB;IAChC,2CAAe,CAAA;IACf,sDAA0B,CAAA;IAC1B,qDAAyB,CAAA;AAC7B,CAAC,EAJW,wBAAwB,KAAxB,wBAAwB,QAInC;AAED,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACpB,6BAAa,CAAA;IACb,2BAAW,CAAA;IACX,6BAAa,CAAA;AACjB,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEtE,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEtE,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAwOnD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CA+H/D,CAAC;AAEF,eAAO,MAAM,aAAa,UAGzB,CAAC;AAEF,eAAO,MAAM,kBAAkB,UAA+C,CAAC;AAE/E,eAAO,MAAM,cAAc;;;;;;;;;;;;;CAa1B,CAAC"}
|
package/dist/utils/constants.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const WORDS_PER_MINUTE = 200;
|
|
5
5
|
export const COVER_THEMES = {
|
|
6
|
+
// === Basic Themes ===
|
|
6
7
|
apple: {
|
|
7
8
|
id: 'apple',
|
|
8
9
|
name: 'Apple Style',
|
|
@@ -86,9 +87,153 @@ export const COVER_THEMES = {
|
|
|
86
87
|
text: '#000000'
|
|
87
88
|
},
|
|
88
89
|
style: 'minimal'
|
|
90
|
+
},
|
|
91
|
+
// === Professional Themes ===
|
|
92
|
+
corporate: {
|
|
93
|
+
id: 'corporate',
|
|
94
|
+
name: 'Corporate Blue',
|
|
95
|
+
category: 'professional',
|
|
96
|
+
description: '비즈니스 문서용 전문적인 블루 톤',
|
|
97
|
+
colors: {
|
|
98
|
+
primary: '#1e3a5f',
|
|
99
|
+
secondary: '#2c5282',
|
|
100
|
+
accent: '#63b3ed',
|
|
101
|
+
background: '#1a365d',
|
|
102
|
+
text: '#ffffff'
|
|
103
|
+
},
|
|
104
|
+
style: 'modern'
|
|
105
|
+
},
|
|
106
|
+
academic: {
|
|
107
|
+
id: 'academic',
|
|
108
|
+
name: 'Academic',
|
|
109
|
+
category: 'professional',
|
|
110
|
+
description: '학술 논문 및 연구 보고서용',
|
|
111
|
+
colors: {
|
|
112
|
+
primary: '#2d3748',
|
|
113
|
+
secondary: '#4a5568',
|
|
114
|
+
accent: '#805ad5',
|
|
115
|
+
background: '#1a202c',
|
|
116
|
+
text: '#e2e8f0'
|
|
117
|
+
},
|
|
118
|
+
style: 'minimal'
|
|
119
|
+
},
|
|
120
|
+
magazine: {
|
|
121
|
+
id: 'magazine',
|
|
122
|
+
name: 'Magazine',
|
|
123
|
+
category: 'professional',
|
|
124
|
+
description: '잡지 스타일의 세련된 디자인',
|
|
125
|
+
colors: {
|
|
126
|
+
primary: '#c53030',
|
|
127
|
+
secondary: '#9b2c2c',
|
|
128
|
+
accent: '#fed7d7',
|
|
129
|
+
background: '#1a1a1a',
|
|
130
|
+
text: '#ffffff'
|
|
131
|
+
},
|
|
132
|
+
style: 'modern'
|
|
133
|
+
},
|
|
134
|
+
// === Creative Themes ===
|
|
135
|
+
sunset: {
|
|
136
|
+
id: 'sunset',
|
|
137
|
+
name: 'Sunset',
|
|
138
|
+
category: 'creative',
|
|
139
|
+
description: '따뜻한 석양 그라데이션',
|
|
140
|
+
colors: {
|
|
141
|
+
primary: '#f6ad55',
|
|
142
|
+
secondary: '#ed64a6',
|
|
143
|
+
accent: '#fbd38d',
|
|
144
|
+
background: '#2d1b4e',
|
|
145
|
+
text: '#ffffff'
|
|
146
|
+
},
|
|
147
|
+
style: 'gradient'
|
|
148
|
+
},
|
|
149
|
+
ocean: {
|
|
150
|
+
id: 'ocean',
|
|
151
|
+
name: 'Ocean',
|
|
152
|
+
category: 'creative',
|
|
153
|
+
description: '시원한 바다 블루 그라데이션',
|
|
154
|
+
colors: {
|
|
155
|
+
primary: '#0bc5ea',
|
|
156
|
+
secondary: '#3182ce',
|
|
157
|
+
accent: '#90cdf4',
|
|
158
|
+
background: '#0d1b2a',
|
|
159
|
+
text: '#ffffff'
|
|
160
|
+
},
|
|
161
|
+
style: 'gradient'
|
|
162
|
+
},
|
|
163
|
+
aurora: {
|
|
164
|
+
id: 'aurora',
|
|
165
|
+
name: 'Aurora',
|
|
166
|
+
category: 'creative',
|
|
167
|
+
description: '오로라 컬러 그라데이션',
|
|
168
|
+
colors: {
|
|
169
|
+
primary: '#38b2ac',
|
|
170
|
+
secondary: '#805ad5',
|
|
171
|
+
accent: '#68d391',
|
|
172
|
+
background: '#0f0f1a',
|
|
173
|
+
text: '#ffffff'
|
|
174
|
+
},
|
|
175
|
+
style: 'gradient'
|
|
176
|
+
},
|
|
177
|
+
rose_gold: {
|
|
178
|
+
id: 'rose_gold',
|
|
179
|
+
name: 'Rose Gold',
|
|
180
|
+
category: 'creative',
|
|
181
|
+
description: '우아한 로즈골드 톤',
|
|
182
|
+
colors: {
|
|
183
|
+
primary: '#b88b8b',
|
|
184
|
+
secondary: '#8b6b6b',
|
|
185
|
+
accent: '#d4a5a5',
|
|
186
|
+
background: '#2d1f1f',
|
|
187
|
+
text: '#ffeaea'
|
|
188
|
+
},
|
|
189
|
+
style: 'modern'
|
|
190
|
+
},
|
|
191
|
+
// === Seasonal Themes ===
|
|
192
|
+
spring: {
|
|
193
|
+
id: 'spring',
|
|
194
|
+
name: 'Spring',
|
|
195
|
+
category: 'seasonal',
|
|
196
|
+
description: '봄의 생동감 있는 파스텔 톤',
|
|
197
|
+
colors: {
|
|
198
|
+
primary: '#f687b3',
|
|
199
|
+
secondary: '#9ae6b4',
|
|
200
|
+
accent: '#fbb6ce',
|
|
201
|
+
background: '#1a1a2e',
|
|
202
|
+
text: '#ffffff'
|
|
203
|
+
},
|
|
204
|
+
style: 'gradient'
|
|
205
|
+
},
|
|
206
|
+
autumn: {
|
|
207
|
+
id: 'autumn',
|
|
208
|
+
name: 'Autumn',
|
|
209
|
+
category: 'seasonal',
|
|
210
|
+
description: '가을의 따뜻한 단풍 컬러',
|
|
211
|
+
colors: {
|
|
212
|
+
primary: '#dd6b20',
|
|
213
|
+
secondary: '#c05621',
|
|
214
|
+
accent: '#fbd38d',
|
|
215
|
+
background: '#1a0f0a',
|
|
216
|
+
text: '#fffaf0'
|
|
217
|
+
},
|
|
218
|
+
style: 'modern'
|
|
219
|
+
},
|
|
220
|
+
winter: {
|
|
221
|
+
id: 'winter',
|
|
222
|
+
name: 'Winter',
|
|
223
|
+
category: 'seasonal',
|
|
224
|
+
description: '겨울의 차가운 블루/화이트 톤',
|
|
225
|
+
colors: {
|
|
226
|
+
primary: '#a0aec0',
|
|
227
|
+
secondary: '#e2e8f0',
|
|
228
|
+
accent: '#bee3f8',
|
|
229
|
+
background: '#1a202c',
|
|
230
|
+
text: '#ffffff'
|
|
231
|
+
},
|
|
232
|
+
style: 'minimal'
|
|
89
233
|
}
|
|
90
234
|
};
|
|
91
235
|
export const TYPOGRAPHY_PRESETS = {
|
|
236
|
+
// === Basic Presets ===
|
|
92
237
|
novel: {
|
|
93
238
|
id: 'novel',
|
|
94
239
|
name: '소설',
|
|
@@ -132,6 +277,85 @@ export const TYPOGRAPHY_PRESETS = {
|
|
|
132
277
|
textAlign: 'justify',
|
|
133
278
|
paragraphSpacing: 8,
|
|
134
279
|
features: ['balanced', 'readable', 'responsive']
|
|
280
|
+
},
|
|
281
|
+
// === Content-focused Presets ===
|
|
282
|
+
text_heavy: {
|
|
283
|
+
id: 'text_heavy',
|
|
284
|
+
name: '텍스트 중심',
|
|
285
|
+
description: '긴 글 위주 문서용 - 12pt, 촘촘한 줄간격, 좁은 여백',
|
|
286
|
+
fontSize: 12,
|
|
287
|
+
lineHeight: 1.5,
|
|
288
|
+
fontFamily: 'Noto Serif CJK KR, serif',
|
|
289
|
+
textAlign: 'justify',
|
|
290
|
+
paragraphSpacing: 3,
|
|
291
|
+
features: ['compact-text', 'indentation', 'hyphenation']
|
|
292
|
+
},
|
|
293
|
+
table_heavy: {
|
|
294
|
+
id: 'table_heavy',
|
|
295
|
+
name: '테이블 중심',
|
|
296
|
+
description: '표가 많은 문서용 - 11pt, 넓은 표 영역, 작은 폰트',
|
|
297
|
+
fontSize: 11,
|
|
298
|
+
lineHeight: 1.4,
|
|
299
|
+
fontFamily: 'Noto Sans CJK KR, sans-serif',
|
|
300
|
+
textAlign: 'left',
|
|
301
|
+
paragraphSpacing: 5,
|
|
302
|
+
features: ['wide-tables', 'compact-margins', 'structured']
|
|
303
|
+
},
|
|
304
|
+
image_heavy: {
|
|
305
|
+
id: 'image_heavy',
|
|
306
|
+
name: '이미지 중심',
|
|
307
|
+
description: '이미지가 많은 문서용 - 13pt, 이미지 최대화, 캡션 강조',
|
|
308
|
+
fontSize: 13,
|
|
309
|
+
lineHeight: 1.5,
|
|
310
|
+
fontFamily: 'Noto Sans CJK KR, sans-serif',
|
|
311
|
+
textAlign: 'left',
|
|
312
|
+
paragraphSpacing: 8,
|
|
313
|
+
features: ['large-images', 'captions', 'visual-focus']
|
|
314
|
+
},
|
|
315
|
+
balanced: {
|
|
316
|
+
id: 'balanced',
|
|
317
|
+
name: '균형 레이아웃',
|
|
318
|
+
description: '텍스트/테이블/이미지 균형 배치 - 12pt, 최적화된 가독성',
|
|
319
|
+
fontSize: 12,
|
|
320
|
+
lineHeight: 1.55,
|
|
321
|
+
fontFamily: 'Noto Sans CJK KR, sans-serif',
|
|
322
|
+
textAlign: 'left',
|
|
323
|
+
paragraphSpacing: 6,
|
|
324
|
+
features: ['balanced', 'adaptive', 'professional']
|
|
325
|
+
},
|
|
326
|
+
// === Document Type Presets ===
|
|
327
|
+
report: {
|
|
328
|
+
id: 'report',
|
|
329
|
+
name: '보고서',
|
|
330
|
+
description: '비즈니스 보고서용 - 11pt, 공식적, 구조화된 레이아웃',
|
|
331
|
+
fontSize: 11,
|
|
332
|
+
lineHeight: 1.5,
|
|
333
|
+
fontFamily: 'Noto Sans CJK KR, sans-serif',
|
|
334
|
+
textAlign: 'justify',
|
|
335
|
+
paragraphSpacing: 7,
|
|
336
|
+
features: ['formal', 'structured', 'toc-friendly']
|
|
337
|
+
},
|
|
338
|
+
manual: {
|
|
339
|
+
id: 'manual',
|
|
340
|
+
name: '매뉴얼',
|
|
341
|
+
description: '기술 문서/매뉴얼용 - 11pt, 코드 블록, 단계별 설명 강조',
|
|
342
|
+
fontSize: 11,
|
|
343
|
+
lineHeight: 1.6,
|
|
344
|
+
fontFamily: 'Noto Sans CJK KR, sans-serif',
|
|
345
|
+
textAlign: 'left',
|
|
346
|
+
paragraphSpacing: 8,
|
|
347
|
+
features: ['code-blocks', 'numbered-steps', 'callouts']
|
|
348
|
+
},
|
|
349
|
+
magazine: {
|
|
350
|
+
id: 'magazine',
|
|
351
|
+
name: '매거진',
|
|
352
|
+
description: '잡지 스타일 - 11pt, 드롭캡, 시각적 강조, 세련된 디자인',
|
|
353
|
+
fontSize: 11,
|
|
354
|
+
lineHeight: 1.5,
|
|
355
|
+
fontFamily: 'Noto Serif CJK KR, serif',
|
|
356
|
+
textAlign: 'justify',
|
|
357
|
+
paragraphSpacing: 5,
|
|
358
|
+
features: ['drop-cap', 'pull-quotes', 'visual-emphasis']
|
|
135
359
|
}
|
|
136
360
|
};
|
|
137
361
|
export const CALLOUT_TYPES = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSS Builder Utilities
|
|
3
|
+
* Centralized CSS generation for PDF and EPUB formats
|
|
4
|
+
*/
|
|
5
|
+
export declare const FONT_STACKS: {
|
|
6
|
+
readonly serif: "\"Noto Serif KR\", \"Noto Serif CJK KR\", \"Source Han Serif KR\", \"Batang\", \"바탕\", \"AppleMyungjo\", serif";
|
|
7
|
+
readonly sansSerif: "\"Noto Sans KR\", \"Noto Sans CJK KR\", \"Source Han Sans KR\", \"Malgun Gothic\", \"맑은 고딕\", \"Apple SD Gothic Neo\", sans-serif";
|
|
8
|
+
readonly monospace: "\"Noto Sans Mono KR\", \"Noto Sans Mono CJK KR\", \"D2Coding\", \"Source Code Pro\", monospace";
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Generate Google Fonts import for PDF
|
|
12
|
+
*/
|
|
13
|
+
export declare function buildFontImport(): string;
|
|
14
|
+
/**
|
|
15
|
+
* Generate box-sizing reset
|
|
16
|
+
*/
|
|
17
|
+
export declare function buildBoxSizingReset(): string;
|
|
18
|
+
/**
|
|
19
|
+
* Generate image styling CSS with responsive sizing for EPUB
|
|
20
|
+
* Uses !important to override inline styles from markdown source
|
|
21
|
+
*/
|
|
22
|
+
export declare function buildImageStyles(): string[];
|
|
23
|
+
/**
|
|
24
|
+
* Generate table styling CSS
|
|
25
|
+
*/
|
|
26
|
+
export declare function buildTableStyles(): string[];
|
|
27
|
+
/**
|
|
28
|
+
* Generate code block styling CSS
|
|
29
|
+
*/
|
|
30
|
+
export declare function buildCodeStyles(monospaceFont?: string): string[];
|
|
31
|
+
/**
|
|
32
|
+
* Generate blockquote styling CSS
|
|
33
|
+
*/
|
|
34
|
+
export declare function buildBlockquoteStyles(): string;
|
|
35
|
+
export interface PageMargins {
|
|
36
|
+
top: string;
|
|
37
|
+
bottom: string;
|
|
38
|
+
left: string;
|
|
39
|
+
right: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Generate @page rules for PDF
|
|
43
|
+
*/
|
|
44
|
+
export declare function buildPdfPageRules(margins: PageMargins): string[];
|
|
45
|
+
/**
|
|
46
|
+
* Generate PDF-specific body styles
|
|
47
|
+
*/
|
|
48
|
+
export declare function buildPdfBodyExtras(): string[];
|
|
49
|
+
/**
|
|
50
|
+
* Generate PDF break-inside rules
|
|
51
|
+
*/
|
|
52
|
+
export declare function buildPdfBreakRules(): string;
|
|
53
|
+
/**
|
|
54
|
+
* Generate PDF-specific image styling for proper page layout
|
|
55
|
+
*/
|
|
56
|
+
export declare function buildPdfImageStyles(): string[];
|
|
57
|
+
/**
|
|
58
|
+
* Hide Pandoc title block for PDF
|
|
59
|
+
*/
|
|
60
|
+
export declare function buildPdfTitleBlockHide(): string;
|
|
61
|
+
export interface HeadingScale {
|
|
62
|
+
h1: number;
|
|
63
|
+
h2: number;
|
|
64
|
+
h3: number;
|
|
65
|
+
h4: number;
|
|
66
|
+
h5: number;
|
|
67
|
+
h6: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Generate heading CSS for all levels
|
|
71
|
+
*/
|
|
72
|
+
export declare function buildHeadingStyles(scale: HeadingScale, format?: 'epub' | 'pdf'): string[];
|
|
73
|
+
export interface BodyStyleOptions {
|
|
74
|
+
fontFamily: string;
|
|
75
|
+
fontSize: string;
|
|
76
|
+
lineHeight: number;
|
|
77
|
+
justification: 'left' | 'justify';
|
|
78
|
+
hyphenation: boolean;
|
|
79
|
+
format: 'epub' | 'pdf';
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Generate body CSS
|
|
83
|
+
*/
|
|
84
|
+
export declare function buildBodyStyles(options: BodyStyleOptions): string[];
|
|
85
|
+
/**
|
|
86
|
+
* Generate paragraph CSS
|
|
87
|
+
*/
|
|
88
|
+
export declare function buildParagraphStyles(spacing: string, textIndent?: string): string[];
|
|
89
|
+
/**
|
|
90
|
+
* Build common element styles (images, tables, code, blockquotes)
|
|
91
|
+
*/
|
|
92
|
+
export declare function buildCommonElementStyles(format?: 'epub' | 'pdf'): string[];
|
|
93
|
+
//# sourceMappingURL=cssBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cssBuilder.d.ts","sourceRoot":"","sources":["../../src/utils/cssBuilder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,eAAO,MAAM,WAAW;;;;CAId,CAAC;AAIX;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAe3C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAW3C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,aAAa,GAAE,MAA8B,GAAG,MAAM,EAAE,CAMvF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAID,MAAM,WAAW,WAAW;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,EAAE,CA0BhE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAO7C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAG3C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAa9C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAID,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,YAAY,EACnB,MAAM,GAAE,MAAM,GAAG,KAAc,GAChC,MAAM,EAAE,CA2BV;AAID,MAAM,WAAW,gBAAgB;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAuBnE;AAID;;GAEG;AACH,wBAAgB,oBAAoB,CAChC,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,GACpB,MAAM,EAAE,CAaV;AAID;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,GAAE,MAAM,GAAG,KAAc,GAAG,MAAM,EAAE,CAgBlF"}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSS Builder Utilities
|
|
3
|
+
* Centralized CSS generation for PDF and EPUB formats
|
|
4
|
+
*/
|
|
5
|
+
// ============ Font Stacks ============
|
|
6
|
+
export const FONT_STACKS = {
|
|
7
|
+
serif: '"Noto Serif KR", "Noto Serif CJK KR", "Source Han Serif KR", "Batang", "바탕", "AppleMyungjo", serif',
|
|
8
|
+
sansSerif: '"Noto Sans KR", "Noto Sans CJK KR", "Source Han Sans KR", "Malgun Gothic", "맑은 고딕", "Apple SD Gothic Neo", sans-serif',
|
|
9
|
+
monospace: '"Noto Sans Mono KR", "Noto Sans Mono CJK KR", "D2Coding", "Source Code Pro", monospace',
|
|
10
|
+
};
|
|
11
|
+
// ============ Common CSS Snippets ============
|
|
12
|
+
/**
|
|
13
|
+
* Generate Google Fonts import for PDF
|
|
14
|
+
*/
|
|
15
|
+
export function buildFontImport() {
|
|
16
|
+
return `@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;700;900&family=Noto+Serif+KR:wght@300;400;700&display=swap');`;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Generate box-sizing reset
|
|
20
|
+
*/
|
|
21
|
+
export function buildBoxSizingReset() {
|
|
22
|
+
return '* { box-sizing: border-box; }';
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Generate image styling CSS with responsive sizing for EPUB
|
|
26
|
+
* Uses !important to override inline styles from markdown source
|
|
27
|
+
*/
|
|
28
|
+
export function buildImageStyles() {
|
|
29
|
+
return [
|
|
30
|
+
'/* Responsive image styling - override inline styles */',
|
|
31
|
+
// Keep aspect ratio and avoid over-constraining layout (prevents big blank gaps)
|
|
32
|
+
'img { max-width: 100% !important; max-height: 70vh !important; width: auto !important; height: auto !important; object-fit: contain; display: block; margin: 0.6em auto; }',
|
|
33
|
+
'/* Override fixed-width containers for e-reader compatibility */',
|
|
34
|
+
'div[style*="width:"], div[style*="width :"] { max-width: 100% !important; width: auto !important; }',
|
|
35
|
+
'/* Image containers should be fluid */',
|
|
36
|
+
'figure { margin: 0.8em 0; text-align: center; max-width: 100%; }',
|
|
37
|
+
'figcaption { font-size: 0.9em; color: #666; margin-top: 0.5em; font-style: italic; }',
|
|
38
|
+
'/* Hide iframe embeds that don\'t work in EPUB */',
|
|
39
|
+
'iframe { display: none !important; }',
|
|
40
|
+
'/* Center images in anchor links */',
|
|
41
|
+
'a > img { display: block; margin: 0 auto; }'
|
|
42
|
+
];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Generate table styling CSS
|
|
46
|
+
*/
|
|
47
|
+
export function buildTableStyles() {
|
|
48
|
+
return [
|
|
49
|
+
'table { width: 100%; border-collapse: collapse; margin: 1.2em 0; }',
|
|
50
|
+
'th, td { border: 1px solid #ddd; padding: 0.5em; text-align: left; }',
|
|
51
|
+
'th { background-color: #f9f9f9; }',
|
|
52
|
+
'/* Table pagination: allow table to split across pages with repeated header */',
|
|
53
|
+
'thead { display: table-header-group; }',
|
|
54
|
+
'tfoot { display: table-footer-group; }',
|
|
55
|
+
'tr { break-inside: avoid; page-break-inside: avoid; }',
|
|
56
|
+
'table { break-inside: auto; page-break-inside: auto; }'
|
|
57
|
+
];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Generate code block styling CSS
|
|
61
|
+
*/
|
|
62
|
+
export function buildCodeStyles(monospaceFont = FONT_STACKS.monospace) {
|
|
63
|
+
return [
|
|
64
|
+
`code { font-family: ${monospaceFont}; background-color: #f4f4f4; padding: 0.2em 0.4em; border-radius: 3px; font-size: 0.9em; }`,
|
|
65
|
+
'pre { background-color: #f4f4f4; padding: 1em; border-radius: 5px; overflow-x: auto; margin: 1.5em 0; }',
|
|
66
|
+
'pre code { background-color: transparent; padding: 0; font-size: 0.85em; }'
|
|
67
|
+
];
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Generate blockquote styling CSS
|
|
71
|
+
*/
|
|
72
|
+
export function buildBlockquoteStyles() {
|
|
73
|
+
return 'blockquote { margin: 1.5em 0; padding: 0.5em 1em; border-left: 4px solid #ddd; color: #666; font-style: italic; }';
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Generate @page rules for PDF
|
|
77
|
+
*/
|
|
78
|
+
export function buildPdfPageRules(margins) {
|
|
79
|
+
return [
|
|
80
|
+
'/* PDF Page Rules */',
|
|
81
|
+
'@page {',
|
|
82
|
+
' size: A4;',
|
|
83
|
+
` margin: ${margins.top} ${margins.right} ${margins.bottom} ${margins.left};`,
|
|
84
|
+
'',
|
|
85
|
+
' @bottom-center {',
|
|
86
|
+
' content: counter(page);',
|
|
87
|
+
' font-size: 10pt;',
|
|
88
|
+
' color: #666;',
|
|
89
|
+
' }',
|
|
90
|
+
'}',
|
|
91
|
+
'',
|
|
92
|
+
'/* Cover page: no margins, no page number */',
|
|
93
|
+
'@page :first {',
|
|
94
|
+
' margin: 0;',
|
|
95
|
+
' @top-center { content: none; }',
|
|
96
|
+
' @bottom-center { content: none; }',
|
|
97
|
+
'}',
|
|
98
|
+
'',
|
|
99
|
+
'/* Blank pages: no page number */',
|
|
100
|
+
'@page :blank {',
|
|
101
|
+
' @bottom-center { content: none; }',
|
|
102
|
+
'}'
|
|
103
|
+
];
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Generate PDF-specific body styles
|
|
107
|
+
*/
|
|
108
|
+
export function buildPdfBodyExtras() {
|
|
109
|
+
return [
|
|
110
|
+
'word-break: keep-all;',
|
|
111
|
+
'overflow-wrap: break-word;',
|
|
112
|
+
'orphans: 3;',
|
|
113
|
+
'widows: 3;'
|
|
114
|
+
];
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Generate PDF break-inside rules
|
|
118
|
+
*/
|
|
119
|
+
export function buildPdfBreakRules() {
|
|
120
|
+
// Avoid breaking inside blockquotes/pre, but allow tables/images to flow across pages to prevent large blank gaps
|
|
121
|
+
return 'blockquote, pre { break-inside: avoid; }';
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Generate PDF-specific image styling for proper page layout
|
|
125
|
+
*/
|
|
126
|
+
export function buildPdfImageStyles() {
|
|
127
|
+
return [
|
|
128
|
+
'/* PDF-specific image constraints */',
|
|
129
|
+
// Allow images to be placed naturally with text; constrain height to avoid overflow
|
|
130
|
+
'img { max-height: 70vh !important; object-fit: contain; }',
|
|
131
|
+
'/* Ensure images don\'t overflow page width with margins */',
|
|
132
|
+
'img { max-width: calc(100% - 2em) !important; }',
|
|
133
|
+
'/* Image containers should be fluid */',
|
|
134
|
+
'figure { max-width: 100%; }',
|
|
135
|
+
'/* Add spacing before/after images for better layout */',
|
|
136
|
+
'p + figure, p + img { margin-top: 0.8em; }',
|
|
137
|
+
'figure + p, img + p { margin-top: 0.8em; }'
|
|
138
|
+
];
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Hide Pandoc title block for PDF
|
|
142
|
+
*/
|
|
143
|
+
export function buildPdfTitleBlockHide() {
|
|
144
|
+
return '#title-block-header { display: none; }';
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Generate heading CSS for all levels
|
|
148
|
+
*/
|
|
149
|
+
export function buildHeadingStyles(scale, format = 'epub') {
|
|
150
|
+
const css = [];
|
|
151
|
+
for (const [level, size] of Object.entries(scale)) {
|
|
152
|
+
css.push(`${level} {`);
|
|
153
|
+
css.push(` font-size: ${size}em;`);
|
|
154
|
+
css.push(' margin-top: 1.5em;');
|
|
155
|
+
css.push(' margin-bottom: 0.5em;');
|
|
156
|
+
css.push(' font-weight: bold;');
|
|
157
|
+
css.push(' line-height: 1.2;');
|
|
158
|
+
css.push(' color: #1a1a1a;');
|
|
159
|
+
if (format === 'pdf') {
|
|
160
|
+
if (level === 'h1') {
|
|
161
|
+
css.push(' break-before: page;');
|
|
162
|
+
}
|
|
163
|
+
if (level === 'h1' || level === 'h2' || level === 'h3') {
|
|
164
|
+
css.push(' page-break-after: avoid;');
|
|
165
|
+
css.push(' break-after: avoid;');
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
css.push('}');
|
|
169
|
+
css.push('');
|
|
170
|
+
}
|
|
171
|
+
return css;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Generate body CSS
|
|
175
|
+
*/
|
|
176
|
+
export function buildBodyStyles(options) {
|
|
177
|
+
const css = [
|
|
178
|
+
'body {',
|
|
179
|
+
` font-family: ${options.fontFamily};`,
|
|
180
|
+
` font-size: ${options.fontSize};`,
|
|
181
|
+
` line-height: ${options.lineHeight};`,
|
|
182
|
+
` text-align: ${options.justification};`,
|
|
183
|
+
' color: #333;',
|
|
184
|
+
' margin: 0;'
|
|
185
|
+
];
|
|
186
|
+
if (options.format === 'pdf') {
|
|
187
|
+
css.push(...buildPdfBodyExtras().map(s => ' ' + s));
|
|
188
|
+
}
|
|
189
|
+
if (options.hyphenation) {
|
|
190
|
+
css.push(' hyphens: auto;');
|
|
191
|
+
css.push(' -webkit-hyphens: auto;');
|
|
192
|
+
css.push(' -ms-hyphens: auto;');
|
|
193
|
+
}
|
|
194
|
+
css.push('}');
|
|
195
|
+
return css;
|
|
196
|
+
}
|
|
197
|
+
// ============ Paragraph Styles ============
|
|
198
|
+
/**
|
|
199
|
+
* Generate paragraph CSS
|
|
200
|
+
*/
|
|
201
|
+
export function buildParagraphStyles(spacing, textIndent) {
|
|
202
|
+
const css = [
|
|
203
|
+
'p {',
|
|
204
|
+
' margin-top: 0;',
|
|
205
|
+
` margin-bottom: ${spacing};`
|
|
206
|
+
];
|
|
207
|
+
if (textIndent) {
|
|
208
|
+
css.push(` text-indent: ${textIndent};`);
|
|
209
|
+
}
|
|
210
|
+
css.push('}');
|
|
211
|
+
return css;
|
|
212
|
+
}
|
|
213
|
+
// ============ Composite Builders ============
|
|
214
|
+
/**
|
|
215
|
+
* Build common element styles (images, tables, code, blockquotes)
|
|
216
|
+
*/
|
|
217
|
+
export function buildCommonElementStyles(format = 'epub') {
|
|
218
|
+
const css = [
|
|
219
|
+
'',
|
|
220
|
+
'/* Common Element Styles */',
|
|
221
|
+
...buildImageStyles(),
|
|
222
|
+
buildBlockquoteStyles(),
|
|
223
|
+
];
|
|
224
|
+
if (format === 'pdf') {
|
|
225
|
+
css.push(buildPdfBreakRules());
|
|
226
|
+
}
|
|
227
|
+
css.push(...buildCodeStyles());
|
|
228
|
+
css.push(...buildTableStyles());
|
|
229
|
+
return css;
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=cssBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cssBuilder.js","sourceRoot":"","sources":["../../src/utils/cssBuilder.ts"],"names":[],"mappings":"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"}
|