ruflet_core 0.0.17 → 0.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ruflet/version.rb +1 -1
  3. data/lib/ruflet_core.rb +9 -7
  4. data/lib/ruflet_protocol/ruflet/protocol.rb +28 -54
  5. data/lib/ruflet_ui/ruflet/app.rb +1 -1
  6. data/lib/ruflet_ui/ruflet/colors.rb +4 -50
  7. data/lib/ruflet_ui/ruflet/control.rb +69 -64
  8. data/lib/ruflet_ui/ruflet/dsl.rb +10 -3
  9. data/lib/ruflet_ui/ruflet/icons/cupertino/cupertino_icons.rb +2 -2
  10. data/lib/ruflet_ui/ruflet/icons/cupertino_icon_lookup.rb +1 -0
  11. data/lib/ruflet_ui/ruflet/icons/icon_constant_names.rb +29 -0
  12. data/lib/ruflet_ui/ruflet/icons/material/material_icons.rb +2 -2
  13. data/lib/ruflet_ui/ruflet/icons/material_icon_lookup.rb +1 -0
  14. data/lib/ruflet_ui/ruflet/page.rb +313 -523
  15. data/lib/ruflet_ui/ruflet/ui/control_factory.rb +68 -12
  16. data/lib/ruflet_ui/ruflet/ui/control_registry.rb +13 -6
  17. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoactionsheet_control.rb +8 -45
  18. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoactionsheetaction_control.rb +45 -2
  19. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoactivityindicator_control.rb +43 -2
  20. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoalertdialog_control.rb +0 -5
  21. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinobutton_control.rb +59 -4
  22. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinocheckbox_control.rb +56 -1
  23. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinocontextmenu_control.rb +1 -3
  24. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinocontextmenuaction_control.rb +1 -1
  25. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinodatepicker_control.rb +53 -8
  26. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinodialogaction_control.rb +1 -1
  27. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinofilledbutton_control.rb +59 -4
  28. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinolisttile_control.rb +54 -9
  29. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinonavigationbar_control.rb +47 -9
  30. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinopicker_control.rb +52 -10
  31. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoradio_control.rb +52 -1
  32. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinosegmentedbutton_control.rb +49 -1
  33. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoslider_control.rb +50 -5
  34. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoslidingsegmentedbutton_control.rb +46 -1
  35. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoswitch_control.rb +61 -1
  36. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinotextfield_control.rb +145 -1
  37. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinotimerpicker_control.rb +47 -12
  38. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinotintedbutton_control.rb +59 -4
  39. data/lib/ruflet_ui/ruflet/ui/controls/materials/alertdialog_control.rb +8 -45
  40. data/lib/ruflet_ui/ruflet/ui/controls/materials/appbar_control.rb +8 -40
  41. data/lib/ruflet_ui/ruflet/ui/controls/materials/audio_control.rb +16 -5
  42. data/lib/ruflet_ui/ruflet/ui/controls/materials/autocomplete_control.rb +44 -1
  43. data/lib/ruflet_ui/ruflet/ui/controls/materials/badge_control.rb +0 -7
  44. data/lib/ruflet_ui/ruflet/ui/controls/materials/banner_control.rb +0 -7
  45. data/lib/ruflet_ui/ruflet/ui/controls/materials/bottomappbar_control.rb +8 -47
  46. data/lib/ruflet_ui/ruflet/ui/controls/materials/bottomsheet_control.rb +0 -3
  47. data/lib/ruflet_ui/ruflet/ui/controls/materials/button_control.rb +8 -54
  48. data/lib/ruflet_ui/ruflet/ui/controls/materials/card_control.rb +8 -50
  49. data/lib/ruflet_ui/ruflet/ui/controls/materials/chart_controls.rb +19 -0
  50. data/lib/ruflet_ui/ruflet/ui/controls/materials/checkbox_control.rb +9 -60
  51. data/lib/ruflet_ui/ruflet/ui/controls/materials/chip_control.rb +7 -81
  52. data/lib/ruflet_ui/ruflet/ui/controls/materials/circleavatar_control.rb +7 -56
  53. data/lib/ruflet_ui/ruflet/ui/controls/materials/container_control.rb +9 -65
  54. data/lib/ruflet_ui/ruflet/ui/controls/materials/contextmenu_control.rb +50 -4
  55. data/lib/ruflet_ui/ruflet/ui/controls/materials/datacell_control.rb +1 -3
  56. data/lib/ruflet_ui/ruflet/ui/controls/materials/datacolumn_control.rb +1 -3
  57. data/lib/ruflet_ui/ruflet/ui/controls/materials/datatable_control.rb +7 -88
  58. data/lib/ruflet_ui/ruflet/ui/controls/materials/datepicker_control.rb +9 -55
  59. data/lib/ruflet_ui/ruflet/ui/controls/materials/daterangepicker_control.rb +8 -58
  60. data/lib/ruflet_ui/ruflet/ui/controls/materials/divider_control.rb +0 -9
  61. data/lib/ruflet_ui/ruflet/ui/controls/materials/dropdown_control.rb +8 -93
  62. data/lib/ruflet_ui/ruflet/ui/controls/materials/dropdownm2_control.rb +9 -103
  63. data/lib/ruflet_ui/ruflet/ui/controls/materials/dropdownoption_control.rb +0 -2
  64. data/lib/ruflet_ui/ruflet/ui/controls/materials/expansionpanel_control.rb +7 -51
  65. data/lib/ruflet_ui/ruflet/ui/controls/materials/expansionpanellist_control.rb +46 -5
  66. data/lib/ruflet_ui/ruflet/ui/controls/materials/expansiontile_control.rb +69 -3
  67. data/lib/ruflet_ui/ruflet/ui/controls/materials/filledbutton_control.rb +54 -2
  68. data/lib/ruflet_ui/ruflet/ui/controls/materials/fillediconbutton_control.rb +67 -5
  69. data/lib/ruflet_ui/ruflet/ui/controls/materials/filledtonalbutton_control.rb +54 -2
  70. data/lib/ruflet_ui/ruflet/ui/controls/materials/filledtonaliconbutton_control.rb +67 -5
  71. data/lib/ruflet_ui/ruflet/ui/controls/materials/floatingactionbutton_control.rb +7 -69
  72. data/lib/ruflet_ui/ruflet/ui/controls/materials/iconbutton_control.rb +8 -68
  73. data/lib/ruflet_ui/ruflet/ui/controls/materials/listtile_control.rb +8 -74
  74. data/lib/ruflet_ui/ruflet/ui/controls/materials/map_control.rb +99 -0
  75. data/lib/ruflet_ui/ruflet/ui/controls/materials/menuitembutton_control.rb +8 -56
  76. data/lib/ruflet_ui/ruflet/ui/controls/materials/navigationbar_control.rb +7 -59
  77. data/lib/ruflet_ui/ruflet/ui/controls/materials/navigationdrawer_control.rb +0 -7
  78. data/lib/ruflet_ui/ruflet/ui/controls/materials/navigationrail_control.rb +7 -73
  79. data/lib/ruflet_ui/ruflet/ui/controls/materials/outlinedbutton_control.rb +51 -2
  80. data/lib/ruflet_ui/ruflet/ui/controls/materials/outlinediconbutton_control.rb +67 -5
  81. data/lib/ruflet_ui/ruflet/ui/controls/materials/popupmenubutton_control.rb +8 -61
  82. data/lib/ruflet_ui/ruflet/ui/controls/materials/popupmenuitem_control.rb +0 -6
  83. data/lib/ruflet_ui/ruflet/ui/controls/materials/progressbar_control.rb +8 -56
  84. data/lib/ruflet_ui/ruflet/ui/controls/materials/progressring_control.rb +8 -56
  85. data/lib/ruflet_ui/ruflet/ui/controls/materials/radio_control.rb +9 -54
  86. data/lib/ruflet_ui/ruflet/ui/controls/materials/rangeslider_control.rb +7 -62
  87. data/lib/ruflet_ui/ruflet/ui/controls/materials/reorderablelistview_control.rb +9 -64
  88. data/lib/ruflet_ui/ruflet/ui/controls/materials/ruflet_controls.rb +5 -26
  89. data/lib/ruflet_ui/ruflet/ui/controls/materials/searchbar_control.rb +80 -11
  90. data/lib/ruflet_ui/ruflet/ui/controls/materials/segment_control.rb +0 -3
  91. data/lib/ruflet_ui/ruflet/ui/controls/materials/segmentedbutton_control.rb +7 -64
  92. data/lib/ruflet_ui/ruflet/ui/controls/materials/selectionarea_control.rb +1 -3
  93. data/lib/ruflet_ui/ruflet/ui/controls/materials/slider_control.rb +9 -60
  94. data/lib/ruflet_ui/ruflet/ui/controls/materials/snackbar_control.rb +37 -4
  95. data/lib/ruflet_ui/ruflet/ui/controls/materials/snackbaraction_control.rb +38 -0
  96. data/lib/ruflet_ui/ruflet/ui/controls/materials/spinkit_control.rb +25 -0
  97. data/lib/ruflet_ui/ruflet/ui/controls/materials/submenubutton_control.rb +52 -7
  98. data/lib/ruflet_ui/ruflet/ui/controls/materials/switch_control.rb +9 -61
  99. data/lib/ruflet_ui/ruflet/ui/controls/materials/tab_control.rb +0 -7
  100. data/lib/ruflet_ui/ruflet/ui/controls/materials/tabbar_control.rb +8 -64
  101. data/lib/ruflet_ui/ruflet/ui/controls/materials/tabbarview_control.rb +43 -5
  102. data/lib/ruflet_ui/ruflet/ui/controls/materials/tabs_control.rb +7 -47
  103. data/lib/ruflet_ui/ruflet/ui/controls/materials/textbutton_control.rb +51 -2
  104. data/lib/ruflet_ui/ruflet/ui/controls/materials/textfield_control.rb +9 -132
  105. data/lib/ruflet_ui/ruflet/ui/controls/materials/timepicker_control.rb +10 -34
  106. data/lib/ruflet_ui/ruflet/ui/controls/materials/verticaldivider_control.rb +0 -9
  107. data/lib/ruflet_ui/ruflet/ui/controls/materials/video_control.rb +9 -42
  108. data/lib/ruflet_ui/ruflet/ui/controls/materials/webview_control.rb +3 -4
  109. data/lib/ruflet_ui/ruflet/ui/controls/ruflet_controls.rb +13 -28
  110. data/lib/ruflet_ui/ruflet/ui/controls/shared/animatedswitcher_control.rb +46 -4
  111. data/lib/ruflet_ui/ruflet/ui/controls/shared/arc_control.rb +1 -0
  112. data/lib/ruflet_ui/ruflet/ui/controls/shared/browsercontextmenu_control.rb +1 -12
  113. data/lib/ruflet_ui/ruflet/ui/controls/shared/canvas_control.rb +8 -54
  114. data/lib/ruflet_ui/ruflet/ui/controls/shared/circle_control.rb +1 -0
  115. data/lib/ruflet_ui/ruflet/ui/controls/shared/column_control.rb +9 -51
  116. data/lib/ruflet_ui/ruflet/ui/controls/shared/dismissible_control.rb +52 -12
  117. data/lib/ruflet_ui/ruflet/ui/controls/shared/draggable_control.rb +1 -7
  118. data/lib/ruflet_ui/ruflet/ui/controls/shared/dragtarget_control.rb +1 -3
  119. data/lib/ruflet_ui/ruflet/ui/controls/shared/fletapp_control.rb +9 -46
  120. data/lib/ruflet_ui/ruflet/ui/controls/shared/gesturedetector_control.rb +9 -113
  121. data/lib/ruflet_ui/ruflet/ui/controls/shared/gridview_control.rb +57 -13
  122. data/lib/ruflet_ui/ruflet/ui/controls/shared/hero_control.rb +9 -40
  123. data/lib/ruflet_ui/ruflet/ui/controls/shared/icon_control.rb +9 -48
  124. data/lib/ruflet_ui/ruflet/ui/controls/shared/interactiveviewer_control.rb +9 -53
  125. data/lib/ruflet_ui/ruflet/ui/controls/shared/line_control.rb +1 -0
  126. data/lib/ruflet_ui/ruflet/ui/controls/shared/listview_control.rb +57 -11
  127. data/lib/ruflet_ui/ruflet/ui/controls/shared/markdown_control.rb +9 -54
  128. data/lib/ruflet_ui/ruflet/ui/controls/shared/oval_control.rb +1 -0
  129. data/lib/ruflet_ui/ruflet/ui/controls/shared/page_control.rb +9 -58
  130. data/lib/ruflet_ui/ruflet/ui/controls/shared/pagelet_control.rb +9 -48
  131. data/lib/ruflet_ui/ruflet/ui/controls/shared/pageview_control.rb +50 -4
  132. data/lib/ruflet_ui/ruflet/ui/controls/shared/path_control.rb +1 -0
  133. data/lib/ruflet_ui/ruflet/ui/controls/shared/placeholder_control.rb +44 -9
  134. data/lib/ruflet_ui/ruflet/ui/controls/shared/points_control.rb +1 -0
  135. data/lib/ruflet_ui/ruflet/ui/controls/shared/rect_control.rb +1 -0
  136. data/lib/ruflet_ui/ruflet/ui/controls/shared/reorderabledraghandle_control.rb +43 -4
  137. data/lib/ruflet_ui/ruflet/ui/controls/shared/responsiverow_control.rb +47 -15
  138. data/lib/ruflet_ui/ruflet/ui/controls/shared/rotatedbox_control.rb +97 -0
  139. data/lib/ruflet_ui/ruflet/ui/controls/shared/row_control.rb +9 -51
  140. data/lib/ruflet_ui/ruflet/ui/controls/shared/ruflet_controls.rb +5 -0
  141. data/lib/ruflet_ui/ruflet/ui/controls/shared/safearea_control.rb +48 -4
  142. data/lib/ruflet_ui/ruflet/ui/{services/ruflet → controls/shared}/screenshot_control.rb +18 -2
  143. data/lib/ruflet_ui/ruflet/ui/controls/shared/semantics_control.rb +65 -1
  144. data/lib/ruflet_ui/ruflet/ui/controls/shared/shadermask_control.rb +9 -41
  145. data/lib/ruflet_ui/ruflet/ui/controls/shared/shimmer_control.rb +9 -44
  146. data/lib/ruflet_ui/ruflet/ui/controls/shared/stack_control.rb +44 -1
  147. data/lib/ruflet_ui/ruflet/ui/controls/shared/text_control.rb +9 -35
  148. data/lib/ruflet_ui/ruflet/ui/controls/shared/transparentpointer_control.rb +9 -38
  149. data/lib/ruflet_ui/ruflet/ui/controls/shared/view_control.rb +63 -1
  150. data/lib/ruflet_ui/ruflet/ui/controls/shared/window_control.rb +40 -66
  151. data/lib/ruflet_ui/ruflet/ui/controls/shared/windowdragarea_control.rb +45 -4
  152. data/lib/ruflet_ui/ruflet/ui/material_control_methods.rb +62 -18
  153. data/lib/ruflet_ui/ruflet/ui/material_control_registry.rb +22 -0
  154. data/lib/ruflet_ui/ruflet/ui/services/ruflet/accelerometer_control.rb +1 -0
  155. data/lib/ruflet_ui/ruflet/ui/services/ruflet/audio_recorder_control.rb +14 -36
  156. data/lib/ruflet_ui/ruflet/ui/services/ruflet/barometer_control.rb +1 -0
  157. data/lib/ruflet_ui/ruflet/ui/services/ruflet/battery_control.rb +1 -0
  158. data/lib/ruflet_ui/ruflet/ui/services/ruflet/camera_control.rb +9 -42
  159. data/lib/ruflet_ui/ruflet/ui/services/ruflet/clipboard_control.rb +31 -0
  160. data/lib/ruflet_ui/ruflet/ui/services/ruflet/connectivity_control.rb +1 -0
  161. data/lib/ruflet_ui/ruflet/ui/services/ruflet/filepicker_control.rb +1 -0
  162. data/lib/ruflet_ui/ruflet/ui/services/ruflet/flashlight_control.rb +1 -0
  163. data/lib/ruflet_ui/ruflet/ui/services/ruflet/geolocator_control.rb +14 -30
  164. data/lib/ruflet_ui/ruflet/ui/services/ruflet/gyroscope_control.rb +1 -0
  165. data/lib/ruflet_ui/ruflet/ui/services/ruflet/hapticfeedback_control.rb +1 -0
  166. data/lib/ruflet_ui/ruflet/ui/services/ruflet/magnetometer_control.rb +1 -0
  167. data/lib/ruflet_ui/ruflet/ui/services/ruflet/permissionhandler_control.rb +5 -20
  168. data/lib/ruflet_ui/ruflet/ui/services/ruflet/screenbrightness_control.rb +1 -0
  169. data/lib/ruflet_ui/ruflet/ui/services/ruflet/securestorage_control.rb +22 -49
  170. data/lib/ruflet_ui/ruflet/ui/services/ruflet/semanticsservice_control.rb +20 -15
  171. data/lib/ruflet_ui/ruflet/ui/services/ruflet/shakedetector_control.rb +1 -0
  172. data/lib/ruflet_ui/ruflet/ui/services/ruflet/share_control.rb +1 -0
  173. data/lib/ruflet_ui/ruflet/ui/services/ruflet/sharedpreferences_control.rb +1 -0
  174. data/lib/ruflet_ui/ruflet/ui/services/ruflet/storagepaths_control.rb +1 -0
  175. data/lib/ruflet_ui/ruflet/ui/services/ruflet/urllauncher_control.rb +1 -0
  176. data/lib/ruflet_ui/ruflet/ui/services/ruflet/useraccelerometer_control.rb +1 -0
  177. data/lib/ruflet_ui/ruflet/ui/services/ruflet/wakelock_control.rb +1 -0
  178. data/lib/ruflet_ui/ruflet/ui/services/ruflet_services.rb +0 -7
  179. data/lib/ruflet_ui/ruflet/ui/shared_control_forwarders.rb +25 -2
  180. data/lib/ruflet_ui.rb +12 -10
  181. metadata +7 -8
  182. data/lib/ruflet_ui/ruflet/types/animation.rb +0 -110
  183. data/lib/ruflet_ui/ruflet/ui/controls/materials/codeeditor_control.rb +0 -93
  184. data/lib/ruflet_ui/ruflet/ui/controls/materials/map_controls.rb +0 -311
  185. data/lib/ruflet_ui/ruflet/ui/controls/materials/rive_control.rb +0 -87
  186. data/lib/ruflet_ui/ruflet/ui/controls/materials/spinkit_controls.rb +0 -109
  187. data/lib/ruflet_ui/ruflet/ui/services/ruflet/tester_control.rb +0 -126
