ruflet_core 0.0.17 → 0.0.18

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 (188) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -30
  3. data/lib/ruflet/version.rb +1 -1
  4. data/lib/ruflet_core.rb +9 -7
  5. data/lib/ruflet_protocol/ruflet/protocol.rb +28 -54
  6. data/lib/ruflet_ui/ruflet/app.rb +1 -1
  7. data/lib/ruflet_ui/ruflet/colors.rb +4 -50
  8. data/lib/ruflet_ui/ruflet/control.rb +69 -64
  9. data/lib/ruflet_ui/ruflet/dsl.rb +10 -3
  10. data/lib/ruflet_ui/ruflet/icons/cupertino/cupertino_icons.rb +2 -2
  11. data/lib/ruflet_ui/ruflet/icons/cupertino_icon_lookup.rb +1 -0
  12. data/lib/ruflet_ui/ruflet/icons/icon_constant_names.rb +29 -0
  13. data/lib/ruflet_ui/ruflet/icons/material/material_icons.rb +2 -2
  14. data/lib/ruflet_ui/ruflet/icons/material_icon_lookup.rb +1 -0
  15. data/lib/ruflet_ui/ruflet/page.rb +308 -526
  16. data/lib/ruflet_ui/ruflet/ui/control_factory.rb +68 -12
  17. data/lib/ruflet_ui/ruflet/ui/control_registry.rb +13 -6
  18. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoactionsheet_control.rb +8 -45
  19. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoactionsheetaction_control.rb +45 -2
  20. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoactivityindicator_control.rb +43 -2
  21. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoalertdialog_control.rb +0 -5
  22. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinobutton_control.rb +59 -4
  23. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinocheckbox_control.rb +56 -1
  24. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinocontextmenu_control.rb +1 -3
  25. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinocontextmenuaction_control.rb +1 -1
  26. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinodatepicker_control.rb +53 -8
  27. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinodialogaction_control.rb +1 -1
  28. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinofilledbutton_control.rb +59 -4
  29. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinolisttile_control.rb +54 -9
  30. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinonavigationbar_control.rb +47 -9
  31. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinopicker_control.rb +52 -10
  32. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoradio_control.rb +52 -1
  33. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinosegmentedbutton_control.rb +49 -1
  34. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoslider_control.rb +50 -5
  35. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoslidingsegmentedbutton_control.rb +46 -1
  36. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoswitch_control.rb +61 -1
  37. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinotextfield_control.rb +145 -1
  38. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinotimerpicker_control.rb +47 -12
  39. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinotintedbutton_control.rb +59 -4
  40. data/lib/ruflet_ui/ruflet/ui/controls/materials/alertdialog_control.rb +8 -45
  41. data/lib/ruflet_ui/ruflet/ui/controls/materials/appbar_control.rb +8 -40
  42. data/lib/ruflet_ui/ruflet/ui/controls/materials/audio_control.rb +16 -5
  43. data/lib/ruflet_ui/ruflet/ui/controls/materials/autocomplete_control.rb +44 -1
  44. data/lib/ruflet_ui/ruflet/ui/controls/materials/badge_control.rb +0 -7
  45. data/lib/ruflet_ui/ruflet/ui/controls/materials/banner_control.rb +0 -7
  46. data/lib/ruflet_ui/ruflet/ui/controls/materials/bottomappbar_control.rb +8 -47
  47. data/lib/ruflet_ui/ruflet/ui/controls/materials/bottomsheet_control.rb +0 -3
  48. data/lib/ruflet_ui/ruflet/ui/controls/materials/button_control.rb +8 -54
  49. data/lib/ruflet_ui/ruflet/ui/controls/materials/card_control.rb +8 -50
  50. data/lib/ruflet_ui/ruflet/ui/controls/materials/chart_controls.rb +19 -0
  51. data/lib/ruflet_ui/ruflet/ui/controls/materials/checkbox_control.rb +9 -60
  52. data/lib/ruflet_ui/ruflet/ui/controls/materials/chip_control.rb +7 -81
  53. data/lib/ruflet_ui/ruflet/ui/controls/materials/circleavatar_control.rb +7 -56
  54. data/lib/ruflet_ui/ruflet/ui/controls/materials/container_control.rb +9 -65
  55. data/lib/ruflet_ui/ruflet/ui/controls/materials/contextmenu_control.rb +50 -4
  56. data/lib/ruflet_ui/ruflet/ui/controls/materials/datacell_control.rb +1 -3
  57. data/lib/ruflet_ui/ruflet/ui/controls/materials/datacolumn_control.rb +1 -3
  58. data/lib/ruflet_ui/ruflet/ui/controls/materials/datatable_control.rb +7 -88
  59. data/lib/ruflet_ui/ruflet/ui/controls/materials/datepicker_control.rb +9 -55
  60. data/lib/ruflet_ui/ruflet/ui/controls/materials/daterangepicker_control.rb +8 -58
  61. data/lib/ruflet_ui/ruflet/ui/controls/materials/divider_control.rb +0 -9
  62. data/lib/ruflet_ui/ruflet/ui/controls/materials/dropdown_control.rb +8 -93
  63. data/lib/ruflet_ui/ruflet/ui/controls/materials/dropdownm2_control.rb +9 -103
  64. data/lib/ruflet_ui/ruflet/ui/controls/materials/dropdownoption_control.rb +0 -2
  65. data/lib/ruflet_ui/ruflet/ui/controls/materials/expansionpanel_control.rb +7 -51
  66. data/lib/ruflet_ui/ruflet/ui/controls/materials/expansionpanellist_control.rb +46 -5
  67. data/lib/ruflet_ui/ruflet/ui/controls/materials/expansiontile_control.rb +69 -3
  68. data/lib/ruflet_ui/ruflet/ui/controls/materials/filledbutton_control.rb +54 -2
  69. data/lib/ruflet_ui/ruflet/ui/controls/materials/fillediconbutton_control.rb +67 -5
  70. data/lib/ruflet_ui/ruflet/ui/controls/materials/filledtonalbutton_control.rb +54 -2
  71. data/lib/ruflet_ui/ruflet/ui/controls/materials/filledtonaliconbutton_control.rb +67 -5
  72. data/lib/ruflet_ui/ruflet/ui/controls/materials/floatingactionbutton_control.rb +7 -69
  73. data/lib/ruflet_ui/ruflet/ui/controls/materials/iconbutton_control.rb +8 -68
  74. data/lib/ruflet_ui/ruflet/ui/controls/materials/listtile_control.rb +8 -74
  75. data/lib/ruflet_ui/ruflet/ui/controls/materials/map_control.rb +99 -0
  76. data/lib/ruflet_ui/ruflet/ui/controls/materials/menuitembutton_control.rb +8 -56
  77. data/lib/ruflet_ui/ruflet/ui/controls/materials/navigationbar_control.rb +7 -59
  78. data/lib/ruflet_ui/ruflet/ui/controls/materials/navigationdrawer_control.rb +0 -7
  79. data/lib/ruflet_ui/ruflet/ui/controls/materials/navigationrail_control.rb +7 -73
  80. data/lib/ruflet_ui/ruflet/ui/controls/materials/outlinedbutton_control.rb +51 -2
  81. data/lib/ruflet_ui/ruflet/ui/controls/materials/outlinediconbutton_control.rb +67 -5
  82. data/lib/ruflet_ui/ruflet/ui/controls/materials/popupmenubutton_control.rb +8 -61
  83. data/lib/ruflet_ui/ruflet/ui/controls/materials/popupmenuitem_control.rb +0 -6
  84. data/lib/ruflet_ui/ruflet/ui/controls/materials/progressbar_control.rb +8 -56
  85. data/lib/ruflet_ui/ruflet/ui/controls/materials/progressring_control.rb +8 -56
  86. data/lib/ruflet_ui/ruflet/ui/controls/materials/radio_control.rb +9 -54
  87. data/lib/ruflet_ui/ruflet/ui/controls/materials/rangeslider_control.rb +7 -62
  88. data/lib/ruflet_ui/ruflet/ui/controls/materials/reorderablelistview_control.rb +9 -64
  89. data/lib/ruflet_ui/ruflet/ui/controls/materials/ruflet_controls.rb +5 -26
  90. data/lib/ruflet_ui/ruflet/ui/controls/materials/searchbar_control.rb +80 -11
  91. data/lib/ruflet_ui/ruflet/ui/controls/materials/segment_control.rb +0 -3
  92. data/lib/ruflet_ui/ruflet/ui/controls/materials/segmentedbutton_control.rb +7 -64
  93. data/lib/ruflet_ui/ruflet/ui/controls/materials/selectionarea_control.rb +1 -3
  94. data/lib/ruflet_ui/ruflet/ui/controls/materials/slider_control.rb +9 -60
  95. data/lib/ruflet_ui/ruflet/ui/controls/materials/snackbar_control.rb +37 -4
  96. data/lib/ruflet_ui/ruflet/ui/controls/materials/snackbaraction_control.rb +38 -0
  97. data/lib/ruflet_ui/ruflet/ui/controls/materials/spinkit_control.rb +25 -0
  98. data/lib/ruflet_ui/ruflet/ui/controls/materials/submenubutton_control.rb +52 -7
  99. data/lib/ruflet_ui/ruflet/ui/controls/materials/switch_control.rb +9 -61
  100. data/lib/ruflet_ui/ruflet/ui/controls/materials/tab_control.rb +0 -7
  101. data/lib/ruflet_ui/ruflet/ui/controls/materials/tabbar_control.rb +8 -64
  102. data/lib/ruflet_ui/ruflet/ui/controls/materials/tabbarview_control.rb +43 -5
  103. data/lib/ruflet_ui/ruflet/ui/controls/materials/tabs_control.rb +7 -47
  104. data/lib/ruflet_ui/ruflet/ui/controls/materials/textbutton_control.rb +51 -2
  105. data/lib/ruflet_ui/ruflet/ui/controls/materials/textfield_control.rb +9 -132
  106. data/lib/ruflet_ui/ruflet/ui/controls/materials/timepicker_control.rb +10 -34
  107. data/lib/ruflet_ui/ruflet/ui/controls/materials/verticaldivider_control.rb +0 -9
  108. data/lib/ruflet_ui/ruflet/ui/controls/materials/video_control.rb +9 -42
  109. data/lib/ruflet_ui/ruflet/ui/controls/materials/webview_control.rb +1 -114
  110. data/lib/ruflet_ui/ruflet/ui/controls/ruflet_controls.rb +13 -28
  111. data/lib/ruflet_ui/ruflet/ui/controls/shared/animatedswitcher_control.rb +46 -4
  112. data/lib/ruflet_ui/ruflet/ui/controls/shared/arc_control.rb +1 -0
  113. data/lib/ruflet_ui/ruflet/ui/controls/shared/browsercontextmenu_control.rb +1 -12
  114. data/lib/ruflet_ui/ruflet/ui/controls/shared/canvas_control.rb +8 -54
  115. data/lib/ruflet_ui/ruflet/ui/controls/shared/circle_control.rb +1 -0
  116. data/lib/ruflet_ui/ruflet/ui/controls/shared/column_control.rb +9 -51
  117. data/lib/ruflet_ui/ruflet/ui/controls/shared/dismissible_control.rb +52 -12
  118. data/lib/ruflet_ui/ruflet/ui/controls/shared/draggable_control.rb +1 -7
  119. data/lib/ruflet_ui/ruflet/ui/controls/shared/dragtarget_control.rb +1 -3
  120. data/lib/ruflet_ui/ruflet/ui/controls/shared/fletapp_control.rb +9 -46
  121. data/lib/ruflet_ui/ruflet/ui/controls/shared/gesturedetector_control.rb +9 -113
  122. data/lib/ruflet_ui/ruflet/ui/controls/shared/gridview_control.rb +57 -13
  123. data/lib/ruflet_ui/ruflet/ui/controls/shared/hero_control.rb +9 -40
  124. data/lib/ruflet_ui/ruflet/ui/controls/shared/icon_control.rb +9 -48
  125. data/lib/ruflet_ui/ruflet/ui/controls/shared/interactiveviewer_control.rb +9 -53
  126. data/lib/ruflet_ui/ruflet/ui/controls/shared/line_control.rb +1 -0
  127. data/lib/ruflet_ui/ruflet/ui/controls/shared/listview_control.rb +57 -11
  128. data/lib/ruflet_ui/ruflet/ui/controls/shared/markdown_control.rb +9 -54
  129. data/lib/ruflet_ui/ruflet/ui/controls/shared/oval_control.rb +1 -0
  130. data/lib/ruflet_ui/ruflet/ui/controls/shared/page_control.rb +9 -58
  131. data/lib/ruflet_ui/ruflet/ui/controls/shared/pagelet_control.rb +9 -48
  132. data/lib/ruflet_ui/ruflet/ui/controls/shared/pageview_control.rb +50 -4
  133. data/lib/ruflet_ui/ruflet/ui/controls/shared/path_control.rb +1 -0
  134. data/lib/ruflet_ui/ruflet/ui/controls/shared/placeholder_control.rb +44 -9
  135. data/lib/ruflet_ui/ruflet/ui/controls/shared/points_control.rb +1 -0
  136. data/lib/ruflet_ui/ruflet/ui/controls/shared/rect_control.rb +1 -0
  137. data/lib/ruflet_ui/ruflet/ui/controls/shared/reorderabledraghandle_control.rb +43 -4
  138. data/lib/ruflet_ui/ruflet/ui/controls/shared/responsiverow_control.rb +47 -15
  139. data/lib/ruflet_ui/ruflet/ui/controls/shared/rotatedbox_control.rb +97 -0
  140. data/lib/ruflet_ui/ruflet/ui/controls/shared/row_control.rb +9 -51
  141. data/lib/ruflet_ui/ruflet/ui/controls/shared/ruflet_controls.rb +5 -0
  142. data/lib/ruflet_ui/ruflet/ui/controls/shared/safearea_control.rb +48 -4
  143. data/lib/ruflet_ui/ruflet/ui/{services/ruflet → controls/shared}/screenshot_control.rb +18 -2
  144. data/lib/ruflet_ui/ruflet/ui/controls/shared/semantics_control.rb +65 -1
  145. data/lib/ruflet_ui/ruflet/ui/controls/shared/shadermask_control.rb +9 -41
  146. data/lib/ruflet_ui/ruflet/ui/controls/shared/shimmer_control.rb +9 -44
  147. data/lib/ruflet_ui/ruflet/ui/controls/shared/stack_control.rb +44 -1
  148. data/lib/ruflet_ui/ruflet/ui/controls/shared/text_control.rb +9 -35
  149. data/lib/ruflet_ui/ruflet/ui/controls/shared/transparentpointer_control.rb +9 -38
  150. data/lib/ruflet_ui/ruflet/ui/controls/shared/view_control.rb +63 -1
  151. data/lib/ruflet_ui/ruflet/ui/controls/shared/window_control.rb +40 -66
  152. data/lib/ruflet_ui/ruflet/ui/controls/shared/windowdragarea_control.rb +45 -4
  153. data/lib/ruflet_ui/ruflet/ui/material_control_methods.rb +61 -17
  154. data/lib/ruflet_ui/ruflet/ui/material_control_registry.rb +22 -0
  155. data/lib/ruflet_ui/ruflet/ui/services/ruflet/accelerometer_control.rb +1 -0
  156. data/lib/ruflet_ui/ruflet/ui/services/ruflet/audio_recorder_control.rb +14 -36
  157. data/lib/ruflet_ui/ruflet/ui/services/ruflet/barometer_control.rb +1 -0
  158. data/lib/ruflet_ui/ruflet/ui/services/ruflet/battery_control.rb +1 -0
  159. data/lib/ruflet_ui/ruflet/ui/services/ruflet/camera_control.rb +9 -42
  160. data/lib/ruflet_ui/ruflet/ui/services/ruflet/clipboard_control.rb +31 -0
  161. data/lib/ruflet_ui/ruflet/ui/services/ruflet/connectivity_control.rb +1 -0
  162. data/lib/ruflet_ui/ruflet/ui/services/ruflet/filepicker_control.rb +1 -0
  163. data/lib/ruflet_ui/ruflet/ui/services/ruflet/flashlight_control.rb +1 -0
  164. data/lib/ruflet_ui/ruflet/ui/services/ruflet/geolocator_control.rb +14 -30
  165. data/lib/ruflet_ui/ruflet/ui/services/ruflet/gyroscope_control.rb +1 -0
  166. data/lib/ruflet_ui/ruflet/ui/services/ruflet/hapticfeedback_control.rb +1 -0
  167. data/lib/ruflet_ui/ruflet/ui/services/ruflet/magnetometer_control.rb +1 -0
  168. data/lib/ruflet_ui/ruflet/ui/services/ruflet/permissionhandler_control.rb +5 -20
  169. data/lib/ruflet_ui/ruflet/ui/services/ruflet/screenbrightness_control.rb +1 -0
  170. data/lib/ruflet_ui/ruflet/ui/services/ruflet/securestorage_control.rb +22 -49
  171. data/lib/ruflet_ui/ruflet/ui/services/ruflet/semanticsservice_control.rb +20 -15
  172. data/lib/ruflet_ui/ruflet/ui/services/ruflet/shakedetector_control.rb +1 -0
  173. data/lib/ruflet_ui/ruflet/ui/services/ruflet/share_control.rb +1 -0
  174. data/lib/ruflet_ui/ruflet/ui/services/ruflet/sharedpreferences_control.rb +1 -0
  175. data/lib/ruflet_ui/ruflet/ui/services/ruflet/storagepaths_control.rb +1 -0
  176. data/lib/ruflet_ui/ruflet/ui/services/ruflet/urllauncher_control.rb +1 -0
  177. data/lib/ruflet_ui/ruflet/ui/services/ruflet/useraccelerometer_control.rb +1 -0
  178. data/lib/ruflet_ui/ruflet/ui/services/ruflet/wakelock_control.rb +1 -0
  179. data/lib/ruflet_ui/ruflet/ui/services/ruflet_services.rb +0 -7
  180. data/lib/ruflet_ui/ruflet/ui/shared_control_forwarders.rb +20 -1
  181. data/lib/ruflet_ui.rb +12 -10
  182. metadata +7 -8
  183. data/lib/ruflet_ui/ruflet/types/animation.rb +0 -110
  184. data/lib/ruflet_ui/ruflet/ui/controls/materials/codeeditor_control.rb +0 -93
  185. data/lib/ruflet_ui/ruflet/ui/controls/materials/map_controls.rb +0 -311
  186. data/lib/ruflet_ui/ruflet/ui/controls/materials/rive_control.rb +0 -87
  187. data/lib/ruflet_ui/ruflet/ui/controls/materials/spinkit_controls.rb +0 -109
  188. data/lib/ruflet_ui/ruflet/ui/services/ruflet/tester_control.rb +0 -126
