|
@@ -0,0 +1,20 @@
|
|
|
+-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.
|