events.rs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. //! Convert a serialized event to an event trigger
  2. use crate::{
  3. element::DesktopElement,
  4. file_upload::{DesktopFileDragEvent, DesktopFileUploadForm},
  5. };
  6. use dioxus_html::*;
  7. pub(crate) struct SerializedHtmlEventConverter;
  8. impl HtmlEventConverter for SerializedHtmlEventConverter {
  9. fn convert_animation_data(&self, event: &PlatformEventData) -> AnimationData {
  10. event
  11. .downcast::<SerializedAnimationData>()
  12. .cloned()
  13. .unwrap()
  14. .into()
  15. }
  16. fn convert_clipboard_data(&self, event: &PlatformEventData) -> ClipboardData {
  17. event
  18. .downcast::<SerializedClipboardData>()
  19. .cloned()
  20. .unwrap()
  21. .into()
  22. }
  23. fn convert_composition_data(&self, event: &PlatformEventData) -> CompositionData {
  24. event
  25. .downcast::<SerializedCompositionData>()
  26. .cloned()
  27. .unwrap()
  28. .into()
  29. }
  30. fn convert_drag_data(&self, event: &PlatformEventData) -> DragData {
  31. // Attempt a simple serialized data conversion
  32. if let Some(_data) = event.downcast::<SerializedDragData>() {
  33. return _data.clone().into();
  34. }
  35. // If that failed then it's a file drag form
  36. event
  37. .downcast::<DesktopFileDragEvent>()
  38. .cloned()
  39. .unwrap()
  40. .into()
  41. }
  42. fn convert_focus_data(&self, event: &PlatformEventData) -> FocusData {
  43. event
  44. .downcast::<SerializedFocusData>()
  45. .cloned()
  46. .unwrap()
  47. .into()
  48. }
  49. fn convert_form_data(&self, event: &PlatformEventData) -> FormData {
  50. // Attempt a simple serialized form data conversion
  51. if let Some(_data) = event.downcast::<SerializedFormData>() {
  52. return _data.clone().into();
  53. }
  54. // If that failed then it's a file upload form
  55. event
  56. .downcast::<DesktopFileUploadForm>()
  57. .cloned()
  58. .unwrap()
  59. .into()
  60. }
  61. fn convert_image_data(&self, event: &PlatformEventData) -> ImageData {
  62. event
  63. .downcast::<SerializedImageData>()
  64. .cloned()
  65. .unwrap()
  66. .into()
  67. }
  68. fn convert_keyboard_data(&self, event: &PlatformEventData) -> KeyboardData {
  69. event
  70. .downcast::<SerializedKeyboardData>()
  71. .cloned()
  72. .unwrap()
  73. .into()
  74. }
  75. fn convert_media_data(&self, event: &PlatformEventData) -> MediaData {
  76. event
  77. .downcast::<SerializedMediaData>()
  78. .cloned()
  79. .unwrap()
  80. .into()
  81. }
  82. fn convert_mounted_data(&self, event: &PlatformEventData) -> MountedData {
  83. event.downcast::<DesktopElement>().cloned().unwrap().into()
  84. }
  85. fn convert_mouse_data(&self, event: &PlatformEventData) -> MouseData {
  86. event
  87. .downcast::<SerializedMouseData>()
  88. .cloned()
  89. .unwrap()
  90. .into()
  91. }
  92. fn convert_pointer_data(&self, event: &PlatformEventData) -> PointerData {
  93. event
  94. .downcast::<SerializedPointerData>()
  95. .cloned()
  96. .unwrap()
  97. .into()
  98. }
  99. fn convert_resize_data(&self, event: &PlatformEventData) -> ResizeData {
  100. event
  101. .downcast::<SerializedResizeData>()
  102. .cloned()
  103. .unwrap()
  104. .into()
  105. }
  106. fn convert_scroll_data(&self, event: &PlatformEventData) -> ScrollData {
  107. event
  108. .downcast::<SerializedScrollData>()
  109. .cloned()
  110. .unwrap()
  111. .into()
  112. }
  113. fn convert_selection_data(&self, event: &PlatformEventData) -> SelectionData {
  114. event
  115. .downcast::<SerializedSelectionData>()
  116. .cloned()
  117. .unwrap()
  118. .into()
  119. }
  120. fn convert_toggle_data(&self, event: &PlatformEventData) -> ToggleData {
  121. event
  122. .downcast::<SerializedToggleData>()
  123. .cloned()
  124. .unwrap()
  125. .into()
  126. }
  127. fn convert_touch_data(&self, event: &PlatformEventData) -> TouchData {
  128. event
  129. .downcast::<SerializedTouchData>()
  130. .cloned()
  131. .unwrap()
  132. .into()
  133. }
  134. fn convert_transition_data(&self, event: &PlatformEventData) -> TransitionData {
  135. event
  136. .downcast::<SerializedTransitionData>()
  137. .cloned()
  138. .unwrap()
  139. .into()
  140. }
  141. fn convert_visible_data(&self, event: &PlatformEventData) -> VisibleData {
  142. event
  143. .downcast::<SerializedVisibleData>()
  144. .cloned()
  145. .unwrap()
  146. .into()
  147. }
  148. fn convert_wheel_data(&self, event: &PlatformEventData) -> WheelData {
  149. event
  150. .downcast::<SerializedWheelData>()
  151. .cloned()
  152. .unwrap()
  153. .into()
  154. }
  155. }