Browse Source

src structure

Namdak Tonpa 5 years ago
parent
commit
388c27b5fc
80 changed files with 33 additions and 1 deletions
  1. 1 1
      include/nitro.hrl
  2. 20 0
      src/actions/action_manage.erl
  3. 12 0
      src/actions/action_transfer.erl
  4. 0 0
      src/elements/edit/element_del.erl
  5. 0 0
      src/elements/edit/element_ins.erl
  6. 0 0
      src/elements/embed/element_area.erl
  7. 0 0
      src/elements/embed/element_audio.erl
  8. 0 0
      src/elements/embed/element_canvas.erl
  9. 0 0
      src/elements/embed/element_embed.erl
  10. 0 0
      src/elements/embed/element_iframe.erl
  11. 0 0
      src/elements/embed/element_image.erl
  12. 0 0
      src/elements/embed/element_map.erl
  13. 0 0
      src/elements/embed/element_object.erl
  14. 0 0
      src/elements/embed/element_param.erl
  15. 0 0
      src/elements/embed/element_source.erl
  16. 0 0
      src/elements/embed/element_track.erl
  17. 0 0
      src/elements/embed/element_video.erl
  18. 0 0
      src/elements/form/element_button.erl
  19. 0 0
      src/elements/form/element_fieldset.erl
  20. 0 0
      src/elements/form/element_form.erl
  21. 0 0
      src/elements/form/element_keygen.erl
  22. 0 0
      src/elements/form/element_label.erl
  23. 0 0
      src/elements/form/element_legend.erl
  24. 0 0
      src/elements/form/element_meter.erl
  25. 0 0
      src/elements/form/element_output.erl
  26. 0 0
      src/elements/form/element_progress.erl
  27. 0 0
      src/elements/form/element_select.erl
  28. 0 0
      src/elements/form/element_textarea.erl
  29. 0 0
      src/elements/group/element_blockquote.erl
  30. 0 0
      src/elements/group/element_dtl.erl
  31. 0 0
      src/elements/group/element_html.erl
  32. 0 0
      src/elements/group/element_li.erl
  33. 0 0
      src/elements/group/element_script.erl
  34. 0 0
      src/elements/input/element_calendar.erl
  35. 0 0
      src/elements/input/element_checkbox.erl
  36. 0 0
      src/elements/input/element_color.erl
  37. 0 0
      src/elements/input/element_date.erl
  38. 0 0
      src/elements/input/element_datetime.erl
  39. 0 0
      src/elements/input/element_datetime_local.erl
  40. 0 0
      src/elements/input/element_dropdown.erl
  41. 0 0
      src/elements/input/element_email.erl
  42. 0 0
      src/elements/input/element_file.erl
  43. 0 0
      src/elements/input/element_hidden.erl
  44. 0 0
      src/elements/input/element_input.erl
  45. 0 0
      src/elements/input/element_input_button.erl
  46. 0 0
      src/elements/input/element_input_image.erl
  47. 0 0
      src/elements/input/element_input_time.erl
  48. 0 0
      src/elements/input/element_link.erl
  49. 0 0
      src/elements/input/element_list.erl
  50. 0 0
      src/elements/input/element_literal.erl
  51. 0 0
      src/elements/input/element_month.erl
  52. 0 0
      src/elements/input/element_number.erl
  53. 0 0
      src/elements/input/element_password.erl
  54. 0 0
      src/elements/input/element_radio.erl
  55. 0 0
      src/elements/input/element_radiogroup.erl
  56. 0 0
      src/elements/input/element_range.erl
  57. 0 0
      src/elements/input/element_reset.erl
  58. 0 0
      src/elements/input/element_search.erl
  59. 0 0
      src/elements/input/element_submit.erl
  60. 0 0
      src/elements/input/element_tel.erl
  61. 0 0
      src/elements/input/element_textbox.erl
  62. 0 0
      src/elements/input/element_time.erl
  63. 0 0
      src/elements/input/element_url.erl
  64. 0 0
      src/elements/input/element_week.erl
  65. 0 0
      src/elements/interactive/element_command.erl
  66. 0 0
      src/elements/interactive/element_details.erl
  67. 0 0
      src/elements/interactive/element_menu.erl
  68. 0 0
      src/elements/interactive/element_summary.erl
  69. 0 0
      src/elements/interactive/element_upload.erl
  70. 0 0
      src/elements/meta/element_meta.erl
  71. 0 0
      src/elements/meta/element_meta_base.erl
  72. 0 0
      src/elements/meta/element_meta_link.erl
  73. 0 0
      src/elements/meta/element_style.erl
  74. 0 0
      src/elements/table/element_col.erl
  75. 0 0
      src/elements/table/element_colgroup.erl
  76. 0 0
      src/elements/table/element_table.erl
  77. 0 0
      src/elements/table/element_td.erl
  78. 0 0
      src/elements/table/element_th.erl
  79. 0 0
      src/elements/table/element_tr.erl
  80. 0 0
      src/elements/text/element_q.erl

