11import UnitBezier from '@mapbox/unitbezier' ;
22
33import interpolate from '../../util/interpolate' ;
4- import { array , ArrayType , ColorType , ColorTypeT , NumberType , NumberTypeT , PaddingType , PaddingTypeT , VariableAnchorOffsetCollectionType , VariableAnchorOffsetCollectionTypeT , toString , verifyType } from '../types' ;
4+ import { array , ArrayType , ColorType , ProjectionTypeT , ColorTypeT , NumberType , NumberTypeT , PaddingType , PaddingTypeT , VariableAnchorOffsetCollectionType , VariableAnchorOffsetCollectionTypeT , toString , verifyType , ProjectionType } from '../types' ;
55import { findStopLessThanOrEqualTo } from '../stops' ;
66
77import type { Stops } from '../stops' ;
@@ -19,18 +19,18 @@ export type InterpolationType = {
1919 name : 'cubic-bezier' ;
2020 controlPoints : [ number , number , number , number ] ;
2121} ;
22- type InterpolatedValueType = NumberTypeT | ColorTypeT | PaddingTypeT | VariableAnchorOffsetCollectionTypeT | ArrayType < NumberTypeT > ;
22+ type InterpolatedValueType = NumberTypeT | ColorTypeT | ProjectionTypeT | PaddingTypeT | VariableAnchorOffsetCollectionTypeT | ArrayType < NumberTypeT > ;
2323
2424class Interpolate implements Expression {
2525 type : InterpolatedValueType ;
2626
27- operator : 'interpolate' | 'interpolate-hcl' | 'interpolate-lab' ;
27+ operator : 'interpolate' | 'interpolate-hcl' | 'interpolate-lab' | 'interpolate-projection' ;
2828 interpolation : InterpolationType ;
2929 input : Expression ;
3030 labels : Array < number > ;
3131 outputs : Array < Expression > ;
3232
33- constructor ( type : InterpolatedValueType , operator : 'interpolate' | 'interpolate-hcl' | 'interpolate-lab' , interpolation : InterpolationType , input : Expression , stops : Stops ) {
33+ constructor ( type : InterpolatedValueType , operator : 'interpolate' | 'interpolate-hcl' | 'interpolate-lab' | 'interpolate-projection' , interpolation : InterpolationType , input : Expression , stops : Stops ) {
3434 this . type = type ;
3535 this . operator = operator ;
3636 this . interpolation = interpolation ;
@@ -135,6 +135,7 @@ class Interpolate implements Expression {
135135
136136 if ( ! verifyType ( outputType , NumberType ) &&
137137 ! verifyType ( outputType , ColorType ) &&
138+ ! verifyType ( outputType , ProjectionType ) &&
138139 ! verifyType ( outputType , PaddingType ) &&
139140 ! verifyType ( outputType , VariableAnchorOffsetCollectionType ) &&
140141 ! verifyType ( outputType , array ( NumberType ) )
@@ -174,6 +175,8 @@ class Interpolate implements Expression {
174175 switch ( this . operator ) {
175176 case 'interpolate' :
176177 return interpolate [ this . type . kind ] ( outputLower , outputUpper , t ) ;
178+ case 'interpolate-projection' :
179+ return interpolate . projection ( outputLower , outputUpper , t ) ;
177180 case 'interpolate-hcl' :
178181 return interpolate . color ( outputLower , outputUpper , t , 'hcl' ) ;
179182 case 'interpolate-lab' :
0 commit comments