Spaces:
Sleeping
Sleeping
File size: 1,150 Bytes
4a288a7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | // @flow
import {
eachLayer,
eachProperty
} from '../visit';
import {isExpression} from '../expression';
import convertFunction, {convertTokenString} from '../function/convert';
import convertFilter from '../feature_filter/convert';
import type {StyleSpecification} from '../types';
/**
* Migrate the given style object in place to use expressions. Specifically,
* this will convert (a) "stop" functions, and (b) legacy filters to their
* expression equivalents.
*/
export default function(style: StyleSpecification) {
const converted = [];
eachLayer(style, (layer) => {
if (layer.filter) {
layer.filter = (convertFilter(layer.filter): any);
}
});
eachProperty(style, {paint: true, layout: true}, ({path, value, reference, set}) => {
if (isExpression(value)) return;
if (typeof value === 'object' && !Array.isArray(value)) {
set(convertFunction(value, reference));
converted.push(path.join('.'));
} else if (reference.tokens && typeof value === 'string') {
set(convertTokenString(value));
}
});
return style;
}
|