Optionaldeletedtrue only for a kind: 'property' | 'quantity' row backed by a DELETE
mutation (the property/quantity is actually removed on export).
Undefined/false for every other row, including a SET whose value
happens to stringify to undefined (a null value) — that row still
carries a value, just an empty one, and must not render as deleted.
Entity EXPRESS ID the change applies to.
What kind of overlay entry this is.
OptionalnameAttribute / property / quantity name, where applicable.
OptionalnewNew value, stringified. Absent both for a DELETE-operation
property/quantity AND for a SET whose stored value is null (null is
a legitimate, present-but-empty value — e.g. an unset Boolean added from
bSDD, issue #1107 — not an absence). deleted below is the only
reliable signal for telling those two apart; do not infer "deleted" from
newValue === undefined alone.
OptionalpreviousPrevious value, stringified. Derived from the base data (property table /
on-demand extractor / attribute extractor) — NEVER from mutationHistory
— so it stays correct across undo→redo. Absent when the base value can't
be resolved (e.g. no extractor registered, or the property/attribute did
not exist before this session).
OptionalsetPset/Qset name, for 'property' | 'quantity' | 'pset-added' | 'pset-deleted' | 'qset-added' | 'qset-deleted'.
One change as the overlay CURRENTLY stands, for
getEffectiveChanges().Unlike a Mutation from
mutationHistory(append-only — undo does not pop it, seeMutablePropertyView.getMutations()), this is derived fresh from the live overlay maps every call, so it always agrees withhasPendingChanges()/getModifiedEntityCount()— including after an undo→redo cycle.