@@ -8,138 +8,15 @@ module Ruflet
8
8
  TYPE = "textfield".freeze
9
9
  WIRE = "TextField".freeze
10
10
 
11
- def initialize(id: nil, adaptive: nil, align: nil, align_label_with_hint: nil, always_call_on_tap: nil, animate_align: nil, animate_cursor_opacity: nil, animate_margin: nil, animate_offset: nil, animate_opacity: nil, animate_position: nil, animate_rotation: nil, animate_scale: nil, animate_size: nil, aspect_ratio: nil, autocorrect: nil, autofill_hints: nil, autofocus: nil, badge: nil, bgcolor: nil, border: nil, border_color: nil, border_radius: nil, border_width: nil, bottom: nil, can_request_focus: nil, can_reveal_password: nil, capitalization: nil, clip_behavior: nil, col: nil, collapsed: nil, color: nil, content_padding: nil, counter: nil, counter_style: nil, cursor_color: nil, cursor_error_color: nil, cursor_height: nil, cursor_radius: nil, cursor_width: nil, data: nil, dense: nil, disabled: nil, enable_ime_personalized_learning: nil, enable_interactive_selection: nil, enable_stylus_handwriting: nil, enable_suggestions: nil, error: nil, error_max_lines: nil, error_style: nil, expand: nil, expand_loose: nil, fill_color: nil, filled: nil, fit_parent_size: nil, focus_color: nil, focused_bgcolor: nil, focused_border_color: nil, focused_border_width: nil, focused_color: nil, height: nil, helper: nil, helper_max_lines: nil, helper_style: nil, hint_fade_duration: nil, hint_max_lines: nil, hint_style: nil, hint_text: nil, hover_color: nil, icon: nil, ignore_pointers: nil, ignore_up_down_keys: nil, input_filter: nil, key: nil, keyboard_brightness: nil, keyboard_type: nil, label: nil, label_style: nil, left: nil, margin: nil, max_length: nil, max_lines: nil, min_lines: nil, mouse_cursor: nil, multiline: nil, obscuring_character: nil, offset: nil, opacity: nil, password: nil, prefix: nil, prefix_icon: nil, prefix_icon_size_constraints: nil, prefix_style: nil, read_only: nil, right: nil, rotate: nil, rtl: nil, scale: nil, scroll_padding: nil, selection: nil, selection_color: nil, shift_enter: nil, show_cursor: nil, size_change_interval: nil, size_constraints: nil, smart_dashes_type: nil, smart_quotes_type: nil, strut_style: nil, suffix: nil, suffix_icon: nil, suffix_icon_size_constraints: nil, suffix_style: nil, text_align: nil, text_size: nil, text_style: nil, text_vertical_align: nil, tooltip: nil, top: nil, value: nil, visible: nil, width: nil, on_animation_end: nil, on_blur: nil, on_change: nil, on_click: nil, on_focus: nil, on_selection_change: nil, on_size_change: nil, on_submit: nil, on_tap_outside: nil)
12
- props = {}
13
- props[:adaptive] = adaptive unless adaptive.nil?
14
- props[:align] = align unless align.nil?
15
- props[:align_label_with_hint] = align_label_with_hint unless align_label_with_hint.nil?
16
- props[:always_call_on_tap] = always_call_on_tap unless always_call_on_tap.nil?
17
- props[:animate_align] = animate_align unless animate_align.nil?
18
- props[:animate_cursor_opacity] = animate_cursor_opacity unless animate_cursor_opacity.nil?
19
- props[:animate_margin] = animate_margin unless animate_margin.nil?
20
- props[:animate_offset] = animate_offset unless animate_offset.nil?
21
- props[:animate_opacity] = animate_opacity unless animate_opacity.nil?
22
- props[:animate_position] = animate_position unless animate_position.nil?
23
- props[:animate_rotation] = animate_rotation unless animate_rotation.nil?
24
- props[:animate_scale] = animate_scale unless animate_scale.nil?
25
- props[:animate_size] = animate_size unless animate_size.nil?
26
- props[:aspect_ratio] = aspect_ratio unless aspect_ratio.nil?
27
- props[:autocorrect] = autocorrect unless autocorrect.nil?
28
- props[:autofill_hints] = autofill_hints unless autofill_hints.nil?
29
- props[:autofocus] = autofocus unless autofocus.nil?
30
- props[:badge] = badge unless badge.nil?
31
- props[:bgcolor] = bgcolor unless bgcolor.nil?
32
- props[:border] = border unless border.nil?
33
- props[:border_color] = border_color unless border_color.nil?
34
- props[:border_radius] = border_radius unless border_radius.nil?
35
- props[:border_width] = border_width unless border_width.nil?
36
- props[:bottom] = bottom unless bottom.nil?
37
- props[:can_request_focus] = can_request_focus unless can_request_focus.nil?
38
- props[:can_reveal_password] = can_reveal_password unless can_reveal_password.nil?
39
- props[:capitalization] = capitalization unless capitalization.nil?
40
- props[:clip_behavior] = clip_behavior unless clip_behavior.nil?
41
- props[:col] = col unless col.nil?
42
- props[:collapsed] = collapsed unless collapsed.nil?
43
- props[:color] = color unless color.nil?
44
- props[:content_padding] = content_padding unless content_padding.nil?
45
- props[:counter] = counter unless counter.nil?
46
- props[:counter_style] = counter_style unless counter_style.nil?
47
- props[:cursor_color] = cursor_color unless cursor_color.nil?
48
- props[:cursor_error_color] = cursor_error_color unless cursor_error_color.nil?
49
- props[:cursor_height] = cursor_height unless cursor_height.nil?
50
- props[:cursor_radius] = cursor_radius unless cursor_radius.nil?
51
- props[:cursor_width] = cursor_width unless cursor_width.nil?
52
- props[:data] = data unless data.nil?
53
- props[:dense] = dense unless dense.nil?
54
- props[:disabled] = disabled unless disabled.nil?
55
- props[:enable_ime_personalized_learning] = enable_ime_personalized_learning unless enable_ime_personalized_learning.nil?
56
- props[:enable_interactive_selection] = enable_interactive_selection unless enable_interactive_selection.nil?
57
- props[:enable_stylus_handwriting] = enable_stylus_handwriting unless enable_stylus_handwriting.nil?
58
- props[:enable_suggestions] = enable_suggestions unless enable_suggestions.nil?
59
- props[:error] = error unless error.nil?
60
- props[:error_max_lines] = error_max_lines unless error_max_lines.nil?
61
- props[:error_style] = error_style unless error_style.nil?
62
- props[:expand] = expand unless expand.nil?
63
- props[:expand_loose] = expand_loose unless expand_loose.nil?
64
- props[:fill_color] = fill_color unless fill_color.nil?
65
- props[:filled] = filled unless filled.nil?
66
- props[:fit_parent_size] = fit_parent_size unless fit_parent_size.nil?
67
- props[:focus_color] = focus_color unless focus_color.nil?
68
- props[:focused_bgcolor] = focused_bgcolor unless focused_bgcolor.nil?
69
- props[:focused_border_color] = focused_border_color unless focused_border_color.nil?
70
- props[:focused_border_width] = focused_border_width unless focused_border_width.nil?
71
- props[:focused_color] = focused_color unless focused_color.nil?
72
- props[:height] = height unless height.nil?
73
- props[:helper] = helper unless helper.nil?
74
- props[:helper_max_lines] = helper_max_lines unless helper_max_lines.nil?
75
- props[:helper_style] = helper_style unless helper_style.nil?
76
- props[:hint_fade_duration] = hint_fade_duration unless hint_fade_duration.nil?
77
- props[:hint_max_lines] = hint_max_lines unless hint_max_lines.nil?
78
- props[:hint_style] = hint_style unless hint_style.nil?
79
- props[:hint_text] = hint_text unless hint_text.nil?
80
- props[:hover_color] = hover_color unless hover_color.nil?
81
- props[:icon] = icon unless icon.nil?
82
- props[:ignore_pointers] = ignore_pointers unless ignore_pointers.nil?
83
- props[:ignore_up_down_keys] = ignore_up_down_keys unless ignore_up_down_keys.nil?
84
- props[:input_filter] = input_filter unless input_filter.nil?
85
- props[:key] = key unless key.nil?
86
- props[:keyboard_brightness] = keyboard_brightness unless keyboard_brightness.nil?
87
- props[:keyboard_type] = keyboard_type unless keyboard_type.nil?
88
- props[:label] = label unless label.nil?
89
- props[:label_style] = label_style unless label_style.nil?
90
- props[:left] = left unless left.nil?
91
- props[:margin] = margin unless margin.nil?
92
- props[:max_length] = max_length unless max_length.nil?
93
- props[:max_lines] = max_lines unless max_lines.nil?
94
- props[:min_lines] = min_lines unless min_lines.nil?
95
- props[:mouse_cursor] = mouse_cursor unless mouse_cursor.nil?
96
- props[:multiline] = multiline unless multiline.nil?
97
- props[:obscuring_character] = obscuring_character unless obscuring_character.nil?
98
- props[:offset] = offset unless offset.nil?
99
- props[:opacity] = opacity unless opacity.nil?
100
- props[:password] = password unless password.nil?
101
- props[:prefix] = prefix unless prefix.nil?
102
- props[:prefix_icon] = prefix_icon unless prefix_icon.nil?
103
- props[:prefix_icon_size_constraints] = prefix_icon_size_constraints unless prefix_icon_size_constraints.nil?
104
- props[:prefix_style] = prefix_style unless prefix_style.nil?
105
- props[:read_only] = read_only unless read_only.nil?
106
- props[:right] = right unless right.nil?
107
- props[:rotate] = rotate unless rotate.nil?
108
- props[:rtl] = rtl unless rtl.nil?
109
- props[:scale] = scale unless scale.nil?
110
- props[:scroll_padding] = scroll_padding unless scroll_padding.nil?
111
- props[:selection] = selection unless selection.nil?
112
- props[:selection_color] = selection_color unless selection_color.nil?
113
- props[:shift_enter] = shift_enter unless shift_enter.nil?
114
- props[:show_cursor] = show_cursor unless show_cursor.nil?
115
- props[:size_change_interval] = size_change_interval unless size_change_interval.nil?
116
- props[:size_constraints] = size_constraints unless size_constraints.nil?
117
- props[:smart_dashes_type] = smart_dashes_type unless smart_dashes_type.nil?
118
- props[:smart_quotes_type] = smart_quotes_type unless smart_quotes_type.nil?
119
- props[:strut_style] = strut_style unless strut_style.nil?
120
- props[:suffix] = suffix unless suffix.nil?
121
- props[:suffix_icon] = suffix_icon unless suffix_icon.nil?
122
- props[:suffix_icon_size_constraints] = suffix_icon_size_constraints unless suffix_icon_size_constraints.nil?
123
- props[:suffix_style] = suffix_style unless suffix_style.nil?
124
- props[:text_align] = text_align unless text_align.nil?
125
- props[:text_size] = text_size unless text_size.nil?
126
- props[:text_style] = text_style unless text_style.nil?
127
- props[:text_vertical_align] = text_vertical_align unless text_vertical_align.nil?
128
- props[:tooltip] = tooltip unless tooltip.nil?
129
- props[:top] = top unless top.nil?
130
- props[:value] = value unless value.nil?
131
- props[:visible] = visible unless visible.nil?
132
- props[:width] = width unless width.nil?
133
- props[:on_animation_end] = on_animation_end unless on_animation_end.nil?
134
- props[:on_blur] = on_blur unless on_blur.nil?
135
- props[:on_change] = on_change unless on_change.nil?
136
- props[:on_click] = on_click unless on_click.nil?
137
- props[:on_focus] = on_focus unless on_focus.nil?
138
- props[:on_selection_change] = on_selection_change unless on_selection_change.nil?
139
- props[:on_size_change] = on_size_change unless on_size_change.nil?
140
- props[:on_submit] = on_submit unless on_submit.nil?
141
- props[:on_tap_outside] = on_tap_outside unless on_tap_outside.nil?
142
- super(type: TYPE, id: id, **props)
11
+ KEYWORDS = [:adaptive, :align, :align_label_with_hint, :always_call_on_tap, :animate_align, :animate_cursor_opacity, :animate_margin, :animate_offset, :animate_opacity, :animate_position, :animate_rotation, :animate_scale, :animate_size, :aspect_ratio, :autocorrect, :autofill_hints, :autofocus, :badge, :bgcolor, :border, :border_color, :border_radius, :border_width, :bottom, :can_request_focus, :can_reveal_password, :capitalization, :clip_behavior, :col, :collapsed, :color, :content_padding, :counter, :counter_style, :cursor_color, :cursor_error_color, :cursor_height, :cursor_radius, :cursor_width, :data, :dense, :disabled, :enable_ime_personalized_learning, :enable_interactive_selection, :enable_stylus_handwriting, :enable_suggestions, :error, :error_max_lines, :error_style, :expand, :expand_loose, :fill_color, :filled, :fit_parent_size, :focus_color, :focused_bgcolor, :focused_border_color, :focused_border_width, :focused_color, :height, :helper, :helper_max_lines, :helper_style, :hint_fade_duration, :hint_max_lines, :hint_style, :hint_text, :hover_color, :icon, :ignore_pointers, :ignore_up_down_keys, :input_filter, :key, :keyboard_brightness, :keyboard_type, :label, :label_style, :left, :margin, :max_length, :max_lines, :min_lines, :mouse_cursor, :multiline, :obscuring_character, :offset, :opacity, :password, :prefix, :prefix_icon, :prefix_icon_size_constraints, :prefix_style, :read_only, :right, :rotate, :rtl, :scale, :scroll_padding, :selection, :selection_color, :shift_enter, :show_cursor, :size_change_interval, :size_constraints, :smart_dashes_type, :smart_quotes_type, :strut_style, :suffix, :suffix_icon, :suffix_icon_size_constraints, :suffix_style, :text_align, :text_size, :text_style, :text_vertical_align, :tooltip, :top, :value, :visible, :width, :on_animation_end, :on_blur, :on_change, :on_click, :on_focus, :on_selection_change, :on_size_change, :on_submit, :on_tap_outside].freeze
12
+
13
+ def initialize(id: nil, **props)
14
+ compact = {}
15
+ props.each do |key, value|
16
+ raise ArgumentError, "unknown keyword: :#{key}" unless KEYWORDS.include?(key)
17
+ compact[key] = value unless value.nil?
18
+ end
19
+ super(type: TYPE, id: id, **compact)
143
20
  end
