Upgrade to Blitz 0.1.0-alpha.2 (#4227)
* Update to use latest Blitz net traits * Pass url to flush_style_attribute * Add system-fonts feature to dioxus-native * Native: cleanup log output * Make dioxus-native work with Blitz simplified Document and Renderer traits * Native: upgrade to event refactor * Upgrade to blitz 0.1.0-alpha.2 * Add typo exception Signed-off-by: Nico Burns <nico@nicoburns.com> * Ensure root_id is set to <main> element --------- Signed-off-by: Nico Burns <nico@nicoburns.com>
This commit is contained in:
1 parent
e1bd06bda5
commit
51d7affc54
10 files changed
+654
-1222
No files matched your search
@@ -0,0 +1,220 @@
|
||||
use blitz_traits::{BlitzKeyEvent, BlitzMouseButtonEvent, MouseEventButton};
|
||||
use dioxus_html::{
|
||||
geometry::{ClientPoint, ElementPoint, PagePoint, ScreenPoint},
|
||||
input_data::{MouseButton, MouseButtonSet},
|
||||
point_interaction::{
|
||||
InteractionElementOffset, InteractionLocation, ModifiersInteraction, PointerInteraction,
|
||||
},
|
||||
AnimationData, ClipboardData, CompositionData, DragData, FocusData, FormData, FormValue,
|
||||
HasFileData, HasFormData, HasMouseData, HtmlEventConverter, ImageData, KeyboardData, MediaData,
|
||||
MountedData, MouseData, PlatformEventData, PointerData, ResizeData, ScrollData, SelectionData,
|
||||
ToggleData, TouchData, TransitionData, VisibleData, WheelData,
|
||||
};
|
||||
use dioxus_html::{HasFocusData, HasKeyboardData};
|
||||
use keyboard_types::{Code, Key, Location, Modifiers};
|
||||
use std::any::Any;
|
||||
use std::collections::HashMap;
|
||||
|
||||
pub struct NativeConverter {}
|
||||
|
||||
impl HtmlEventConverter for NativeConverter {
|
||||
fn convert_form_data(&self, event: &PlatformEventData) -> FormData {
|
||||
event.downcast::<NativeFormData>().unwrap().clone().into()
|
||||
}
|
||||
|
||||
fn convert_mouse_data(&self, event: &PlatformEventData) -> MouseData {
|
||||
event.downcast::<NativeClickData>().unwrap().clone().into()
|
||||
}
|
||||
|
||||
fn convert_keyboard_data(&self, event: &PlatformEventData) -> KeyboardData {
|
||||
event
|
||||
.downcast::<BlitzKeyboardData>()
|
||||
.unwrap()
|
||||
.clone()
|
||||
.into()
|
||||
}
|
||||
|
||||
fn convert_focus_data(&self, _event: &PlatformEventData) -> FocusData {
|
||||
NativeFocusData {}.into()
|
||||
}
|
||||
|
||||
fn convert_animation_data(&self, _event: &PlatformEventData) -> AnimationData {
|
||||
todo!("todo: convert_animation_data in dioxus-native. requires support in blitz")
|
||||
}
|
||||
|
||||
fn convert_clipboard_data(&self, _event: &PlatformEventData) -> ClipboardData {
|
||||
todo!("todo: convert_clipboard_data in dioxus-native. requires support in blitz")
|
||||
}
|
||||
|
||||
fn convert_composition_data(&self, _event: &PlatformEventData) -> CompositionData {
|
||||
todo!("todo: convert_composition_data in dioxus-native. requires support in blitz")
|
||||
}
|
||||
|
||||
fn convert_drag_data(&self, _event: &PlatformEventData) -> DragData {
|
||||
todo!("todo: convert_drag_data in dioxus-native. requires support in blitz")
|
||||
}
|
||||
|
||||
fn convert_image_data(&self, _event: &PlatformEventData) -> ImageData {
|
||||
todo!("todo: convert_image_data in dioxus-native. requires support in blitz")
|
||||
}
|
||||
|
||||
fn convert_media_data(&self, _event: &PlatformEventData) -> MediaData {
|
||||
todo!("todo: convert_media_data in dioxus-native. requires support in blitz")
|
||||
}
|
||||
|
||||
fn convert_mounted_data(&self, _event: &PlatformEventData) -> MountedData {
|
||||
todo!("todo: convert_mounted_data in dioxus-native. requires support in blitz")
|
||||
}
|
||||
|
||||
fn convert_pointer_data(&self, _event: &PlatformEventData) -> PointerData {
|
||||
todo!("todo: convert_pointer_data in dioxus-native. requires support in blitz")
|
||||
}
|
||||
|
||||
fn convert_scroll_data(&self, _event: &PlatformEventData) -> ScrollData {
|
||||
todo!("todo: convert_scroll_data in dioxus-native. requires support in blitz")
|
||||
}
|
||||
|
||||
fn convert_selection_data(&self, _event: &PlatformEventData) -> SelectionData {
|
||||
todo!("todo: convert_selection_data in dioxus-native. requires support in blitz")
|
||||
}
|
||||
|
||||
fn convert_toggle_data(&self, _event: &PlatformEventData) -> ToggleData {
|
||||
todo!("todo: convert_toggle_data in dioxus-native. requires support in blitz")
|
||||
}
|
||||
|
||||
fn convert_touch_data(&self, _event: &PlatformEventData) -> TouchData {
|
||||
todo!("todo: convert_touch_data in dioxus-native. requires support in blitz")
|
||||
}
|
||||
|
||||
fn convert_transition_data(&self, _event: &PlatformEventData) -> TransitionData {
|
||||
todo!("todo: convert_transition_data in dioxus-native. requires support in blitz")
|
||||
}
|
||||
|
||||
fn convert_wheel_data(&self, _event: &PlatformEventData) -> WheelData {
|
||||
todo!("todo: convert_wheel_data in dioxus-native. requires support in blitz")
|
||||
}
|
||||
|
||||
fn convert_resize_data(&self, _event: &PlatformEventData) -> ResizeData {
|
||||
todo!("todo: convert_resize_data in dioxus-native. requires support in blitz")
|
||||
}
|
||||
|
||||
fn convert_visible_data(&self, _event: &PlatformEventData) -> VisibleData {
|
||||
todo!("todo: convert_visible_data in dioxus-native. requires support in blitz")
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct NativeFormData {
|
||||
pub value: String,
|
||||
pub values: HashMap<String, FormValue>,
|
||||
}
|
||||
|
||||
impl HasFormData for NativeFormData {
|
||||
fn as_any(&self) -> &dyn std::any::Any {
|
||||
self as &dyn std::any::Any
|
||||
}
|
||||
|
||||
fn value(&self) -> String {
|
||||
self.value.clone()
|
||||
}
|
||||
|
||||
fn values(&self) -> HashMap<String, FormValue> {
|
||||
self.values.clone()
|
||||
}
|
||||
}
|
||||
|
||||
impl HasFileData for NativeFormData {}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub(crate) struct BlitzKeyboardData(pub(crate) BlitzKeyEvent);
|
||||
|
||||
impl ModifiersInteraction for BlitzKeyboardData {
|
||||
fn modifiers(&self) -> Modifiers {
|
||||
self.0.modifiers
|
||||
}
|
||||
}
|
||||
|
||||
impl HasKeyboardData for BlitzKeyboardData {
|
||||
fn key(&self) -> Key {
|
||||
self.0.key.clone()
|
||||
}
|
||||
|
||||
fn code(&self) -> Code {
|
||||
self.0.code
|
||||
}
|
||||
|
||||
fn location(&self) -> Location {
|
||||
self.0.location
|
||||
}
|
||||
|
||||
fn is_auto_repeating(&self) -> bool {
|
||||
self.0.is_auto_repeating
|
||||
}
|
||||
|
||||
fn is_composing(&self) -> bool {
|
||||
self.0.is_composing
|
||||
}
|
||||
|
||||
fn as_any(&self) -> &dyn std::any::Any {
|
||||
self as &dyn Any
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct NativeClickData(pub(crate) BlitzMouseButtonEvent);
|
||||
|
||||
impl InteractionLocation for NativeClickData {
|
||||
fn client_coordinates(&self) -> ClientPoint {
|
||||
ClientPoint::new(self.0.x as _, self.0.y as _)
|
||||
}
|
||||
|
||||
// these require blitz to pass them along, or a dom rect
|
||||
fn screen_coordinates(&self) -> ScreenPoint {
|
||||
unimplemented!()
|
||||
}
|
||||
|
||||
fn page_coordinates(&self) -> PagePoint {
|
||||
unimplemented!()
|
||||
}
|
||||
}
|
||||
|
||||
impl InteractionElementOffset for NativeClickData {
|
||||
fn element_coordinates(&self) -> ElementPoint {
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
|
||||
impl ModifiersInteraction for NativeClickData {
|
||||
fn modifiers(&self) -> Modifiers {
|
||||
self.0.mods
|
||||
}
|
||||
}
|
||||
|
||||
impl PointerInteraction for NativeClickData {
|
||||
fn trigger_button(&self) -> Option<MouseButton> {
|
||||
Some(match self.0.button {
|
||||
MouseEventButton::Main => MouseButton::Primary,
|
||||
MouseEventButton::Auxiliary => MouseButton::Auxiliary,
|
||||
MouseEventButton::Secondary => MouseButton::Secondary,
|
||||
MouseEventButton::Fourth => MouseButton::Fourth,
|
||||
MouseEventButton::Fifth => MouseButton::Fifth,
|
||||
})
|
||||
}
|
||||
|
||||
fn held_buttons(&self) -> MouseButtonSet {
|
||||
dioxus_html::input_data::decode_mouse_button_set(self.0.buttons.bits() as u16)
|
||||
}
|
||||
}
|
||||
impl HasMouseData for NativeClickData {
|
||||
fn as_any(&self) -> &dyn std::any::Any {
|
||||
self as &dyn std::any::Any
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct NativeFocusData {}
|
||||
impl HasFocusData for NativeFocusData {
|
||||
fn as_any(&self) -> &dyn std::any::Any {
|
||||
self as &dyn std::any::Any
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user