chore(runtime): add new core type (#12981) ac4657c21c
chore(runtime): add new core type and reduce memory size of layout properties

Co-authored-by: hernan <hernan@rive.app>
diff --git a/.rive_head b/.rive_head
index d460901..609cb37 100644
--- a/.rive_head
+++ b/.rive_head
@@ -1 +1 @@
-eb0c54ee20880b2529a7c86253a32991cacb7b9a
+ac4657c21c27ec4b99b415d54ca45a8b135fea63
diff --git a/dev/core_generator/lib/src/definition.dart b/dev/core_generator/lib/src/definition.dart
index c5212df..597967b 100644
--- a/dev/core_generator/lib/src/definition.dart
+++ b/dev/core_generator/lib/src/definition.dart
@@ -683,11 +683,15 @@
     var getSetFieldTypes = <FieldType, List<Property>>{};
     for (final definition in runtimeDefinitions) {
       for (final property in definition.properties) {
-        usedFieldTypes[property.type] ??= [];
-        usedFieldTypes[property.type]!.add(property);
+        // Group by registryType so narrow aliases (e.g. uint8) fold into their
+        // wider type (uint): set/get dispatch and the property field-type id
+        // stay shared, keeping existing keyframes and files compatible.
+        final registryType = property.type.registryType;
+        usedFieldTypes[registryType] ??= [];
+        usedFieldTypes[registryType]!.add(property);
         if (!property.isEncoded) {
-          getSetFieldTypes[property.type] ??= [];
-          getSetFieldTypes[property.type]!.add(property);
+          getSetFieldTypes[registryType] ??= [];
+          getSetFieldTypes[registryType]!.add(property);
         }
       }
     }
diff --git a/dev/core_generator/lib/src/field_type.dart b/dev/core_generator/lib/src/field_type.dart
index 49edcd0..d8d4ae4 100644
--- a/dev/core_generator/lib/src/field_type.dart
+++ b/dev/core_generator/lib/src/field_type.dart
@@ -16,6 +16,12 @@
   final String _runtimeCoreType;
   String get runtimeCoreType => _runtimeCoreType;
 
+  /// The field type that owns registry dispatch and the property field-type id
+  /// for this type. Defaults to the type itself; narrow aliases (e.g. uint8)
+  /// override this to fold into a wider type (uint) so dispatch and the wire
+  /// format stay shared.
+  FieldType get registryType => this;
+
   final bool storesData;
 
   FieldType(
diff --git a/dev/core_generator/lib/src/field_types/initialize.dart b/dev/core_generator/lib/src/field_types/initialize.dart
index 4c94698..976fc5f 100644
--- a/dev/core_generator/lib/src/field_types/initialize.dart
+++ b/dev/core_generator/lib/src/field_types/initialize.dart
@@ -3,6 +3,7 @@
 import 'package:core_generator/src/field_type.dart';
 import 'package:core_generator/src/field_types/bytes_field_type.dart';
 import 'package:core_generator/src/field_types/callback_field_type.dart';
+import 'package:core_generator/src/field_types/uint8_field_type.dart';
 
 late List<FieldType> fields;
 
@@ -11,6 +12,8 @@
     StringFieldType(),
     BytesFieldType(),
     UintFieldType(),
+    // Must come after UintFieldType: its registryType resolves `uint`.
+    Uint8FieldType(),
     DoubleFieldType(),
     BoolFieldType(),
     ColorFieldType(),
diff --git a/dev/core_generator/lib/src/field_types/uint8_field_type.dart b/dev/core_generator/lib/src/field_types/uint8_field_type.dart
new file mode 100644
index 0000000..616c8fc
--- /dev/null
+++ b/dev/core_generator/lib/src/field_types/uint8_field_type.dart
@@ -0,0 +1,28 @@
+import '../field_type.dart';
+
+/// A uint that is stored in memory as a uint8_t to save space.
+///
+/// On the wire it is identical to [UintFieldType]: the same varuint encoding
+/// and the same core field-type id. Only the generated C++ member type differs
+/// (uint8_t instead of uint32_t). [registryType] folds it back into `uint` for
+/// registry dispatch (so existing KeyFrameUint keyframes still apply) and for
+/// the property field-type id (so existing files remain compatible).
+class Uint8FieldType extends FieldType {
+  Uint8FieldType()
+      : super(
+          'uint8',
+          'CoreUintType',
+          cppName: 'uint8_t',
+        );
+
+  @override
+  String get defaultValue => '0';
+
+  // We do this to fix up CoreContext.invalidPropertyKey
+  @override
+  String? convertCpp(String value) =>
+      value.replaceAll('CoreContext.', 'Core::');
+
+  @override
+  FieldType get registryType => FieldType.find('uint')!;
+}
diff --git a/dev/defs/layout/layout_component_style.json b/dev/defs/layout/layout_component_style.json
index b4c5fba..80e160b 100644
--- a/dev/defs/layout/layout_component_style.json
+++ b/dev/defs/layout/layout_component_style.json
@@ -314,16 +314,6 @@
       "description": "Flex basis value.",
       "bindable": true
     },
-    "flexBasisUnitsValue": {
-      "type": "uint",
-      "initialValue": "3",
-      "group": "flexbasis",
-      "key": {
-        "int": 705,
-        "string": "flexbasisunitsvalue"
-      },
-      "description": "Flex basis unit value"
-    },
     "aspectRatio": {
       "type": "double",
       "initialValue": "0",
@@ -335,63 +325,6 @@
       "description": "Aspect ratio value.",
       "bindable": true
     },
-    "edgeConstraints": {
-      "type": "uint",
-      "initialValue": "0",
-      "key": {
-        "int": 545,
-        "string": "edgeconstraints"
-      },
-      "runtime": false
-    },
-    "layoutWidthScaleType": {
-      "type": "uint",
-      "initialValue": "0",
-      "animates": true,
-      "key": {
-        "int": 655,
-        "string": "layoutwidthscaletype"
-      },
-      "bindable": true
-    },
-    "layoutHeightScaleType": {
-      "type": "uint",
-      "initialValue": "0",
-      "animates": true,
-      "key": {
-        "int": 656,
-        "string": "layoutheightscaletype"
-      },
-      "bindable": true
-    },
-    "layoutAlignmentType": {
-      "type": "uint",
-      "initialValue": "0",
-      "animates": true,
-      "key": {
-        "int": 632,
-        "string": "layoutalignmenttype"
-      },
-      "bindable": true
-    },
-    "animationStyleType": {
-      "type": "uint",
-      "initialValue": "0",
-      "key": {
-        "int": 589,
-        "string": "animationstyletype"
-      },
-      "description": "The type of animation none|custom|inherit applied to this layout."
-    },
-    "interpolationType": {
-      "type": "uint",
-      "initialValue": "0",
-      "key": {
-        "int": 590,
-        "string": "interpolationtype"
-      },
-      "description": "The type of interpolation index in KeyframeInterpolation applied to this layout."
-    },
     "interpolatorId": {
       "type": "Id",
       "typeRuntime": "uint",
@@ -414,8 +347,75 @@
       "description": "The time over which the interpolator applies.",
       "bindable": true
     },
+    "flexBasisUnitsValue": {
+      "type": "uint8",
+      "initialValue": "3",
+      "group": "flexbasis",
+      "key": {
+        "int": 705,
+        "string": "flexbasisunitsvalue"
+      },
+      "description": "Flex basis unit value"
+    },
+    "edgeConstraints": {
+      "type": "uint8",
+      "initialValue": "0",
+      "key": {
+        "int": 545,
+        "string": "edgeconstraints"
+      },
+      "runtime": false
+    },
+    "layoutWidthScaleType": {
+      "type": "uint8",
+      "initialValue": "0",
+      "animates": true,
+      "key": {
+        "int": 655,
+        "string": "layoutwidthscaletype"
+      },
+      "bindable": true
+    },
+    "layoutHeightScaleType": {
+      "type": "uint8",
+      "initialValue": "0",
+      "animates": true,
+      "key": {
+        "int": 656,
+        "string": "layoutheightscaletype"
+      },
+      "bindable": true
+    },
+    "layoutAlignmentType": {
+      "type": "uint8",
+      "initialValue": "0",
+      "animates": true,
+      "key": {
+        "int": 632,
+        "string": "layoutalignmenttype"
+      },
+      "bindable": true
+    },
+    "animationStyleType": {
+      "type": "uint8",
+      "initialValue": "0",
+      "key": {
+        "int": 589,
+        "string": "animationstyletype"
+      },
+      "description": "The type of animation none|custom|inherit applied to this layout."
+    },
+    "interpolationType": {
+      "type": "uint8",
+      "initialValue": "0",
+      "key": {
+        "int": 590,
+        "string": "interpolationtype"
+      },
+      "description": "The type of interpolation index in KeyframeInterpolation applied to this layout."
+    },
     "displayValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "animates": true,
       "key": {
@@ -426,7 +426,7 @@
       "bindable": true
     },
     "positionTypeValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "1",
       "animates": true,
       "key": {
@@ -437,7 +437,7 @@
       "bindable": true
     },
     "flexDirectionValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "2",
       "animates": true,
       "key": {
@@ -448,7 +448,7 @@
       "bindable": true
     },
     "directionValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "animates": true,
       "key": {
@@ -459,7 +459,7 @@
       "bindable": true
     },
     "alignContentValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "animates": true,
       "key": {
@@ -469,7 +469,7 @@
       "description": ""
     },
     "alignItemsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "1",
       "animates": true,
       "key": {
@@ -479,7 +479,7 @@
       "description": ""
     },
     "alignSelfValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "animates": true,
       "key": {
@@ -489,7 +489,7 @@
       "description": ""
     },
     "justifyContentValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "animates": true,
       "key": {
@@ -499,7 +499,7 @@
       "description": ""
     },
     "flexWrapValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "animates": true,
       "key": {
@@ -510,7 +510,7 @@
       "bindable": true
     },
     "overflowValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "animates": true,
       "key": {
@@ -531,7 +531,7 @@
       "bindable": true
     },
     "widthUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "1",
       "key": {
         "int": 607,
@@ -540,7 +540,7 @@
       "description": ""
     },
     "heightUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "1",
       "key": {
         "int": 608,
@@ -549,7 +549,7 @@
       "description": ""
     },
     "borderLeftUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "group": "layoutborder",
       "key": {
@@ -559,7 +559,7 @@
       "description": ""
     },
     "borderRightUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "group": "layoutborder",
       "key": {
@@ -569,7 +569,7 @@
       "description": ""
     },
     "borderTopUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "group": "layoutborder",
       "key": {
@@ -579,7 +579,7 @@
       "description": ""
     },
     "borderBottomUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "group": "layoutborder",
       "key": {
@@ -589,7 +589,7 @@
       "description": ""
     },
     "marginLeftUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "group": "layoutmargin",
       "key": {
@@ -599,7 +599,7 @@
       "description": ""
     },
     "marginRightUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "group": "layoutmargin",
       "key": {
@@ -609,7 +609,7 @@
       "description": ""
     },
     "marginTopUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "group": "layoutmargin",
       "key": {
@@ -619,7 +619,7 @@
       "description": ""
     },
     "marginBottomUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "group": "layoutmargin",
       "key": {
@@ -629,7 +629,7 @@
       "description": ""
     },
     "paddingLeftUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "group": "layoutpadding",
       "key": {
@@ -639,7 +639,7 @@
       "description": ""
     },
     "paddingRightUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "group": "layoutpadding",
       "key": {
@@ -649,7 +649,7 @@
       "description": ""
     },
     "paddingTopUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "group": "layoutpadding",
       "key": {
@@ -659,7 +659,7 @@
       "description": ""
     },
     "paddingBottomUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "group": "layoutpadding",
       "key": {
@@ -669,7 +669,7 @@
       "description": ""
     },
     "positionLeftUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "group": "layoutposition",
       "key": {
@@ -680,7 +680,7 @@
       "bindable": true
     },
     "positionRightUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "group": "layoutposition",
       "key": {
@@ -691,7 +691,7 @@
       "bindable": true
     },
     "positionTopUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "group": "layoutposition",
       "key": {
@@ -702,7 +702,7 @@
       "bindable": true
     },
     "positionBottomUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "group": "layoutposition",
       "key": {
@@ -713,7 +713,7 @@
       "bindable": true
     },
     "gapHorizontalUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "group": "layoutgap",
       "key": {
@@ -723,7 +723,7 @@
       "description": ""
     },
     "gapVerticalUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "group": "layoutgap",
       "key": {
@@ -733,7 +733,7 @@
       "description": ""
     },
     "minWidthUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "group": "layoutmin",
       "key": {
@@ -743,7 +743,7 @@
       "description": ""
     },
     "minHeightUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "group": "layoutmin",
       "key": {
@@ -753,7 +753,7 @@
       "description": ""
     },
     "maxWidthUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "group": "layoutmax",
       "key": {
@@ -763,7 +763,7 @@
       "description": ""
     },
     "maxHeightUnitsValue": {
-      "type": "uint",
+      "type": "uint8",
       "initialValue": "0",
       "group": "layoutmax",
       "key": {
diff --git a/include/rive/generated/constraints/scrolling/scroll_constraint_base.hpp b/include/rive/generated/constraints/scrolling/scroll_constraint_base.hpp
index 91b136d..06557da 100644
--- a/include/rive/generated/constraints/scrolling/scroll_constraint_base.hpp
+++ b/include/rive/generated/constraints/scrolling/scroll_constraint_base.hpp
@@ -257,6 +257,7 @@
         }
         m_DragMultiplier = value;
         dragMultiplierChanged();
+        notifyPropertyChanged(dragMultiplierPropertyKey);
     }
 
     Core* clone() const override;
diff --git a/include/rive/generated/core_registry.hpp b/include/rive/generated/core_registry.hpp
index a6295d5..0a6b546 100644
--- a/include/rive/generated/core_registry.hpp
+++ b/include/rive/generated/core_registry.hpp
@@ -1062,6 +1062,9 @@
             case NSlicerTileModeBase::stylePropertyKey:
                 object->as<NSlicerTileModeBase>()->style(value);
                 break;
+            case LayoutComponentStyleBase::interpolatorIdPropertyKey:
+                object->as<LayoutComponentStyleBase>()->interpolatorId(value);
+                break;
             case LayoutComponentStyleBase::flexBasisUnitsValuePropertyKey:
                 object->as<LayoutComponentStyleBase>()->flexBasisUnitsValue(
                     value);
@@ -1086,9 +1089,6 @@
                 object->as<LayoutComponentStyleBase>()->interpolationType(
                     value);
                 break;
-            case LayoutComponentStyleBase::interpolatorIdPropertyKey:
-                object->as<LayoutComponentStyleBase>()->interpolatorId(value);
-                break;
             case LayoutComponentStyleBase::displayValuePropertyKey:
                 object->as<LayoutComponentStyleBase>()->displayValue(value);
                 break;
@@ -3188,6 +3188,8 @@
                 return object->as<NSlicerTileModeBase>()->patchIndex();
             case NSlicerTileModeBase::stylePropertyKey:
                 return object->as<NSlicerTileModeBase>()->style();
+            case LayoutComponentStyleBase::interpolatorIdPropertyKey:
+                return object->as<LayoutComponentStyleBase>()->interpolatorId();
             case LayoutComponentStyleBase::flexBasisUnitsValuePropertyKey:
                 return object->as<LayoutComponentStyleBase>()
                     ->flexBasisUnitsValue();
@@ -3206,8 +3208,6 @@
             case LayoutComponentStyleBase::interpolationTypePropertyKey:
                 return object->as<LayoutComponentStyleBase>()
                     ->interpolationType();
-            case LayoutComponentStyleBase::interpolatorIdPropertyKey:
-                return object->as<LayoutComponentStyleBase>()->interpolatorId();
             case LayoutComponentStyleBase::displayValuePropertyKey:
                 return object->as<LayoutComponentStyleBase>()->displayValue();
             case LayoutComponentStyleBase::positionTypeValuePropertyKey:
@@ -4376,13 +4376,13 @@
             case NestedArtboardLayoutBase::instanceHeightScaleTypePropertyKey:
             case NSlicerTileModeBase::patchIndexPropertyKey:
             case NSlicerTileModeBase::stylePropertyKey:
+            case LayoutComponentStyleBase::interpolatorIdPropertyKey:
             case LayoutComponentStyleBase::flexBasisUnitsValuePropertyKey:
             case LayoutComponentStyleBase::layoutWidthScaleTypePropertyKey:
             case LayoutComponentStyleBase::layoutHeightScaleTypePropertyKey:
             case LayoutComponentStyleBase::layoutAlignmentTypePropertyKey:
             case LayoutComponentStyleBase::animationStyleTypePropertyKey:
             case LayoutComponentStyleBase::interpolationTypePropertyKey:
-            case LayoutComponentStyleBase::interpolatorIdPropertyKey:
             case LayoutComponentStyleBase::displayValuePropertyKey:
             case LayoutComponentStyleBase::positionTypeValuePropertyKey:
             case LayoutComponentStyleBase::flexDirectionValuePropertyKey:
@@ -5021,6 +5021,8 @@
                 return object->is<NSlicerTileModeBase>();
             case NSlicerTileModeBase::stylePropertyKey:
                 return object->is<NSlicerTileModeBase>();
+            case LayoutComponentStyleBase::interpolatorIdPropertyKey:
+                return object->is<LayoutComponentStyleBase>();
             case LayoutComponentStyleBase::flexBasisUnitsValuePropertyKey:
                 return object->is<LayoutComponentStyleBase>();
             case LayoutComponentStyleBase::layoutWidthScaleTypePropertyKey:
@@ -5033,8 +5035,6 @@
                 return object->is<LayoutComponentStyleBase>();
             case LayoutComponentStyleBase::interpolationTypePropertyKey:
                 return object->is<LayoutComponentStyleBase>();
-            case LayoutComponentStyleBase::interpolatorIdPropertyKey:
-                return object->is<LayoutComponentStyleBase>();
             case LayoutComponentStyleBase::displayValuePropertyKey:
                 return object->is<LayoutComponentStyleBase>();
             case LayoutComponentStyleBase::positionTypeValuePropertyKey:
diff --git a/include/rive/generated/layout/layout_component_style_base.hpp b/include/rive/generated/layout/layout_component_style_base.hpp
index eda5e14..1eab78f 100644
--- a/include/rive/generated/layout/layout_component_style_base.hpp
+++ b/include/rive/generated/layout/layout_component_style_base.hpp
@@ -56,15 +56,15 @@
     static const uint16_t flexGrowPropertyKey = 521;
     static const uint16_t flexShrinkPropertyKey = 522;
     static const uint16_t flexBasisPropertyKey = 523;
-    static const uint16_t flexBasisUnitsValuePropertyKey = 705;
     static const uint16_t aspectRatioPropertyKey = 524;
+    static const uint16_t interpolatorIdPropertyKey = 591;
+    static const uint16_t interpolationTimePropertyKey = 592;
+    static const uint16_t flexBasisUnitsValuePropertyKey = 705;
     static const uint16_t layoutWidthScaleTypePropertyKey = 655;
     static const uint16_t layoutHeightScaleTypePropertyKey = 656;
     static const uint16_t layoutAlignmentTypePropertyKey = 632;
     static const uint16_t animationStyleTypePropertyKey = 589;
     static const uint16_t interpolationTypePropertyKey = 590;
-    static const uint16_t interpolatorIdPropertyKey = 591;
-    static const uint16_t interpolationTimePropertyKey = 592;
     static const uint16_t displayValuePropertyKey = 596;
     static const uint16_t positionTypeValuePropertyKey = 597;
     static const uint16_t flexDirectionValuePropertyKey = 598;
@@ -133,50 +133,50 @@
     float m_FlexGrow = 0.0f;
     float m_FlexShrink = 1.0f;
     float m_FlexBasis = 0.0f;
-    uint32_t m_FlexBasisUnitsValue = 3;
     float m_AspectRatio = 0.0f;
-    uint32_t m_LayoutWidthScaleType = 0;
-    uint32_t m_LayoutHeightScaleType = 0;
-    uint32_t m_LayoutAlignmentType = 0;
-    uint32_t m_AnimationStyleType = 0;
-    uint32_t m_InterpolationType = 0;
     uint32_t m_InterpolatorId = -1;
     float m_InterpolationTime = 0.0f;
-    uint32_t m_DisplayValue = 0;
-    uint32_t m_PositionTypeValue = 1;
-    uint32_t m_FlexDirectionValue = 2;
-    uint32_t m_DirectionValue = 0;
-    uint32_t m_AlignContentValue = 0;
-    uint32_t m_AlignItemsValue = 1;
-    uint32_t m_AlignSelfValue = 0;
-    uint32_t m_JustifyContentValue = 0;
-    uint32_t m_FlexWrapValue = 0;
-    uint32_t m_OverflowValue = 0;
+    uint8_t m_FlexBasisUnitsValue = 3;
+    uint8_t m_LayoutWidthScaleType = 0;
+    uint8_t m_LayoutHeightScaleType = 0;
+    uint8_t m_LayoutAlignmentType = 0;
+    uint8_t m_AnimationStyleType = 0;
+    uint8_t m_InterpolationType = 0;
+    uint8_t m_DisplayValue = 0;
+    uint8_t m_PositionTypeValue = 1;
+    uint8_t m_FlexDirectionValue = 2;
+    uint8_t m_DirectionValue = 0;
+    uint8_t m_AlignContentValue = 0;
+    uint8_t m_AlignItemsValue = 1;
+    uint8_t m_AlignSelfValue = 0;
+    uint8_t m_JustifyContentValue = 0;
+    uint8_t m_FlexWrapValue = 0;
+    uint8_t m_OverflowValue = 0;
     bool m_IntrinsicallySizedValue = false;
-    uint32_t m_WidthUnitsValue = 1;
-    uint32_t m_HeightUnitsValue = 1;
-    uint32_t m_BorderLeftUnitsValue = 0;
-    uint32_t m_BorderRightUnitsValue = 0;
-    uint32_t m_BorderTopUnitsValue = 0;
-    uint32_t m_BorderBottomUnitsValue = 0;
-    uint32_t m_MarginLeftUnitsValue = 0;
-    uint32_t m_MarginRightUnitsValue = 0;
-    uint32_t m_MarginTopUnitsValue = 0;
-    uint32_t m_MarginBottomUnitsValue = 0;
-    uint32_t m_PaddingLeftUnitsValue = 0;
-    uint32_t m_PaddingRightUnitsValue = 0;
-    uint32_t m_PaddingTopUnitsValue = 0;
-    uint32_t m_PaddingBottomUnitsValue = 0;
-    uint32_t m_PositionLeftUnitsValue = 0;
-    uint32_t m_PositionRightUnitsValue = 0;
-    uint32_t m_PositionTopUnitsValue = 0;
-    uint32_t m_PositionBottomUnitsValue = 0;
-    uint32_t m_GapHorizontalUnitsValue = 0;
-    uint32_t m_GapVerticalUnitsValue = 0;
-    uint32_t m_MinWidthUnitsValue = 0;
-    uint32_t m_MinHeightUnitsValue = 0;
-    uint32_t m_MaxWidthUnitsValue = 0;
-    uint32_t m_MaxHeightUnitsValue = 0;
+    uint8_t m_WidthUnitsValue = 1;
+    uint8_t m_HeightUnitsValue = 1;
+    uint8_t m_BorderLeftUnitsValue = 0;
+    uint8_t m_BorderRightUnitsValue = 0;
+    uint8_t m_BorderTopUnitsValue = 0;
+    uint8_t m_BorderBottomUnitsValue = 0;
+    uint8_t m_MarginLeftUnitsValue = 0;
+    uint8_t m_MarginRightUnitsValue = 0;
+    uint8_t m_MarginTopUnitsValue = 0;
+    uint8_t m_MarginBottomUnitsValue = 0;
+    uint8_t m_PaddingLeftUnitsValue = 0;
+    uint8_t m_PaddingRightUnitsValue = 0;
+    uint8_t m_PaddingTopUnitsValue = 0;
+    uint8_t m_PaddingBottomUnitsValue = 0;
+    uint8_t m_PositionLeftUnitsValue = 0;
+    uint8_t m_PositionRightUnitsValue = 0;
+    uint8_t m_PositionTopUnitsValue = 0;
+    uint8_t m_PositionBottomUnitsValue = 0;
+    uint8_t m_GapHorizontalUnitsValue = 0;
+    uint8_t m_GapVerticalUnitsValue = 0;
+    uint8_t m_MinWidthUnitsValue = 0;
+    uint8_t m_MinHeightUnitsValue = 0;
+    uint8_t m_MaxWidthUnitsValue = 0;
+    uint8_t m_MaxHeightUnitsValue = 0;
     bool m_LinkCornerRadius = true;
     float m_CornerRadiusTL = 0.0f;
     float m_CornerRadiusTR = 0.0f;
@@ -496,21 +496,6 @@
         notifyPropertyChanged(flexBasisPropertyKey);
     }
 