144
21
  end
145
22
  end
@@ -8,40 +8,16 @@ module Ruflet
8
8
  TYPE = "timepicker".freeze
9
9
  WIRE = "TimePicker".freeze
10
10
 
11
- def initialize(id: nil, adaptive: nil, badge: nil, barrier_color: nil, cancel_text: nil, col: nil, confirm_text: nil, data: nil, disabled: nil, entry_mode: nil, error_invalid_text: nil, expand: nil, expand_loose: nil, help_text: nil, hour_format: nil, hour_label_text: nil, key: nil, locale: nil, minute_label_text: nil, modal: nil, opacity: nil, open: nil, orientation: nil, rtl: nil, switch_to_input_icon: nil, switch_to_timer_icon: nil, tooltip: nil, value: nil, visible: nil, on_change: nil, on_dismiss: nil, on_entry_mode_change: nil)
12
- props = {}
13
- props[:adaptive] = adaptive unless adaptive.nil?
14
- props[:badge] = badge unless badge.nil?
15
- props[:barrier_color] = barrier_color unless barrier_color.nil?
16
- props[:cancel_text] = cancel_text unless cancel_text.nil?
17
- props[:col] = col unless col.nil?
18
- props[:confirm_text] = confirm_text unless confirm_text.nil?
19
- props[:data] = data unless data.nil?
20
- props[:disabled] = disabled unless disabled.nil?
21
- props[:entry_mode] = entry_mode unless entry_mode.nil?
22
- props[:error_invalid_text] = error_invalid_text unless error_invalid_text.nil?
23
- props[:expand] = expand unless expand.nil?
24
- props[:expand_loose] = expand_loose unless expand_loose.nil?
25
- props[:help_text] = help_text unless help_text.nil?
26
- props[:hour_format] = hour_format unless hour_format.nil?
27
- props[:hour_label_text] = hour_label_text unless hour_label_text.nil?
28
- props[:key] = key unless key.nil?
29
- props[:locale] = locale unless locale.nil?
30
- props[:minute_label_text] = minute_label_text unless minute_label_text.nil?
31
- props[:modal] = modal unless modal.nil?
32
- props[:opacity] = opacity unless opacity.nil?
33
- props[:open] = open unless open.nil?
34
- props[:orientation] = orientation unless orientation.nil?
35
- props[:rtl] = rtl unless rtl.nil?
36
- props[:switch_to_input_icon] = switch_to_input_icon unless switch_to_input_icon.nil?
37
- props[:switch_to_timer_icon] = switch_to_timer_icon unless switch_to_timer_icon.nil?
38
- props[:tooltip] = tooltip unless tooltip.nil?
39
- props[:value] = value unless value.nil?
40
- props[:visible] = visible unless visible.nil?
41
- props[:on_change] = on_change unless on_change.nil?
42
- props[:on_dismiss] = on_dismiss unless on_dismiss.nil?
43
- props[:on_entry_mode_change] = on_entry_mode_change unless on_entry_mode_change.nil?
44
- super(type: TYPE, id: id, **props)
11
+ KEYWORDS = [:adaptive, :badge, :barrier_color, :cancel_text, :col, :confirm_text, :data, :disabled, :entry_mode, :error_invalid_text, :expand, :expand_loose, :help_text, :hour_format, :hour_label_text, :key, :locale, :minute_label_text, :modal, :opacity, :open, :orientation, :rtl, :switch_to_input_icon, :switch_to_timer_icon, :tooltip, :value, :visible, :on_change, :on_dismiss, :on_entry_mode_change].freeze
12
+
13
+ def initialize(id: nil, **props)
14
+ compact = {}
15
+ props.each do |key, value|
16
+ raise ArgumentError, "unknown keyword: :#{key}" unless KEYWORDS.include?(key)
17
+ value = Ruflet::Protocol.time_of_day(value) if key == :value
18
+ compact[key] = value unless value.nil?
19
+ end
20
+ super(type: TYPE, id: id, **compact)
45
21
  end
