diff --git a/package-lock.json b/package-lock.json index c90af1f3..7aea5cf1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8356,6 +8356,11 @@ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, "lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", diff --git a/package.json b/package.json index 6fe3fd18..71bad716 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "lodash.capitalize": "^4.2.1", "lodash.clamp": "^4.0.3", "lodash.clonedeep": "^4.5.0", + "lodash.get": "^4.4.2", "lodash.isequal": "^4.5.0", "lodash.throttle": "^4.1.1", "mapbox-gl": "^0.53.1", diff --git a/src/components/App.jsx b/src/components/App.jsx index f0573de3..cc598f5c 100644 --- a/src/components/App.jsx +++ b/src/components/App.jsx @@ -2,6 +2,7 @@ import autoBind from 'react-autobind'; import React from 'react' import cloneDeep from 'lodash.clonedeep' import clamp from 'lodash.clamp' +import get from 'lodash.get' import {arrayMove} from 'react-sortable-hoc' import url from 'url' @@ -279,6 +280,27 @@ export default class App extends React.Component { }) } + onChangeMetadataProperty = (property, value) => { + // If we're changing renderer reset the map state. + if ( + property === 'maputnik:renderer' && + value !== get(this.state.mapStyle, ['metadata', 'maputnik:renderer'], 'mbgljs') + ) { + this.setState({ + mapState: 'map' + }); + } + + const changedStyle = { + ...this.state.mapStyle, + metadata: { + ...this.state.mapStyle.metadata, + [property]: value + } + } + this.onStyleChanged(changedStyle) + } + onStyleChanged = (newStyle, save=true) => { const errors = validate(newStyle, latest) @@ -634,6 +656,7 @@ export default class App extends React.Component { @@ -86,7 +77,7 @@ class SettingsModal extends React.Component { @@ -94,7 +85,7 @@ class SettingsModal extends React.Component { @@ -106,7 +97,7 @@ class SettingsModal extends React.Component { ['ol', 'Open Layers (experimental)'], ]} value={metadata['maputnik:renderer'] || 'mbgljs'} - onChange={this.changeMetadataProperty.bind(this, 'maputnik:renderer')} + onChange={onChangeMetadataProperty.bind(this, 'maputnik:renderer')} />