@@ -1251,6 +1251,20 @@ class Activity {
12511251 this . sendAllToTrash ( true , true ) ;
12521252 } ;
12531253
1254+ const extractSVGInner = svgString => {
1255+ const parser = new DOMParser ( ) ;
1256+ const doc = parser . parseFromString ( svgString , "image/svg+xml" ) ;
1257+ const svgEl = doc . querySelector ( "svg" ) ;
1258+ if ( ! svgEl ) return "" ;
1259+
1260+ // Remove drop shadow filters safely
1261+ svgEl . querySelectorAll ( "[filter]" ) . forEach ( el => {
1262+ el . removeAttribute ( "filter" ) ;
1263+ } ) ;
1264+
1265+ return svgEl . innerHTML ;
1266+ } ;
1267+
12541268 /**
12551269 * @returns {SVG } returns SVG of blocks
12561270 */
@@ -1274,11 +1288,9 @@ class Activity {
12741288 yMax = this . blocks . blockList [ i ] . container . y + this . blocks . blockList [ i ] . height ;
12751289 }
12761290
1277- if ( this . blocks . blockList [ i ] . collapsed ) {
1278- parts = this . blocks . blockCollapseArt [ i ] . split ( "><" ) ;
1279- } else {
1280- parts = this . blocks . blockArt [ i ] . split ( "><" ) ;
1281- }
1291+ const rawSVG = this . blocks . blockList [ i ] . collapsed
1292+ ? this . blocks . blockCollapseArt [ i ]
1293+ : this . blocks . blockArt [ i ] ;
12821294
12831295 if ( this . blocks . blockList [ i ] . isCollapsible ( ) ) {
12841296 svg += "<g>" ;
@@ -1290,7 +1302,13 @@ class Activity {
12901302 ", " +
12911303 this . blocks . blockList [ i ] . container . y +
12921304 ')">' ;
1293- if ( SPECIALINPUTS . includes ( this . blocks . blockList [ i ] . name ) ) {
1305+
1306+ if ( ! SPECIALINPUTS . includes ( this . blocks . blockList [ i ] . name ) ) {
1307+ svg += extractSVGInner ( rawSVG ) ;
1308+ } else {
1309+ // Keep existing fragile logic for now
1310+ parts = rawSVG . split ( "><" ) ;
1311+
12941312 for ( let p = 1 ; p < parts . length ; p ++ ) {
12951313 // FIXME: This is fragile.
12961314 if ( p === 1 ) {
@@ -1314,23 +1332,6 @@ class Activity {
13141332 svg += parts [ p ] + "><" ;
13151333 }
13161334 }
1317- } else {
1318- for ( let p = 1 ; p < parts . length ; p ++ ) {
1319- // FIXME: This is fragile.
1320- if ( p === 1 ) {
1321- svg += "<" + parts [ p ] + "><" ;
1322- } else if ( p === 2 ) {
1323- // skip filter
1324- } else if ( p === 3 ) {
1325- svg += parts [ p ] . replace ( "filter:url(#dropshadow);" , "" ) + "><" ;
1326- } else if ( p === parts . length - 2 ) {
1327- svg += parts [ p ] + ">" ;
1328- } else if ( p === parts . length - 1 ) {
1329- // skip final </svg>
1330- } else {
1331- svg += parts [ p ] + "><" ;
1332- }
1333- }
13341335 }
13351336
13361337 svg += "</g>" ;
0 commit comments