46
22
  end
47
23
  end
@@ -9,15 +9,6 @@ module Ruflet
9
9
  WIRE = "VerticalDivider".freeze
10
10
 
11
11
  def initialize(id: nil, badge: nil, col: nil, color: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, key: nil, leading_indent: nil, opacity: nil, radius: nil, rtl: nil, thickness: nil, tooltip: nil, trailing_indent: nil, visible: nil, width: nil)
12
- {
13
- leading_indent: leading_indent,
14
- thickness: thickness,
15
- trailing_indent: trailing_indent,
16
- width: width
17
- }.each do |name, value|
18
- raise ArgumentError, "vertical_divider #{name} must be greater than or equal to 0" unless value.nil? || value >= 0
19
- end
20
-
21
12
  props = {}
22
13
  props[:badge] = badge unless badge.nil?
23
14
  props[:col] = col unless col.nil?
@@ -8,48 +8,15 @@ module Ruflet
8
8
  TYPE = "video".freeze
9
9
  WIRE = "Video".freeze
10
10
 
11
- def initialize(id: nil, alignment: nil, aspect_ratio: nil, autoplay: nil, configuration: nil, data: nil, fill_color: nil, filter_quality: nil, fit: nil, fullscreen: nil, height: nil, key: nil, muted: nil, opacity: nil, pause_upon_entering_background_mode: nil, pitch: nil, playlist: nil, playlist_mode: nil, playback_rate: nil, resume_upon_entering_foreground_mode: nil, rtl: nil, show_controls: nil, shuffle_playlist: nil, subtitle_configuration: nil, title: nil, tooltip: nil, visible: nil, volume: nil, wakelock: nil, width: nil, on_completed: nil, on_complete: nil, on_enter_fullscreen: nil, on_error: nil, on_exit_fullscreen: nil, on_load: nil, on_loaded: nil, on_state_change: nil, on_track_change: nil, on_track_changed: nil)
12
- props = {}
13
- props[:alignment] = alignment unless alignment.nil?
14
- props[:aspect_ratio] = aspect_ratio unless aspect_ratio.nil?
15
- props[:autoplay] = autoplay unless autoplay.nil?
16
- props[:configuration] = configuration unless configuration.nil?
17
- props[:data] = data unless data.nil?
18
- props[:fill_color] = fill_color unless fill_color.nil?
19
- props[:filter_quality] = filter_quality unless filter_quality.nil?
20
- props[:fit] = fit unless fit.nil?
21
- props[:fullscreen] = fullscreen unless fullscreen.nil?
22
- props[:height] = height unless height.nil?
23
- props[:key] = key unless key.nil?
24
- props[:muted] = muted unless muted.nil?
25
- props[:opacity] = opacity unless opacity.nil?
26
- props[:pause_upon_entering_background_mode] = pause_upon_entering_background_mode unless pause_upon_entering_background_mode.nil?
27
- props[:pitch] = pitch unless pitch.nil?
28
- props[:playlist] = playlist unless playlist.nil?
29
- props[:playlist_mode] = playlist_mode unless playlist_mode.nil?
30
- props[:playback_rate] = playback_rate unless playback_rate.nil?
31
- props[:resume_upon_entering_foreground_mode] = resume_upon_entering_foreground_mode unless resume_upon_entering_foreground_mode.nil?
32
- props[:rtl] = rtl unless rtl.nil?
33
- props[:show_controls] = show_controls unless show_controls.nil?
34
- props[:shuffle_playlist] = shuffle_playlist unless shuffle_playlist.nil?
35
- props[:subtitle_configuration] = subtitle_configuration unless subtitle_configuration.nil?
36
- props[:title] = title unless title.nil?
37
- props[:tooltip] = tooltip unless tooltip.nil?
38
- props[:visible] = visible unless visible.nil?
39
- props[:volume] = volume unless volume.nil?
40
- props[:wakelock] = wakelock unless wakelock.nil?
41
- props[:width] = width unless width.nil?
42
- props[:on_completed] = on_completed unless on_completed.nil?
43
- props[:on_complete] = on_complete unless on_complete.nil?
44
- props[:on_enter_fullscreen] = on_enter_fullscreen unless on_enter_fullscreen.nil?
45
- props[:on_error] = on_error unless on_error.nil?
46
- props[:on_exit_fullscreen] = on_exit_fullscreen unless on_exit_fullscreen.nil?
47
- props[:on_load] = on_load unless on_load.nil?
48
- props[:on_loaded] = on_loaded unless on_loaded.nil?
49
- props[:on_state_change] = on_state_change unless on_state_change.nil?
50
- props[:on_track_change] = on_track_change unless on_track_change.nil?
51
- props[:on_track_changed] = on_track_changed unless on_track_changed.nil?
52
- super(type: TYPE, id: id, **props)
11
+ KEYWORDS = [:alignment, :aspect_ratio, :autoplay, :configuration, :data, :fill_color, :filter_quality, :fit, :fullscreen, :height, :key, :muted, :opacity, :pause_upon_entering_background_mode, :pitch, :playlist, :playlist_mode, :playback_rate, :resume_upon_entering_foreground_mode, :rtl, :show_controls, :shuffle_playlist, :subtitle_configuration, :title, :tooltip, :visible, :volume, :wakelock, :width, :on_completed, :on_complete, :on_enter_fullscreen, :on_error, :on_exit_fullscreen, :on_load, :on_loaded, :on_state_change, :on_track_change, :on_track_changed].freeze
12
+
13
+ def initialize(id: nil, **props)
14
+ compact = {}
15
+ props.each do |key, value|
16
+ raise ArgumentError, "unknown keyword: :#{key}" unless KEYWORDS.include?(key)
17
+ compact[key] = value unless value.nil?
18
+ end
19
+ super(type: TYPE, id: id, **compact)
53
20
  end