+ 1 - 1
include/nitro.hrl

@@ -21,7 +21,7 @@
 -define(ACTION_BASE(Module), ancestor=action, trigger=[], target=[], module=Module, actions=[], source=[]).
 -define(CTRL_BASE(Module), ?ELEMENT_BASE(Module,[],Module)).
 
--record(element, {?ELEMENT_BASE(undefined)}).
+-record(element, {?ELEMENT_BASE([])}).
 -record(literal, {?ELEMENT_BASE(element_literal), html_encode=true }).
 -record(dtl, {?ELEMENT_BASE(element_dtl), file="index", bindings=[], app=web, folder="priv/templates", ext="html", bind_script=true, js_escape=false }).
 -record(list, {?ELEMENT_BASE(element_list), numbered=false }).

+ 20 - 0
src/actions/action_manage.erl

@@ -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.

+ 12 - 0
src/actions/action_transfer.erl

@@ -0,0 +1,12 @@
+-module(action_transfer).
+-author('Andrey Martemyanov').
+-include_lib("nitro/include/nitro.hrl").
+-compile(export_all).
+
+render_action(Record) ->
+    case Record#transfer.state of
+        undefined -> ok;
+        List when is_list(List) -> [ erlang:put(K,V) || {K,V} <- List ];
+        Single -> erlang:put(state,Single) end,
+    Events = case Record#transfer.events of E when is_list(E) -> E; E -> [E] end,
+    [ self() ! M || M <- Events ], ok.

+ 0 - 0
src/elements/element_del.erl → src/elements/edit/element_del.erl


+ 0 - 0
src/elements/element_ins.erl → src/elements/edit/element_ins.erl


+ 0 - 0
src/elements/element_area.erl → src/elements/embed/element_area.erl


+ 0 - 0
src/elements/element_audio.erl → src/elements/embed/element_audio.erl


+ 0 - 0
src/elements/element_canvas.erl → src/elements/embed/element_canvas.erl


+ 0 - 0
src/elements/element_embed.erl → src/elements/embed/element_embed.erl


+ 0 - 0
src/elements/element_iframe.erl → src/elements/embed/element_iframe.erl


+ 0 - 0
src/elements/element_image.erl → src/elements/embed/element_image.erl


+ 0 - 0
src/elements/element_map.erl → src/elements/embed/element_map.erl


+ 0 - 0
src/elements/element_object.erl → src/elements/embed/element_object.erl


+ 0 - 0
src/elements/element_param.erl → src/elements/embed/element_param.erl


+ 0 - 0
src/elements/element_source.erl → src/elements/embed/element_source.erl


+ 0 - 0
src/elements/element_track.erl → src/elements/embed/element_track.erl


+ 0 - 0
src/elements/element_video.erl → src/elements/embed/element_video.erl


+ 0 - 0
src/elements/element_button.erl → src/elements/form/element_button.erl


+ 0 - 0
src/elements/element_fieldset.erl → src/elements/form/element_fieldset.erl


+ 0 - 0
src/elements/element_form.erl → src/elements/form/element_form.erl


+ 0 - 0
src/elements/element_keygen.erl → src/elements/form/element_keygen.erl


+ 0 - 0
src/elements/element_label.erl → src/elements/form/element_label.erl


+ 0 - 0
src/elements/element_legend.erl → src/elements/form/element_legend.erl


+ 0 - 0
src/elements/element_meter.erl → src/elements/form/element_meter.erl


+ 0 - 0
src/elements/element_output.erl → src/elements/form/element_output.erl


+ 0 - 0
src/elements/element_progress.erl → src/elements/form/element_progress.erl


+ 0 - 0
src/elements/element_select.erl → src/elements/form/element_select.erl


+ 0 - 0
src/elements/element_textarea.erl → src/elements/form/element_textarea.erl


+ 0 - 0
src/elements/element_blockquote.erl → src/elements/group/element_blockquote.erl


+ 0 - 0
src/elements/element_dtl.erl → src/elements/group/element_dtl.erl


+ 0 - 0
src/elements/element_html.erl → src/elements/group/element_html.erl


