Garbage collect properties when change type #42

This commit is contained in:
Lukas Martinelli
2016-12-30 16:47:47 +01:00
parent 1d7768e37c
commit 7b631b0510
3 changed files with 39 additions and 6 deletions

24
src/libs/layer.js Normal file
View File

@@ -0,0 +1,24 @@
import GlSpec from 'mapbox-gl-style-spec/reference/latest.js'
export function changeType(layer, newType) {
const changedPaintProps = { ...layer.paint }
Object.keys(changedPaintProps).forEach(propertyName => {
if(!(propertyName in GlSpec['paint_' + newType])) {
delete changedPaintProps[propertyName]
}
})
const changedLayoutProps = { ...layer.layout }
Object.keys(changedLayoutProps).forEach(propertyName => {
if(!(propertyName in GlSpec['layout_' + newType])) {
delete changedLayoutProps[propertyName]
}
})
return {
...layer,
paint: changedPaintProps,
layout: changedLayoutProps,
type: newType,
}
}