static int AdjustDisplayIndexForTransitions(int index, StylePropertyManipulator manipulator)
        {
            var valueCount = manipulator.GetValuesCount();

            if (index < valueCount ||
                !StylePropertyUtil.s_NameToId.TryGetValue(manipulator.propertyName, out var id) ||
                !id.IsTransitionId())
            {
                return(index);
            }

            switch (id)
            {
            case StylePropertyId.TransitionProperty:
                index = -1;
                break;

            case StylePropertyId.TransitionDuration:
                index %= manipulator.GetValuesCount();
                break;

            case StylePropertyId.TransitionTimingFunction:
                index %= manipulator.GetValuesCount();
                break;

            case StylePropertyId.TransitionDelay:
                index %= manipulator.GetValuesCount();
                break;
            }

            return(index);
        }
        internal static StylePropertyManipulator GetStylePropertyManipulator(
            this StyleSheet styleSheet,
            VisualElement element,
            StyleRule rule,
            string propertyName,
            bool editorExtensionMode)
        {
            if (string.IsNullOrEmpty(propertyName))
            {
                return(null);
            }

            var manipulator = StylePropertyManipulator.GetPooled();

            manipulator.element             = element;
            manipulator.styleSheet          = styleSheet;
            manipulator.propertyName        = propertyName;
            manipulator.styleRule           = rule;
            manipulator.editorExtensionMode = editorExtensionMode;

            var property = manipulator.styleProperty;

            if (null == property)
            {
                return(manipulator);
            }

            for (var i = 0; i < property.values.Length; ++i)
            {
                var index     = i;
                var valueInfo = StylePropertyManipulator.ResolveValueOrVariable(styleSheet, element, rule, property, ref i, editorExtensionMode);
                valueInfo.offset = index;
                manipulator.stylePropertyParts.Add(valueInfo);
            }

            return(manipulator);
        }
 bool IsKeyword(StylePropertyManipulator manipulator)
 {
     return(manipulator.GetValuesCount() == 1 &&
            manipulator.GetValueContextAtIndex(0).handle.valueType == StyleValueType.Keyword);
 }