import React from 'react' import PropTypes from 'prop-types' import { saveAs } from 'file-saver' import * as styleSpec from '@mapbox/mapbox-gl-style-spec/style-spec' import InputBlock from '../inputs/InputBlock' import StringInput from '../inputs/StringInput' import CheckboxInput from '../inputs/CheckboxInput' import Button from '../Button' import Modal from './Modal' import MdFileDownload from 'react-icons/lib/md/file-download' import TiClipboard from 'react-icons/lib/ti/clipboard' import style from '../../libs/style' function stripAccessTokens(mapStyle) { const changedMetadata = { ...mapStyle.metadata } delete changedMetadata['maputnik:mapbox_access_token'] delete changedMetadata['maputnik:openmaptiles_access_token'] return { ...mapStyle, metadata: changedMetadata } } class ExportModal extends React.Component { static propTypes = { mapStyle: PropTypes.object.isRequired, onStyleChanged: PropTypes.func.isRequired, isOpen: PropTypes.bool.isRequired, onOpenToggle: PropTypes.func.isRequired, } constructor(props) { super(props); } downloadStyle() { const tokenStyle = styleSpec.format(stripAccessTokens(style.replaceAccessTokens(this.props.mapStyle))); const blob = new Blob([tokenStyle], {type: "application/json;charset=utf-8"}); saveAs(blob, this.props.mapStyle.id + ".json"); } changeMetadataProperty(property, value) { const changedStyle = { ...this.props.mapStyle, metadata: { ...this.props.mapStyle.metadata, [property]: value } } this.props.onStyleChanged(changedStyle) } render() { return

Download Style

Download a JSON style to your computer.

} } export default ExportModal