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,19 +8,54 @@ module Ruflet
8
8
  TYPE = "placeholder".freeze
9
9
  WIRE = "Placeholder".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, color: nil, content: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, fallback_height: nil, fallback_width: nil, height: nil, key: nil, left: nil, margin: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, scale: nil, size_change_interval: nil, stroke_width: nil, tooltip: nil, top: nil, visible: nil, width: nil, on_animation_end: nil, on_size_change: nil)
11
+ KEYWORDS = [:align, :animate_align, :animate_margin, :animate_offset, :animate_opacity, :animate_position, :animate_rotation, :animate_scale, :animate_size, :aspect_ratio, :badge, :bottom, :col, :color, :content, :data, :disabled, :expand, :expand_loose, :fallback_height, :fallback_width, :height, :key, :left, :margin, :offset, :opacity, :right, :rotate, :rtl, :scale, :size_change_interval, :stroke_width, :tooltip, :top, :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
+ color = props[:color]
30
+ content = props[:content]
31
+ data = props[:data]
32
+ disabled = props[:disabled]
33
+ expand = props[:expand]
34
+ expand_loose = props[:expand_loose]
35
+ fallback_height = props[:fallback_height]
36
+ fallback_width = props[:fallback_width]
37
+ height = props[:height]
38
+ key = props[:key]
39
+ left = props[:left]
40
+ margin = props[:margin]
41
+ offset = props[:offset]
42
+ opacity = props[:opacity]
43
+ right = props[:right]
44
+ rotate = props[:rotate]
45
+ rtl = props[:rtl]
46
+ scale = props[:scale]
47
+ size_change_interval = props[:size_change_interval]
48
+ stroke_width = props[:stroke_width]
49
+ tooltip = props[:tooltip]
50
+ top = props[:top]
51
+ visible = props[:visible]
52
+ width = props[:width]
53
+ on_animation_end = props[:on_animation_end]
54
+ on_size_change = props[:on_size_change]
12
55
  fallback_height = 400.0 if fallback_height.nil?
13
56
  fallback_width = 400.0 if fallback_width.nil?
14
57
  stroke_width = 2.0 if stroke_width.nil?
15
58
 
16
- {
17
- fallback_height: fallback_height,
18
- fallback_width: fallback_width,
19
- stroke_width: stroke_width
20
- }.each do |name, value|
21
- raise ArgumentError, "placeholder #{name} must be greater than or equal to 0" if value.negative?
22
- end
23
-
24
59
  props = {}
25
60
  props[:align] = align unless align.nil?
26
61
  props[:animate_align] = animate_align unless animate_align.nil?
@@ -7,6 +7,7 @@ module Ruflet
7
7
  class PointsControl < Ruflet::Control
8
8
  TYPE = "points".freeze
9
9
  WIRE = "Points".freeze
10
+ KEYWORDS = [:data, :key, :paint, :point_mode, :points].freeze
10
11
 
11
12
  def initialize(id: nil, data: nil, key: nil, paint: nil, point_mode: nil, points: nil)
12
13
  props = {}
@@ -7,6 +7,7 @@ module Ruflet
7
7
  class RectControl < Ruflet::Control
8
8
  TYPE = "rect".freeze
9
9
  WIRE = "Rect".freeze
10
+ KEYWORDS = [:border_radius, :data, :height, :key, :paint, :width, :x, :y].freeze
10
11
 
11
12
  def initialize(id: nil, border_radius: nil, data: nil, height: nil, key: nil, paint: nil, width: nil, x: nil, y: nil)
12
13
  props = {}
@@ -8,10 +8,49 @@ module Ruflet
8
8
  TYPE = "reorderabledraghandle".freeze
9
9
  WIRE = "ReorderableDragHandle".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, 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, mouse_cursor: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, scale: nil, size_change_interval: nil, tooltip: nil, top: 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, "reorderable_drag_handle 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, :badge, :bottom, :col, :content, :data, :disabled, :expand, :expand_loose, :height, :key, :left, :margin, :mouse_cursor, :offset, :opacity, :right, :rotate, :rtl, :scale, :size_change_interval, :tooltip, :top, :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
+ 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
+ badge = props[:badge]
28
+ bottom = props[:bottom]
29
+ col = props[:col]
30
+ content = props[:content]
31
+ data = props[:data]
32
+ disabled = props[:disabled]
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
+ mouse_cursor = props[:mouse_cursor]
40
+ offset = props[:offset]
41
+ opacity = props[:opacity]
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
+ tooltip = props[:tooltip]
48
+ top = props[:top]
49
+ visible = props[:visible]
50
+ width = props[:width]
51
+ on_animation_end = props[:on_animation_end]
52
+ on_size_change = props[:on_size_change]
53
+ raise ArgumentError, "reorderable_drag_handle requires content" if content.nil?
15
54
 
16
55
  props = {}
17
56
  props[:adaptive] = adaptive unless adaptive.nil?
@@ -8,7 +8,53 @@ module Ruflet
8
8
  TYPE = "responsiverow".freeze
9
9
  WIRE = "ResponsiveRow".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, badge: nil, bottom: nil, breakpoints: nil, col: nil, columns: nil, controls: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, height: nil, key: nil, left: nil, margin: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, run_spacing: nil, scale: nil, size_change_interval: nil, spacing: nil, tooltip: nil, top: nil, vertical_alignment: nil, visible: nil, width: nil, on_animation_end: nil, on_size_change: nil)
