* Feature-gate serde derives behind cfg_attr in all runtime node graph type crates
* Refactor Table to move its hard-coded fields into an attributes field
* Encapsulate TableRow/TableRowRef/TableRowMut attribute fields behind accessor methods
* Remove TaggedValue::GraphicUnused
* Refactor Table<T> to use dynamic attributes instead fixed names
* Fix code review soundness concerns
* Add todo work
* Replace row-oriented Table<T> API with column-oriented access
* Fix attribute propagation bugs
---------
* Fix Morph node transform interpolation and preservation in the table
* Fix click target positions for Morph's nested layers by pre-compensating upstream_data transforms
* Redesign Morph node (v3) with control path input and uniformly spaced progression, and fix Stroke::lerp interpolation weights
* Add migration from Morph node v2 to v3
* Redesign the 'Blend Shapes' node behavior and subgraph definition
* Add the Layer > Blend menu entry to easily set up a blend
* Optimize the Morph node
* Refactor the Morph node to remove the roundtrip through BezPath
* Fine-tune Morph node Bezier order promotion and handle interpolation
* Add the Layer > Morph menu bar entry
* Fix NaN and guard against other potential NaN bugs breaking the editor
* Add InterpolationDistribution parameter to Morph with weighted progression, swap parameter orders, and rename shear to skew
* Add the Reverse parameter to the Morph node
* Update the order of the inputs to Blend Shapes for consistency with Morph
* Make Layer > Morph create the Morph Path control layer
* Fix migrations
* Move 10 to a constant
* Avoid division by 0 in the Blend Shapes node internals
* Rename nodes 'Blend' -> 'Mix' and 'Blend Shapes' to 'Blend'
* Fix a crash encountered while testing
* Final code review
* Make domain push dupe checks debug-only and use push_unchecked in the Morph node
* Pre-allocate for pushes to the vector domains
* Add fast path at t=0
* Inline reserve()
* Set up the control path layer above not below, and starting collapsed
* Review fixes
---------
Co-authored-by: Timon <me@timon.zip>
* Refactor GradientStops to use struct-of-arrays and include midpoint
* Implement interaction and rendering
* Make color picker saturation-value color picking snap to original position and show both axis lines
Make color picker saturation-value color picking snap to original position and show both axis lines
* Add graphite:midpoint attribute to SVG exports
* Add graphite:midpoint parsing to SVG importer