md2cv 1.0.0
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/CHANGELOG.md +19 -0
- package/LICENSE +674 -0
- package/README.md +219 -0
- package/dist/bin.d.ts +6 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +10 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli/index.d.ts +50 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +278 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/generator/index.d.ts +36 -0
- package/dist/generator/index.d.ts.map +1 -0
- package/dist/generator/index.js +302 -0
- package/dist/generator/index.js.map +1 -0
- package/dist/generator/resume_en.d.ts +22 -0
- package/dist/generator/resume_en.d.ts.map +1 -0
- package/dist/generator/resume_en.js +524 -0
- package/dist/generator/resume_en.js.map +1 -0
- package/dist/generator/resume_ja.d.ts +22 -0
- package/dist/generator/resume_ja.d.ts.map +1 -0
- package/dist/generator/resume_ja.js +440 -0
- package/dist/generator/resume_ja.js.map +1 -0
- package/dist/generator/rirekisho/components.d.ts +83 -0
- package/dist/generator/rirekisho/components.d.ts.map +1 -0
- package/dist/generator/rirekisho/components.js +405 -0
- package/dist/generator/rirekisho/components.js.map +1 -0
- package/dist/generator/rirekisho/data.d.ts +18 -0
- package/dist/generator/rirekisho/data.d.ts.map +1 -0
- package/dist/generator/rirekisho/data.js +274 -0
- package/dist/generator/rirekisho/data.js.map +1 -0
- package/dist/generator/rirekisho/index.d.ts +20 -0
- package/dist/generator/rirekisho/index.d.ts.map +1 -0
- package/dist/generator/rirekisho/index.js +67 -0
- package/dist/generator/rirekisho/index.js.map +1 -0
- package/dist/generator/rirekisho/layout.d.ts +20 -0
- package/dist/generator/rirekisho/layout.d.ts.map +1 -0
- package/dist/generator/rirekisho/layout.js +354 -0
- package/dist/generator/rirekisho/layout.js.map +1 -0
- package/dist/generator/rirekisho/styles.d.ts +9 -0
- package/dist/generator/rirekisho/styles.d.ts.map +1 -0
- package/dist/generator/rirekisho/styles.js +362 -0
- package/dist/generator/rirekisho/styles.js.map +1 -0
- package/dist/generator/rirekisho/types.d.ts +163 -0
- package/dist/generator/rirekisho/types.d.ts.map +1 -0
- package/dist/generator/rirekisho/types.js +80 -0
- package/dist/generator/rirekisho/types.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/index.d.ts +21 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +639 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/types/config.d.ts +64 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +5 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/errors.d.ts +78 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +146 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +9 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/metadata.d.ts +55 -0
- package/dist/types/metadata.d.ts.map +1 -0
- package/dist/types/metadata.js +136 -0
- package/dist/types/metadata.js.map +1 -0
- package/dist/types/result.d.ts +50 -0
- package/dist/types/result.d.ts.map +1 -0
- package/dist/types/result.js +74 -0
- package/dist/types/result.js.map +1 -0
- package/dist/types/sections.d.ts +168 -0
- package/dist/types/sections.d.ts.map +1 -0
- package/dist/types/sections.js +122 -0
- package/dist/types/sections.js.map +1 -0
- package/dist/validator/index.d.ts +20 -0
- package/dist/validator/index.d.ts.map +1 -0
- package/dist/validator/index.js +67 -0
- package/dist/validator/index.js.map +1 -0
- package/examples/example-cv-en.md +77 -0
- package/examples/example-cv-ja.md +116 -0
- package/examples/sample-photo.png +0 -0
- package/package.json +93 -0
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Japanese CV Generator (職務経歴書スタイル)
|
|
3
|
+
* Generates HTML for Japanese CV format with Mincho font
|
|
4
|
+
*/
|
|
5
|
+
import { isSectionValidForFormat } from '../types/sections.js';
|
|
6
|
+
/**
|
|
7
|
+
* Page size dimensions in mm
|
|
8
|
+
*/
|
|
9
|
+
const PAGE_SIZES = {
|
|
10
|
+
a3: { width: 420, height: 297 },
|
|
11
|
+
a4: { width: 210, height: 297 },
|
|
12
|
+
b4: { width: 364, height: 257 },
|
|
13
|
+
b5: { width: 176, height: 250 },
|
|
14
|
+
letter: { width: 215.9, height: 279.4 },
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Default number of columns for skills grid
|
|
18
|
+
*/
|
|
19
|
+
const DEFAULT_SKILLS_COLUMNS = 3;
|
|
20
|
+
/**
|
|
21
|
+
* Escape HTML special characters
|
|
22
|
+
*/
|
|
23
|
+
function escapeHtml(text) {
|
|
24
|
+
return text
|
|
25
|
+
.replace(/&/g, '&')
|
|
26
|
+
.replace(/</g, '<')
|
|
27
|
+
.replace(/>/g, '>')
|
|
28
|
+
.replace(/"/g, '"')
|
|
29
|
+
.replace(/'/g, ''');
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Format date for Japanese display
|
|
33
|
+
*/
|
|
34
|
+
function formatDate(date) {
|
|
35
|
+
if (!date)
|
|
36
|
+
return '';
|
|
37
|
+
return `${date.getFullYear()}年${date.getMonth() + 1}月`;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Format end date which can be Date or 'present'
|
|
41
|
+
*/
|
|
42
|
+
function formatEndDate(end) {
|
|
43
|
+
if (!end)
|
|
44
|
+
return '';
|
|
45
|
+
if (end === 'present')
|
|
46
|
+
return '現在';
|
|
47
|
+
return formatDate(end);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Format date range
|
|
51
|
+
*/
|
|
52
|
+
function formatDateRange(start, end) {
|
|
53
|
+
const startStr = formatDate(start);
|
|
54
|
+
const endStr = formatEndDate(end);
|
|
55
|
+
if (startStr && endStr)
|
|
56
|
+
return `${startStr} - ${endStr}`;
|
|
57
|
+
if (startStr)
|
|
58
|
+
return startStr;
|
|
59
|
+
return '';
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get current date in Japanese format (yyyy年mm月dd日現在)
|
|
63
|
+
*/
|
|
64
|
+
function getCurrentDateJa() {
|
|
65
|
+
const now = new Date();
|
|
66
|
+
return `${now.getFullYear()}年${now.getMonth() + 1}月${now.getDate()}日現在`;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Generate base CSS styles
|
|
70
|
+
*/
|
|
71
|
+
function generateStyles(paperSize) {
|
|
72
|
+
const size = PAGE_SIZES[paperSize];
|
|
73
|
+
return `
|
|
74
|
+
@page {
|
|
75
|
+
size: ${size.width}mm ${size.height}mm;
|
|
76
|
+
margin: 15mm;
|
|
77
|
+
}
|
|
78
|
+
* {
|
|
79
|
+
margin: 0;
|
|
80
|
+
padding: 0;
|
|
81
|
+
box-sizing: border-box;
|
|
82
|
+
}
|
|
83
|
+
body {
|
|
84
|
+
font-family: "Yu Mincho", "Hiragino Mincho Pro", "MS Mincho", serif;
|
|
85
|
+
font-size: 10pt;
|
|
86
|
+
line-height: 1.6;
|
|
87
|
+
color: #333;
|
|
88
|
+
background: #fff;
|
|
89
|
+
max-width: 800px;
|
|
90
|
+
margin: 0 auto;
|
|
91
|
+
padding: 20px;
|
|
92
|
+
}
|
|
93
|
+
header {
|
|
94
|
+
margin-bottom: 20px;
|
|
95
|
+
padding-bottom: 15px;
|
|
96
|
+
}
|
|
97
|
+
.document-title {
|
|
98
|
+
text-align: center;
|
|
99
|
+
font-size: 18pt;
|
|
100
|
+
font-weight: bold;
|
|
101
|
+
margin-bottom: 12px;
|
|
102
|
+
color: #000;
|
|
103
|
+
}
|
|
104
|
+
.header-info {
|
|
105
|
+
display: flex;
|
|
106
|
+
flex-direction: column;
|
|
107
|
+
align-items: flex-end;
|
|
108
|
+
}
|
|
109
|
+
.header-name {
|
|
110
|
+
font-size: 10pt;
|
|
111
|
+
color: #000;
|
|
112
|
+
}
|
|
113
|
+
.header-date {
|
|
114
|
+
font-size: 10pt;
|
|
115
|
+
color: #333;
|
|
116
|
+
}
|
|
117
|
+
section {
|
|
118
|
+
margin-bottom: 16px;
|
|
119
|
+
page-break-inside: avoid;
|
|
120
|
+
break-inside: avoid;
|
|
121
|
+
}
|
|
122
|
+
h2 {
|
|
123
|
+
font-size: 12pt;
|
|
124
|
+
font-weight: bold;
|
|
125
|
+
border-bottom: 1px solid #333;
|
|
126
|
+
padding-bottom: 3px;
|
|
127
|
+
margin-bottom: 10px;
|
|
128
|
+
color: #000;
|
|
129
|
+
}
|
|
130
|
+
.entry {
|
|
131
|
+
margin-bottom: 12px;
|
|
132
|
+
page-break-inside: avoid;
|
|
133
|
+
break-inside: avoid;
|
|
134
|
+
}
|
|
135
|
+
.entry-header {
|
|
136
|
+
display: flex;
|
|
137
|
+
justify-content: space-between;
|
|
138
|
+
align-items: baseline;
|
|
139
|
+
flex-wrap: wrap;
|
|
140
|
+
}
|
|
141
|
+
.entry-title {
|
|
142
|
+
font-weight: bold;
|
|
143
|
+
color: #000;
|
|
144
|
+
}
|
|
145
|
+
.cert-item {
|
|
146
|
+
font-size: 9pt;
|
|
147
|
+
color: #000;
|
|
148
|
+
margin-bottom: 2px;
|
|
149
|
+
}
|
|
150
|
+
.lang-item {
|
|
151
|
+
font-size: 9pt;
|
|
152
|
+
}
|
|
153
|
+
.entry-subtitle {
|
|
154
|
+
font-size: 9pt;
|
|
155
|
+
color: #333;
|
|
156
|
+
}
|
|
157
|
+
.entry-date {
|
|
158
|
+
color: #333;
|
|
159
|
+
font-size: 9pt;
|
|
160
|
+
}
|
|
161
|
+
.entry-summary {
|
|
162
|
+
margin-top: 4px;
|
|
163
|
+
font-size: 9pt;
|
|
164
|
+
}
|
|
165
|
+
ul {
|
|
166
|
+
margin-left: 18px;
|
|
167
|
+
margin-top: 4px;
|
|
168
|
+
}
|
|
169
|
+
li {
|
|
170
|
+
margin-bottom: 2px;
|
|
171
|
+
font-size: 9pt;
|
|
172
|
+
}
|
|
173
|
+
p {
|
|
174
|
+
margin-bottom: 8px;
|
|
175
|
+
font-size: 10pt;
|
|
176
|
+
}
|
|
177
|
+
.skills-grid {
|
|
178
|
+
display: grid;
|
|
179
|
+
grid-template-columns: 1fr 1fr 1fr;
|
|
180
|
+
gap: 2px 20px;
|
|
181
|
+
}
|
|
182
|
+
.skill-item {
|
|
183
|
+
font-size: 9pt;
|
|
184
|
+
}
|
|
185
|
+
.skill-category {
|
|
186
|
+
margin-bottom: 4px;
|
|
187
|
+
font-size: 9pt;
|
|
188
|
+
}
|
|
189
|
+
.skill-category-name {
|
|
190
|
+
font-weight: bold;
|
|
191
|
+
}
|
|
192
|
+
@media print {
|
|
193
|
+
body {
|
|
194
|
+
padding: 0;
|
|
195
|
+
max-width: none;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
`;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Render education section
|
|
202
|
+
* Format:
|
|
203
|
+
* <school> <start - end>
|
|
204
|
+
* <degree> — <location>
|
|
205
|
+
* <details>
|
|
206
|
+
*/
|
|
207
|
+
function renderEducation(entries) {
|
|
208
|
+
return entries
|
|
209
|
+
.map((entry) => {
|
|
210
|
+
const dateRange = formatDateRange(entry.start, entry.end);
|
|
211
|
+
let html = '<div class="entry">';
|
|
212
|
+
// Title line: <school> —— <date range>
|
|
213
|
+
html += '<div class="entry-header">';
|
|
214
|
+
html += `<span class="entry-title">${escapeHtml(entry.school)}</span>`;
|
|
215
|
+
if (dateRange) {
|
|
216
|
+
html += `<span class="entry-date">${escapeHtml(dateRange)}</span>`;
|
|
217
|
+
}
|
|
218
|
+
html += '</div>';
|
|
219
|
+
// Subtitle line: <degree> — <location>
|
|
220
|
+
const subtitleParts = [];
|
|
221
|
+
if (entry.degree) {
|
|
222
|
+
subtitleParts.push(escapeHtml(entry.degree));
|
|
223
|
+
}
|
|
224
|
+
if (entry.location) {
|
|
225
|
+
subtitleParts.push(escapeHtml(entry.location));
|
|
226
|
+
}
|
|
227
|
+
if (subtitleParts.length > 0) {
|
|
228
|
+
html += `<div class="entry-subtitle">${subtitleParts.join(' — ')}</div>`;
|
|
229
|
+
}
|
|
230
|
+
// Details
|
|
231
|
+
if (entry.details && entry.details.length > 0) {
|
|
232
|
+
html += '<ul>';
|
|
233
|
+
for (const detail of entry.details) {
|
|
234
|
+
html += `<li>${escapeHtml(detail)}</li>`;
|
|
235
|
+
}
|
|
236
|
+
html += '</ul>';
|
|
237
|
+
}
|
|
238
|
+
html += '</div>';
|
|
239
|
+
return html;
|
|
240
|
+
})
|
|
241
|
+
.join('\n');
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Render experience section
|
|
245
|
+
* Format:
|
|
246
|
+
* <company> —— <title> <start - end>
|
|
247
|
+
* <summary>
|
|
248
|
+
* <highlights>
|
|
249
|
+
*/
|
|
250
|
+
function renderExperience(entries) {
|
|
251
|
+
return entries
|
|
252
|
+
.flatMap((entry) => {
|
|
253
|
+
return entry.roles.map((role) => {
|
|
254
|
+
const dateRange = formatDateRange(role.start, role.end);
|
|
255
|
+
let html = '<div class="entry">';
|
|
256
|
+
// Title line: <company> —— <title> <date range>
|
|
257
|
+
html += '<div class="entry-header">';
|
|
258
|
+
html += `<span class="entry-title">${escapeHtml(entry.company)} —— ${escapeHtml(role.title)}</span>`;
|
|
259
|
+
if (dateRange) {
|
|
260
|
+
html += `<span class="entry-date">${escapeHtml(dateRange)}</span>`;
|
|
261
|
+
}
|
|
262
|
+
html += '</div>';
|
|
263
|
+
// Summary
|
|
264
|
+
if (role.summary && role.summary.length > 0) {
|
|
265
|
+
html += '<div class="entry-summary">';
|
|
266
|
+
html += role.summary.map((s) => escapeHtml(s)).join(' ');
|
|
267
|
+
html += '</div>';
|
|
268
|
+
}
|
|
269
|
+
// Highlights
|
|
270
|
+
if (role.highlights && role.highlights.length > 0) {
|
|
271
|
+
html += '<ul>';
|
|
272
|
+
for (const highlight of role.highlights) {
|
|
273
|
+
html += `<li>${escapeHtml(highlight)}</li>`;
|
|
274
|
+
}
|
|
275
|
+
html += '</ul>';
|
|
276
|
+
}
|
|
277
|
+
html += '</div>';
|
|
278
|
+
return html;
|
|
279
|
+
});
|
|
280
|
+
})
|
|
281
|
+
.join('\n');
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Render certifications section
|
|
285
|
+
*/
|
|
286
|
+
function renderCertifications(entries) {
|
|
287
|
+
return entries
|
|
288
|
+
.map((entry) => {
|
|
289
|
+
let html = `<div class="cert-item">• ${escapeHtml(entry.name)}`;
|
|
290
|
+
if (entry.date) {
|
|
291
|
+
html += ` (${escapeHtml(formatDate(entry.date))})`;
|
|
292
|
+
}
|
|
293
|
+
html += '</div>';
|
|
294
|
+
return html;
|
|
295
|
+
})
|
|
296
|
+
.join('\n');
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Render skills section - supports grid and categorized formats
|
|
300
|
+
*/
|
|
301
|
+
function renderSkills(entries, options) {
|
|
302
|
+
// Check if categorized format (entries have non-empty category with description)
|
|
303
|
+
const isCategorized = options.format === 'categorized' ||
|
|
304
|
+
entries.some(e => e.category && (e.description || e.items.length > 0));
|
|
305
|
+
if (isCategorized && entries.some(e => e.category)) {
|
|
306
|
+
// Categorized format: • <category>: <description or items>
|
|
307
|
+
return entries
|
|
308
|
+
.filter(e => e.category)
|
|
309
|
+
.map((entry) => {
|
|
310
|
+
const content = entry.description || entry.items.join('、');
|
|
311
|
+
return `<div class="skill-category">• <span class="skill-category-name">${escapeHtml(entry.category)}:</span> ${escapeHtml(content)}</div>`;
|
|
312
|
+
})
|
|
313
|
+
.join('\n');
|
|
314
|
+
}
|
|
315
|
+
// Grid format: flatten all items
|
|
316
|
+
const allItems = [];
|
|
317
|
+
for (const entry of entries) {
|
|
318
|
+
for (const item of entry.items) {
|
|
319
|
+
allItems.push(item);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
if (allItems.length === 0) {
|
|
323
|
+
return '';
|
|
324
|
+
}
|
|
325
|
+
const columns = options.columns ?? DEFAULT_SKILLS_COLUMNS;
|
|
326
|
+
let html = `<div class="skills-grid" style="grid-template-columns: repeat(${columns}, 1fr);">`;
|
|
327
|
+
for (const item of allItems) {
|
|
328
|
+
html += `<div class="skill-item">• ${escapeHtml(item)}</div>`;
|
|
329
|
+
}
|
|
330
|
+
html += '</div>';
|
|
331
|
+
return html;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Render skills from list content as grid
|
|
335
|
+
*/
|
|
336
|
+
function renderSkillsList(items, columns = DEFAULT_SKILLS_COLUMNS) {
|
|
337
|
+
if (items.length === 0) {
|
|
338
|
+
return '';
|
|
339
|
+
}
|
|
340
|
+
let html = `<div class="skills-grid" style="grid-template-columns: repeat(${columns}, 1fr);">`;
|
|
341
|
+
for (const item of items) {
|
|
342
|
+
html += `<div class="skill-item">• ${escapeHtml(item)}</div>`;
|
|
343
|
+
}
|
|
344
|
+
html += '</div>';
|
|
345
|
+
return html;
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Render languages section
|
|
349
|
+
*/
|
|
350
|
+
function renderLanguages(entries) {
|
|
351
|
+
return entries
|
|
352
|
+
.map((entry) => {
|
|
353
|
+
let html = `<span class="lang-item">${escapeHtml(entry.language)}`;
|
|
354
|
+
if (entry.level) {
|
|
355
|
+
html += ` (${escapeHtml(entry.level)})`;
|
|
356
|
+
}
|
|
357
|
+
html += '</span>';
|
|
358
|
+
return html;
|
|
359
|
+
})
|
|
360
|
+
.join(' • ');
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Render section content
|
|
364
|
+
*/
|
|
365
|
+
function renderSectionContent(content, sectionId) {
|
|
366
|
+
switch (content.type) {
|
|
367
|
+
case 'text':
|
|
368
|
+
return `<p>${escapeHtml(content.text)}</p>`;
|
|
369
|
+
case 'list':
|
|
370
|
+
// For skills section, render as grid
|
|
371
|
+
if (sectionId === 'skills') {
|
|
372
|
+
return renderSkillsList(content.items);
|
|
373
|
+
}
|
|
374
|
+
return ('<ul>' + content.items.map((item) => `<li>${escapeHtml(item)}</li>`).join('\n') + '</ul>');
|
|
375
|
+
case 'education':
|
|
376
|
+
return renderEducation(content.entries);
|
|
377
|
+
case 'experience':
|
|
378
|
+
return renderExperience(content.entries);
|
|
379
|
+
case 'certifications':
|
|
380
|
+
return renderCertifications(content.entries);
|
|
381
|
+
case 'skills':
|
|
382
|
+
return renderSkills(content.entries, content.options);
|
|
383
|
+
case 'languages':
|
|
384
|
+
return renderLanguages(content.entries);
|
|
385
|
+
case 'table':
|
|
386
|
+
return ('<ul>' +
|
|
387
|
+
content.rows.map((row) => `<li>${escapeHtml(row.content)}</li>`).join('\n') +
|
|
388
|
+
'</ul>');
|
|
389
|
+
default:
|
|
390
|
+
return '';
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Filter sections by format validity, preserving input order
|
|
395
|
+
* Note: Section ordering is now handled by filterAndOrderSections in generator/index.ts
|
|
396
|
+
*/
|
|
397
|
+
function filterSections(sections) {
|
|
398
|
+
return sections.filter(section => isSectionValidForFormat(section.id, 'cv'));
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* Generate Japanese HTML CV
|
|
402
|
+
*/
|
|
403
|
+
export function generateCVJaHTML(cv, options) {
|
|
404
|
+
const styles = generateStyles(options.paperSize);
|
|
405
|
+
const name = cv.metadata.name_ja ?? cv.metadata.name;
|
|
406
|
+
const currentDate = getCurrentDateJa();
|
|
407
|
+
// Filter sections (order is preserved from input)
|
|
408
|
+
const filteredSections = filterSections(cv.sections);
|
|
409
|
+
const sectionsHtml = filteredSections
|
|
410
|
+
.map((section) => {
|
|
411
|
+
return `
|
|
412
|
+
<section>
|
|
413
|
+
<h2>${escapeHtml(section.title)}</h2>
|
|
414
|
+
${renderSectionContent(section.content, section.id)}
|
|
415
|
+
</section>`;
|
|
416
|
+
})
|
|
417
|
+
.join('\n');
|
|
418
|
+
return `<!DOCTYPE html>
|
|
419
|
+
<html lang="ja">
|
|
420
|
+
<head>
|
|
421
|
+
<meta charset="UTF-8">
|
|
422
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
423
|
+
<title>${escapeHtml(name)} - 職務経歴書</title>
|
|
424
|
+
<style>${styles}</style>
|
|
425
|
+
</head>
|
|
426
|
+
<body>
|
|
427
|
+
<header>
|
|
428
|
+
<div class="document-title">職務経歴書</div>
|
|
429
|
+
<div class="header-info">
|
|
430
|
+
<div class="header-name">${escapeHtml(name)}</div>
|
|
431
|
+
<div class="header-date">${escapeHtml(currentDate)}</div>
|
|
432
|
+
</div>
|
|
433
|
+
</header>
|
|
434
|
+
<main>
|
|
435
|
+
${sectionsHtml}
|
|
436
|
+
</main>
|
|
437
|
+
</body>
|
|
438
|
+
</html>`;
|
|
439
|
+
}
|
|
440
|
+
//# sourceMappingURL=resume_ja.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resume_ja.js","sourceRoot":"","sources":["../../src/generator/resume_ja.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAc/D;;GAEG;AACH,MAAM,UAAU,GAAyD;IACvE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;IAC/B,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;IAC/B,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;IAC/B,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;IAC/B,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;CACxC,CAAC;AAEF;;GAEG;AACH,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC;;GAEG;AACH,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI;SACR,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,IAAsB;IACxC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,GAAiC;IACtD,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,KAAuB,EAAE,GAAiC;IACjF,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,QAAQ,IAAI,MAAM;QAAE,OAAO,GAAG,QAAQ,MAAM,MAAM,EAAE,CAAC;IACzD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB;IACvB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,OAAO,GAAG,GAAG,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,SAAoB;IAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAEnC,OAAO;;cAEK,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2HtC,CAAC;AACJ,CAAC;AAGD;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,OAAkC;IACzD,OAAO,OAAO;SACX,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1D,IAAI,IAAI,GAAG,qBAAqB,CAAC;QAEjC,uCAAuC;QACvC,IAAI,IAAI,4BAA4B,CAAC;QACrC,IAAI,IAAI,6BAA6B,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;QACvE,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,IAAI,4BAA4B,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC;QACrE,CAAC;QACD,IAAI,IAAI,QAAQ,CAAC;QAEjB,uCAAuC;QACvC,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,IAAI,+BAA+B,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC3E,CAAC;QAED,UAAU;QACV,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,IAAI,IAAI,MAAM,CAAC;YACf,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnC,IAAI,IAAI,OAAO,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;YAC3C,CAAC;YACD,IAAI,IAAI,OAAO,CAAC;QAClB,CAAC;QACD,IAAI,IAAI,QAAQ,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,OAAmC;IAC3D,OAAO,OAAO;SACX,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACjB,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC9B,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACxD,IAAI,IAAI,GAAG,qBAAqB,CAAC;YAEjC,mDAAmD;YACnD,IAAI,IAAI,4BAA4B,CAAC;YACrC,IAAI,IAAI,6BAA6B,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YACrG,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,IAAI,4BAA4B,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC;YACrE,CAAC;YACD,IAAI,IAAI,QAAQ,CAAC;YAEjB,UAAU;YACV,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,IAAI,IAAI,6BAA6B,CAAC;gBACtC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACzD,IAAI,IAAI,QAAQ,CAAC;YACnB,CAAC;YAED,aAAa;YACb,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClD,IAAI,IAAI,MAAM,CAAC;gBACf,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACxC,IAAI,IAAI,OAAO,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC;gBAC9C,CAAC;gBACD,IAAI,IAAI,OAAO,CAAC;YAClB,CAAC;YAED,IAAI,IAAI,QAAQ,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,OAAsC;IAClE,OAAO,OAAO;SACX,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,IAAI,IAAI,GAAG,4BAA4B,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAChE,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,IAAI,KAAK,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;QACrD,CAAC;QACD,IAAI,IAAI,QAAQ,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,OAA8B,EAAE,OAAsB;IAC1E,iFAAiF;IACjF,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,KAAK,aAAa;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAEzE,IAAI,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,2DAA2D;QAC3D,OAAO,OAAO;aACX,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;aACvB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACb,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3D,OAAO,mEAAmE,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC9I,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAED,iCAAiC;IACjC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,sBAAsB,CAAC;IAC1D,IAAI,IAAI,GAAG,iEAAiE,OAAO,WAAW,CAAC;IAC/F,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,IAAI,6BAA6B,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;IAChE,CAAC;IACD,IAAI,IAAI,QAAQ,CAAC;IACjB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,KAAwB,EAAE,UAAkB,sBAAsB;IAC1F,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,IAAI,GAAG,iEAAiE,OAAO,WAAW,CAAC;IAC/F,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,6BAA6B,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;IAChE,CAAC;IACD,IAAI,IAAI,QAAQ,CAAC;IACjB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,OAAiC;IACxD,OAAO,OAAO;SACX,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,IAAI,IAAI,GAAG,2BAA2B,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnE,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,IAAI,KAAK,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1C,CAAC;QACD,IAAI,IAAI,SAAS,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,IAAI,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,OAAuB,EAAE,SAAiB;IACtE,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,MAAM;YACT,OAAO,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QAC9C,KAAK,MAAM;YACT,qCAAqC;YACrC,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAC3B,OAAO,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC;YACD,OAAO,CACL,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAC1F,CAAC;QACJ,KAAK,WAAW;YACd,OAAO,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1C,KAAK,YAAY;YACf,OAAO,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,KAAK,gBAAgB;YACnB,OAAO,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/C,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACxD,KAAK,WAAW;YACd,OAAO,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1C,KAAK,OAAO;YACV,OAAO,CACL,MAAM;gBACN,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC3E,OAAO,CACR,CAAC;QACJ;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,QAAkC;IACxD,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAW,EAAE,OAAoB;IAChE,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;IACrD,MAAM,WAAW,GAAG,gBAAgB,EAAE,CAAC;IAEvC,kDAAkD;IAClD,MAAM,gBAAgB,GAAG,cAAc,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IAErD,MAAM,YAAY,GAAG,gBAAgB;SAClC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACf,OAAO;;QAEL,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;IAC7B,oBAAoB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;WAC1C,CAAC;IACR,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;;;;;WAKE,UAAU,CAAC,IAAI,CAAC;WAChB,MAAM;;;;;;iCAMgB,UAAU,CAAC,IAAI,CAAC;iCAChB,UAAU,CAAC,WAAW,CAAC;;;;EAItD,YAAY;;;QAGN,CAAC;AACT,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTML components for Rirekisho (履歴書)
|
|
3
|
+
*/
|
|
4
|
+
import type { HistoryRow, LayoutDimensions, PersonalInfo, TodayDate } from './types.js';
|
|
5
|
+
export interface HeaderProps {
|
|
6
|
+
readonly layout: LayoutDimensions;
|
|
7
|
+
readonly today: TodayDate;
|
|
8
|
+
}
|
|
9
|
+
export declare function buildHeader({ layout, today }: HeaderProps): string;
|
|
10
|
+
export interface NameSectionProps {
|
|
11
|
+
readonly layout: LayoutDimensions;
|
|
12
|
+
readonly info: PersonalInfo;
|
|
13
|
+
}
|
|
14
|
+
export declare function buildNameSection({ layout, info }: NameSectionProps): string;
|
|
15
|
+
export interface BirthGenderRowProps {
|
|
16
|
+
readonly layout: LayoutDimensions;
|
|
17
|
+
readonly info: PersonalInfo;
|
|
18
|
+
}
|
|
19
|
+
export declare function buildBirthGenderRow({ layout, info, }: BirthGenderRowProps): string;
|
|
20
|
+
export interface AddressRowProps {
|
|
21
|
+
readonly layout: LayoutDimensions;
|
|
22
|
+
readonly info: PersonalInfo;
|
|
23
|
+
readonly isPrimary: boolean;
|
|
24
|
+
}
|
|
25
|
+
export declare function buildAddressRow({ layout, info, isPrimary, }: AddressRowProps): string;
|
|
26
|
+
export interface PhotoBoxProps {
|
|
27
|
+
readonly layout: LayoutDimensions;
|
|
28
|
+
/** Base64 encoded photo data URI */
|
|
29
|
+
readonly photoDataUri?: string | undefined;
|
|
30
|
+
}
|
|
31
|
+
export declare function buildPhotoBox({ layout, photoDataUri }: PhotoBoxProps): string;
|
|
32
|
+
export interface HistoryTableProps {
|
|
33
|
+
readonly layout: LayoutDimensions;
|
|
34
|
+
readonly data: readonly HistoryRow[];
|
|
35
|
+
readonly rowCount: number;
|
|
36
|
+
readonly title: string;
|
|
37
|
+
readonly height?: number;
|
|
38
|
+
}
|
|
39
|
+
export declare function buildHistoryTable({ layout, data, rowCount, title, height, }: HistoryTableProps): string;
|
|
40
|
+
export interface LicenseTableProps {
|
|
41
|
+
readonly layout: LayoutDimensions;
|
|
42
|
+
readonly data: readonly HistoryRow[];
|
|
43
|
+
readonly height?: number;
|
|
44
|
+
}
|
|
45
|
+
export declare function buildLicenseTable({ layout, data, height, }: LicenseTableProps): string;
|
|
46
|
+
export interface SectionBoxProps {
|
|
47
|
+
readonly layout: LayoutDimensions;
|
|
48
|
+
readonly title: string;
|
|
49
|
+
readonly subtitle?: string;
|
|
50
|
+
readonly content: string;
|
|
51
|
+
readonly listItems?: readonly string[];
|
|
52
|
+
readonly height?: number;
|
|
53
|
+
readonly minHeight?: number;
|
|
54
|
+
}
|
|
55
|
+
export declare function buildSectionBox({ layout, title, subtitle, content, listItems, height, minHeight, }: SectionBoxProps): string;
|
|
56
|
+
export interface LeftPageProps {
|
|
57
|
+
readonly layout: LayoutDimensions;
|
|
58
|
+
readonly info: PersonalInfo;
|
|
59
|
+
readonly history: readonly HistoryRow[];
|
|
60
|
+
readonly today: TodayDate;
|
|
61
|
+
/** Base64 encoded photo data URI */
|
|
62
|
+
readonly photoDataUri?: string | undefined;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get adjusted history data for left and right pages
|
|
66
|
+
* If "職歴" is at the last row of left page, leave an empty row instead
|
|
67
|
+
*/
|
|
68
|
+
export declare function getAdjustedHistoryData(history: readonly HistoryRow[], leftHistoryRows: number): {
|
|
69
|
+
leftData: readonly HistoryRow[];
|
|
70
|
+
rightData: readonly HistoryRow[];
|
|
71
|
+
shokurekiMovedToRight: boolean;
|
|
72
|
+
};
|
|
73
|
+
export declare function buildLeftPage({ layout, info, history, today, photoDataUri, }: LeftPageProps): string;
|
|
74
|
+
export interface RightPageProps {
|
|
75
|
+
readonly layout: LayoutDimensions;
|
|
76
|
+
readonly history: readonly HistoryRow[];
|
|
77
|
+
readonly license: readonly HistoryRow[];
|
|
78
|
+
readonly motivation: string;
|
|
79
|
+
readonly competencies: readonly string[];
|
|
80
|
+
readonly notes: string;
|
|
81
|
+
}
|
|
82
|
+
export declare function buildRightPage({ layout, history, license, motivation, competencies, notes, }: RightPageProps): string;
|
|
83
|
+
//# sourceMappingURL=components.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/generator/rirekisho/components.ts"],"names":[],"mappings":"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"}
|