1+ export default async function ( { feature, console } ) {
2+ window . feature = feature
3+
4+ ScratchTools . waitForElements ( "div[class*='sprite-info_row_']:nth-child(2) > div[class*='sprite-info_group_']:nth-child(1)" , function ( button ) {
5+ button . addEventListener ( "mouseover" , function ( ) {
6+ if ( feature . traps . vm . editingTarget . isStage || button . querySelector ( ".ste-layers" ) ) return ;
7+
8+ button . style . position = "relative"
9+
10+ let div = document . createElement ( "div" )
11+ div . className = "ste-layers"
12+
13+ let h3 = document . createElement ( "h3" )
14+ h3 . textContent = "Layers"
15+ div . appendChild ( h3 )
16+
17+ div . appendChild ( buildDiagram ( ) )
18+
19+ if ( div . querySelector ( "div" ) . childNodes . length > 12 ) {
20+ div . classList . add ( "ste-long-layers" )
21+ }
22+
23+ let p = document . createElement ( "p" )
24+ p . textContent = "Layers to the left are to the front. Bright blue indicates the current sprite, and light blue indicates any of its clones."
25+ div . appendChild ( p )
26+
27+ button . appendChild ( div )
28+ } )
29+
30+ button . addEventListener ( "mouseout" , function ( ) {
31+ button . querySelector ( ".ste-layers" ) ?. remove ( )
32+ button . style . position = null
33+ } )
34+ } )
35+
36+ function buildDiagram ( ) {
37+ let targets = feature . traps . vm . runtime . targets
38+
39+ let div = document . createElement ( "div" )
40+ let elements = [ ]
41+
42+ for ( var i in targets ) {
43+ let place = document . createElement ( "div" )
44+ place . style . width = `calc(${ ( 100 / targets . length ) . toString ( ) } % - .1rem)`
45+ elements . push ( place )
46+ }
47+
48+ for ( var i in targets ) {
49+ if ( targets [ i ] . sprite . name === feature . traps . vm . editingTarget . sprite . name ) {
50+ if ( targets [ i ] . isOriginal ) {
51+ elements [ targets [ i ] . getLayerOrder ( ) - 1 ] . style . backgroundColor = "#034efc"
52+ } else {
53+ elements [ targets [ i ] . getLayerOrder ( ) - 1 ] . style . backgroundColor = "#034efc70"
54+ }
55+ }
56+ }
57+
58+ div . append ( ...elements )
59+ return div
60+ }
61+ }
0 commit comments