Transitions with panels changing visibility still doesn't work quite right, though. When a panel exits, we currently override the panel instance using the exit prototype, but don't override all of the children accordingly.
These properties replace angle, radius and size, respectively, for dots. The new names avoid collision with forthcoming support for polar coordinates. The use of the "shape" prefix is consistent with other mark-specific properties, such as textAngle and textStyle.
Having properties with side-effects is bad. Previously, the default anchor data property had a side-effect of wiring up the target instances. This broke if the data property was overridden, so now we do this as part of build instead. This commit also eliminates the need for an anchorTarget() method, as the target attribute is now set correctly when extending from an anchor. I've retained the method for now but marked it as deprecated.
Previously, if both positional properties on a given dimension (e.g., left and right) were undefined, the left and top properties were implicitly 0. Thus, the implicit default position was the top-left corner of the panel. Now the center of the panel is used instead. For example, now wedges can be added to panels without needing to center them explicitly.
We now properly handle mark instances that change visibility. Also, correct a problem with the recent tweak to anchors if the visible property is overridden. This commit includes an example of interpolating wedges and anchors; note that we haven't yet implemented interpolation in polar coordinates, but the plan is to support that by introducing polar mark types.
We now recompute all properties for marks that are entering and exiting, rather than only computing those properties that were explicitly defined. This greatly reduces the number of properties that typically need to be defined on the enter and exit prototypes. This commit also includes some fixes to anchors across transitions. Previously, the anchors stored a local variable as a side-effect of a def. This does not work with transitions, given that the enter and exit instances are evaluated independently. Now we only store the anchor targets in the scenegraph, which avoids state pollution.