@@ -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 = {}
@@ -8,57 +8,15 @@ module Ruflet
8
8
  TYPE = "column".freeze
9
9
  WIRE = "Column".freeze
10
10
 
11
- def initialize(id: nil, adaptive: nil, align: nil, alignment: 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, auto_scroll: nil, badge: nil, bottom: nil, col: nil, controls: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, height: nil, horizontal_alignment: nil, intrinsic_width: nil, key: nil, left: nil, margin: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, run_alignment: nil, run_spacing: nil, scale: nil, scroll: nil, scroll_interval: nil, size_change_interval: nil, spacing: nil, tight: nil, tooltip: nil, top: nil, visible: nil, width: nil, wrap: nil, on_animation_end: nil, on_scroll: nil, on_size_change: nil)
12
- props = {}
13
- props[:adaptive] = adaptive unless adaptive.nil?
14
- props[:align] = align unless align.nil?
15
- props[:alignment] = alignment unless alignment.nil?
16
- props[:animate_align] = animate_align unless animate_align.nil?
17
- props[:animate_margin] = animate_margin unless animate_margin.nil?
18
- props[:animate_offset] = animate_offset unless animate_offset.nil?
19
- props[:animate_opacity] = animate_opacity unless animate_opacity.nil?
20
- props[:animate_position] = animate_position unless animate_position.nil?
21
- props[:animate_rotation] = animate_rotation unless animate_rotation.nil?
22
- props[:animate_scale] = animate_scale unless animate_scale.nil?
23
- props[:animate_size] = animate_size unless animate_size.nil?
24
- props[:aspect_ratio] = aspect_ratio unless aspect_ratio.nil?
25
- props[:auto_scroll] = auto_scroll unless auto_scroll.nil?
26
- props[:badge] = badge unless badge.nil?
27
- props[:bottom] = bottom unless bottom.nil?
28
- props[:col] = col unless col.nil?
29
- props[:controls] = controls unless controls.nil?
30
- props[:data] = data unless data.nil?
31
- props[:disabled] = disabled unless disabled.nil?
32
- props[:expand] = expand unless expand.nil?
33
- props[:expand_loose] = expand_loose unless expand_loose.nil?
34
- props[:height] = height unless height.nil?
35
- props[:horizontal_alignment] = horizontal_alignment unless horizontal_alignment.nil?
36
- props[:intrinsic_width] = intrinsic_width unless intrinsic_width.nil?
37
- props[:key] = key unless key.nil?
38
- props[:left] = left unless left.nil?
39
- props[:margin] = margin unless margin.nil?
40
- props[:offset] = offset unless offset.nil?
41
- props[:opacity] = opacity unless opacity.nil?
42
- props[:right] = right unless right.nil?
43
- props[:rotate] = rotate unless rotate.nil?
44
- props[:rtl] = rtl unless rtl.nil?
45
- props[:run_alignment] = run_alignment unless run_alignment.nil?
46
- props[:run_spacing] = run_spacing unless run_spacing.nil?
47
- props[:scale] = scale unless scale.nil?
48
- props[:scroll] = scroll unless scroll.nil?
49
- props[:scroll_interval] = scroll_interval unless scroll_interval.nil?
50
- props[:size_change_interval] = size_change_interval unless size_change_interval.nil?
51
- props[:spacing] = spacing unless spacing.nil?
52
- props[:tight] = tight unless tight.nil?
53
- props[:tooltip] = tooltip unless tooltip.nil?
54
- props[:top] = top unless top.nil?
55
- props[:visible] = visible unless visible.nil?
56
- props[:width] = width unless width.nil?
57
- props[:wrap] = wrap unless wrap.nil?
58
- props[:on_animation_end] = on_animation_end unless on_animation_end.nil?
59
- props[:on_scroll] = on_scroll unless on_scroll.nil?
60
- props[:on_size_change] = on_size_change unless on_size_change.nil?
61
- super(type: TYPE, id: id, **props)
11
+ KEYWORDS = [:adaptive, :align, :alignment, :animate_align, :animate_margin, :animate_offset, :animate_opacity, :animate_position, :animate_rotation, :animate_scale, :animate_size, :aspect_ratio, :auto_scroll, :badge, :bottom, :col, :controls, :data, :disabled, :expand, :expand_loose, :height, :horizontal_alignment, :intrinsic_width, :key, :left, :margin, :offset, :opacity, :right, :rotate, :rtl, :run_alignment, :run_spacing, :scale, :scroll, :scroll_interval, :size_change_interval, :spacing, :tight, :tooltip, :top, :visible, :width, :wrap, :on_animation_end, :on_scroll, :on_size_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
+ compact[key] = value unless value.nil?
18
+ end
19
+ super(type: TYPE, id: id, **compact)
62
20
  end
63
21
  end
64
22
  end
@@ -8,14 +8,59 @@ module Ruflet
8
8
  TYPE = "dismissible".freeze
9
9
  WIRE = "Dismissible".freeze
10
10
 
11
- def initialize(id: nil, adaptive: 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, background: nil, badge: nil, bottom: nil, col: nil, content: nil, cross_axis_end_offset: nil, data: nil, disabled: nil, dismiss_direction: nil, dismiss_thresholds: nil, expand: nil, expand_loose: nil, height: nil, key: nil, left: nil, margin: nil, movement_duration: nil, offset: nil, opacity: nil, resize_duration: nil, right: nil, rotate: nil, rtl: nil, scale: nil, secondary_background: nil, size_change_interval: nil, tooltip: nil, top: nil, visible: nil, width: nil, on_animation_end: nil, on_confirm_dismiss: nil, on_dismiss: nil, on_resize: nil, on_size_change: nil, on_update: nil)
12
- if content.nil? || (content.respond_to?(:props) && content.props["visible"] == false)
13
- raise ArgumentError, "dismissible requires visible content"
14
- end
11
+ KEYWORDS = [:adaptive, :align, :animate_align, :animate_margin, :animate_offset, :animate_opacity, :animate_position, :animate_rotation, :animate_scale, :animate_size, :aspect_ratio, :background, :badge, :bottom, :col, :content, :cross_axis_end_offset, :data, :disabled, :dismiss_direction, :dismiss_thresholds, :expand, :expand_loose, :height, :key, :left, :margin, :movement_duration, :offset, :opacity, :resize_duration, :right, :rotate, :rtl, :scale, :secondary_background, :size_change_interval, :tooltip, :top, :visible, :width, :on_animation_end, :on_confirm_dismiss, :on_dismiss, :on_resize, :on_size_change, :on_update].freeze
15
12
 
16
- if secondary_background && (background.nil? || (background.respond_to?(:props) && background.props["visible"] == false))
17
- raise ArgumentError, "dismissible secondary_background requires visible background"
18
- end
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
+ adaptive = props[:adaptive]
17
+ align = props[:align]
18
+ animate_align = props[:animate_align]
19
+ animate_margin = props[:animate_margin]
20
+ animate_offset = props[:animate_offset]
21
+ animate_opacity = props[:animate_opacity]
22
+ animate_position = props[:animate_position]
23
+ animate_rotation = props[:animate_rotation]
24
+ animate_scale = props[:animate_scale]
25
+ animate_size = props[:animate_size]
26
+ aspect_ratio = props[:aspect_ratio]
27
+ background = props[:background]
28
+ badge = props[:badge]
29
+ bottom = props[:bottom]
30
+ col = props[:col]
31
+ content = props[:content]
32
+ cross_axis_end_offset = props[:cross_axis_end_offset]
33
+ data = props[:data]
34
+ disabled = props[:disabled]
35
+ dismiss_direction = props[:dismiss_direction]
36
+ dismiss_thresholds = props[:dismiss_thresholds]
37
+ expand = props[:expand]
38
+ expand_loose = props[:expand_loose]
39
+ height = props[:height]
40
+ key = props[:key]
41
+ left = props[:left]
42
+ margin = props[:margin]
43
+ movement_duration = props[:movement_duration]
44
+ offset = props[:offset]
45
+ opacity = props[:opacity]
46
+ resize_duration = props[:resize_duration]
47
+ right = props[:right]
48
+ rotate = props[:rotate]
49
+ rtl = props[:rtl]
50
+ scale = props[:scale]
51
+ secondary_background = props[:secondary_background]
52
+ size_change_interval = props[:size_change_interval]
53
+ tooltip = props[:tooltip]
54
+ top = props[:top]
55
+ visible = props[:visible]
56
+ width = props[:width]
57
+ on_animation_end = props[:on_animation_end]
58
+ on_confirm_dismiss = props[:on_confirm_dismiss]
59
+ on_dismiss = props[:on_dismiss]
60
+ on_resize = props[:on_resize]
61
+ on_size_change = props[:on_size_change]
62
+ on_update = props[:on_update]
63
+ raise ArgumentError, "dismissible requires content" if content.nil?
19
64
 
20
65
  cross_axis_end_offset = 0.0 if cross_axis_end_offset.nil?
21
66
  dismiss_direction = "horizontal" if dismiss_direction.nil?
@@ -23,11 +68,6 @@ module Ruflet
23
68
  movement_duration = 200 if movement_duration.nil?
24
69
  resize_duration = 300 if resize_duration.nil?
25
70
 
26
- dismiss_thresholds.each_value do |threshold|
27
- next if threshold.nil?
28
- raise ArgumentError, "dismissible dismiss_thresholds values must be between 0.0 and 1.0" unless (0.0..1.0).cover?(threshold)
29
- end
30
-
31
71
  props = {}
32
72
  props[:adaptive] = adaptive unless adaptive.nil?
33
73
  props[:align] = align unless align.nil?
@@ -9,13 +9,7 @@ module Ruflet
9
9
  WIRE = "Draggable".freeze
10
10
 
11
11
  def initialize(id: nil, affinity: nil, axis: nil, badge: nil, col: nil, content: nil, content_feedback: nil, content_when_dragging: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, group: nil, key: nil, max_simultaneous_drags: nil, opacity: nil, rtl: nil, tooltip: nil, visible: nil, on_drag_complete: nil, on_drag_start: nil)
12
- if content.nil? || (content.respond_to?(:props) && content.props["visible"] == false)
13
- raise ArgumentError, "draggable requires visible content"
14
- end
15
- if !max_simultaneous_drags.nil? && max_simultaneous_drags.negative?
16
- raise ArgumentError, "draggable max_simultaneous_drags must be greater than or equal to 0"
17
- end
18
-
12
+ raise ArgumentError, "draggable requires content" if content.nil?
19
13
  group = "default" if group.nil?
20
14
 
21
15
  props = {}
@@ -9,9 +9,7 @@ module Ruflet
9
9
  WIRE = "DragTarget".freeze
10
10
 
11
11
  def initialize(id: nil, badge: nil, col: nil, content: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, group: nil, key: nil, opacity: nil, rtl: nil, tooltip: nil, visible: nil, on_accept: nil, on_leave: nil, on_move: nil, on_will_accept: nil)
12
- if content.nil? || (content.respond_to?(:props) && content.props["visible"] == false)
13
- raise ArgumentError, "drag_target requires visible content"
14
- end
12
+ raise ArgumentError, "drag_target requires content" if content.nil?
15
13
 
16
14
  group = "default" if group.nil?
17
15
 
@@ -8,52 +8,15 @@ module Ruflet
8
8
  TYPE = "fletapp".freeze
9
9
  WIRE = "FletApp".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, app_error_message: nil, app_startup_screen_message: nil, args: nil, aspect_ratio: nil, badge: nil, bottom: nil, col: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, force_pyodide: nil, height: nil, key: nil, left: nil, margin: nil, offset: nil, opacity: nil, reconnect_interval_ms: nil, reconnect_timeout_ms: nil, right: nil, rotate: nil, rtl: nil, scale: nil, show_app_startup_screen: nil, size_change_interval: nil, tooltip: nil, top: nil, url: nil, visible: nil, width: nil, on_animation_end: nil, on_error: 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[:app_error_message] = app_error_message unless app_error_message.nil?
23
- props[:app_startup_screen_message] = app_startup_screen_message unless app_startup_screen_message.nil?
24
- props[:args] = args unless args.nil?
25
- props[:aspect_ratio] = aspect_ratio unless aspect_ratio.nil?
26
- props[:badge] = badge unless badge.nil?
27
- props[:bottom] = bottom unless bottom.nil?
28
- props[:col] = col unless col.nil?
29
- props[:data] = data unless data.nil?
30
- props[:disabled] = disabled unless disabled.nil?
31
- props[:expand] = expand unless expand.nil?
32
- props[:expand_loose] = expand_loose unless expand_loose.nil?
33
- props[:force_pyodide] = force_pyodide unless force_pyodide.nil?
34
- props[:height] = height unless height.nil?
35
- props[:key] = key unless key.nil?
36
- props[:left] = left unless left.nil?
37
- props[:margin] = margin unless margin.nil?
38
- props[:offset] = offset unless offset.nil?
39
- props[:opacity] = opacity unless opacity.nil?
40
- props[:reconnect_interval_ms] = reconnect_interval_ms unless reconnect_interval_ms.nil?
41
- props[:reconnect_timeout_ms] = reconnect_timeout_ms unless reconnect_timeout_ms.nil?
42
- props[:right] = right unless right.nil?
43
- props[:rotate] = rotate unless rotate.nil?
44
- props[:rtl] = rtl unless rtl.nil?
45
- props[:scale] = scale unless scale.nil?
46
- props[:show_app_startup_screen] = show_app_startup_screen unless show_app_startup_screen.nil?
47
- props[:size_change_interval] = size_change_interval unless size_change_interval.nil?
48
- props[:tooltip] = tooltip unless tooltip.nil?
49
- props[:top] = top unless top.nil?
50
- props[:url] = url unless url.nil?
51
- props[:visible] = visible unless visible.nil?
52
- props[:width] = width unless width.nil?
53
- props[:on_animation_end] = on_animation_end unless on_animation_end.nil?
54
- props[:on_error] = on_error unless on_error.nil?
55
- props[:on_size_change] = on_size_change unless on_size_change.nil?
56
- super(type: TYPE, id: id, **props)
11
+ KEYWORDS = [:align, :animate_align, :animate_margin, :animate_offset, :animate_opacity, :animate_position, :animate_rotation, :animate_scale, :animate_size, :app_error_message, :app_startup_screen_message, :args, :aspect_ratio, :badge, :bottom, :col, :data, :disabled, :expand, :expand_loose, :force_pyodide, :height, :key, :left, :margin, :offset, :opacity, :reconnect_interval_ms, :reconnect_timeout_ms, :right, :rotate, :rtl, :scale, :show_app_startup_screen, :size_change_interval, :tooltip, :top, :url, :visible, :width, :on_animation_end, :on_error, :on_size_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
+ compact[key] = value unless value.nil?
18
+ end
19
+ super(type: TYPE, id: id, **compact)
57
20
  end
58
21
  end
59
22
  end
@@ -8,119 +8,15 @@ module Ruflet
8
8
  TYPE = "gesturedetector".freeze
9
9
  WIRE = "GestureDetector".freeze
10
10
 
11
- def initialize(id: nil, adaptive: nil, align: nil, allowed_devices: 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, drag_interval: nil, exclude_from_semantics: nil, expand: nil, expand_loose: nil, height: nil, hover_interval: nil, key: nil, left: nil, margin: nil, mouse_cursor: nil, multi_tap_touches: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, scale: nil, size_change_interval: nil, tooltip: nil, top: nil, trackpad_scroll_causes_scale: nil, visible: nil, width: nil, on_animation_end: nil, on_double_tap: nil, on_double_tap_cancel: nil, on_double_tap_down: nil, on_enter: nil, on_exit: nil, on_force_press_end: nil, on_force_press_peak: nil, on_force_press_start: nil, on_force_press_update: nil, on_horizontal_drag_cancel: nil, on_horizontal_drag_down: nil, on_horizontal_drag_end: nil, on_horizontal_drag_start: nil, on_horizontal_drag_update: nil, on_hover: nil, on_long_press: nil, on_long_press_cancel: nil, on_long_press_down: nil, on_long_press_end: nil, on_long_press_move_update: nil, on_long_press_start: nil, on_long_press_up: nil, on_multi_long_press: nil, on_multi_tap: nil, on_pan_cancel: nil, on_pan_down: nil, on_pan_end: nil, on_pan_start: nil, on_pan_update: nil, on_right_pan_end: nil, on_right_pan_start: nil, on_right_pan_update: nil, on_scale_end: nil, on_scale_start: nil, on_scale_update: nil, on_scroll: nil, on_secondary_long_press: nil, on_secondary_long_press_cancel: nil, on_secondary_long_press_down: nil, on_secondary_long_press_end: nil, on_secondary_long_press_move_update: nil, on_secondary_long_press_start: nil, on_secondary_long_press_up: nil, on_secondary_tap: nil, on_secondary_tap_cancel: nil, on_secondary_tap_down: nil, on_secondary_tap_up: nil, on_size_change: nil, on_tap: nil, on_tap_cancel: nil, on_tap_down: nil, on_tap_move: nil, on_tap_up: nil, on_tertiary_long_press: nil, on_tertiary_long_press_cancel: nil, on_tertiary_long_press_down: nil, on_tertiary_long_press_end: nil, on_tertiary_long_press_move_update: nil, on_tertiary_long_press_start: nil, on_tertiary_long_press_up: nil, on_tertiary_tap_cancel: nil, on_tertiary_tap_down: nil, on_tertiary_tap_up: nil, on_vertical_drag_cancel: nil, on_vertical_drag_down: nil, on_vertical_drag_end: nil, on_vertical_drag_start: nil, on_vertical_drag_update: nil)
12
- props = {}
13
- props[:adaptive] = adaptive unless adaptive.nil?
14
- props[:align] = align unless align.nil?
15
- props[:allowed_devices] = allowed_devices unless allowed_devices.nil?
16
- props[:animate_align] = animate_align unless animate_align.nil?
17
- props[:animate_margin] = animate_margin unless animate_margin.nil?
18
- props[:animate_offset] = animate_offset unless animate_offset.nil?
19
- props[:animate_opacity] = animate_opacity unless animate_opacity.nil?
20
- props[:animate_position] = animate_position unless animate_position.nil?
21
- props[:animate_rotation] = animate_rotation unless animate_rotation.nil?
22
- props[:animate_scale] = animate_scale unless animate_scale.nil?
23
- props[:animate_size] = animate_size unless animate_size.nil?
24
- props[:aspect_ratio] = aspect_ratio unless aspect_ratio.nil?
25
- props[:badge] = badge unless badge.nil?
26
- props[:bottom] = bottom unless bottom.nil?
27
- props[:col] = col unless col.nil?
28
- props[:content] = content unless content.nil?
29
- props[:data] = data unless data.nil?
30
- props[:disabled] = disabled unless disabled.nil?
31
- props[:drag_interval] = drag_interval unless drag_interval.nil?
32
- props[:exclude_from_semantics] = exclude_from_semantics unless exclude_from_semantics.nil?
33
- props[:expand] = expand unless expand.nil?
34
- props[:expand_loose] = expand_loose unless expand_loose.nil?
35
- props[:height] = height unless height.nil?
36
- props[:hover_interval] = hover_interval unless hover_interval.nil?
37
- props[:key] = key unless key.nil?
38
- props[:left] = left unless left.nil?
39
- props[:margin] = margin unless margin.nil?
40
- props[:mouse_cursor] = mouse_cursor unless mouse_cursor.nil?
41
- props[:multi_tap_touches] = multi_tap_touches unless multi_tap_touches.nil?
42
- props[:offset] = offset unless offset.nil?
43
- props[:opacity] = opacity unless opacity.nil?
44
- props[:right] = right unless right.nil?
45
- props[:rotate] = rotate unless rotate.nil?
46
- props[:rtl] = rtl unless rtl.nil?
47
- props[:scale] = scale unless scale.nil?
48
- props[:size_change_interval] = size_change_interval unless size_change_interval.nil?
49
- props[:tooltip] = tooltip unless tooltip.nil?
50
- props[:top] = top unless top.nil?
51
- props[:trackpad_scroll_causes_scale] = trackpad_scroll_causes_scale unless trackpad_scroll_causes_scale.nil?
52
- props[:visible] = visible unless visible.nil?
53
- props[:width] = width unless width.nil?
54
- props[:on_animation_end] = on_animation_end unless on_animation_end.nil?
55
- props[:on_double_tap] = on_double_tap unless on_double_tap.nil?
56
- props[:on_double_tap_cancel] = on_double_tap_cancel unless on_double_tap_cancel.nil?
57
- props[:on_double_tap_down] = on_double_tap_down unless on_double_tap_down.nil?
58
- props[:on_enter] = on_enter unless on_enter.nil?
59
- props[:on_exit] = on_exit unless on_exit.nil?
60
- props[:on_force_press_end] = on_force_press_end unless on_force_press_end.nil?
61
- props[:on_force_press_peak] = on_force_press_peak unless on_force_press_peak.nil?
62
- props[:on_force_press_start] = on_force_press_start unless on_force_press_start.nil?
63
- props[:on_force_press_update] = on_force_press_update unless on_force_press_update.nil?
64
- props[:on_horizontal_drag_cancel] = on_horizontal_drag_cancel unless on_horizontal_drag_cancel.nil?
65
- props[:on_horizontal_drag_down] = on_horizontal_drag_down unless on_horizontal_drag_down.nil?
66
- props[:on_horizontal_drag_end] = on_horizontal_drag_end unless on_horizontal_drag_end.nil?
67
- props[:on_horizontal_drag_start] = on_horizontal_drag_start unless on_horizontal_drag_start.nil?
68
- props[:on_horizontal_drag_update] = on_horizontal_drag_update unless on_horizontal_drag_update.nil?
69
- props[:on_hover] = on_hover unless on_hover.nil?
70
- props[:on_long_press] = on_long_press unless on_long_press.nil?
71
- props[:on_long_press_cancel] = on_long_press_cancel unless on_long_press_cancel.nil?
72
- props[:on_long_press_down] = on_long_press_down unless on_long_press_down.nil?
73
- props[:on_long_press_end] = on_long_press_end unless on_long_press_end.nil?
74
- props[:on_long_press_move_update] = on_long_press_move_update unless on_long_press_move_update.nil?
75
- props[:on_long_press_start] = on_long_press_start unless on_long_press_start.nil?
76
- props[:on_long_press_up] = on_long_press_up unless on_long_press_up.nil?
77
- props[:on_multi_long_press] = on_multi_long_press unless on_multi_long_press.nil?
78
- props[:on_multi_tap] = on_multi_tap unless on_multi_tap.nil?
79
- props[:on_pan_cancel] = on_pan_cancel unless on_pan_cancel.nil?
80
- props[:on_pan_down] = on_pan_down unless on_pan_down.nil?
81
- props[:on_pan_end] = on_pan_end unless on_pan_end.nil?
82
- props[:on_pan_start] = on_pan_start unless on_pan_start.nil?
83
- props[:on_pan_update] = on_pan_update unless on_pan_update.nil?
84
- props[:on_right_pan_end] = on_right_pan_end unless on_right_pan_end.nil?
85
- props[:on_right_pan_start] = on_right_pan_start unless on_right_pan_start.nil?
86
- props[:on_right_pan_update] = on_right_pan_update unless on_right_pan_update.nil?
87
- props[:on_scale_end] = on_scale_end unless on_scale_end.nil?
88
- props[:on_scale_start] = on_scale_start unless on_scale_start.nil?
89
- props[:on_scale_update] = on_scale_update unless on_scale_update.nil?
90
- props[:on_scroll] = on_scroll unless on_scroll.nil?
91
- props[:on_secondary_long_press] = on_secondary_long_press unless on_secondary_long_press.nil?
92
- props[:on_secondary_long_press_cancel] = on_secondary_long_press_cancel unless on_secondary_long_press_cancel.nil?
93
- props[:on_secondary_long_press_down] = on_secondary_long_press_down unless on_secondary_long_press_down.nil?
94
- props[:on_secondary_long_press_end] = on_secondary_long_press_end unless on_secondary_long_press_end.nil?
95
- props[:on_secondary_long_press_move_update] = on_secondary_long_press_move_update unless on_secondary_long_press_move_update.nil?
96
- props[:on_secondary_long_press_start] = on_secondary_long_press_start unless on_secondary_long_press_start.nil?
97
- props[:on_secondary_long_press_up] = on_secondary_long_press_up unless on_secondary_long_press_up.nil?
98
- props[:on_secondary_tap] = on_secondary_tap unless on_secondary_tap.nil?
99
- props[:on_secondary_tap_cancel] = on_secondary_tap_cancel unless on_secondary_tap_cancel.nil?
100
- props[:on_secondary_tap_down] = on_secondary_tap_down unless on_secondary_tap_down.nil?
101
- props[:on_secondary_tap_up] = on_secondary_tap_up unless on_secondary_tap_up.nil?
102
- props[:on_size_change] = on_size_change unless on_size_change.nil?
103
- props[:on_tap] = on_tap unless on_tap.nil?
104
- props[:on_tap_cancel] = on_tap_cancel unless on_tap_cancel.nil?
105
- props[:on_tap_down] = on_tap_down unless on_tap_down.nil?
106
- props[:on_tap_move] = on_tap_move unless on_tap_move.nil?
107
- props[:on_tap_up] = on_tap_up unless on_tap_up.nil?
108
- props[:on_tertiary_long_press] = on_tertiary_long_press unless on_tertiary_long_press.nil?
109
- props[:on_tertiary_long_press_cancel] = on_tertiary_long_press_cancel unless on_tertiary_long_press_cancel.nil?
110
- props[:on_tertiary_long_press_down] = on_tertiary_long_press_down unless on_tertiary_long_press_down.nil?
111
- props[:on_tertiary_long_press_end] = on_tertiary_long_press_end unless on_tertiary_long_press_end.nil?
112
- props[:on_tertiary_long_press_move_update] = on_tertiary_long_press_move_update unless on_tertiary_long_press_move_update.nil?
113
- props[:on_tertiary_long_press_start] = on_tertiary_long_press_start unless on_tertiary_long_press_start.nil?
114
- props[:on_tertiary_long_press_up] = on_tertiary_long_press_up unless on_tertiary_long_press_up.nil?
115
- props[:on_tertiary_tap_cancel] = on_tertiary_tap_cancel unless on_tertiary_tap_cancel.nil?
116
- props[:on_tertiary_tap_down] = on_tertiary_tap_down unless on_tertiary_tap_down.nil?
117
- props[:on_tertiary_tap_up] = on_tertiary_tap_up unless on_tertiary_tap_up.nil?
118
- props[:on_vertical_drag_cancel] = on_vertical_drag_cancel unless on_vertical_drag_cancel.nil?
119
- props[:on_vertical_drag_down] = on_vertical_drag_down unless on_vertical_drag_down.nil?
120
- props[:on_vertical_drag_end] = on_vertical_drag_end unless on_vertical_drag_end.nil?
121
- props[:on_vertical_drag_start] = on_vertical_drag_start unless on_vertical_drag_start.nil?
122
- props[:on_vertical_drag_update] = on_vertical_drag_update unless on_vertical_drag_update.nil?
123
- super(type: TYPE, id: id, **props)
11
+ KEYWORDS = [:adaptive, :align, :allowed_devices, :animate_align, :animate_margin, :animate_offset, :animate_opacity, :animate_position, :animate_rotation, :animate_scale, :animate_size, :aspect_ratio, :badge, :bottom, :col, :content, :data, :disabled, :drag_interval, :exclude_from_semantics, :expand, :expand_loose, :height, :hover_interval, :key, :left, :margin, :mouse_cursor, :multi_tap_touches, :offset, :opacity, :right, :rotate, :rtl, :scale, :size_change_interval, :tooltip, :top, :trackpad_scroll_causes_scale, :visible, :width, :on_animation_end, :on_double_tap, :on_double_tap_cancel, :on_double_tap_down, :on_enter, :on_exit, :on_force_press_end, :on_force_press_peak, :on_force_press_start, :on_force_press_update, :on_horizontal_drag_cancel, :on_horizontal_drag_down, :on_horizontal_drag_end, :on_horizontal_drag_start, :on_horizontal_drag_update, :on_hover, :on_long_press, :on_long_press_cancel, :on_long_press_down, :on_long_press_end, :on_long_press_move_update, :on_long_press_start, :on_long_press_up, :on_multi_long_press, :on_multi_tap, :on_pan_cancel, :on_pan_down, :on_pan_end, :on_pan_start, :on_pan_update, :on_right_pan_end, :on_right_pan_start, :on_right_pan_update, :on_scale_end, :on_scale_start, :on_scale_update, :on_scroll, :on_secondary_long_press, :on_secondary_long_press_cancel, :on_secondary_long_press_down, :on_secondary_long_press_end, :on_secondary_long_press_move_update, :on_secondary_long_press_start, :on_secondary_long_press_up, :on_secondary_tap, :on_secondary_tap_cancel, :on_secondary_tap_down, :on_secondary_tap_up, :on_size_change, :on_tap, :on_tap_cancel, :on_tap_down, :on_tap_move, :on_tap_up, :on_tertiary_long_press, :on_tertiary_long_press_cancel, :on_tertiary_long_press_down, :on_tertiary_long_press_end, :on_tertiary_long_press_move_update, :on_tertiary_long_press_start, :on_tertiary_long_press_up, :on_tertiary_tap_cancel, :on_tertiary_tap_down, :on_tertiary_tap_up, :on_vertical_drag_cancel, :on_vertical_drag_down, :on_vertical_drag_end, :on_vertical_drag_start, :on_vertical_drag_update].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)
124
20
  end
125
21
  end
126
22
  end
@@ -8,7 +8,63 @@ module Ruflet
8
8
  TYPE = "gridview".freeze
9
9
  WIRE = "GridView".freeze
10
10
 
11
- def initialize(id: nil, adaptive: 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, auto_scroll: nil, badge: nil, bottom: nil, build_controls_on_demand: nil, cache_extent: nil, child_aspect_ratio: nil, clip_behavior: nil, col: nil, controls: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, height: nil, horizontal: nil, key: nil, left: nil, margin: nil, max_extent: nil, offset: nil, opacity: nil, padding: nil, reverse: nil, right: nil, rotate: nil, rtl: nil, run_spacing: nil, runs_count: nil, scale: nil, scroll: nil, scroll_interval: nil, semantic_child_count: nil, size_change_interval: nil, spacing: nil, tooltip: nil, top: nil, visible: nil, width: nil, on_animation_end: nil, on_scroll: nil, on_size_change: nil)
11
+ KEYWORDS = [:adaptive, :align, :animate_align, :animate_margin, :animate_offset, :animate_opacity, :animate_position, :animate_rotation, :animate_scale, :animate_size, :aspect_ratio, :auto_scroll, :badge, :bottom, :build_controls_on_demand, :cache_extent, :child_aspect_ratio, :clip_behavior, :col, :controls, :data, :disabled, :expand, :expand_loose, :height, :horizontal, :key, :left, :margin, :max_extent, :offset, :opacity, :padding, :reverse, :right, :rotate, :rtl, :run_spacing, :runs_count, :scale, :scroll, :scroll_interval, :semantic_child_count, :size_change_interval, :spacing, :tooltip, :top, :visible, :width, :on_animation_end, :on_scroll, :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
+ adaptive = props[:adaptive]
17
+ align = props[:align]
18
+ animate_align = props[:animate_align]
19
+ animate_margin = props[:animate_margin]
20
+ animate_offset = props[:animate_offset]
21
+ animate_opacity = props[:animate_opacity]
22
+ animate_position = props[:animate_position]
23
+ animate_rotation = props[:animate_rotation]
24
+ animate_scale = props[:animate_scale]
25
+ animate_size = props[:animate_size]
26
+ aspect_ratio = props[:aspect_ratio]
27
+ auto_scroll = props[:auto_scroll]
28
+ badge = props[:badge]
29
+ bottom = props[:bottom]
30
+ build_controls_on_demand = props[:build_controls_on_demand]
31
+ cache_extent = props[:cache_extent]
32
+ child_aspect_ratio = props[:child_aspect_ratio]
33
+ clip_behavior = props[:clip_behavior]
34
+ col = props[:col]
35
+ controls = props[:controls]
36
+ data = props[:data]
37
+ disabled = props[:disabled]
38
+ expand = props[:expand]
39
+ expand_loose = props[:expand_loose]
40
+ height = props[:height]
41
+ horizontal = props[:horizontal]
42
+ key = props[:key]
43
+ left = props[:left]
44
+ margin = props[:margin]
45
+ max_extent = props[:max_extent]
46
+ offset = props[:offset]
47
+ opacity = props[:opacity]
48
+ padding = props[:padding]
49
+ reverse = props[:reverse]
50
+ right = props[:right]
51
+ rotate = props[:rotate]
52
+ rtl = props[:rtl]
53
+ run_spacing = props[:run_spacing]
54
+ runs_count = props[:runs_count]
55
+ scale = props[:scale]
56
+ scroll = props[:scroll]
57
+ scroll_interval = props[:scroll_interval]
58
+ semantic_child_count = props[:semantic_child_count]
59
+ size_change_interval = props[:size_change_interval]
60
+ spacing = props[:spacing]
61
+ tooltip = props[:tooltip]
62
+ top = props[:top]
63
+ visible = props[:visible]
64
+ width = props[:width]
65
+ on_animation_end = props[:on_animation_end]
66
+ on_scroll = props[:on_scroll]
67
+ on_size_change = props[:on_size_change]
12
68
  build_controls_on_demand = true if build_controls_on_demand.nil?
13
69
  child_aspect_ratio = 1.0 if child_aspect_ratio.nil?
14
70
  horizontal = false if horizontal.nil?
@@ -17,18 +73,6 @@ module Ruflet
17
73
  runs_count = 1 if runs_count.nil?
18
74
  spacing = 10 if spacing.nil?
19
75
 
20
- {
21
- child_aspect_ratio: child_aspect_ratio,
22
- max_extent: max_extent,
23
- run_spacing: run_spacing,
24
- runs_count: runs_count,
25
- semantic_child_count: semantic_child_count,
26
- spacing: spacing
27
- }.each do |name, value|
28
- next if value.nil?
29
- raise ArgumentError, "grid_view #{name} must be greater than or equal to 0" if value.negative?
30
- end
31
-
32
76
  props = {}
33
77
  props[:adaptive] = adaptive unless adaptive.nil?
34
78
  props[:align] = align unless align.nil?