[package]
name = "euv"
version = "0.7.3"
readme = "README.md"
edition = "2024"
authors = ["root@ltpp.vip"]
license = "MIT"
description = """A declarative, cross-platform UI framework for Rust with virtual DOM, reactive signals, and HTML macros for WebAssembly."""
keywords = ["cross-platform"]
repository = "https://github.com/euv-dev/euv.git"
categories = ["network-programming", "web-programming"]
exclude = ["target", "Cargo.lock", "sh", ".github", "logs", "img", "**/*.log"]

[lib]
crate-type = ["rlib"]

[workspace]
members = ["cli", "core", "example", "macros"]
resolver = "3"

[workspace.dependencies]
euv = { path = ".", version = "0.7.3" }
euv-cli = { path = "cli", version = "0.7.3" }
euv-core = { path = "core", version = "0.7.3" }
euv-macros = { path = "macros", version = "0.7.3" }
euv-example = { path = "example", version = "0.7.3" }

log = "0.4.32"
toml = "0.9.12"
quote = "1.0.45"
chrono = "0.4.45"
ignore = "0.4.26"
js-sys = "0.3.102"
if-addrs = "0.15.0"
hyperlane = "21.2.9"
serde_json = "1.0.150"
proc-macro2 = "1.0.106"
wasm-bindgen = "0.2.125"
color-output = "10.0.4"
hyperlane-cli = "0.1.19"
lombok-macros = "2.0.29"
compare_version = "2.0.7"
alloc-no-stdlib = "=2.0.4"
wasm-bindgen-test = "0.3.75"
wasm-bindgen-futures = "0.4.75"
console_error_panic_hook = "0.1.7"
clap = { version = "4.6.1", features = ["derive"] }
serde = { version = "1.0.228", features = ["derive"] }
qrcode = { version = "0.14.1", default-features = false }
syn = { version = "2.0.118", features = ["full", "extra-traits"] }
notify = { version = "8.2.0", default-features = false, features = [
    "macos_fsevent",
] }
tokio = { version = "1.52.3", features = [
    "rt-multi-thread",
    "macros",
    "process",
    "fs",
    "sync",
    "time",
] }
web-sys = { version = "0.3.102", features = [
    "AnimationEvent",
    "BeforeUnloadEvent",
    "CanvasRenderingContext2d",
    "Blob",
    "Clipboard",
    "ClipboardEvent",
    "console",
    "CssStyleDeclaration",
    "DataTransfer",
    "Document",
    "DocumentFragment",
    "DomRect",
    "DragEvent",
    "Element",
    "Event",
    "EventSource",
    "EventInit",
    "EventTarget",
    "File",
    "FileList",
    "FileReader",
    "FocusEvent",
    "HashChangeEvent",
    "History",
    "HtmlButtonElement",
    "HtmlCanvasElement",
    "HtmlCollection",
    "HtmlElement",
    "HtmlFormElement",
    "HtmlHeadElement",
    "HtmlImageElement",
    "HtmlInputElement",
    "HtmlMediaElement",
    "HtmlVideoElement",
    "HtmlMetaElement",
    "MediaDevices",
    "MediaQueryList",
    "MediaStream",
    "MediaStreamConstraints",
    "MediaStreamTrack",
    "MessageEvent",
    "HtmlOptionElement",
    "HtmlSelectElement",
    "HtmlStyleElement",
    "HtmlTextAreaElement",
    "InputEvent",
    "IntersectionObserver",
    "IntersectionObserverEntry",
    "IntersectionObserverInit",
    "KeyboardEvent",
    "Location",
    "MouseEvent",
    "Navigator",
    "Node",
    "NodeList",
    "Response",
    "ScrollBehavior",
    "ScrollIntoViewOptions",
    "ScrollLogicalPosition",
    "Storage",
    "SubmitEvent",
    "Text",
    "TouchEvent",
    "TouchList",
    "Touch",
    "TransitionEvent",
    "VisualViewport",
    "WheelEvent",
    "WebSocket",
    "Window",
] }


[dependencies]
euv-core = { workspace = true }
euv-macros = { workspace = true }

js-sys = { workspace = true }
web-sys = { workspace = true }
wasm-bindgen = { workspace = true }
lombok-macros = { workspace = true }
alloc-no-stdlib = { workspace = true }
wasm-bindgen-futures = { workspace = true }
console_error_panic_hook = { workspace = true }

[patch.crates-io]
euv = { path = "." }
euv-cli = { path = "cli" }
euv-core = { path = "core" }
euv-macros = { path = "macros" }
euv-example = { path = "example" }

[package.metadata.wasm-pack.profile.dev]
wasm-opt = false

[package.metadata.wasm-pack.profile.release]
wasm-opt = [
    "-Oz",
    "--enable-mutable-globals",
    "--enable-bulk-memory",
    "--enable-nontrapping-float-to-int",
]

[profile.dev]
incremental = true
opt-level = 0
lto = false
panic = "unwind"
debug = false
codegen-units = 16
strip = "none"

[profile.release]
incremental = false
opt-level = 3
lto = true
panic = "unwind"
debug = false
codegen-units = 1
strip = true

[profile.release.package.euv-example]
opt-level = "z"
