[package]
name = "op-pen-loader"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
description = "Canonical .op (PenDocument) → shell Document loader / adapter"

[dependencies]
# Canonical `.op` / `.pen` schema — the `PenDocument` this crate
# converts from.
jian-ops-schema = { path = "../../vendor/jian/crates/jian-ops-schema" }
# jian-core ships the taffy-backed `LayoutEngine` — the canonical
# flex solver for `.op` files.
jian-core = { path = "../../vendor/jian/crates/jian-core" }
# jian-skia ships `SkiaMeasure` — a real skia paragraph-shaper
# `MeasureBackend` plugged into the layout engine. Desktop-side, so
# depending on skia is fine; this crate does NOT need to be wasm-clean.
jian-skia = { path = "../../vendor/jian/crates/jian-skia", features = ["textlayout"] }
# Phase 7.3 reorg: openpencil-shell-core dissolved. The layout scene /
# scene-var / render-backend facade this crate converts INTO now
# resolves through the op-editor-ui crate.
op-editor-ui = { path = "../op-editor-ui" }
# `EditorState` — the canonical editor-state superset this crate
# derives a paint-only `Document` (incl. its `var_table`) FROM. Lives
# in op-pen-loader, NOT op-editor-core, so op-editor-core stays free of
# any shell-core (`VariableTable`) dependency and wasm-clean.
op-editor-core = { path = "../op-editor-core" }
# Payload DTOs round-trip through serde JSON.
serde = { workspace = true }
serde_json = { workspace = true }
