diff --git a/src/components/fields/FunctionSpecField.jsx b/src/components/fields/FunctionSpecField.jsx
index fb12a45b..e5a45375 100644
--- a/src/components/fields/FunctionSpecField.jsx
+++ b/src/components/fields/FunctionSpecField.jsx
@@ -5,6 +5,7 @@ import SpecProperty from './_SpecProperty'
import DataProperty from './_DataProperty'
import ZoomProperty from './_ZoomProperty'
import ExpressionProperty from './_ExpressionProperty'
+import {function as styleFunction} from '@mapbox/mapbox-gl-style-spec';
function isLiteralExpression (value) {
@@ -218,7 +219,15 @@ export default class FunctionSpecProperty extends React.Component {
}
makeExpression = () => {
- const expression = ["literal", this.props.value || this.props.fieldSpec.default];
+ const {value, fieldSpec} = this.props;
+ let expression;
+
+ if (typeof(value) === "object" && 'stops' in value) {
+ expression = styleFunction.convertFunction(value, fieldSpec);
+ }
+ else {
+ expression = ["literal", value || this.props.fieldSpec.default];
+ }
this.props.onChange(this.props.fieldName, expression);
}
@@ -277,6 +286,7 @@ export default class FunctionSpecProperty extends React.Component {
value={this.props.value}
onDeleteStop={this.deleteStop}
onAddStop={this.addStop}
+ onExpressionClick={this.makeExpression}
/>
)
}
@@ -291,6 +301,7 @@ export default class FunctionSpecProperty extends React.Component {
value={this.props.value}
onDeleteStop={this.deleteStop}
onAddStop={this.addStop}
+ onExpressionClick={this.makeExpression}
/>
)
}
diff --git a/src/components/fields/_DataProperty.jsx b/src/components/fields/_DataProperty.jsx
index f3cef010..7503d62c 100644
--- a/src/components/fields/_DataProperty.jsx
+++ b/src/components/fields/_DataProperty.jsx
@@ -269,6 +269,12 @@ export default class DataProperty extends React.Component {
>
Add stop
+
}
}
diff --git a/src/components/fields/_ZoomProperty.jsx b/src/components/fields/_ZoomProperty.jsx
index 21bb7f7b..3db421f2 100644
--- a/src/components/fields/_ZoomProperty.jsx
+++ b/src/components/fields/_ZoomProperty.jsx
@@ -177,6 +177,12 @@ export default class ZoomProperty extends React.Component {
>
Add stop
+
}
}