file.rs 897 B

123456789101112131415161718192021222324252627282930
  1. use dioxus_html::HasFileData;
  2. use super::Synthetic;
  3. impl HasFileData for Synthetic<web_sys::Event> {
  4. fn files(&self) -> Option<std::sync::Arc<dyn dioxus_html::FileEngine>> {
  5. #[cfg(feature = "file_engine")]
  6. {
  7. use wasm_bindgen::JsCast;
  8. let files = self
  9. .event
  10. .dyn_ref()
  11. .and_then(|input: &web_sys::HtmlInputElement| {
  12. input.files().and_then(|files| {
  13. #[allow(clippy::arc_with_non_send_sync)]
  14. crate::file_engine::WebFileEngine::new(files).map(|f| {
  15. std::sync::Arc::new(f) as std::sync::Arc<dyn dioxus_html::FileEngine>
  16. })
  17. })
  18. });
  19. files
  20. }
  21. #[cfg(not(feature = "file_engine"))]
  22. {
  23. None
  24. }
  25. }
  26. }