Skip to content

Commit e47be15

Browse files
committed
feat(epub): image, list, checkbox and svg
1 parent 2bc4691 commit e47be15

File tree

4 files changed

+73
-6
lines changed

4 files changed

+73
-6
lines changed

packages/better-write-languages/src/en-US/toast.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ export default {
5252
txt: {
5353
generate: 'Successfully Downloaded TXT!',
5454
},
55+
epub: {
56+
generate: 'Successfully Downloaded EPUB!',
57+
},
5558
annotations: {
5659
fileDelete: 'Are you sure you want to delete the file?',
5760
folderDelete: 'Are you sure you want to delete the folder?',

packages/better-write-languages/src/pt-BR/toast.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ export default {
5050
txt: {
5151
generate: 'TXT Baixado com Sucesso!',
5252
},
53+
epub: {
54+
generate: 'EPUB Baixado com Sucesso!',
55+
},
5356
html: {
5457
generate: 'HTML Baixado com Sucesso!',
5558
},

packages/better-write-plugin-exporter-epub/src/set.ts

Lines changed: 58 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,31 @@ export const PluginEpubSet = (
2323
return `<h3>${hooks.substitution.purge(entity.raw)}</h3>`
2424
}
2525

26+
const image = (entity: Entity) => {
27+
return `<div><img src="${entity.raw}" alt=""></div>`
28+
}
29+
30+
const svg = (entity: Entity) => {
31+
console.log(entity.raw)
32+
33+
return `<div>${entity.raw}</div>`
34+
}
35+
36+
const checkbox = (entity: Entity) => {
37+
const id = hooks.utils.id().uuidv4()
38+
39+
return `<div><input type="checkbox" name="${id}" id="${id}" ${
40+
entity?.external?.checkbox?.select ? `checked` : ''
41+
}>
42+
<label for="${id}">${hooks.substitution.purge(entity.raw)}</label></div>`
43+
}
44+
45+
const list = (entity: Entity) => {
46+
return `<ul><li style="list-style-type: square;">${hooks.substitution.purge(
47+
entity.raw
48+
)}</li></ul>`
49+
}
50+
2651
const paragraph = (entity: Entity): string[] => {
2752
if (
2853
hooks.env.emptyLine() === entity.raw ||
@@ -35,24 +60,41 @@ export const PluginEpubSet = (
3560
const target = parse(hooks.substitution.purge(row))
3661

3762
return target.reduce((acc, item) => {
63+
// boldItalics
64+
if (item.italic && item.bold)
65+
return (acc += item.text.trim() ? `<i><b>${item.text}</b></i>` : '')
66+
67+
// italics
68+
if (item.italic)
69+
return (acc += item.text.trim() ? `<i>${item.text}</i>` : '')
70+
71+
// bold
72+
if (item.bold)
73+
return (acc += item.text.trim() ? `<b>${item.text}</b>` : '')
74+
75+
// common case
3876
return (acc += item.text.trim() ? `<span>${item.text}</span>` : '')
3977
}, '')
4078
})
4179
}
4280

4381
const pageBreak = () => {
44-
return `<span style="page-break-after: always"></span>`
82+
return `<span style="page-break-after: always;"></span>`
4583
}
4684

4785
const lineBreak = () => {
48-
return '<span style="width: 100%;padding-top: 1rem;border: none;"></span>'
86+
return '<span style="width: 100%;height:16px;border: none;"></span>'
4987
}
5088

5189
return {
5290
paragraph,
5391
headingOne,
5492
headingTwo,
5593
headingThree,
94+
image,
95+
svg,
96+
checkbox,
97+
list,
5698
pageBreak,
5799
lineBreak,
58100
}
@@ -67,11 +109,15 @@ export const PluginEpubSet = (
67109
content: '',
68110
}
69111

70-
page.entities.forEach((entity: Entity) => {
112+
for (const entity of page.entities) {
71113
switch (entity.type) {
72-
case 'paragraph':
73-
case 'list':
74114
case 'checkbox':
115+
chapter.content += entities().checkbox(entity)
116+
break
117+
case 'list':
118+
chapter.content += entities().list(entity)
119+
break
120+
case 'paragraph':
75121
entities()
76122
.paragraph(entity)
77123
?.forEach(
@@ -93,8 +139,14 @@ export const PluginEpubSet = (
93139
case 'line-break':
94140
chapter.content += entities().lineBreak()
95141
break
142+
case 'image':
143+
chapter.content += entities().image(entity)
144+
break
145+
case 'drau':
146+
chapter.content += entities().svg(entity)
147+
break
96148
}
97-
})
149+
}
98150

99151
chapters.push(chapter)
100152
})

packages/better-write-plugin-exporter-epub/src/styles.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export const getStyles = (
99
outline: 0;
1010
font-feature-settings: 'ss02' on, 'ss01' on;
1111
-webkit-font-smoothing: antialiased;
12+
color: black;
1213
}
1314
1415
p {
@@ -24,4 +25,12 @@ p > a {
2425
2526
h1, h2, h3 {
2627
text-align: center;
28+
}
29+
30+
i {
31+
font-style: italic;
32+
}
33+
34+
b {
35+
font-weight: 700;
2736
}`

0 commit comments

Comments
 (0)