-module(action_manage). %%-author('Andrey Martemyanov'). -include_lib("nitro/include/nitro.hrl"). -export([ render_action/1 ]). render_action( #replace{target = T, elements = E} ) -> nitro:render( #jq{target = T, property = outerHTML, right = E} ); render_action( #insert{target = T, elements = E, position = P} ) -> {Rendered, Actions} = render_element(E), [ wf_event:target(T), ".insertAdjacentHTML('", nitro:to_binary(P), "','", Rendered, "');", nitro:render(Actions) ]; render_action(#multi{actions = A}) -> [ "window.requestAnimationFrame(function(timestamp){", nitro:render(A), "});" ]. render_element(E) -> Pid = self(), Ref = make_ref(), spawn(fun() -> Pid ! { nitro:render(E), Ref, wf:actions() } end), receive {Rendered, Ref, Actions} -> {Rendered, Actions} end.