bevy-react 0.1.0

Drive bevy_ui from a React app over an embedded V8 runtime.
[package]
name = "bevy-react"
version.workspace = true
edition.workspace = true
description = "Drive bevy_ui from a React app over an embedded V8 runtime."
license.workspace = true
authors.workspace = true
repository.workspace = true
homepage.workspace = true
readme = "../../README.md"
keywords = ["bevy", "react", "ui", "gamedev", "gui"]
categories = ["gui", "game-development"]

# docs.rs documents the default (native) target. `rusty_v8` (via deno_core) skips
# its network V8 download when the `DOCS_RS` env var is set, so the native build
# succeeds without network access.
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[lib]
name = "bevy_react"
path = "src/lib.rs"

# The example and its React UI live at the repo root (`examples/`), so declare it
# explicitly rather than relying on the default `examples/` directory lookup.
[[example]]
name = "demos"
path = "../../examples/demos/main.rs"

# The benchmark / stress-test runner (see `examples/stress/`), declared explicitly
# for the same reason as `demos` (it lives at the repo root).
[[example]]
name = "stress"
path = "../../examples/stress/main.rs"

[[example]]
name = "minimal"
path = "../../examples/minimal/main.rs"

[dependencies]
accesskit = { workspace = true }
anyhow = { workspace = true }
bevy = { workspace = true }
bevy-react-macros = { workspace = true }
crossbeam-channel = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
tiny-skia = { workspace = true }
tracing = { workspace = true }
ts-rs = { workspace = true }
uuid = { workspace = true }

# Native host: the embedded V8 isolate (deno_core) on a dedicated thread, driven by
# a tokio current-thread runtime. Neither builds for wasm.
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
deno_core = { workspace = true }
tokio = { workspace = true }

# Web host: React runs in the browser's own engine, reached over wasm-bindgen.
[target.'cfg(target_arch = "wasm32")'.dependencies]
wasm-bindgen = { workspace = true }
wasm-bindgen-futures = { workspace = true }
js-sys = { workspace = true }
serde-wasm-bindgen = { workspace = true }
web-sys = { workspace = true, features = ["console"] }
console_error_panic_hook = { workspace = true }
# Bevy/rand pull `getrandom`; on wasm it needs the browser backend enabled (the
# `wasm_js` feature plus `--cfg getrandom_backend="wasm_js"`, set in .cargo/config.toml).
getrandom = { workspace = true, features = ["wasm_js"] }

[dev-dependencies]
crossbeam-channel = { workspace = true }
tokio = { workspace = true }