54
21
 
55
22
  def get_current_position(timeout: 10, on_result: nil)
@@ -17,10 +17,9 @@ module Ruflet
17
17
  # clear_local_storage, enable_zoom, disable_zoom, set_javascript_mode,
18
18
  # get_current_url, get_title, get_user_agent.
19
19
  #
20
- # Platform note: the native webview (and therefore run_javascript and the
21
- # events/methods) runs on iOS, Android and macOS. On web it falls back to
22
- # an <iframe>, which cannot run the methods and which most external sites
23
- # block via X-Frame-Options/CSP — embed your own same-origin pages there.
20
+ # Platform note: the native webview runs on iOS, Android, macOS, Windows,
21
+ # and Linux. Linux distributions must provide WebKitGTK 4.1. On web it
22
+ # uses an iframe, so browser cross-origin restrictions still apply.
24
23
  class WebViewControl < Ruflet::Control
25
24
  TYPE = "WebView".freeze
26
25
  WIRE = "WebView".freeze
@@ -39,7 +39,6 @@ require_relative "materials/card_control"
39
39
  require_relative "materials/checkbox_control"
40
40
  require_relative "materials/chip_control"
41
41
  require_relative "materials/circleavatar_control"
42
- require_relative "materials/codeeditor_control"
43
42
  require_relative "materials/container_control"