-    inline uint32_t flexBasisUnitsValue() const
-    {
-        return m_FlexBasisUnitsValue;
-    }
-    void flexBasisUnitsValue(uint32_t value)
-    {
-        if (m_FlexBasisUnitsValue == value)
-        {
-            return;
-        }
-        m_FlexBasisUnitsValue = value;
-        flexBasisUnitsValueChanged();
-        notifyPropertyChanged(flexBasisUnitsValuePropertyKey);
-    }
-
     inline float aspectRatio() const { return m_AspectRatio; }
     void aspectRatio(float value)
     {
@@ -523,75 +508,6 @@
         notifyPropertyChanged(aspectRatioPropertyKey);
     }
 
-    inline uint32_t layoutWidthScaleType() const
-    {
-        return m_LayoutWidthScaleType;
-    }
-    void layoutWidthScaleType(uint32_t value)
-    {
-        if (m_LayoutWidthScaleType == value)
-        {
-            return;
-        }
-        m_LayoutWidthScaleType = value;
-        layoutWidthScaleTypeChanged();
-        notifyPropertyChanged(layoutWidthScaleTypePropertyKey);
-    }
-
-    inline uint32_t layoutHeightScaleType() const
-    {
-        return m_LayoutHeightScaleType;
-    }
-    void layoutHeightScaleType(uint32_t value)
-    {
-        if (m_LayoutHeightScaleType == value)
-        {
-            return;
-        }
-        m_LayoutHeightScaleType = value;
-        layoutHeightScaleTypeChanged();
-        notifyPropertyChanged(layoutHeightScaleTypePropertyKey);
-    }
-
-    inline uint32_t layoutAlignmentType() const
-    {
-        return m_LayoutAlignmentType;
-    }
-    void layoutAlignmentType(uint32_t value)
-    {
-        if (m_LayoutAlignmentType == value)
-        {
-            return;
-        }
-        m_LayoutAlignmentType = value;
-        layoutAlignmentTypeChanged();
-        notifyPropertyChanged(layoutAlignmentTypePropertyKey);
-    }
-
-    inline uint32_t animationStyleType() const { return m_AnimationStyleType; }
-    void animationStyleType(uint32_t value)
-    {
-        if (m_AnimationStyleType == value)
-        {
-            return;
-        }
-        m_AnimationStyleType = value;
-        animationStyleTypeChanged();
-        notifyPropertyChanged(animationStyleTypePropertyKey);
-    }
-
-    inline uint32_t interpolationType() const { return m_InterpolationType; }
-    void interpolationType(uint32_t value)
-    {
-        if (m_InterpolationType == value)
-        {
-            return;
-        }
-        m_InterpolationType = value;
-        interpolationTypeChanged();
-        notifyPropertyChanged(interpolationTypePropertyKey);
-    }
-
     inline uint32_t interpolatorId() const { return m_InterpolatorId; }
     void interpolatorId(uint32_t value)
     {
@@ -616,8 +532,86 @@
         notifyPropertyChanged(interpolationTimePropertyKey);
     }
 
