Spaces:
Sleeping
Sleeping
| // @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; | |
| } | |