44
43
  require_relative "materials/contextmenu_control"
45
44
  require_relative "materials/datacell_control"
@@ -59,11 +58,10 @@ require_relative "materials/filledbutton_control"
59
58
  require_relative "materials/fillediconbutton_control"
60
59
  require_relative "materials/filledtonalbutton_control"
61
60
  require_relative "materials/filledtonaliconbutton_control"
62
- require_relative "materials/spinkit_controls"
63
61
  require_relative "materials/floatingactionbutton_control"
64
62
  require_relative "materials/iconbutton_control"
65
63
  require_relative "materials/listtile_control"
66
- require_relative "materials/map_controls"
64
+ require_relative "materials/map_control"
67
65
  require_relative "materials/menubar_control"
68
66
  require_relative "materials/menuitembutton_control"
69
67
  require_relative "materials/navigationbar_control"
@@ -79,17 +77,18 @@ require_relative "materials/popupmenubutton_control"
79
77
  require_relative "materials/popupmenuitem_control"
80
78
  require_relative "materials/progressbar_control"
81
79
  require_relative "materials/progressring_control"
80
+ require_relative "materials/spinkit_control"
82
81
  require_relative "materials/radio_control"
83
82
  require_relative "materials/radiogroup_control"
84
83
  require_relative "materials/rangeslider_control"
85
84
  require_relative "materials/reorderablelistview_control"
86
- require_relative "materials/rive_control"
87
85
  require_relative "materials/searchbar_control"
88
86
  require_relative "materials/segment_control"
89
87
  require_relative "materials/segmentedbutton_control"
90
88
  require_relative "materials/selectionarea_control"
91
89
  require_relative "materials/slider_control"
92
90
  require_relative "materials/snackbar_control"
91
+ require_relative "materials/snackbaraction_control"
93
92
  require_relative "materials/submenubutton_control"
94
93
  require_relative "materials/switch_control"
95
94
  require_relative "materials/tab_control"
@@ -140,7 +139,9 @@ require_relative "shared/rect_control"
140
139
  require_relative "shared/reorderabledraghandle_control"
141
140
  require_relative "shared/responsiverow_control"
142
141
  require_relative "shared/row_control"
142
+ require_relative "shared/rotatedbox_control"
143
143
  require_relative "shared/safearea_control"
144
+ require_relative "shared/screenshot_control"
144
145
  require_relative "shared/semantics_control"
145
146
  require_relative "shared/serviceregistry_control"
146
147
  require_relative "shared/shadermask_control"
@@ -209,8 +210,6 @@ module Ruflet
209
210
  "circle" => RufletComponents::CircleControl,
210
211
  "circle_avatar" => RufletComponents::CircleAvatarControl,
211
212
  "circleavatar" => RufletComponents::CircleAvatarControl,