11
+ KEYWORDS = [:adaptive, :align, :alignment, :animate_align, :animate_margin, :animate_offset, :animate_opacity, :animate_position, :animate_rotation, :animate_scale, :animate_size, :aspect_ratio, :badge, :bottom, :breakpoints, :col, :columns, :controls, :data, :disabled, :expand, :expand_loose, :height, :key, :left, :margin, :offset, :opacity, :right, :rotate, :rtl, :run_spacing, :scale, :size_change_interval, :spacing, :tooltip, :top, :vertical_alignment, :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
+ adaptive = props[:adaptive]
17
+ align = props[:align]
18
+ alignment = props[:alignment]
19
+ animate_align = props[:animate_align]
20
+ animate_margin = props[:animate_margin]
21
+ animate_offset = props[:animate_offset]
22
+ animate_opacity = props[:animate_opacity]
23
+ animate_position = props[:animate_position]
24
+ animate_rotation = props[:animate_rotation]
25
+ animate_scale = props[:animate_scale]
26
+ animate_size = props[:animate_size]
27
+ aspect_ratio = props[:aspect_ratio]
28
+ badge = props[:badge]
29
+ bottom = props[:bottom]
30
+ breakpoints = props[:breakpoints]
31
+ col = props[:col]
32
+ columns = props[:columns]
33
+ controls = props[:controls]
34
+ data = props[:data]
35
+ disabled = props[:disabled]
36
+ expand = props[:expand]
37
+ expand_loose = props[:expand_loose]
38
+ height = props[:height]
39
+ key = props[:key]
40
+ left = props[:left]
41
+ margin = props[:margin]
42
+ offset = props[:offset]
43
+ opacity = props[:opacity]
44
+ right = props[:right]
45
+ rotate = props[:rotate]
46
+ rtl = props[:rtl]
47
+ run_spacing = props[:run_spacing]
48
+ scale = props[:scale]
49
+ size_change_interval = props[:size_change_interval]
50
+ spacing = props[:spacing]
51
+ tooltip = props[:tooltip]
52
+ top = props[:top]
53
+ vertical_alignment = props[:vertical_alignment]
54
+ visible = props[:visible]
55
+ width = props[:width]
56
+ on_animation_end = props[:on_animation_end]
57
+ on_size_change = props[:on_size_change]
12
58
  alignment = "start" if alignment.nil?
13
59
  breakpoints = { "xs" => 0, "sm" => 576, "md" => 768, "lg" => 992, "xl" => 1200, "xxl" => 1400 } if breakpoints.nil?
14
60
  columns = 12 if columns.nil?
@@ -16,11 +62,6 @@ module Ruflet
16
62
  spacing = 10 if spacing.nil?
17
63
  vertical_alignment = "start" if vertical_alignment.nil?
18
64
 
19
- validate_non_negative(:columns, columns)
20
- validate_non_negative(:run_spacing, run_spacing)
21
- validate_non_negative(:spacing, spacing)
22
- validate_non_negative(:breakpoints, breakpoints)
23
-
24
65
  props = {}
25
66
  props[:adaptive] = adaptive unless adaptive.nil?
26
67
  props[:align] = align unless align.nil?
@@ -67,15 +108,6 @@ module Ruflet
67
108
  super(type: TYPE, id: id, **props)
68
109
  end
69
110
 
70
- private
71
-
72
- def validate_non_negative(name, value)
73
- values = value.is_a?(Hash) ? value.values : [value]
74
- values.each do |entry|
75
- next if entry.nil?
76
- raise ArgumentError, "responsive_row #{name} must be greater than or equal to 0" if entry.negative?
77
- end
78
- end
79
111
  end
80
112
  end
81
113
  end
@@ -0,0 +1,97 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ruflet
4
+ module UI
5
+ module Controls
6
+ module RufletComponents
7
+ class RotatedBoxControl < Ruflet::Control
8
+ TYPE = "rotatedbox".freeze
9
+ WIRE = "RotatedBox".freeze
10
+
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, :quarter_turns, :right, :rotate, :rtl, :scale, :size_change_interval, :tooltip, :top, :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
+ expand = props[:expand]
33
+ expand_loose = props[:expand_loose]
34
+ height = props[:height]
35
+ key = props[:key]
36
+ left = props[:left]
37
+ margin = props[:margin]
38
+ offset = props[:offset]
39
+ opacity = props[:opacity]
40
+ quarter_turns = props[:quarter_turns]
41
+ right = props[:right]
42
+ rotate = props[:rotate]
43
+ rtl = props[:rtl]
44
+ scale = props[:scale]
45
+ size_change_interval = props[:size_change_interval]
46
+ tooltip = props[:tooltip]
47
+ top = props[:top]
48
+ visible = props[:visible]
49
+ width = props[:width]
50
+ on_animation_end = props[:on_animation_end]
51
+ on_size_change = props[:on_size_change]
52
+ quarter_turns = 0 if quarter_turns.nil?
53
+
54
+ props = {}
55
+ props[:align] = align unless align.nil?
56
+ props[:animate_align] = animate_align unless animate_align.nil?
57
+ props[:animate_margin] = animate_margin unless animate_margin.nil?
58
+ props[:animate_offset] = animate_offset unless animate_offset.nil?
59
+ props[:animate_opacity] = animate_opacity unless animate_opacity.nil?
60
+ props[:animate_position] = animate_position unless animate_position.nil?
61
+ props[:animate_rotation] = animate_rotation unless animate_rotation.nil?
62
+ props[:animate_scale] = animate_scale unless animate_scale.nil?
63
+ props[:animate_size] = animate_size unless animate_size.nil?
64
+ props[:aspect_ratio] = aspect_ratio unless aspect_ratio.nil?
65
+ props[:badge] = badge unless badge.nil?
66
+ props[:bottom] = bottom unless bottom.nil?
67
+ props[:col] = col unless col.nil?
68
+ props[:content] = content unless content.nil?
69
+ props[:data] = data unless data.nil?
70
+ props[:disabled] = disabled unless disabled.nil?
71
+ props[:expand] = expand unless expand.nil?
72
+ props[:expand_loose] = expand_loose unless expand_loose.nil?
73
+ props[:height] = height unless height.nil?
74
+ props[:key] = key unless key.nil?
75
+ props[:left] = left unless left.nil?
76
+ props[:margin] = margin unless margin.nil?
77
+ props[:offset] = offset unless offset.nil?
78
+ props[:opacity] = opacity unless opacity.nil?
79
+ props[:quarter_turns] = quarter_turns unless quarter_turns.nil?
80
+ props[:right] = right unless right.nil?
81
+ props[:rotate] = rotate unless rotate.nil?
82
+ props[:rtl] = rtl unless rtl.nil?
83
+ props[:scale] = scale unless scale.nil?
84
+ props[:size_change_interval] = size_change_interval unless size_change_interval.nil?
85
+ props[:tooltip] = tooltip unless tooltip.nil?
86
+ props[:top] = top unless top.nil?
87
+ props[:visible] = visible unless visible.nil?
88
+ props[:width] = width unless width.nil?
89
+ props[:on_animation_end] = on_animation_end unless on_animation_end.nil?
90
+ props[:on_size_change] = on_size_change unless on_size_change.nil?
91
+ super(type: TYPE, id: id, **props)
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
@@ -8,57 +8,15 @@ module Ruflet
8
8
  TYPE = "row".freeze
9
9
  WIRE = "Row".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, intrinsic_height: 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, vertical_alignment: 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[:intrinsic_height] = intrinsic_height unless intrinsic_height.nil?
36
- props[:key] = key unless key.nil?
37
- props[:left] = left unless left.nil?
38
- props[:margin] = margin unless margin.nil?
39
- props[:offset] = offset unless offset.nil?
40
- props[:opacity] = opacity unless opacity.nil?
41
- props[:right] = right unless right.nil?
42
- props[:rotate] = rotate unless rotate.nil?
43
- props[:rtl] = rtl unless rtl.nil?
44
- props[:run_alignment] = run_alignment unless run_alignment.nil?
45
- props[:run_spacing] = run_spacing unless run_spacing.nil?
46
- props[:scale] = scale unless scale.nil?
47
- props[:scroll] = scroll unless scroll.nil?
48
- props[:scroll_interval] = scroll_interval unless scroll_interval.nil?
49
- props[:size_change_interval] = size_change_interval unless size_change_interval.nil?
50
- props[:spacing] = spacing unless spacing.nil?
51
- props[:tight] = tight unless tight.nil?
52
- props[:tooltip] = tooltip unless tooltip.nil?
53
- props[:top] = top unless top.nil?
54
- props[:vertical_alignment] = vertical_alignment unless vertical_alignment.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, :intrinsic_height, :key, :left, :margin, :offset, :opacity, :right, :rotate, :rtl, :run_alignment, :run_spacing, :scale, :scroll, :scroll_interval, :size_change_interval, :spacing, :tight, :tooltip, :top, :vertical_alignment, :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
@@ -38,7 +38,9 @@ require_relative "rect_control"
38
38
  require_relative "reorderabledraghandle_control"
39
39
  require_relative "responsiverow_control"
40
40
  require_relative "row_control"
41
+ require_relative "rotatedbox_control"
41
42
  require_relative "safearea_control"
43
+ require_relative "screenshot_control"
42
44
  require_relative "semantics_control"
43
45
  require_relative "serviceregistry_control"
44
46
  require_relative "shadermask_control"
@@ -113,8 +115,11 @@ module Ruflet
113
115
  "responsive_row" => RufletComponents::ResponsiveRowControl,
114
116
  "responsiverow" => RufletComponents::ResponsiveRowControl,
115
117
  "row" => RufletComponents::RowControl,
118
+ "rotated_box" => RufletComponents::RotatedBoxControl,
119
+ "rotatedbox" => RufletComponents::RotatedBoxControl,
116
120
  "safe_area" => RufletComponents::SafeAreaControl,
117
121
  "safearea" => RufletComponents::SafeAreaControl,
122
+ "screenshot" => RufletComponents::ScreenshotControl,
118
123
  "semantics" => RufletComponents::SemanticsControl,
119
124
  "service_registry" => RufletComponents::ServiceRegistryControl,
120
125
  "serviceregistry" => RufletComponents::ServiceRegistryControl,
@@ -8,10 +8,54 @@ module Ruflet
8
8
  TYPE = "safearea".freeze
9
9
  WIRE = "SafeArea".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, avoid_intrusions_bottom: nil, avoid_intrusions_left: nil, avoid_intrusions_right: nil, avoid_intrusions_top: nil, badge: nil, bottom: nil, col: nil, content: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, height: nil, key: nil, left: nil, maintain_bottom_view_padding: nil, margin: nil, minimum_padding: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, scale: nil, size_change_interval: nil, tooltip: nil, top: 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, "safe_area 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, :avoid_intrusions_bottom, :avoid_intrusions_left, :avoid_intrusions_right, :avoid_intrusions_top, :badge, :bottom, :col, :content, :data, :disabled, :expand, :expand_loose, :height, :key, :left, :maintain_bottom_view_padding, :margin, :minimum_padding, :offset, :opacity, :right, :rotate, :rtl, :scale, :size_change_interval, :tooltip, :top, :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
+ 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
+ avoid_intrusions_bottom = props[:avoid_intrusions_bottom]
28
+ avoid_intrusions_left = props[:avoid_intrusions_left]
29
+ avoid_intrusions_right = props[:avoid_intrusions_right]
30
+ avoid_intrusions_top = props[:avoid_intrusions_top]
31
+ badge = props[:badge]
32
+ bottom = props[:bottom]
33
+ col = props[:col]
34
+ content = props[:content]
35
+ data = props[:data]
36
+ disabled = props[:disabled]
37
+ expand = props[:expand]
38
+ expand_loose = props[:expand_loose]
39
+ height = props[:height]
40
+ key = props[:key]
41
+ left = props[:left]
42
+ maintain_bottom_view_padding = props[:maintain_bottom_view_padding]
43
+ margin = props[:margin]
44
+ minimum_padding = props[:minimum_padding]
45
+ offset = props[:offset]
46
+ opacity = props[:opacity]
47
+ right = props[:right]
48
+ rotate = props[:rotate]
49
+ rtl = props[:rtl]
50
+ scale = props[:scale]
51
+ size_change_interval = props[:size_change_interval]
52
+ tooltip = props[:tooltip]
53
+ top = props[:top]
54
+ visible = props[:visible]
55
+ width = props[:width]
56
+ on_animation_end = props[:on_animation_end]
57
+ on_size_change = props[:on_size_change]
58
+ raise ArgumentError, "safe_area requires content" if content.nil?
15
59
 
16
60
  avoid_intrusions_bottom = true if avoid_intrusions_bottom.nil?
17
61
  avoid_intrusions_left = true if avoid_intrusions_left.nil?
@@ -2,13 +2,16 @@
2
2
 
3
3
  module Ruflet
4
4
  module UI
5
- module Services
6
- module RufletServicesComponents
5
+ module Controls
6
+ module RufletComponents
7
7
  class ScreenshotControl < Ruflet::Control
8
8
  TYPE = "screenshot".freeze
9
9
  WIRE = "Screenshot".freeze
10
+ KEYWORDS = [:badge, :col, :content, :data, :disabled, :expand, :expand_loose, :key, :opacity, :rtl, :tooltip, :visible].freeze
10
11
 
11
12
  def initialize(id: nil, badge: nil, col: nil, content: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, key: nil, opacity: nil, rtl: nil, tooltip: nil, visible: nil)
13
+ raise ArgumentError, "missing keyword: :content" if content.nil?
14
+
12
15
  props = {}
13
16
  props[:badge] = badge unless badge.nil?
14
17
  props[:col] = col unless col.nil?
@@ -24,6 +27,19 @@ module Ruflet
24
27
  props[:visible] = visible unless visible.nil?
25
28
  super(type: TYPE, id: id, **props)
26
29
  end
30
+
31
+ def capture(pixel_ratio: nil, delay: nil, timeout: 10, on_result: nil)
32
+ args = {}
33
+ args["pixel_ratio"] = pixel_ratio unless pixel_ratio.nil?
34
+ args["delay"] = delay unless delay.nil?
35
+ runtime_page&.invoke(
36
+ self,
37
+ "capture",
38
+ args: args.empty? ? nil : args,
39
+ timeout: timeout,
40
+ on_result: on_result
41
+ )
42
+ end
27
43
  end
28
44
  end
29
45
  end
@@ -8,7 +8,71 @@ module Ruflet
8
8
  TYPE = "semantics".freeze
9
9
  WIRE = "Semantics".freeze
10
10
 
11
- def initialize(id: nil, badge: nil, button: nil, checked: nil, col: nil, container: nil, content: nil, current_value_length: nil, data: nil, decreased_value: nil, disabled: nil, exclude_semantics: nil, expand: nil, expand_loose: nil, expanded: nil, focus: nil, focusable: nil, header: nil, heading_level: nil, hidden: nil, hint_text: nil, image: nil, increased_value: nil, key: nil, label: nil, link: nil, live_region: nil, max_value_length: nil, mixed: nil, multiline: nil, obscured: nil, opacity: nil, read_only: nil, rtl: nil, selected: nil, slider: nil, textfield: nil, toggled: nil, tooltip: nil, value: nil, visible: nil, on_copy: nil, on_cut: nil, on_decrease: nil, on_did_gain_accessibility_focus: nil, on_did_lose_accessibility_focus: nil, on_dismiss: nil, on_double_tap: nil, on_increase: nil, on_long_press: nil, on_long_press_hint_text: nil, on_move_cursor_backward_by_character: nil, on_move_cursor_forward_by_character: nil, on_paste: nil, on_scroll_down: nil, on_scroll_left: nil, on_scroll_right: nil, on_scroll_up: nil, on_set_text: nil, on_tap: nil, on_tap_hint_text: nil)
11
+ KEYWORDS = [:badge, :button, :checked, :col, :container, :content, :current_value_length, :data, :decreased_value, :disabled, :exclude_semantics, :expand, :expand_loose, :expanded, :focus, :focusable, :header, :heading_level, :hidden, :hint_text, :image, :increased_value, :key, :label, :link, :live_region, :max_value_length, :mixed, :multiline, :obscured, :opacity, :read_only, :rtl, :selected, :slider, :textfield, :toggled, :tooltip, :value, :visible, :on_copy, :on_cut, :on_decrease, :on_did_gain_accessibility_focus, :on_did_lose_accessibility_focus, :on_dismiss, :on_double_tap, :on_increase, :on_long_press, :on_long_press_hint_text, :on_move_cursor_backward_by_character, :on_move_cursor_forward_by_character, :on_paste, :on_scroll_down, :on_scroll_left, :on_scroll_right, :on_scroll_up, :on_set_text, :on_tap, :on_tap_hint_text].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
+ badge = props[:badge]
17
+ button = props[:button]
18
+ checked = props[:checked]
19
+ col = props[:col]
20
+ container = props[:container]
21
+ content = props[:content]
22
+ current_value_length = props[:current_value_length]
23
+ data = props[:data]
24
+ decreased_value = props[:decreased_value]
25
+ disabled = props[:disabled]
26
+ exclude_semantics = props[:exclude_semantics]
27
+ expand = props[:expand]
28
+ expand_loose = props[:expand_loose]
29
+ expanded = props[:expanded]
30
+ focus = props[:focus]
31
+ focusable = props[:focusable]
32
+ header = props[:header]
33
+ heading_level = props[:heading_level]
34
+ hidden = props[:hidden]
35
+ hint_text = props[:hint_text]
36
+ image = props[:image]
37
+ increased_value = props[:increased_value]
38
+ key = props[:key]
39
+ label = props[:label]
40
+ link = props[:link]
41
+ live_region = props[:live_region]
42
+ max_value_length = props[:max_value_length]
43
+ mixed = props[:mixed]
44
+ multiline = props[:multiline]
45
+ obscured = props[:obscured]
46
+ opacity = props[:opacity]
47
+ read_only = props[:read_only]
48
+ rtl = props[:rtl]
49
+ selected = props[:selected]
50
+ slider = props[:slider]
51
+ textfield = props[:textfield]
52
+ toggled = props[:toggled]
53
+ tooltip = props[:tooltip]
54
+ value = props[:value]
55
+ visible = props[:visible]
56
+ on_copy = props[:on_copy]
57
+ on_cut = props[:on_cut]
58
+ on_decrease = props[:on_decrease]
59
+ on_did_gain_accessibility_focus = props[:on_did_gain_accessibility_focus]
60
+ on_did_lose_accessibility_focus = props[:on_did_lose_accessibility_focus]
61
+ on_dismiss = props[:on_dismiss]
62
+ on_double_tap = props[:on_double_tap]
63
+ on_increase = props[:on_increase]
64
+ on_long_press = props[:on_long_press]
65
+ on_long_press_hint_text = props[:on_long_press_hint_text]
66
+ on_move_cursor_backward_by_character = props[:on_move_cursor_backward_by_character]
67
+ on_move_cursor_forward_by_character = props[:on_move_cursor_forward_by_character]
68
+ on_paste = props[:on_paste]
69
+ on_scroll_down = props[:on_scroll_down]
70
+ on_scroll_left = props[:on_scroll_left]
71
+ on_scroll_right = props[:on_scroll_right]
72
+ on_scroll_up = props[:on_scroll_up]
73
+ on_set_text = props[:on_set_text]
74
+ on_tap = props[:on_tap]
75
+ on_tap_hint_text = props[:on_tap_hint_text]
12
76
  exclude_semantics = false if exclude_semantics.nil?
13
77
 
14
78
  props = {}