@@ -82,8 +82,6 @@ Graph = class {
8282 node . label = value [ 0 ] ;
8383 node . ccsize = value [ 3 ] ;
8484 node . level = order_lookup . get ( value [ 4 ] ) ; // a pair
85- node . image = new Image ( ) ;
86- node . image . src = value [ 5 ] ;
8785 node . key = key ;
8886
8987 node . posn = posnx ;
@@ -239,26 +237,37 @@ class Renderer {
239237 }
240238
241239 draw ( ) {
242- this . ctx . clearRect ( 0 , 0 , this . element . width , this . element . height ) ;
243- for ( var i = 0 ; i < this . graph . nodes . length ; i ++ ) {
244- this . drawNode ( this . graph . nodes [ i ] ) ;
245- }
240+ this . clear ( ) ;
246241 for ( var i = 0 ; i < this . graph . edges . length ; i ++ ) {
247242 this . drawEdge ( this . graph . edges [ i ] ) ;
248243 }
244+ for ( var i = 0 ; i < this . graph . nodes . length ; i ++ ) {
245+ this . drawNode ( this . graph . nodes [ i ] ) ;
246+ }
249247 }
250248
251249 drawNode ( node ) {
252250 var point = this . translate ( [ node . layoutPosX , node . layoutPosY ] ) ;
253251
254- node . style . position = 'absolute' ;
255- node . style . top = point [ 1 ] + 'px' ;
256- node . style . left = point [ 0 ] + 'px' ;
257-
258- this . ctx . moveTo ( 0 , 0 ) ;
259- this . ctx . strokeStyle = 'black' ;
260- this . ctx . fillStyle = 'black' ;
261- this . ctx . font = "10px Arial" ;
252+ // Use KaTeX to render the label to an SVG
253+ var katex_div = document . createElement ( 'div' ) ;
254+ try {
255+ katex . render ( node . label , katex_div , {
256+ throwOnError : false ,
257+ output : "svg"
258+ } ) ;
259+ } catch ( e ) {
260+ console . error ( e ) ;
261+ katex_div . textContent = node . label ;
262+ }
263+ var svg = katex_div . querySelector ( 'svg' ) ;
264+ svg . setAttribute ( 'xmlns' , 'http://www.w3.org/2000/svg' ) ;
265+ var svg_source = svg . outerHTML ;
266+
267+ // Create a data URL from the SVG
268+ node . image = new Image ( ) ;
269+ node . image . src = 'data:image/svg+xml;base64,' + window . btoa ( svg_source ) ;
270+
262271 var ctxt = this . ctx ;
263272 var img = node . image ;
264273
@@ -657,7 +666,7 @@ class EventHandler {
657666 renderer . element . dispatchEvent ( mouseEvent ) ;
658667 } ;
659668 var handlertouchend = function ( event ) {
660- var touch = event . touches [ 0 ] ;
669+ var touch = event . changedTouches [ 0 ] ;
661670 var mouseEvent = new MouseEvent ( "mouseup" , {
662671 clientX : touch . clientX ,
663672 clientY : touch . clientY
0 commit comments