+ 0 - 0
src/elements/element_li.erl → src/elements/group/element_li.erl


+ 0 - 0
src/elements/element_script.erl → src/elements/group/element_script.erl


+ 0 - 0
src/elements/element_calendar.erl → src/elements/input/element_calendar.erl


+ 0 - 0
src/elements/element_checkbox.erl → src/elements/input/element_checkbox.erl


+ 0 - 0
src/elements/element_color.erl → src/elements/input/element_color.erl


+ 0 - 0
src/elements/element_date.erl → src/elements/input/element_date.erl


+ 0 - 0
src/elements/element_datetime.erl → src/elements/input/element_datetime.erl


+ 0 - 0
src/elements/element_datetime_local.erl → src/elements/input/element_datetime_local.erl


+ 0 - 0
src/elements/element_dropdown.erl → src/elements/input/element_dropdown.erl


+ 0 - 0
src/elements/element_email.erl → src/elements/input/element_email.erl


+ 0 - 0
src/elements/element_file.erl → src/elements/input/element_file.erl


+ 0 - 0
src/elements/element_hidden.erl → src/elements/input/element_hidden.erl


+ 0 - 0
src/elements/element_input.erl → src/elements/input/element_input.erl


+ 0 - 0
src/elements/element_input_button.erl → src/elements/input/element_input_button.erl


+ 0 - 0
src/elements/element_input_image.erl → src/elements/input/element_input_image.erl


+ 0 - 0
src/elements/element_input_time.erl → src/elements/input/element_input_time.erl


+ 0 - 0
src/elements/element_link.erl → src/elements/input/element_link.erl


+ 0 - 0
src/elements/element_list.erl → src/elements/input/element_list.erl


+ 0 - 0
src/elements/element_literal.erl → src/elements/input/element_literal.erl


+ 0 - 0
src/elements/element_month.erl → src/elements/input/element_month.erl


+ 0 - 0
src/elements/element_number.erl → src/elements/input/element_number.erl


+ 0 - 0
src/elements/element_password.erl → src/elements/input/element_password.erl


+ 0 - 0
src/elements/element_radio.erl → src/elements/input/element_radio.erl


+ 0 - 0
src/elements/element_radiogroup.erl → src/elements/input/element_radiogroup.erl


+ 0 - 0
src/elements/element_range.erl → src/elements/input/element_range.erl


+ 0 - 0
src/elements/element_reset.erl → src/elements/input/element_reset.erl


+ 0 - 0
src/elements/element_search.erl → src/elements/input/element_search.erl


+ 0 - 0
src/elements/element_submit.erl → src/elements/input/element_submit.erl


+ 0 - 0
src/elements/element_tel.erl → src/elements/input/element_tel.erl


+ 0 - 0
src/elements/element_textbox.erl → src/elements/input/element_textbox.erl


+ 0 - 0
src/elements/element_time.erl → src/elements/input/element_time.erl


+ 0 - 0
src/elements/element_url.erl → src/elements/input/element_url.erl


+ 0 - 0
src/elements/element_week.erl → src/elements/input/element_week.erl


+ 0 - 0
src/elements/element_command.erl → src/elements/interactive/element_command.erl


+ 0 - 0
src/elements/element_details.erl → src/elements/interactive/element_details.erl


+ 0 - 0
src/elements/element_menu.erl → src/elements/interactive/element_menu.erl


+ 0 - 0
src/elements/element_summary.erl → src/elements/interactive/element_summary.erl


+ 0 - 0
src/elements/element_upload.erl → src/elements/interactive/element_upload.erl


+ 0 - 0
src/elements/element_meta.erl → src/elements/meta/element_meta.erl


+ 0 - 0
src/elements/element_meta_base.erl → src/elements/meta/element_meta_base.erl


+ 0 - 0
src/elements/element_meta_link.erl → src/elements/meta/element_meta_link.erl


+ 0 - 0
src/elements/element_style.erl → src/elements/meta/element_style.erl


+ 0 - 0
src/elements/element_col.erl → src/elements/table/element_col.erl


+ 0 - 0
src/elements/element_colgroup.erl → src/elements/table/element_colgroup.erl


+ 0 - 0
src/elements/element_table.erl → src/elements/table/element_table.erl


+ 0 - 0
src/elements/element_td.erl → src/elements/table/element_td.erl


+ 0 - 0
src/elements/element_th.erl → src/elements/table/element_th.erl


+ 0 - 0
src/elements/element_tr.erl → src/elements/table/element_tr.erl


+ 0 - 0
src/elements/element_q.erl → src/elements/text/element_q.erl