action_manage.erl 812 B

12345678910111213141516171819202122232425262728293031
  1. -module(action_manage).
  2. %%-author('Andrey Martemyanov').
  3. -include_lib("nitro/include/nitro.hrl").
  4. -export([
  5. render_action/1
  6. ]).
  7. render_action( #replace{target = T, elements = E} ) ->
  8. nitro:render( #jq{target = T, property = outerHTML, right = E} );
  9. render_action( #insert{target = T, elements = E, position = P} ) ->
  10. {Rendered, Actions} = render_element(E),
  11. [ wf_event:target(T), ".insertAdjacentHTML('", nitro:to_binary(P), "','", Rendered, "');", nitro:render(Actions) ];
  12. render_action(#multi{actions = A}) ->
  13. [ "window.requestAnimationFrame(function(timestamp){", nitro:render(A), "});" ].
  14. render_element(E) ->
  15. Pid = self(),
  16. Ref = make_ref(),
  17. spawn(fun() ->
  18. Pid ! { nitro:render(E), Ref, wf:actions() }
  19. end),
  20. receive
  21. {Rendered, Ref, Actions} -> {Rendered, Actions}
  22. end.