1// abc2svg - ABC to SVG translator 2// @source: https://chiselapp.com/user/moinejf/repository/abc2svg 3// Copyright (C) 2014-2020 Jean-Francois Moine - LGPL3+ 4//diag.js-module to insert guitar chord diagrams 5abc2svg.diag={do_diag:function(){var glyphs=this.get_glyphs(),voice_tb=this.get_voice_tb() 6if(!glyphs['fb']){var i,j,d,decos=this.get_decos();ns="CDEFGAB",ms=["","m","7","m7","maj7","sus4"] 7this.add_style("\ 8\n.diag {font:6px sans-serif}\ 9\n.frn {font:italic 7px sans-serif}") 10for(i=0;i<ns.length;i++){for(j=0;j<ms.length;j++){d=ns[i]+ms[j];decos[d]="3 "+d+" 40 0 0"}} 11for(j=0;j<ms.length;j++){d="F♯"+ms[j] 12decos[d]="3 F#"+ms[j]+" 40 0 0"} 13glyphs['fb']='<g id="fb">\n\ 14<path class="stroke" stroke-width="0.4" d="\ 15M-10 -34h20m0 6h-20\ 16m0 6h20m0 6h-20\ 17m0 6h20"/>\n\ 18<path class="stroke" stroke-width="0.5" d="\ 19M-10 -34v24m4 0v-24\ 20m4 0v24m4 0v-24\ 21m4 0v24m4 0v-24"/>\n\ 22</g>';glyphs['nut']='<path id="nut" class="stroke" stroke-width="1.6" d="\ 23M-10.2 -34.5h20.4"/>';glyphs['barre']='<path id="barre" class="stroke" stroke-width=".9" d="\ 24M-10.2 -31h20.4"/>';glyphs['fr1']='<text id="fr1" x="-20" y="-29" class="frn">fr1</text>';glyphs['fr2']='<text id="fr2" x="-20" y="-29" class="frn">fr2</text>';glyphs['fr3']='<text id="fr3" x="-20" y="-29" class="frn">fr3</text>';glyphs['ddot']='<circle id="ddot" class="fill" r="1.5"/>';glyphs['C']='<g id="C">\n\ 25<use xlink:href="#nut"/>\n\ 26<use xlink:href="#fb"/>\n\ 27<text x="-8,-3,4" y="-36" class="diag">321</text>\n\ 28<use x="-6" y="-19" xlink:href="#ddot"/>\n\ 29<use x="-2" y="-25" xlink:href="#ddot"/>\n\ 30<use x="6" y="-31" xlink:href="#ddot"/>\n\ 31</g>';glyphs['Cm']='<g id="Cm">\n\ 32<use xlink:href="#barre"/>\n\ 33<use xlink:href="#fr3"/>\n\ 34<use xlink:href="#fb"/>\n\ 35<text x="-4,0,4" y="-36" class="diag">342</text>\n\ 36<use x="2" y="-19" xlink:href="#ddot"/>\n\ 37<use x="-2" y="-19" xlink:href="#ddot"/>\n\ 38<use x="6" y="-25" xlink:href="#ddot"/>\n\ 39</g>';glyphs['C7']='<g id="C7">\n\ 40<use xlink:href="#nut"/>\n\ 41<use xlink:href="#fb"/>\n\ 42<text x="-8,-4,0,4" y="-36" class="diag">3241</text>\n\ 43<use x="2" y="-19" xlink:href="#ddot"/>\n\ 44<use x="-6" y="-19" xlink:href="#ddot"/>\n\ 45<use x="-2" y="-25" xlink:href="#ddot"/>\n\ 46<use x="6" y="-31" xlink:href="#ddot"/>\n\ 47</g>';glyphs['Cm7']='<g id="Cm7">\n\ 48<use xlink:href="#barre"/>\n\ 49<use xlink:href="#fr3"/>\n\ 50<use xlink:href="#fb"/>\n\ 51<text x="-12,-4,4" y="-36" class="diag">x32</text>\n\ 52<use x="-2" y="-19" xlink:href="#ddot"/>\n\ 53<use x="6" y="-25" xlink:href="#ddot"/>\n\ 54</g>';glyphs['Cmaj7']='<g id="Cmaj7">\n\ 55<use xlink:href="#nut"/>\n\ 56<use xlink:href="#fb"/>\n\ 57<text x="-12,-8,-4" y="-36" class="diag">x21</text>\n\ 58<use x="-2" y="-25" xlink:href="#ddot"/>\n\ 59<use x="-6" y="-19" xlink:href="#ddot"/>\n\ 60</g>';glyphs['Csus4']='<g id="Csus4">\n\ 61<use xlink:href="#barre"/>\n\ 62<use xlink:href="#fr3"/>\n\ 63<use xlink:href="#fb"/>\n\ 64<text x="-12,0,4" y="-36" class="diag">x34</text>\n\ 65<use x="6" y="-13" xlink:href="#ddot"/>\n\ 66<use x="2" y="-19" xlink:href="#ddot"/>\n\ 67</g>';glyphs['D']='<g id="D">\n\ 68<use xlink:href="#nut"/>\n\ 69<use xlink:href="#fb"/>\n\ 70<text x="-12,0,4,8" y="-36" class="diag">x132</text>\n\ 71<use x="6" y="-19" xlink:href="#ddot"/>\n\ 72<use x="10" y="-25" xlink:href="#ddot"/>\n\ 73<use x="2" y="-25" xlink:href="#ddot"/>\n\ 74</g>';glyphs['Dm']='<g id="Dm">\n\ 75<use xlink:href="#nut"/>\n\ 76<use xlink:href="#fb"/>\n\ 77<text x="-12,0,4,8" y="-36" class="diag">x231</text>\n\ 78<use x="6" y="-19" xlink:href="#ddot"/>\n\ 79<use x="2" y="-25" xlink:href="#ddot"/>\n\ 80<use x="10" y="-31" xlink:href="#ddot"/>\n\ 81</g>';glyphs['D7']='<g id="D7">\n\ 82<use xlink:href="#nut"/>\n\ 83<use xlink:href="#fb"/>\n\ 84<text x="-12,0,4,8" y="-36" class="diag">x312</text>\n\ 85<use x="10" y="-25" xlink:href="#ddot"/>\n\ 86<use x="2" y="-25" xlink:href="#ddot"/>\n\ 87<use x="6" y="-31" xlink:href="#ddot"/>\n\ 88</g>';glyphs['Dm7']='<g id="Dm7">\n\ 89<use xlink:href="#nut"/>\n\ 90<use xlink:href="#fb"/>\n\ 91<text x="-12,-8,0,4,8" y="-36" class="diag">xx211</text>\n\ 92<use x="2" y="-25" xlink:href="#ddot"/>\n\ 93<use x="10" y="-31" xlink:href="#ddot"/>\n\ 94<use x="6" y="-31" xlink:href="#ddot"/>\n\ 95</g>';glyphs['Dmaj7']='<g id="Dmaj7">\n\ 96<use xlink:href="#nut"/>\n\ 97<use xlink:href="#fb"/>\n\ 98<text x="-12,-8,0,4,8" y="-36" class="diag">xx123</text>\n\ 99<use x="10" y="-25" xlink:href="#ddot"/>\n\ 100<use x="6" y="-25" xlink:href="#ddot"/>\n\ 101<use x="2" y="-25" xlink:href="#ddot"/>\n\ 102</g>';glyphs['Dsus4']='<g id="Dsus4">\n\ 103<use xlink:href="#nut"/>\n\ 104<use xlink:href="#fb"/>\n\ 105<text x="-12,-8,0,4,8" y="-36" class="diag">xx123</text>\n\ 106<use x="10" y="-19" xlink:href="#ddot"/>\n\ 107<use x="6" y="-19" xlink:href="#ddot"/>\n\ 108<use x="2" y="-25" xlink:href="#ddot"/>\n\ 109</g>';glyphs['E']='<g id="E">\n\ 110<use xlink:href="#nut"/>\n\ 111<use xlink:href="#fb"/>\n\ 112<text x="-8,-4,0" y="-36" class="diag">231</text>\n\ 113<use x="-2" y="-25" xlink:href="#ddot"/>\n\ 114<use x="-6" y="-25" xlink:href="#ddot"/>\n\ 115<use x="2" y="-31" xlink:href="#ddot"/>\n\ 116</g>';glyphs['Em']='<g id="Em">\n\ 117<use xlink:href="#nut"/>\n\ 118<use xlink:href="#fb"/>\n\ 119<text x="-8,-4" y="-36" class="diag">23</text>\n\ 120<use x="-2" y="-25" xlink:href="#ddot"/>\n\ 121<use x="-6" y="-25" xlink:href="#ddot"/>\n\ 122</g>';glyphs['E7']='<g id="E7">\n\ 123<use xlink:href="#nut"/>\n\ 124<use xlink:href="#fb"/>\n\ 125<text x="-8,0" y="-36" class="diag">21</text>\n\ 126<use x="2" y="-31" xlink:href="#ddot"/>\n\ 127<use x="-6" y="-25" xlink:href="#ddot"/>\n\ 128</g>';glyphs['Em7']='<g id="Em7">\n\ 129<use xlink:href="#nut"/>\n\ 130<use xlink:href="#fb"/>\n\ 131<text x="-8" y="-36" class="diag">1</text>\n\ 132<use x="-6" y="-25" xlink:href="#ddot"/>\n\ 133</g>';glyphs['Emaj7']='<g id="Emaj7">\n\ 134<use xlink:href="#nut"/>\n\ 135<use xlink:href="#fb"/>\n\ 136<text x="-8,-4,0" y="-36" class="diag">312</text>\n\ 137<use x="2" y="-31" xlink:href="#ddot"/>\n\ 138<use x="-2" y="-31" xlink:href="#ddot"/>\n\ 139<use x="-6" y="-25" xlink:href="#ddot"/>\n\ 140</g>';glyphs['Esus4']='<g id="Esus4">\n\ 141<use xlink:href="#nut"/>\n\ 142<use xlink:href="#fb"/>\n\ 143<text x="-4,0" y="-36" class="diag">12</text>\n\ 144<use x="2" y="-25" xlink:href="#ddot"/>\n\ 145<use x="-2" y="-25" xlink:href="#ddot"/>\n\ 146</g>';glyphs['F']='<g id="F">\n\ 147<use xlink:href="#barre"/>\n\ 148<use xlink:href="#fr1"/>\n\ 149<use xlink:href="#fb"/>\n\ 150<text x="-8,-4,0" y="-36" class="diag">342</text>\n\ 151<use x="-2" y="-19" xlink:href="#ddot"/>\n\ 152<use x="-6" y="-19" xlink:href="#ddot"/>\n\ 153<use x="2" y="-25" xlink:href="#ddot"/>\n\ 154</g>';glyphs['Fm']='<g id="Fm">\n\ 155<use xlink:href="#barre"/>\n\ 156<use xlink:href="#fr1"/>\n\ 157<use xlink:href="#fb"/>\n\ 158<text x="-8,-4" y="-36" class="diag">34</text>\n\ 159<use x="-2" y="-19" xlink:href="#ddot"/>\n\ 160<use x="-6" y="-19" xlink:href="#ddot"/>\n\ 161</g>';glyphs['F7']='<g id="F7">\n\ 162<use xlink:href="#barre"/>\n\ 163<use xlink:href="#fr1"/>\n\ 164<use xlink:href="#fb"/>\n\ 165<text x="-8,0" y="-36" class="diag">32</text>\n\ 166<use x="2" y="-25" xlink:href="#ddot"/>\n\ 167<use x="-6" y="-19" xlink:href="#ddot"/>\n\ 168</g>';glyphs['Fm7']='<g id="Fm7">\n\ 169<use xlink:href="#barre"/>\n\ 170<use xlink:href="#fr1"/>\n\ 171<use xlink:href="#fb"/>\n\ 172<text x="-8" y="-36" class="diag">3</text>\n\ 173<use x="-6" y="-19" xlink:href="#ddot"/>\n\ 174</g>';glyphs['Fmaj7']='<g id="Fmaj7">\n\ 175<use xlink:href="#barre"/>\n\ 176<use xlink:href="#fr1"/>\n\ 177<use xlink:href="#fb"/>\n\ 178<text x="-8,-4,0" y="-36" class="diag">423</text>\n\ 179<use x="2" y="-25" xlink:href="#ddot"/>\n\ 180<use x="-2" y="-25" xlink:href="#ddot"/>\n\ 181<use x="-6" y="-19" xlink:href="#ddot"/>\n\ 182</g>';glyphs['Fsus4']='<g id="Fsus4">\n\ 183<use xlink:href="#barre"/>\n\ 184<use xlink:href="#fr1"/>\n\ 185<use xlink:href="#fb"/>\n\ 186<text x="-4,0" y="-36" class="diag">34</text>\n\ 187<use x="2" y="-19" xlink:href="#ddot"/>\n\ 188<use x="-2" y="-19" xlink:href="#ddot"/>\n\ 189</g>';glyphs['F#']='<g id="F#">\n\ 190<use xlink:href="#barre"/>\n\ 191<use xlink:href="#fr2"/>\n\ 192<use xlink:href="#fb"/>\n\ 193<text x="-8,-4,0" y="-36" class="diag">342</text>\n\ 194<use x="-2" y="-19" xlink:href="#ddot"/>\n\ 195<use x="-6" y="-19" xlink:href="#ddot"/>\n\ 196<use x="2" y="-25" xlink:href="#ddot"/>\n\ 197</g>';glyphs['F#m']='<g id="F#m">\n\ 198<use xlink:href="#barre"/>\n\ 199<use xlink:href="#fr2"/>\n\ 200<use xlink:href="#fb"/>\n\ 201<text x="-8,-4" y="-36" class="diag">34</text>\n\ 202<use x="-2" y="-19" xlink:href="#ddot"/>\n\ 203<use x="-6" y="-19" xlink:href="#ddot"/>\n\ 204</g>';glyphs['F#7']='<g id="F#7">\n\ 205<use xlink:href="#barre"/>\n\ 206<use xlink:href="#fr2"/>\n\ 207<use xlink:href="#fb"/>\n\ 208<text x="-8,0" y="-36" class="diag">32</text>\n\ 209<use x="2" y="-25" xlink:href="#ddot"/>\n\ 210<use x="-6" y="-19" xlink:href="#ddot"/>\n\ 211</g>';glyphs['F#m7']='<g id="F#m7">\n\ 212<use xlink:href="#barre"/>\n\ 213<use xlink:href="#fr2"/>\n\ 214<use xlink:href="#fb"/>\n\ 215<text x="-8" y="-36" class="diag">3</text>\n\ 216<use x="-6" y="-19" xlink:href="#ddot"/>\n\ 217</g>';glyphs['F#maj7']='<g id="F#maj7">\n\ 218<use xlink:href="#barre"/>\n\ 219<use xlink:href="#fr2"/>\n\ 220<use xlink:href="#fb"/>\n\ 221<text x="-8,-4,0" y="-36" class="diag">423</text>\n\ 222<use x="2" y="-25" xlink:href="#ddot"/>\n\ 223<use x="-2" y="-25" xlink:href="#ddot"/>\n\ 224<use x="-6" y="-19" xlink:href="#ddot"/>\n\ 225</g>';glyphs['F#sus4']='<g id="F#sus4">\n\ 226<use xlink:href="#barre"/>\n\ 227<use xlink:href="#fr2"/>\n\ 228<use xlink:href="#fb"/>\n\ 229<text x="-4,0" y="-36" class="diag">34</text>\n\ 230<use x="2" y="-19" xlink:href="#ddot"/>\n\ 231<use x="-2" y="-19" xlink:href="#ddot"/>\n\ 232</g>';glyphs['G']='<g id="G">\n\ 233<use xlink:href="#nut"/>\n\ 234<use xlink:href="#fb"/>\n\ 235<text x="-12,-8,8" y="-36" class="diag">234</text>\n\ 236<use x="10" y="-19" xlink:href="#ddot"/>\n\ 237<use x="-10" y="-19" xlink:href="#ddot"/>\n\ 238<use x="-6" y="-25" xlink:href="#ddot"/>\n\ 239</g>';glyphs['Gm']='<g id="Gm">\n\ 240<use xlink:href="#barre"/>\n\ 241<use xlink:href="#fr3"/>\n\ 242<use xlink:href="#fb"/>\n\ 243<text x="-8,-4" y="-36" class="diag">34</text>\n\ 244<use x="-2" y="-19" xlink:href="#ddot"/>\n\ 245<use x="-6" y="-19" xlink:href="#ddot"/>\n\ 246</g>';glyphs['G7']='<g id="G7">\n\ 247<use xlink:href="#nut"/>\n\ 248<use xlink:href="#fb"/>\n\ 249<text x="-12,-8,8" y="-36" class="diag">321</text>\n\ 250<use x="-10" y="-19" xlink:href="#ddot"/>\n\ 251<use x="-6" y="-25" xlink:href="#ddot"/>\n\ 252<use x="10" y="-31" xlink:href="#ddot"/>\n\ 253</g>';glyphs['Gm7']='<g id="Gm7">\n\ 254<use xlink:href="#barre"/>\n\ 255<use xlink:href="#fr3"/>\n\ 256<use xlink:href="#fb"/>\n\ 257<text x="-8" y="-36" class="diag">3</text>\n\ 258<use x="-6" y="-19" xlink:href="#ddot"/>\n\ 259</g>';glyphs['Gmaj7']='<g id="Gmaj7">\n\ 260<use xlink:href="#nut"/>\n\ 261<use xlink:href="#fb"/>\n\ 262<text x="-12,-8,8" y="-36" class="diag">312</text>\n\ 263<use x="10" y="-25" xlink:href="#ddot"/>\n\ 264<use x="-6" y="-25" xlink:href="#ddot"/>\n\ 265<use x="-10" y="-19" xlink:href="#ddot"/>\n\ 266</g>';glyphs['Gsus4']='<g id="Gsus4">\n\ 267<use xlink:href="#barre"/>\n\ 268<use xlink:href="#fr3"/>\n\ 269<use xlink:href="#fb"/>\n\ 270<text x="-4,0" y="-36" class="diag">34</text>\n\ 271<use x="2" y="-19" xlink:href="#ddot"/>\n\ 272<use x="-2" y="-19" xlink:href="#ddot"/>\n\ 273</g>';glyphs['A']='<g id="A">\n\ 274<use xlink:href="#nut"/>\n\ 275<use xlink:href="#fb"/>\n\ 276<text x="-4,0,4" y="-36" class="diag">234</text>\n\ 277<use x="6" y="-25" xlink:href="#ddot"/>\n\ 278<use x="2" y="-25" xlink:href="#ddot"/>\n\ 279<use x="-2" y="-25" xlink:href="#ddot"/>\n\ 280</g>';glyphs['Am']='<g id="Am">\n\ 281<use xlink:href="#nut"/>\n\ 282<use xlink:href="#fb"/>\n\ 283<text x="-4,0,4" y="-36" class="diag">231</text>\n\ 284<use x="2" y="-25" xlink:href="#ddot"/>\n\ 285<use x="-2" y="-25" xlink:href="#ddot"/>\n\ 286<use x="6" y="-31" xlink:href="#ddot"/>\n\ 287</g>';glyphs['A7']='<g id="A7">\n\ 288<use xlink:href="#nut"/>\n\ 289<use xlink:href="#fb"/>\n\ 290<text x="-4,4" y="-36" class="diag">23</text>\n\ 291<use x="6" y="-25" xlink:href="#ddot"/>\n\ 292<use x="-2" y="-25" xlink:href="#ddot"/>\n\ 293</g>';glyphs['Am7']='<g id="Am7">\n\ 294<use xlink:href="#nut"/>\n\ 295<use xlink:href="#fb"/>\n\ 296<text x="-4,4" y="-36" class="diag">21</text>\n\ 297<use x="6" y="-31" xlink:href="#ddot"/>\n\ 298<use x="-2" y="-25" xlink:href="#ddot"/>\n\ 299</g>';glyphs['Amaj7']='<g id="Amaj7">\n\ 300<use xlink:href="#nut"/>\n\ 301<use xlink:href="#fb"/>\n\ 302<text x="-12,-4,0,4" y="-36" class="diag">x213</text>\n\ 303<use x="6" y="-25" xlink:href="#ddot"/>\n\ 304<use x="2" y="-31" xlink:href="#ddot"/>\n\ 305<use x="-2" y="-25" xlink:href="#ddot"/>\n\ 306</g>';glyphs['Asus4']='<g id="Asus4">\n\ 307<use xlink:href="#nut"/>\n\ 308<use xlink:href="#fb"/>\n\ 309<text x="-12,0,4" y="-36" class="diag">x12</text>\n\ 310<use x="6" y="-19" xlink:href="#ddot"/>\n\ 311<use x="2" y="-25" xlink:href="#ddot"/>\n\ 312</g>';glyphs['B']='<g id="B">\n\ 313<use xlink:href="#barre"/>\n\ 314<use xlink:href="#fr2"/>\n\ 315<use xlink:href="#fb"/>\n\ 316<text x="-4,0,4" y="-36" class="diag">234</text>\n\ 317<use x="6" y="-19" xlink:href="#ddot"/>\n\ 318<use x="2" y="-19" xlink:href="#ddot"/>\n\ 319<use x="-2" y="-19" xlink:href="#ddot"/>\n\ 320</g>';glyphs['Bm']='<g id="Bm">\n\ 321<use xlink:href="#barre"/>\n\ 322<use xlink:href="#fr2"/>\n\ 323<use xlink:href="#fb"/>\n\ 324<text x="-4,0,4" y="-36" class="diag">341</text>\n\ 325<use x="6" y="-25" xlink:href="#ddot"/>\n\ 326<use x="2" y="-19" xlink:href="#ddot"/>\n\ 327<use x="-2" y="-19" xlink:href="#ddot"/>\n\ 328</g>';glyphs['B7']='<g id="B7">\n\ 329<use xlink:href="#nut"/>\n\ 330<use xlink:href="#fb"/>\n\ 331<text x="-12,-8,-4,0,8" y="-36" class="diag">x2134</text>\n\ 332<use x="10" y="-25" xlink:href="#ddot"/>\n\ 333<use x="2" y="-25" xlink:href="#ddot"/>\n\ 334<use x="-6" y="-25" xlink:href="#ddot"/>\n\ 335<use x="-2" y="-31" xlink:href="#ddot"/>\n\ 336</g>';glyphs['Bm7']='<g id="Bm7">\n\ 337<use xlink:href="#barre"/>\n\ 338<use xlink:href="#fr2"/>\n\ 339<use xlink:href="#fb"/>\n\ 340<text x="-12,0,8" y="-36" class="diag">x32</text>\n\ 341<use x="-2" y="-19" xlink:href="#ddot"/>\n\ 342<use x="6" y="-25" xlink:href="#ddot"/>\n\ 343</g>';glyphs['Bmaj7']='<g id="Bmaj7">\n\ 344<use xlink:href="#barre"/>\n\ 345<use xlink:href="#fr2"/>\n\ 346<use xlink:href="#fb"/>\n\ 347<text x="-12,-4,0,4" y="-36" class="diag">x324</text>\n\ 348<use x="6" y="-19" xlink:href="#ddot"/>\n\ 349<use x="2" y="-25" xlink:href="#ddot"/>\n\ 350<use x="-2" y="-19" xlink:href="#ddot"/>\n\ 351</g>';glyphs['Bsus4']='<g id="Bsus4">\n\ 352<use xlink:href="#barre"/>\n\ 353<use xlink:href="#fr2"/>\n\ 354<use xlink:href="#fb"/>\n\ 355<text x="-12,0,4" y="-36" class="diag">x34</text>\n\ 356<use x="6" y="-19" xlink:href="#ddot"/>\n\ 357<use x="2" y="-25" xlink:href="#ddot"/>\n\ 358</g>'} 359function ch_cnv(t){var a=t.match(/[A-G][#♯b♭]?([^/]*)\/?/) 360if(a&&a[1]){a[2]=abc2svg.ch_alias[a[1]] 361if(a[2]!=undefined) 362t=t.replace(a[1],a[2])} 363return t} 364var s,i,gch 365for(s=voice_tb[0].sym;s;s=s.next){if(!s.a_gch) 366continue 367for(i=0;i<s.a_gch.length;i++){gch=s.a_gch[i] 368if(!gch||gch.type!='g'||gch.capo) 369continue 370this.deco_cnv([ch_cnv(gch.otext)],s,null)}}},output_music:function(of){if(this.cfmt().diag) 371abc2svg.diag.do_diag.call(this) 372of()},set_fmt:function(of,cmd,param){if(cmd=="diagram"){this.cfmt().diag=param 373return} 374of(cmd,param)},set_hooks:function(abc){abc.output_music=abc2svg.diag.output_music.bind(abc,abc.output_music);abc.set_format=abc2svg.diag.set_fmt.bind(abc,abc.set_format)}} 375abc2svg.modules.hooks.push(abc2svg.diag.set_hooks);abc2svg.modules.diagram.loaded=true 376