events.rs 4.2 KB

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