@@ -92,8 +92,8 @@ const IWSY = (container, script) => {
92
92
}
93
93
} ;
94
94
95
- // Create a text block.
96
- const createTextBlock = ( block ) => {
95
+ // Create a block.
96
+ const createBlock = ( block ) => {
97
97
const container = block . container ;
98
98
if ( block . element ) {
99
99
container . removeChild ( block . element ) ;
@@ -102,6 +102,7 @@ const IWSY = (container, script) => {
102
102
const h = container . getBoundingClientRect ( ) . height / 1000 ;
103
103
const properties = block . properties ;
104
104
const element = document . createElement ( `div` ) ;
105
+ container . appendChild ( element ) ;
105
106
block . element = element ;
106
107
element . style [ `position` ] = `absolute` ;
107
108
element . style [ `opacity` ] = `0.0` ;
@@ -127,27 +128,23 @@ const IWSY = (container, script) => {
127
128
element . style [ `height` ] = val ;
128
129
element . style [ `background` ] = properties . background ;
129
130
element . style [ `border` ] = properties . border ;
130
- container . appendChild ( element ) ;
131
131
val = properties . textMarginLeft ;
132
132
if ( ! isNaN ( val ) ) {
133
- val = ` ${ val * w } px` ;
133
+ val *= w ;
134
134
}
135
- element . style [ `width` ] = val ;
136
135
const marginLeft = val ;
137
136
val = properties . textMarginTop ;
138
137
if ( ! isNaN ( val ) ) {
139
- val = ` ${ val * h } px` ;
138
+ val *= h ;
140
139
}
141
- element . style [ `height` ] = val ;
142
140
const marginTop = val ;
143
- const inner = document . createElement ( `div` ) ;
144
- inner . style [ `position` ] = `absolute` ;
145
- inner . style [ `left` ] = marginLeft ;
146
- inner . style [ `top` ] = marginTop ;
147
- inner . style [ `width` ] = `calc(100% - ${ marginLeft } px - ${ marginLeft } px)` ;
148
- element . appendChild ( inner ) ;
149
- element . inner = inner ;
150
141
const text = document . createElement ( `div` ) ;
142
+ element . appendChild ( text ) ;
143
+ text . style [ `position` ] = `absolute` ;
144
+ text . style [ `left` ] = marginLeft ;
145
+ text . style [ `top` ] = marginTop ;
146
+ text . style [ `width` ] = `calc(100% - ${ marginLeft } px - ${ marginLeft } px)` ;
147
+ text . style [ `height` ] = `calc(100% - ${ marginTop } px - ${ marginTop } px)` ;
151
148
text . style [ `font-family` ] = properties . fontFamily ;
152
149
val = properties . fontSize ;
153
150
if ( ! isNaN ( val ) ) {
@@ -158,82 +155,20 @@ const IWSY = (container, script) => {
158
155
text . style [ `font-style` ] = properties . fontStyle ;
159
156
text . style [ `color` ] = properties . fontColor ;
160
157
text . style [ `text-align` ] = properties . textAlign ;
161
- inner . appendChild ( text ) ;
162
- inner . text = text ;
163
- if ( script . speed === `scan` ) {
164
- element . style . opacity = 0 ;
165
- }
166
- } ;
167
-
168
- // Create an image block.
169
- const createImageBlock = ( block ) => {
170
- const container = block . container ;
171
- if ( block . element ) {
172
- container . removeChild ( block . element ) ;
173
- }
174
- const w = container . getBoundingClientRect ( ) . width / 1000 ;
175
- const h = container . getBoundingClientRect ( ) . height / 1000 ;
176
- const properties = block . properties ;
177
- const element = document . createElement ( `div` ) ;
178
- block . element = element ;
179
- element . style [ `position` ] = `absolute` ;
180
- element . style [ `opacity` ] = `0.0` ;
181
- let val = properties . left ;
182
- if ( ! isNaN ( val ) ) {
183
- val *= w ;
184
- }
185
- element . style [ `left` ] = val ;
186
- val = properties . top ;
187
- if ( ! isNaN ( val ) ) {
188
- val *= h ;
189
- }
190
- element . style [ `top` ] = val ;
191
- element . style [ `top` ] = val ;
192
- val = properties . width ;
193
- if ( ! isNaN ( val ) ) {
194
- val = `${ val * w } px` ;
195
- }
196
- element . style [ `width` ] = val ;
197
- val = properties . height ;
198
- if ( ! isNaN ( val ) ) {
199
- val = `${ val * h } px` ;
200
- }
201
- element . style [ `height` ] = val ;
202
- element . style [ `background` ] = properties . background ;
203
- element . style [ `border` ] = properties . border ;
204
- element . style [ `border-radius` ] = properties . borderRadius ;
205
- container . appendChild ( element ) ;
206
- if ( script . speed === `scan` ) {
207
- element . style . opacity = 0 ;
208
- }
158
+ element . textPanel = text ;
209
159
} ;
210
160
211
161
// Set the content of a block
212
162
const doSetContent = ( spec ) => {
213
163
const block = script . blocks [ spec . block ] ;
214
- const contentSpec = script . content [ spec . content ] ;
164
+ const content = script . content [ spec . content ] ;
215
165
if ( ! block ) {
216
166
throw Error ( `Block '${ block } ' cannot be found` ) ;
217
167
}
218
- switch ( contentSpec . type ) {
219
- case `text` :
220
- if ( ! block . element ) {
221
- createTextBlock ( block ) ;
222
- }
223
- let content = contentSpec . content ;
224
- if ( Array . isArray ( content ) ) {
225
- content = content . join ( `<br><br>` ) ;
226
- }
227
- block . element . inner . text . innerHTML = content . split ( `\n` ) . join ( `<br>` ) ;
228
- break ;
229
- case `image` :
230
- if ( ! block . element ) {
231
- createImageBlock ( block ) ;
232
- }
233
- block . element . style [ `background` ] = `url("${ contentSpec . url } ")` ;
234
- block . element . style [ `background-size` ] = `cover` ;
235
- break ;
168
+ if ( ! block . element ) {
169
+ createBlock ( block ) ;
236
170
}
171
+ block . element . textPanel . innerHTML = content . split ( `\n` ) . join ( `<br>` ) ;
237
172
} ;
238
173
239
174
// Set the content of a block
@@ -280,14 +215,7 @@ const IWSY = (container, script) => {
280
215
for ( const b of stepBlocks ) {
281
216
const block = script . blocks [ b ] ;
282
217
if ( ! block . element ) {
283
- switch ( block . type ) {
284
- case `text` :
285
- createTextBlock ( block ) ;
286
- break ;
287
- case `image` :
288
- createImageBlock ( block ) ;
289
- break ;
290
- }
218
+ createBlock ( block ) ;
291
219
}
292
220
}
293
221
if ( script . speed === `scan` ) {
0 commit comments