module Js = Js_of_ocaml.Js class type viz = object (* SVG output *) method renderSVGElement : Js.js_string Js.t -> (Js_of_ocaml.Dom_svg.svgElement Js.t, unit) Promise.promise Js.meth method renderString : Js.js_string Js.t -> (Js.js_string Js.t, unit) Promise.promise Js.meth end type t = Js.js_string Js.t * Js.js_string Js.t let do_action : viz Js.t -> Js.js_string Js.t -> (unit, unit) Promise.promise = fun v text -> if text##.length != 0 then let gv = Formatter.convert text in let promise = try v##renderString gv with | _ -> Promise.reject () in Promise.then_map ~on_fulfilled:(fun svg -> Js_of_ocaml.Worker.post_message ((gv, svg) : t)) ~on_rejected:(fun _ -> ()) promise else Promise.reject ()