@@ -155,6 +155,18 @@ const ACTION_HANDLERS = {
155
155
}
156
156
parts [ svg ] . opacity = animationHandlersByMode [ mode ] ( i , freezer [ svg ] . opacity , dstOpacity - freezer [ svg ] . opacity , frames ) ;
157
157
} ,
158
+ dashoffset : ( i , ags_arr , first_frame_in_animate , frames , mode ) => {
159
+ const svg = ags_arr [ 0 ] ;
160
+ if ( ! parts [ svg ] ) {
161
+ log ( `WARN: dashoffset not applied, part not found: ${ svg } , line: \n${ cmd } \n` ) ;
162
+ return ;
163
+ }
164
+ const dstOffset = + eval ( ags_arr [ 1 ] ) ;
165
+ if ( first_frame_in_animate ) {
166
+ freezer [ svg ] = { ...freezer [ svg ] , dashoffset : parts [ svg ] . dashoffset } ;
167
+ }
168
+ parts [ svg ] . dashoffset = animationHandlersByMode [ mode ] ( i , freezer [ svg ] . dashoffset , dstOffset - freezer [ svg ] . dashoffset , frames ) ;
169
+ } ,
158
170
resize_div : ( i , ags_arr , first_frame_in_animate , frames , mode ) => {
159
171
const svg = ags_arr [ 0 ] ;
160
172
if ( ! parts [ svg ] ) {
@@ -186,7 +198,7 @@ const genHtml = (allParts) => {
186
198
if ( p . type === 'part' ) {
187
199
const bh = boxholes [ p . toBoxHole ] || { left : 0 , top :0 } ;
188
200
189
- const partHTML = `<div style="position:${ bh . name ? "absolute" : "fixed" } ;top:${ p . top - bh . top } px;left:${ p . left - bh . left } px;opacity:${ p . opacity } ;transform:scale(${ p . scale } ) rotate(${ p . rotate } deg);${ p . extrastyle } ">${ p . content } </div>` ;
201
+ const partHTML = `<div style="position:${ bh . name ? "absolute" : "fixed" } ;top:${ p . top - bh . top } px;left:${ p . left - bh . left } px;opacity:${ p . opacity } ;transform:scale(${ p . scale } ) rotate(${ p . rotate } deg);stroke-dashoffset: ${ p . dashoffset } ; ${ p . extrastyle } ">${ p . content } </div>` ;
190
202
if ( p . toBoxHole ) {
191
203
return `${ acc } <div style="position:fixed;overflow:hidden;top:${ bh . top } px;left:${ bh . left } px;width:${ bh . w } px;height:${ bh . h } px;">
192
204
${ partHTML } </div>` ;
@@ -230,7 +242,7 @@ function firstDefined(...vals) {
230
242
}
231
243
232
244
233
- const addPart = async ( lang , filename , left , top , opacity , scale , toBoxHole ) => {
245
+ const addPart = async ( lang , filename , left , top , opacity , scale , toBoxHole , dashoffset ) => {
234
246
let f ;
235
247
236
248
const readFname = ( fn ) => {
@@ -289,6 +301,7 @@ const addPart = async (lang, filename, left, top, opacity, scale, toBoxHole) =>
289
301
index : Object . values ( parts ) . length ,
290
302
scale : + firstDefined ( eval ( scale ) , 1.0 ) ,
291
303
rotate : + firstDefined ( 0 , 0 ) ,
304
+ dashoffset : + firstDefined ( eval ( dashoffset ) , 0 ) ,
292
305
extrastyle : '' ,
293
306
toBoxHole,
294
307
} ;
@@ -308,6 +321,7 @@ const addDiv = (name, left, top, w, h, opacity, c, toBoxHole) => {
308
321
h : + firstDefined ( eval ( h ) , 0 ) ,
309
322
index : Object . values ( parts ) . length ,
310
323
rotate : + firstDefined ( 0 , 0 ) ,
324
+ dashoffset : + firstDefined ( 0 , 0 ) ,
311
325
content : content ,
312
326
toBoxHole,
313
327
}
0 commit comments