[package]
name = "leptos_dom"
version = { workspace = true }
edition = "2021"
authors = ["Greg Johnston"]
license = "MIT"
repository = "https://github.com/leptos-rs/leptos"
description = "DOM operations for the Leptos web framework."

[dependencies]
async-recursion = "1"
base64 = { version = "0.21", optional = true }
cfg-if = "1"
drain_filter_polyfill = "0.1"
educe = "0.4"
futures = "0.3"
getrandom = { version = "0.2", optional = true }
html-escape = "0.2"
indexmap = "2"
itertools = "0.10"
js-sys = "0.3"
leptos_reactive = { workspace = true }
server_fn = { workspace = true }
once_cell = "1"
pad-adapter = "0.1"
paste = "1"
rand = { version = "0.8", optional = true }
rustc-hash = "1.1.0"
serde_json = "1"
smallvec = "1"
tracing = "0.1"
wasm-bindgen = { version = "0.2", features = ["enable-interning"] }
wasm-bindgen-futures = "0.4.31"
serde = "1"

[target.'cfg(target_arch = "wasm32")'.dependencies]
getrandom = { version = "0.2", features = ["js"] }

[dev-dependencies]
leptos = { path = "../leptos" }

[dependencies.web-sys]
version = "0.3"
features = [
  "DocumentFragment",
  "Element",
  "HtmlTemplateElement",
  "NodeList",
  "Window",
  "console",
  "Comment",
  "Document",
  "DomTokenList",
  "CssStyleDeclaration",
  "Location",
  "Range",
  "Text",
  "HtmlCollection",
  "ShadowRoot",
  "TreeWalker",

  # Events we cast to in leptos_macro -- added here so we don't force users to import them
  "AddEventListenerOptions",
  "AnimationEvent",
  "BeforeUnloadEvent",
  "ClipboardEvent",
  "CompositionEvent",
  "CustomEvent",
  "DeviceMotionEvent",
  "DeviceOrientationEvent",
  "DragEvent",
  "ErrorEvent",
  "Event",
  "FocusEvent",
  "GamepadEvent",
  "HashChangeEvent",
  "InputEvent",
  "KeyboardEvent",
  "MessageEvent",
  "MouseEvent",
  "PageTransitionEvent",
  "PointerEvent",
  "PopStateEvent",
  "ProgressEvent",
  "PromiseRejectionEvent",
  "SecurityPolicyViolationEvent",
  "StorageEvent",
  "SubmitEvent",
  "TouchEvent",
  "TransitionEvent",
  "UiEvent",
  "WheelEvent",

  # HTML Element Types
  "HtmlHtmlElement",
  "HtmlBaseElement",
  "HtmlHeadElement",
  "HtmlLinkElement",
  "HtmlMetaElement",
  "HtmlStyleElement",
  "HtmlTitleElement",
  "HtmlBodyElement",
  "HtmlHeadingElement",
  "HtmlQuoteElement",
  "HtmlDivElement",
  "HtmlDListElement",
  "HtmlHrElement",
  "HtmlLiElement",
  "HtmlOListElement",
  "HtmlParagraphElement",
  "HtmlPreElement",
  "HtmlUListElement",
  "HtmlAnchorElement",
  "HtmlBrElement",
  "HtmlDataElement",
  "HtmlQuoteElement",
  "HtmlSpanElement",
  "HtmlTimeElement",
  "HtmlAreaElement",
  "HtmlAudioElement",
  "HtmlImageElement",
  "HtmlMapElement",
  "HtmlTrackElement",
  "HtmlVideoElement",
  "HtmlEmbedElement",
  "HtmlIFrameElement",
  "HtmlObjectElement",
  "HtmlParamElement",
  "HtmlPictureElement",
  "HtmlSourceElement",
  "SvgElement",
  "HtmlCanvasElement",
  "HtmlScriptElement",
  "HtmlModElement",
  "HtmlTableCaptionElement",
  "HtmlTableColElement",
  "HtmlTableColElement",
  "HtmlTableElement",
  "HtmlTableSectionElement",
  "HtmlTableCellElement",
  "HtmlTableSectionElement",
  "HtmlTableCellElement",
  "HtmlTableSectionElement",
  "HtmlTableRowElement",
  "HtmlButtonElement",
  "HtmlDataListElement",
  "HtmlFieldSetElement",
  "HtmlFormElement",
  "HtmlInputElement",
  "HtmlLabelElement",
  "HtmlLegendElement",
  "HtmlMeterElement",
  "HtmlOptGroupElement",
  "HtmlOutputElement",
  "HtmlProgressElement",
  "HtmlSelectElement",
  "HtmlTextAreaElement",
  "HtmlDetailsElement",
  "HtmlDialogElement",
  "HtmlMenuElement",
  "HtmlSlotElement",
  "HtmlTemplateElement",
  "HtmlOptionElement",
]

[features]
default = []
web = []
csr = ["leptos_reactive/csr", "web"]
hydrate = ["leptos_reactive/hydrate", "web"]
ssr = ["leptos_reactive/ssr"]
nightly = ["leptos_reactive/nightly"]
nonce = ["dep:base64", "dep:getrandom", "dep:rand"]

[package.metadata.cargo-all-features]
denylist = ["nightly"]
skip_feature_sets = [["web", "ssr"]]