212
- "code_editor" => RufletComponents::CodeEditorControl,
213
- "codeeditor" => RufletComponents::CodeEditorControl,
214
213
  "color" => RufletComponents::ColorControl,
215
214
  "column" => RufletComponents::ColumnControl,
216
215
  "container" => RufletComponents::ContainerControl,
@@ -329,27 +328,8 @@ module Ruflet
329
328
  "list_tile" => RufletComponents::ListTileControl,
330
329
  "list_view" => RufletComponents::ListViewControl,
331
330
  "listtile" => RufletComponents::ListTileControl,
332
- "listview" => RufletComponents::ListViewControl,
333
331
  "map" => RufletComponents::MapControl,
334
- "tile_layer" => RufletComponents::TileLayerControl,
335
- "tilelayer" => RufletComponents::TileLayerControl,
336
- "marker_layer" => RufletComponents::MarkerLayerControl,
337
- "markerlayer" => RufletComponents::MarkerLayerControl,
338
- "marker" => RufletComponents::MarkerControl,
339
- "circle_layer" => RufletComponents::CircleLayerControl,
340
- "circlelayer" => RufletComponents::CircleLayerControl,
341
- "circle_marker" => RufletComponents::CircleMarkerControl,
342
- "circlemarker" => RufletComponents::CircleMarkerControl,
343
- "polyline_layer" => RufletComponents::PolylineLayerControl,
344
- "polylinelayer" => RufletComponents::PolylineLayerControl,
345
- "polyline_marker" => RufletComponents::PolylineMarkerControl,
346
- "polylinemarker" => RufletComponents::PolylineMarkerControl,
347
- "polygon_layer" => RufletComponents::PolygonLayerControl,
348
- "polygonlayer" => RufletComponents::PolygonLayerControl,
349
- "polygon_marker" => RufletComponents::PolygonMarkerControl,
350
- "polygonmarker" => RufletComponents::PolygonMarkerControl,
351
- "simple_attribution" => RufletComponents::SimpleAttributionControl,
352
- "simpleattribution" => RufletComponents::SimpleAttributionControl,
332
+ "listview" => RufletComponents::ListViewControl,
353
333
  "markdown" => RufletComponents::MarkdownControl,
354
334
  "menu_bar" => RufletComponents::MenuBarControl,
355
335
  "menu_item_button" => RufletComponents::MenuItemButtonControl,
@@ -395,6 +375,7 @@ module Ruflet
395
375
  "progress_ring" => RufletComponents::ProgressRingControl,
396
376
  "progressbar" => RufletComponents::ProgressBarControl,
397
377
  "progressring" => RufletComponents::ProgressRingControl,
378
+ "spinkit" => RufletComponents::SpinkitControl,
398
379
  "radio" => RufletComponents::RadioControl,
399
380
  "radio_group" => RufletComponents::RadioGroupControl,
400
381
  "radiogroup" => RufletComponents::RadioGroupControl,
@@ -413,12 +394,14 @@ module Ruflet
413
394
  "reorderable_list_view" => RufletComponents::ReorderableListViewControl,
414
395
  "reorderabledraghandle" => RufletComponents::ReorderableDragHandleControl,
415
396
  "reorderablelistview" => RufletComponents::ReorderableListViewControl,
416
- "rive" => RufletComponents::RiveControl,
417
397
  "responsive_row" => RufletComponents::ResponsiveRowControl,
418
398
  "responsiverow" => RufletComponents::ResponsiveRowControl,
419
399
  "row" => RufletComponents::RowControl,
400
+ "rotated_box" => RufletComponents::RotatedBoxControl,
401
+ "rotatedbox" => RufletComponents::RotatedBoxControl,
420
402
  "safe_area" => RufletComponents::SafeAreaControl,
421
403
  "safearea" => RufletComponents::SafeAreaControl,
404
+ "screenshot" => RufletComponents::ScreenshotControl,
422
405
  "search_bar" => RufletComponents::SearchBarControl,
423
406
  "searchbar" => RufletComponents::SearchBarControl,
424
407
  "segment" => RufletComponents::SegmentControl,
@@ -439,6 +422,8 @@ module Ruflet
439
422
  "shimmer" => RufletComponents::ShimmerControl,
440
423
  "slider" => RufletComponents::SliderControl,
441
424
  "snack_bar" => RufletComponents::SnackBarControl,
425
+ "snack_bar_action" => RufletComponents::SnackBarActionControl,
426
+ "snackbaraction" => RufletComponents::SnackBarActionControl,
442
427
  "snackbar" => RufletComponents::SnackBarControl,
443
428
  "stack" => RufletComponents::StackControl,
444
429
  "submenu_button" => RufletComponents::SubmenuButtonControl,
@@ -470,7 +455,7 @@ module Ruflet
470
455
  "window" => RufletComponents::WindowControl,
471
456
  "window_drag_area" => RufletComponents::WindowDragAreaControl,
472
457
  "windowdragarea" => RufletComponents::WindowDragAreaControl,
473
- }.merge(RufletComponents::SPINKIT_CONTROLS).freeze
458
+ }.freeze
474
459
  end
475
460
  end
476
461
  end
@@ -8,10 +8,52 @@ module Ruflet
8
8
  TYPE = "animatedswitcher".freeze
9
9
  WIRE = "AnimatedSwitcher".freeze
10
10
 
11
- def initialize(id: nil, align: nil, animate_align: nil, animate_margin: nil, animate_offset: nil, animate_opacity: nil, animate_position: nil, animate_rotation: nil, animate_scale: nil, animate_size: nil, aspect_ratio: nil, badge: nil, bottom: nil, col: nil, content: nil, data: nil, disabled: nil, duration: nil, expand: nil, expand_loose: nil, height: nil, key: nil, left: nil, margin: nil, offset: nil, opacity: nil, reverse_duration: nil, right: nil, rotate: nil, rtl: nil, scale: nil, size_change_interval: nil, switch_in_curve: nil, switch_out_curve: nil, tooltip: nil, top: nil, transition: nil, visible: nil, width: nil, on_animation_end: nil, on_size_change: nil)
12
- if content.nil? || (content.respond_to?(:props) && content.props["visible"] == false)
13
- raise ArgumentError, "animated_switcher requires visible content"
14
- end
11
+ KEYWORDS = [:align, :animate_align, :animate_margin, :animate_offset, :animate_opacity, :animate_position, :animate_rotation, :animate_scale, :animate_size, :aspect_ratio, :badge, :bottom, :col, :content, :data, :disabled, :duration, :expand, :expand_loose, :height, :key, :left, :margin, :offset, :opacity, :reverse_duration, :right, :rotate, :rtl, :scale, :size_change_interval, :switch_in_curve, :switch_out_curve, :tooltip, :top, :transition, :visible, :width, :on_animation_end, :on_size_change].freeze
12
+
13
+ def initialize(id: nil, **props)
14
+ unknown = props.keys.reject { |key| KEYWORDS.include?(key) }
15
+ raise ArgumentError, "unknown keywords: #{unknown.join(', ')}" unless unknown.empty?
16
+ align = props[:align]
17
+ animate_align = props[:animate_align]
18
+ animate_margin = props[:animate_margin]
19
+ animate_offset = props[:animate_offset]
20
+ animate_opacity = props[:animate_opacity]
21
+ animate_position = props[:animate_position]
22
+ animate_rotation = props[:animate_rotation]
23
+ animate_scale = props[:animate_scale]
24
+ animate_size = props[:animate_size]
25
+ aspect_ratio = props[:aspect_ratio]
26
+ badge = props[:badge]
27
+ bottom = props[:bottom]
28
+ col = props[:col]
29
+ content = props[:content]
30
+ data = props[:data]
31
+ disabled = props[:disabled]
32
+ duration = props[:duration]
33
+ expand = props[:expand]
34
+ expand_loose = props[:expand_loose]
35
+ height = props[:height]
36
+ key = props[:key]
37
+ left = props[:left]
38
+ margin = props[:margin]
39
+ offset = props[:offset]
40
+ opacity = props[:opacity]
41
+ reverse_duration = props[:reverse_duration]
42
+ right = props[:right]
43
+ rotate = props[:rotate]
44
+ rtl = props[:rtl]
45
+ scale = props[:scale]
46
+ size_change_interval = props[:size_change_interval]
47
+ switch_in_curve = props[:switch_in_curve]
48
+ switch_out_curve = props[:switch_out_curve]
49
+ tooltip = props[:tooltip]
50
+ top = props[:top]
51
+ transition = props[:transition]
52
+ visible = props[:visible]
53
+ width = props[:width]
54
+ on_animation_end = props[:on_animation_end]
55
+ on_size_change = props[:on_size_change]
56
+ raise ArgumentError, "animated_switcher requires content" if content.nil?
15
57
 
