@@ -23,6 +23,31 @@ export const PluginEpubSet = (
23
23
return `<h3>${ hooks . substitution . purge ( entity . raw ) } </h3>`
24
24
}
25
25
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
+
26
51
const paragraph = ( entity : Entity ) : string [ ] => {
27
52
if (
28
53
hooks . env . emptyLine ( ) === entity . raw ||
@@ -35,24 +60,41 @@ export const PluginEpubSet = (
35
60
const target = parse ( hooks . substitution . purge ( row ) )
36
61
37
62
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
38
76
return ( acc += item . text . trim ( ) ? `<span>${ item . text } </span>` : '' )
39
77
} , '' )
40
78
} )
41
79
}
42
80
43
81
const pageBreak = ( ) => {
44
- return `<span style="page-break-after: always"></span>`
82
+ return `<span style="page-break-after: always; "></span>`
45
83
}
46
84
47
85
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>'
49
87
}
50
88
51
89
return {
52
90
paragraph,
53
91
headingOne,
54
92
headingTwo,
55
93
headingThree,
94
+ image,
95
+ svg,
96
+ checkbox,
97
+ list,
56
98
pageBreak,
57
99
lineBreak,
58
100
}
@@ -67,11 +109,15 @@ export const PluginEpubSet = (
67
109
content : '' ,
68
110
}
69
111
70
- page . entities . forEach ( ( entity : Entity ) => {
112
+ for ( const entity of page . entities ) {
71
113
switch ( entity . type ) {
72
- case 'paragraph' :
73
- case 'list' :
74
114
case 'checkbox' :
115
+ chapter . content += entities ( ) . checkbox ( entity )
116
+ break
117
+ case 'list' :
118
+ chapter . content += entities ( ) . list ( entity )
119
+ break
120
+ case 'paragraph' :
75
121
entities ( )
76
122
. paragraph ( entity )
77
123
?. forEach (
@@ -93,8 +139,14 @@ export const PluginEpubSet = (
93
139
case 'line-break' :
94
140
chapter . content += entities ( ) . lineBreak ( )
95
141
break
142
+ case 'image' :
143
+ chapter . content += entities ( ) . image ( entity )
144
+ break
145
+ case 'drau' :
146
+ chapter . content += entities ( ) . svg ( entity )
147
+ break
96
148
}
97
- } )
149
+ }
98
150
99
151
chapters . push ( chapter )
100
152
} )
0 commit comments