tdsl-render 1.18.0

SVG, HTML, and PDF rendering for Timeline DSL IR
Documentation
[package]
name = "tdsl-render"
version.workspace = true
edition.workspace = true
license.workspace = true
description = "SVG, HTML, and PDF rendering for Timeline DSL IR"
repository.workspace = true
keywords = ["timeline", "dsl", "rendering", "svg"]
categories = ["rendering", "visualization"]

[features]
default = []
# Enables PNG rasterization via resvg. Off by default to keep the WASM build
# slim (tdsl-wasm consumes tdsl-render without this feature).
png = ["dep:resvg", "dep:thiserror"]
# Enables vector PDF output via svg2pdf. Off by default to keep the WASM build
# slim. `svg2pdf` and `pdf-writer` must move in lockstep: pdf.rs mixes the `Ref`
# from svg2pdf's `Chunk` (svg2pdf's own pdf-writer) with our own `pdf-writer`
# `Ref`, so both must resolve to the SAME pdf-writer version — otherwise
# pdf-writer is linked twice and the build fails on a Ref type mismatch
# (see PR #415 and ADR-0002 の補遺「svg2pdf / pdf-writer のバージョン結合」).
# `usvg` is consumed only via `svg2pdf::usvg` (re-export), so it follows svg2pdf
# automatically and needs no separate pinning.
pdf = ["dep:svg2pdf", "dep:pdf-writer", "dep:thiserror"]

[dependencies]
tdsl-core = { path = "../tdsl-core", default-features = false, version = "1.18.0" }
resvg = { version = "0.47", optional = true }
svg2pdf = { version = "0.13", optional = true }
pdf-writer = { version = "0.12", optional = true }
thiserror = { workspace = true, optional = true }

[dev-dependencies]
criterion = { version = "0.8", features = ["html_reports"] }
insta = { version = "1", features = ["yaml"] }
tdsl-parser = { path = "../tdsl-parser", version = "1.18.0" }
tdsl-core = { path = "../tdsl-core", default-features = false, version = "1.18.0" }

[[bench]]
name = "render_bench"
harness = false