-    inline uint32_t displayValue() const { return m_DisplayValue; }
-    void displayValue(uint32_t value)
+    inline uint8_t flexBasisUnitsValue() const { return m_FlexBasisUnitsValue; }
+    void flexBasisUnitsValue(uint8_t value)
+    {
+        if (m_FlexBasisUnitsValue == value)
+        {
+            return;
+        }
+        m_FlexBasisUnitsValue = value;
+        flexBasisUnitsValueChanged();
+        notifyPropertyChanged(flexBasisUnitsValuePropertyKey);
+    }
+
+    inline uint8_t layoutWidthScaleType() const
+    {
+        return m_LayoutWidthScaleType;
+    }
+    void layoutWidthScaleType(uint8_t value)
+    {
+        if (m_LayoutWidthScaleType == value)
+        {
+            return;
+        }
+        m_LayoutWidthScaleType = value;
+        layoutWidthScaleTypeChanged();
+        notifyPropertyChanged(layoutWidthScaleTypePropertyKey);
+    }
+
+    inline uint8_t layoutHeightScaleType() const
+    {
+        return m_LayoutHeightScaleType;
+    }
+    void layoutHeightScaleType(uint8_t value)
+    {
+        if (m_LayoutHeightScaleType == value)
+        {
+            return;
+        }
+        m_LayoutHeightScaleType = value;
+        layoutHeightScaleTypeChanged();
+        notifyPropertyChanged(layoutHeightScaleTypePropertyKey);
+    }
+
+    inline uint8_t layoutAlignmentType() const { return m_LayoutAlignmentType; }
+    void layoutAlignmentType(uint8_t value)
+    {
+        if (m_LayoutAlignmentType == value)
+        {
+            return;
+        }
+        m_LayoutAlignmentType = value;
+        layoutAlignmentTypeChanged();
+        notifyPropertyChanged(layoutAlignmentTypePropertyKey);
+    }
+
+    inline uint8_t animationStyleType() const { return m_AnimationStyleType; }
+    void animationStyleType(uint8_t value)
+    {
+        if (m_AnimationStyleType == value)
+        {
+            return;
+        }
+        m_AnimationStyleType = value;
+        animationStyleTypeChanged();
+        notifyPropertyChanged(animationStyleTypePropertyKey);
+    }
+
+    inline uint8_t interpolationType() const { return m_InterpolationType; }
+    void interpolationType(uint8_t value)
+    {
+        if (m_InterpolationType == value)
+        {
+            return;
+        }
+        m_InterpolationType = value;
+        interpolationTypeChanged();
+        notifyPropertyChanged(interpolationTypePropertyKey);
+    }
+
+    inline uint8_t displayValue() const { return m_DisplayValue; }
+    void displayValue(uint8_t value)
     {
         if (m_DisplayValue == value)
         {
@@ -628,8 +622,8 @@
         notifyPropertyChanged(displayValuePropertyKey);
     }
 
-    inline uint32_t positionTypeValue() const { return m_PositionTypeValue; }
-    void positionTypeValue(uint32_t value)
+    inline uint8_t positionTypeValue() const { return m_PositionTypeValue; }
+    void positionTypeValue(uint8_t value)
     {
         if (m_PositionTypeValue == value)
         {
@@ -640,8 +634,8 @@
         notifyPropertyChanged(positionTypeValuePropertyKey);
     }
 
-    inline uint32_t flexDirectionValue() const { return m_FlexDirectionValue; }
-    void flexDirectionValue(uint32_t value)
+    inline uint8_t flexDirectionValue() const { return m_FlexDirectionValue; }
+    void flexDirectionValue(uint8_t value)
     {
         if (m_FlexDirectionValue == value)
         {
@@ -652,8 +646,8 @@
         notifyPropertyChanged(flexDirectionValuePropertyKey);
     }
 
-    inline uint32_t directionValue() const { return m_DirectionValue; }
-    void directionValue(uint32_t value)
+    inline uint8_t directionValue() const { return m_DirectionValue; }
+    void directionValue(uint8_t value)
     {
         if (m_DirectionValue == value)
         {
@@ -664,8 +658,8 @@
         notifyPropertyChanged(directionValuePropertyKey);
     }
 
-    inline uint32_t alignContentValue() const { return m_AlignContentValue; }
-    void alignContentValue(uint32_t value)
+    inline uint8_t alignContentValue() const { return m_AlignContentValue; }
+    void alignContentValue(uint8_t value)
     {
         if (m_AlignContentValue == value)
         {
@@ -676,8 +670,8 @@
         notifyPropertyChanged(alignContentValuePropertyKey);
     }
 
-    inline uint32_t alignItemsValue() const { return m_AlignItemsValue; }
-    void alignItemsValue(uint32_t value)
+    inline uint8_t alignItemsValue() const { return m_AlignItemsValue; }
+    void alignItemsValue(uint8_t value)
     {
         if (m_AlignItemsValue == value)
         {
@@ -688,8 +682,8 @@
         notifyPropertyChanged(alignItemsValuePropertyKey);
     }
 
-    inline uint32_t alignSelfValue() const { return m_AlignSelfValue; }
-    void alignSelfValue(uint32_t value)
+    inline uint8_t alignSelfValue() const { return m_AlignSelfValue; }
+    void alignSelfValue(uint8_t value)
     {
         if (m_AlignSelfValue == value)
         {
@@ -700,11 +694,8 @@
         notifyPropertyChanged(alignSelfValuePropertyKey);
     }
 
-    inline uint32_t justifyContentValue() const
-    {
-        return m_JustifyContentValue;
-    }
-    void justifyContentValue(uint32_t value)
+    inline uint8_t justifyContentValue() const { return m_JustifyContentValue; }
+    void justifyContentValue(uint8_t value)
     {
         if (m_JustifyContentValue == value)
         {
@@ -715,8 +706,8 @@
         notifyPropertyChanged(justifyContentValuePropertyKey);
     }
 
-    inline uint32_t flexWrapValue() const { return m_FlexWrapValue; }
-    void flexWrapValue(uint32_t value)
+    inline uint8_t flexWrapValue() const { return m_FlexWrapValue; }
+    void flexWrapValue(uint8_t value)
     {
         if (m_FlexWrapValue == value)
         {
@@ -727,8 +718,8 @@
         notifyPropertyChanged(flexWrapValuePropertyKey);
     }
 
-    inline uint32_t overflowValue() const { return m_OverflowValue; }
-    void overflowValue(uint32_t value)
+    inline uint8_t overflowValue() const { return m_OverflowValue; }
+    void overflowValue(uint8_t value)
     {
         if (m_OverflowValue == value)
         {
@@ -754,8 +745,8 @@
         notifyPropertyChanged(intrinsicallySizedValuePropertyKey);
     }
 
-    inline uint32_t widthUnitsValue() const { return m_WidthUnitsValue; }
-    void widthUnitsValue(uint32_t value)
+    inline uint8_t widthUnitsValue() const { return m_WidthUnitsValue; }
+    void widthUnitsValue(uint8_t value)
     {
         if (m_WidthUnitsValue == value)
         {
@@ -766,8 +757,8 @@
         notifyPropertyChanged(widthUnitsValuePropertyKey);
     }
 
-    inline uint32_t heightUnitsValue() const { return m_HeightUnitsValue; }
-    void heightUnitsValue(uint32_t value)
+    inline uint8_t heightUnitsValue() const { return m_HeightUnitsValue; }
+    void heightUnitsValue(uint8_t value)
     {
         if (m_HeightUnitsValue == value)
         {
@@ -778,11 +769,11 @@
         notifyPropertyChanged(heightUnitsValuePropertyKey);
     }
 
-    inline uint32_t borderLeftUnitsValue() const
+    inline uint8_t borderLeftUnitsValue() const
     {
         return m_BorderLeftUnitsValue;
     }
-    void borderLeftUnitsValue(uint32_t value)
+    void borderLeftUnitsValue(uint8_t value)
     {
         if (m_BorderLeftUnitsValue == value)
         {
@@ -793,11 +784,11 @@
         notifyPropertyChanged(borderLeftUnitsValuePropertyKey);
     }
 
-    inline uint32_t borderRightUnitsValue() const
+    inline uint8_t borderRightUnitsValue() const
     {
         return m_BorderRightUnitsValue;
     }
-    void borderRightUnitsValue(uint32_t value)
+    void borderRightUnitsValue(uint8_t value)
     {
         if (m_BorderRightUnitsValue == value)
         {
@@ -808,11 +799,8 @@
         notifyPropertyChanged(borderRightUnitsValuePropertyKey);
     }
 
-    inline uint32_t borderTopUnitsValue() const
-    {
-        return m_BorderTopUnitsValue;
-    }
-    void borderTopUnitsValue(uint32_t value)
+    inline uint8_t borderTopUnitsValue() const { return m_BorderTopUnitsValue; }
+    void borderTopUnitsValue(uint8_t value)
     {
         if (m_BorderTopUnitsValue == value)
         {
@@ -823,11 +811,11 @@
         notifyPropertyChanged(borderTopUnitsValuePropertyKey);
     }
 
-    inline uint32_t borderBottomUnitsValue() const
+    inline uint8_t borderBottomUnitsValue() const
     {
         return m_BorderBottomUnitsValue;
     }
-    void borderBottomUnitsValue(uint32_t value)
+    void borderBottomUnitsValue(uint8_t value)
     {
         if (m_BorderBottomUnitsValue == value)
         {
@@ -838,11 +826,11 @@
         notifyPropertyChanged(borderBottomUnitsValuePropertyKey);
     }
 
-    inline uint32_t marginLeftUnitsValue() const
+    inline uint8_t marginLeftUnitsValue() const
     {
         return m_MarginLeftUnitsValue;
     }
-    void marginLeftUnitsValue(uint32_t value)
+    void marginLeftUnitsValue(uint8_t value)
     {
         if (m_MarginLeftUnitsValue == value)
         {
@@ -853,11 +841,11 @@
         notifyPropertyChanged(marginLeftUnitsValuePropertyKey);
     }
 
-    inline uint32_t marginRightUnitsValue() const
+    inline uint8_t marginRightUnitsValue() const
     {
         return m_MarginRightUnitsValue;
     }
-    void marginRightUnitsValue(uint32_t value)
+    void marginRightUnitsValue(uint8_t value)
     {
         if (m_MarginRightUnitsValue == value)
         {
@@ -868,11 +856,8 @@
         notifyPropertyChanged(marginRightUnitsValuePropertyKey);
     }
 
-    inline uint32_t marginTopUnitsValue() const
-    {
-        return m_MarginTopUnitsValue;
-    }
-    void marginTopUnitsValue(uint32_t value)
+    inline uint8_t marginTopUnitsValue() const { return m_MarginTopUnitsValue; }
+    void marginTopUnitsValue(uint8_t value)
     {
         if (m_MarginTopUnitsValue == value)
         {
@@ -883,11 +868,11 @@
         notifyPropertyChanged(marginTopUnitsValuePropertyKey);
     }
 
-    inline uint32_t marginBottomUnitsValue() const
+    inline uint8_t marginBottomUnitsValue() const
     {
         return m_MarginBottomUnitsValue;
     }
-    void marginBottomUnitsValue(uint32_t value)
+    void marginBottomUnitsValue(uint8_t value)
     {
         if (m_MarginBottomUnitsValue == value)
         {
@@ -898,11 +883,11 @@
         notifyPropertyChanged(marginBottomUnitsValuePropertyKey);
     }
 
-    inline uint32_t paddingLeftUnitsValue() const
+    inline uint8_t paddingLeftUnitsValue() const
     {
         return m_PaddingLeftUnitsValue;
     }
-    void paddingLeftUnitsValue(uint32_t value)
+    void paddingLeftUnitsValue(uint8_t value)
     {
         if (m_PaddingLeftUnitsValue == value)
         {
@@ -913,11 +898,11 @@
         notifyPropertyChanged(paddingLeftUnitsValuePropertyKey);
     }
 
-    inline uint32_t paddingRightUnitsValue() const
+    inline uint8_t paddingRightUnitsValue() const
     {
         return m_PaddingRightUnitsValue;
     }
-    void paddingRightUnitsValue(uint32_t value)
+    void paddingRightUnitsValue(uint8_t value)
     {
         if (m_PaddingRightUnitsValue == value)
         {
@@ -928,11 +913,11 @@
         notifyPropertyChanged(paddingRightUnitsValuePropertyKey);
     }
 
-    inline uint32_t paddingTopUnitsValue() const
+    inline uint8_t paddingTopUnitsValue() const
     {
         return m_PaddingTopUnitsValue;
     }
-    void paddingTopUnitsValue(uint32_t value)
+    void paddingTopUnitsValue(uint8_t value)
     {
         if (m_PaddingTopUnitsValue == value)
         {
@@ -943,11 +928,11 @@
         notifyPropertyChanged(paddingTopUnitsValuePropertyKey);
     }
 
-    inline uint32_t paddingBottomUnitsValue() const
+    inline uint8_t paddingBottomUnitsValue() const
     {
         return m_PaddingBottomUnitsValue;
     }
-    void paddingBottomUnitsValue(uint32_t value)
+    void paddingBottomUnitsValue(uint8_t value)
     {
         if (m_PaddingBottomUnitsValue == value)
         {
@@ -958,11 +943,11 @@
         notifyPropertyChanged(paddingBottomUnitsValuePropertyKey);
     }
 
-    inline uint32_t positionLeftUnitsValue() const
+    inline uint8_t positionLeftUnitsValue() const
     {
         return m_PositionLeftUnitsValue;
     }
-    void positionLeftUnitsValue(uint32_t value)
+    void positionLeftUnitsValue(uint8_t value)
     {
         if (m_PositionLeftUnitsValue == value)
         {
@@ -973,11 +958,11 @@
         notifyPropertyChanged(positionLeftUnitsValuePropertyKey);
     }
 
-    inline uint32_t positionRightUnitsValue() const
+    inline uint8_t positionRightUnitsValue() const
     {
         return m_PositionRightUnitsValue;
     }
-    void positionRightUnitsValue(uint32_t value)
+    void positionRightUnitsValue(uint8_t value)
     {
         if (m_PositionRightUnitsValue == value)
         {
@@ -988,11 +973,11 @@
         notifyPropertyChanged(positionRightUnitsValuePropertyKey);
     }
 
-    inline uint32_t positionTopUnitsValue() const
+    inline uint8_t positionTopUnitsValue() const
     {
         return m_PositionTopUnitsValue;
     }
-    void positionTopUnitsValue(uint32_t value)
+    void positionTopUnitsValue(uint8_t value)
     {
         if (m_PositionTopUnitsValue == value)
         {
@@ -1003,11 +988,11 @@
         notifyPropertyChanged(positionTopUnitsValuePropertyKey);
     }
 
-    inline uint32_t positionBottomUnitsValue() const
+    inline uint8_t positionBottomUnitsValue() const
     {
         return m_PositionBottomUnitsValue;
     }
-    void positionBottomUnitsValue(uint32_t value)
+    void positionBottomUnitsValue(uint8_t value)
     {
         if (m_PositionBottomUnitsValue == value)
         {
@@ -1018,11 +1003,11 @@
         notifyPropertyChanged(positionBottomUnitsValuePropertyKey);
     }
 
-    inline uint32_t gapHorizontalUnitsValue() const
+    inline uint8_t gapHorizontalUnitsValue() const
     {
         return m_GapHorizontalUnitsValue;
     }
-    void gapHorizontalUnitsValue(uint32_t value)
+    void gapHorizontalUnitsValue(uint8_t value)
     {
         if (m_GapHorizontalUnitsValue == value)
         {
@@ -1033,11 +1018,11 @@
         notifyPropertyChanged(gapHorizontalUnitsValuePropertyKey);
     }
 
-    inline uint32_t gapVerticalUnitsValue() const
+    inline uint8_t gapVerticalUnitsValue() const
     {
         return m_GapVerticalUnitsValue;
     }
-    void gapVerticalUnitsValue(uint32_t value)
+    void gapVerticalUnitsValue(uint8_t value)
     {
         if (m_GapVerticalUnitsValue == value)
         {
@@ -1048,8 +1033,8 @@
         notifyPropertyChanged(gapVerticalUnitsValuePropertyKey);
     }
 
-    inline uint32_t minWidthUnitsValue() const { return m_MinWidthUnitsValue; }
-    void minWidthUnitsValue(uint32_t value)
+    inline uint8_t minWidthUnitsValue() const { return m_MinWidthUnitsValue; }
+    void minWidthUnitsValue(uint8_t value)
     {
         if (m_MinWidthUnitsValue == value)
         {
@@ -1060,11 +1045,8 @@
         notifyPropertyChanged(minWidthUnitsValuePropertyKey);
     }
 
-    inline uint32_t minHeightUnitsValue() const
-    {
-        return m_MinHeightUnitsValue;
-    }
-    void minHeightUnitsValue(uint32_t value)
+    inline uint8_t minHeightUnitsValue() const { return m_MinHeightUnitsValue; }
+    void minHeightUnitsValue(uint8_t value)
     {
         if (m_MinHeightUnitsValue == value)
         {
@@ -1075,8 +1057,8 @@
         notifyPropertyChanged(minHeightUnitsValuePropertyKey);
     }
 
-    inline uint32_t maxWidthUnitsValue() const { return m_MaxWidthUnitsValue; }
-    void maxWidthUnitsValue(uint32_t value)
+    inline uint8_t maxWidthUnitsValue() const { return m_MaxWidthUnitsValue; }
+    void maxWidthUnitsValue(uint8_t value)
     {
         if (m_MaxWidthUnitsValue == value)
         {
@@ -1087,11 +1069,8 @@
         notifyPropertyChanged(maxWidthUnitsValuePropertyKey);
     }
 
-    inline uint32_t maxHeightUnitsValue() const
-    {
-        return m_MaxHeightUnitsValue;
-    }
-    void maxHeightUnitsValue(uint32_t value)
+    inline uint8_t maxHeightUnitsValue() const { return m_MaxHeightUnitsValue; }
+    void maxHeightUnitsValue(uint8_t value)
     {
         if (m_MaxHeightUnitsValue == value)
         {
@@ -1191,15 +1170,15 @@
         m_FlexGrow = object.m_FlexGrow;
         m_FlexShrink = object.m_FlexShrink;
         m_FlexBasis = object.m_FlexBasis;
-        m_FlexBasisUnitsValue = object.m_FlexBasisUnitsValue;
         m_AspectRatio = object.m_AspectRatio;
+        m_InterpolatorId = object.m_InterpolatorId;
+        m_InterpolationTime = object.m_InterpolationTime;
+        m_FlexBasisUnitsValue = object.m_FlexBasisUnitsValue;
         m_LayoutWidthScaleType = object.m_LayoutWidthScaleType;
         m_LayoutHeightScaleType = object.m_LayoutHeightScaleType;
         m_LayoutAlignmentType = object.m_LayoutAlignmentType;
         m_AnimationStyleType = object.m_AnimationStyleType;
         m_InterpolationType = object.m_InterpolationType;
-        m_InterpolatorId = object.m_InterpolatorId;
-        m_InterpolationTime = object.m_InterpolationTime;
         m_DisplayValue = object.m_DisplayValue;
         m_PositionTypeValue = object.m_PositionTypeValue;
         m_FlexDirectionValue = object.m_FlexDirectionValue;
@@ -1325,12 +1304,18 @@
             case flexBasisPropertyKey:
                 m_FlexBasis = CoreDoubleType::deserialize(reader);
                 return true;
-            case flexBasisUnitsValuePropertyKey:
-                m_FlexBasisUnitsValue = CoreUintType::deserialize(reader);
-                return true;
             case aspectRatioPropertyKey:
                 m_AspectRatio = CoreDoubleType::deserialize(reader);
                 return true;
+            case interpolatorIdPropertyKey:
+                m_InterpolatorId = CoreUintType::deserialize(reader);
+                return true;
+            case interpolationTimePropertyKey:
+                m_InterpolationTime = CoreDoubleType::deserialize(reader);
+                return true;
+            case flexBasisUnitsValuePropertyKey:
+                m_FlexBasisUnitsValue = CoreUintType::deserialize(reader);
+                return true;
             case layoutWidthScaleTypePropertyKey:
                 m_LayoutWidthScaleType = CoreUintType::deserialize(reader);
                 return true;
@@ -1346,12 +1331,6 @@
             case interpolationTypePropertyKey:
                 m_InterpolationType = CoreUintType::deserialize(reader);
                 return true;
-            case interpolatorIdPropertyKey:
-                m_InterpolatorId = CoreUintType::deserialize(reader);
-                return true;
-            case interpolationTimePropertyKey:
-                m_InterpolationTime = CoreDoubleType::deserialize(reader);
-                return true;
             case displayValuePropertyKey:
                 m_DisplayValue = CoreUintType::deserialize(reader);
                 return true;
@@ -1503,15 +1482,15 @@
     virtual void flexGrowChanged() {}
     virtual void flexShrinkChanged() {}
     virtual void flexBasisChanged() {}
-    virtual void flexBasisUnitsValueChanged() {}
     virtual void aspectRatioChanged() {}
+    virtual void interpolatorIdChanged() {}
+    virtual void interpolationTimeChanged() {}
+    virtual void flexBasisUnitsValueChanged() {}
     virtual void layoutWidthScaleTypeChanged() {}
     virtual void layoutHeightScaleTypeChanged() {}
     virtual void layoutAlignmentTypeChanged() {}
     virtual void animationStyleTypeChanged() {}
     virtual void interpolationTypeChanged() {}
-    virtual void interpolatorIdChanged() {}
-    virtual void interpolationTimeChanged() {}
     virtual void displayValueChanged() {}
     virtual void positionTypeValueChanged() {}
     virtual void flexDirectionValueChanged() {}
diff --git a/include/rive/generated/text/text_base.hpp b/include/rive/generated/text/text_base.hpp
index 0b60cf1..404db2a 100644
--- a/include/rive/generated/text/text_base.hpp
+++ b/include/rive/generated/text/text_base.hpp
@@ -238,6 +238,7 @@
         }
         m_VerticalTrimValue = value;
         verticalTrimValueChanged();
+        notifyPropertyChanged(verticalTrimValuePropertyKey);
     }
 
     Core* clone() const override;