{"version":3,"file":"expressions.mjs","names":[],"sources":["../../src/migrate/expressions.ts"],"sourcesContent":["import {eachLayer, eachProperty} from '../visit';\nimport {isExpression} from '../expression';\nimport {convertFunction, convertTokenString} from '../function/convert';\nimport {convertFilter} from '../feature_filter/convert';\n\nimport type {FilterSpecification, LayerSpecification, StyleSpecification} from '../types.g';\n\n/**\n * Migrate the given style object in place to use expressions. Specifically,\n * this will convert (a) \"stop\" functions, and (b) legacy filters to their\n * expression equivalents.\n * @param style The style object to migrate.\n * @returns The migrated style object.\n */\nexport function expressions(style: StyleSpecification) {\n const converted = [];\n\n eachLayer(style, (layer: LayerSpecification & {filter?: FilterSpecification}) => {\n if (layer.filter) {\n layer.filter = convertFilter(layer.filter);\n }\n });\n\n eachProperty(style, {paint: true, layout: true}, ({path, key, value, reference, set}) => {\n if (isExpression(value) || key.endsWith('-transition') || reference === null) return;\n if (typeof value === 'object' && !Array.isArray(value)) {\n set(convertFunction(value, reference));\n converted.push(path.join('.'));\n } else if ((reference as any).tokens && typeof value === 'string') {\n set(convertTokenString(value));\n }\n });\n\n return style;\n}\n"],"mappings":";;;;;;;;;;;;AAcA,SAAgB,YAAY,OAA2B;CACnD,MAAM,YAAY,CAAC;CAEnB,UAAU,QAAQ,UAA+D;EAC7E,IAAI,MAAM,QACN,MAAM,SAAS,cAAc,MAAM,MAAM;CAEjD,CAAC;CAED,aAAa,OAAO;EAAC,OAAO;EAAM,QAAQ;CAAI,IAAI,EAAC,MAAM,KAAK,OAAO,WAAW,UAAS;EACrF,IAAI,aAAa,KAAK,KAAK,IAAI,SAAS,aAAa,KAAK,cAAc,MAAM;EAC9E,IAAI,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,GAAG;GACpD,IAAI,gBAAgB,OAAO,SAAS,CAAC;GACrC,UAAU,KAAK,KAAK,KAAK,GAAG,CAAC;EACjC,OAAO,IAAK,UAAkB,UAAU,OAAO,UAAU,UACrD,IAAI,mBAAmB,KAAK,CAAC;CAErC,CAAC;CAED,OAAO;AACX"}