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