[package]
name = "dioxus-web"
version = { workspace = true }
authors = ["Jonathan Kelley"]
edition = "2021"
description = "Web-sys renderer for Dioxus: Build fullstack web, desktop, and mobile apps with a single codebase."
license = "MIT OR Apache-2.0"
repository = "https://github.com/DioxusLabs/dioxus/"
homepage = "https://dioxuslabs.com/learn/0.6/getting_started"
keywords = ["dom", "ui", "gui", "web", "wasm"]

[dependencies]
dioxus-core = { workspace = true }
dioxus-core-types = { workspace = true }
dioxus-cli-config = { workspace = true, features = ["web"] }
dioxus-html = { workspace = true }
dioxus-history = { workspace = true }
dioxus-document = { workspace = true }
dioxus-devtools = { workspace = true }
dioxus-signals = { workspace = true }
dioxus-interpreter-js = { workspace = true, features = [
    "minimal_bindings",
    "webonly",
] }
dioxus-fullstack-protocol = { workspace = true, features = ["web"], optional = true }
generational-box = { workspace = true }

js-sys = { workspace = true }
wasm-bindgen = { workspace = true }
wasm-bindgen-futures = { workspace = true }
tracing = { workspace = true }
rustc-hash = { workspace = true }
futures-util = { workspace = true, features = ["std", "async-await", "async-await-macro"] }
futures-channel = { workspace = true }
serde_json = { version = "1.0", optional = true }
serde = { version = "1.0", optional = true }
serde-wasm-bindgen = { version = "0.6.5", optional = true }

ciborium = { workspace = true, optional = true }
async-trait = { workspace = true, optional = true }
gloo-timers = { workspace = true, optional = true, features = ["futures"] }

[dependencies.web-sys]
version = "0.3.77"
features = [
    "AnimationEvent",
    "ClipboardEvent",
    "CloseEvent",
    "Comment",
    "CompositionEvent",
    "console",
    "CustomEvent",
    "DataTransfer",
    "Document",
    "DomRectReadOnly",
    "DragEvent",
    "FocusEvent",
    "History",
    "HtmlElement",
    "HtmlFormElement",
    "HtmlInputElement",
    "HtmlSelectElement",
    "HtmlTextAreaElement",
    "IntersectionObserverEntry",
    "InputEvent",
    "KeyboardEvent",
    "MouseEvent",
    "NodeList",
    "PointerEvent",
    "ResizeObserverEntry",
    "ResizeObserverSize",
    "ScrollRestoration",
    "ScrollToOptions",
    "Text",
    "Touch",
    "TouchEvent",
    "TouchList",
    "TransitionEvent",
    "WheelEvent",
    "Window",
]

[build-dependencies]
lazy-js-bundle = { workspace = true }

[features]
default = ["mounted", "file_engine", "devtools", "document"]
hydrate = ["web-sys/Comment", "dep:serde", "dep:dioxus-fullstack-protocol"]
mounted = [
    "web-sys/Element",
    "dioxus-html/mounted",
    "web-sys/Element",
    "web-sys/DomRect",
    "web-sys/ScrollIntoViewOptions",
    "web-sys/ScrollLogicalPosition",
    "web-sys/ScrollBehavior",
    "web-sys/HtmlElement",
]
file_engine = [
    "dioxus-html/file_engine",
    "dep:async-trait",
    "web-sys/File",
    "web-sys/FileList",
    "web-sys/FileReader"
]
devtools = [
  "web-sys/MessageEvent",
  "web-sys/WebSocket",
  "web-sys/Location",
  "dep:serde_json",
  "dep:serde",
  "dioxus-core/serialize",
  "dep:gloo-timers"
]
document = ["dep:serde-wasm-bindgen", "dep:serde_json", "dep:serde"]

[dev-dependencies]
dioxus = { workspace = true, default-features = true }
wasm-bindgen-test = "0.3.50"
dioxus-ssr = { workspace = true, default-features = false }
gloo-dialogs = { workspace = true }
dioxus-web = { path = ".", features = ["hydrate"] }
tracing-wasm = { workspace = true }

[package.metadata.docs.rs]
cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]
