TJSPositionDataRelative: Partial<{
    [P in keyof TJSPositionData as P extends AnimationKey
        ? P
        : never]: TJSPositionData[P] | string
} & {
    [P in keyof TJSPositionData as P extends AnimationKey
        ? never
        : P]: TJSPositionData[P]
}> & {
    [key: string]: any;
}

Defines an extension to Data.TJSPositionData where each animatable property defined by AnimationAPI.AnimationKey can also be a string. Relative adjustments to animatable properties should be a string the form of '+=', '-=', or '*=' and float / numeric value. IE '+=0.2'. TJSPosition.set will apply the addition, subtraction, or multiplication operation specified against the current value of the given property. Various unit types are also supported including: %, %~, px, rad, turn:

- `no unit type` - The natural value for each property is adjusted which may be `px` for properties like `width`
or degrees for rotation based properties.

- `%`: Properties such as `width` are calculated against the parent elements client bounds. Other properties such
as rotation are a percentage bound by 360 degrees.

- `%~`: Relative percentage. Properties are calculated as a percentage of the current value of the property.
IE `width: '150%~` results in `150%` of the current width value.

- `px`: Only properties that support `px` will be adjusted all other properties like rotation will be rejected
with a warning.

- `rad`: Only rotation properties may be specified and the rotation is performed in `radians`.

- `turn`: Only rotation properties may be specified and rotation is performed in respect to the `turn` CSS
specification. `1turn` is 360 degrees. `0.25turn` is 90 degrees.

Additional properties may be added that are not specified by TJSPositionData and are forwarded through ValidatorAPI.ValidationData as the rest property allowing extra data to be sent to any custom validator.