16
58
  duration = 1000 if duration.nil?
17
59
  reverse_duration = 1000 if reverse_duration.nil?
@@ -7,6 +7,7 @@ module Ruflet
7
7
  class ArcControl < Ruflet::Control
8
8
  TYPE = "arc".freeze
9
9
  WIRE = "Arc".freeze
10
+ KEYWORDS = [:data, :height, :key, :paint, :start_angle, :sweep_angle, :use_center, :width, :x, :y].freeze
10
11
 
11
12
  def initialize(id: nil, data: nil, height: nil, key: nil, paint: nil, start_angle: nil, sweep_angle: nil, use_center: nil, width: nil, x: nil, y: nil)
12
13
  props = {}
@@ -8,23 +8,12 @@ module Ruflet
8
8
  TYPE = "browsercontextmenu".freeze
9
9
  WIRE = "BrowserContextMenu".freeze
10
10
 
11
- def initialize(id: nil, data: nil, disabled: nil, key: nil)
11
+ def initialize(id: nil, data: nil, key: nil)
12
12
  props = {}
13
13
  props[:data] = data unless data.nil?
14
- props[:disabled] = disabled unless disabled.nil?
15
14
  props[:key] = key unless key.nil?
16
15
  super(type: TYPE, id: id, **props)
17
16
  end
18
-
19
- def disable(timeout: 10, on_result: nil)
20
- props["disabled"] = true
21
- runtime_page&.invoke(self, "disable_menu", timeout: timeout, on_result: on_result)
22
- end
23
-
24
- def enable(timeout: 10, on_result: nil)
25
- props["disabled"] = false
26
- runtime_page&.invoke(self, "enable_menu", timeout: timeout, on_result: on_result)
27
- end
28
17
  end
29
18
  end
30
19
  end
@@ -8,61 +8,15 @@ module Ruflet
8
8
  TYPE = "canvas".freeze
9
9
  WIRE = "Canvas".freeze
10
10
 
11
- def initialize(id: nil, align: nil, animate_align: nil, animate_margin: nil, animate_offset: nil, animate_opacity: nil, animate_position: nil, animate_rotation: nil, animate_scale: nil, animate_size: nil, aspect_ratio: nil, badge: nil, bottom: nil, col: nil, content: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, height: nil, key: nil, left: nil, margin: nil, offset: nil, opacity: nil, resize_interval: nil, right: nil, rotate: nil, rtl: nil, scale: nil, shapes: nil, size_change_interval: nil, tooltip: nil, top: nil, visible: nil, width: nil, on_animation_end: nil, on_resize: nil, on_size_change: nil)
12
- props = {}
13
- props[:align] = align unless align.nil?
14
- props[:animate_align] = animate_align unless animate_align.nil?
15
- props[:animate_margin] = animate_margin unless animate_margin.nil?
16
- props[:animate_offset] = animate_offset unless animate_offset.nil?
17
- props[:animate_opacity] = animate_opacity unless animate_opacity.nil?
18
- props[:animate_position] = animate_position unless animate_position.nil?
19
- props[:animate_rotation] = animate_rotation unless animate_rotation.nil?
20
- props[:animate_scale] = animate_scale unless animate_scale.nil?
21
- props[:animate_size] = animate_size unless animate_size.nil?
22
- props[:aspect_ratio] = aspect_ratio unless aspect_ratio.nil?
23
- props[:badge] = badge unless badge.nil?
24
- props[:bottom] = bottom unless bottom.nil?
25
- props[:col] = col unless col.nil?
26
- props[:content] = content unless content.nil?
27
- props[:data] = data unless data.nil?
28
- props[:disabled] = disabled unless disabled.nil?
29
- props[:expand] = expand unless expand.nil?
30
- props[:expand_loose] = expand_loose unless expand_loose.nil?
31
- props[:height] = height unless height.nil?
32
- props[:key] = key unless key.nil?
33
- props[:left] = left unless left.nil?
34
- props[:margin] = margin unless margin.nil?
35
- props[:offset] = offset unless offset.nil?
36
- props[:opacity] = opacity unless opacity.nil?
37
- props[:resize_interval] = resize_interval unless resize_interval.nil?
38
- props[:right] = right unless right.nil?
39
- props[:rotate] = rotate unless rotate.nil?
40
- props[:rtl] = rtl unless rtl.nil?
41
- props[:scale] = scale unless scale.nil?
42
- props[:shapes] = shapes unless shapes.nil?
43
- props[:size_change_interval] = size_change_interval unless size_change_interval.nil?
44
- props[:tooltip] = tooltip unless tooltip.nil?
45
- props[:top] = top unless top.nil?
46
- props[:visible] = visible unless visible.nil?
47
- props[:width] = width unless width.nil?
48
- props[:on_animation_end] = on_animation_end unless on_animation_end.nil?
49
- props[:on_resize] = on_resize unless on_resize.nil?
50
- props[:on_size_change] = on_size_change unless on_size_change.nil?
51
- super(type: TYPE, id: id, **props)
52
- end
53
-
54
- def capture(pixel_ratio: nil, timeout: 10, on_result: nil)
55
- args = {}
56
- args["pixel_ratio"] = pixel_ratio unless pixel_ratio.nil?
57
- runtime_page&.invoke(self, "capture", args: args.empty? ? nil : args, timeout: timeout, on_result: on_result)
58
- end
59
-
60
- def get_capture(timeout: 10, on_result: nil)
61
- runtime_page&.invoke(self, "get_capture", timeout: timeout, on_result: on_result)
62
- end
11
+ KEYWORDS = [:align, :animate_align, :animate_margin, :animate_offset, :animate_opacity, :animate_position, :animate_rotation, :animate_scale, :animate_size, :aspect_ratio, :badge, :bottom, :col, :content, :data, :disabled, :expand, :expand_loose, :height, :key, :left, :margin, :offset, :opacity, :resize_interval, :right, :rotate, :rtl, :scale, :shapes, :size_change_interval, :tooltip, :top, :visible, :width, :on_animation_end, :on_resize, :on_size_change].freeze
63
12
 
64
- def clear_capture(timeout: 10, on_result: nil)
65
- runtime_page&.invoke(self, "clear_capture", timeout: timeout, on_result: on_result)
13
+ def initialize(id: nil, **props)
14
+ compact = {}
15
+ props.each do |key, value|
16
+ raise ArgumentError, "unknown keyword: :#{key}" unless KEYWORDS.include?(key)
17
+ compact[key] = value unless value.nil?
18
+ end
19
+ super(type: TYPE, id: id, **compact)
66
20
  end
67
21
  end
68
22
  end
@@ -7,6 +7,7 @@ module Ruflet
7
7
  class CircleControl < Ruflet::Control
8
8
  TYPE = "circle".freeze
9
9
  WIRE = "Circle".freeze
10
+ KEYWORDS = [:data, :key, :paint, :radius, :x, :y].freeze
10
11
 
11
12
  def initialize(id: nil, data: nil, key: nil, paint: nil, radius: nil, x: nil, y: nil)
12
13
  props = {}