[workspace] resolver = "2" members = ["renderer", "vello", "vger", "tiny_skia", "reactive", "editor-core", "examples/*"] [workspace.package] license = "MIT" version = "0.2.0" [package] name = "floem" version.workspace = true authors = ["The Floem contributors"] readme = "README.md" repository = "https://github.com/lapce/floem" description = "A native Rust UI library with fine-grained reactivity" edition = "2021" rust-version = "1.80" license.workspace = true [workspace.dependencies] peniko = { version = "0.2.0", features = ["serde"] } serde = "1.0" lapce-xi-rope = { version = "0.3.2", features = ["serde"] } strum = { version = "0.26.2" } strum_macros = { version = "0.26.2" } # Image format features are defined via new features image = { version = "0.25", default-features = false } im = { version = "15.1.0" } resvg = { version = "0.43.0" } raw-window-handle = "0.6.0" wgpu = { version = "22.0.0" } parking_lot = { version = "0.12.1" } swash = { version = "0.1.17" } [dependencies] slotmap = "1.0.7" sha2 = "0.10.6" bitflags = "2.6.0" indexmap = "2" rustc-hash = "1.1.0" smallvec = "1.10.0" educe = "0.5.11" taffy = { version = "0.4", features = ["grid"] } rfd = { version = "0.14.0", default-features = false, features = [ "xdg-portal", ], optional = true } tokio = { version = "1", features = ["sync", "rt"], optional = true } raw-window-handle = { workspace = true } unicode-segmentation = "1.10.0" peniko = { workspace = true } crossbeam-channel = "0.5.6" im-rc = "15.1.0" serde = { workspace = true, optional = true } lapce-xi-rope = { workspace = true, optional = true } strum = { workspace = true, optional = true } strum_macros = { workspace = true, optional = true } # TODO: once https://github.com/rust-lang/rust/issues/65991 is stabilized we don't need this downcast-rs = { version = "1.2.0", optional = true } floem_renderer = { path = "renderer", version = "0.2.0" } floem_vello_renderer ={ path = "vello", version = "0.2.0", optional = true} floem_vger_renderer ={ path = "vger", version = "0.2.0", optional = true} floem_tiny_skia_renderer = { path = "tiny_skia", version = "0.2.0" } floem_reactive = { path = "reactive", version = "0.2.0" } floem-winit = { version = "0.29.5", features = ["rwh_05"] } floem-editor-core = { path = "editor-core", version = "0.2.0", optional = true } copypasta = { version = "0.10.0", default-features = false, features = ["wayland", "x11"] } parking_lot = { workspace = true } image = { workspace = true } im = { workspace = true } wgpu = { workspace = true } futures = { version = "0.3.30", optional = true } crossbeam = "0.8" [target.'cfg(target_arch = "wasm32")'.dependencies] wasm-bindgen-futures = { version = "0.4" } web-time = "1" [target.'cfg(target_os = "windows")'.dependencies] clipboard-win = "3.1.1" [features] default = ["editor", "default-image-formats", "vger"] vello = ["dep:floem_vello_renderer"] vger = ["dep:floem_vger_renderer"] # TODO: this is only winit and the editor serde, there are other dependencies that still depend on # serde serde = ["floem-winit/serde", "dep:serde"] editor = ["floem-editor-core", "dep:lapce-xi-rope", "dep:strum", "dep:strum_macros", "dep:downcast-rs"] # Image support # From: https://github.com/image-rs/image/blob/main/Cargo.toml default-image-formats = ["image-jpeg", "image-ico", "image-png", "image-webp"] image-avif = ["image/avif"] image-bmp = ["image/bmp"] image-dds = ["image/dds"] image-exr = ["image/exr"] image-ff = ["image/ff"] image-gif = ["image/gif"] image-hdr = ["image/hdr"] image-ico = ["image/ico"] image-jpeg = ["image/jpeg"] image-png = ["image/png"] image-pnm = ["image/pnm"] image-qoi = ["image/qoi"] image-tga = ["image/tga"] image-tiff = ["image/tiff"] image-webp = ["image/webp"] tokio = ["dep:tokio"] # rfd (file dialog) async runtime rfd-async-std = ["dep:rfd", "rfd/async-std"] rfd-tokio = ["dep:rfd", "rfd/tokio"] futures = ["dep:futures"]