import React from 'react' import PropTypes from 'prop-types' import Slugify from 'slugify' import { saveAs } from 'file-saver' import {format} from '@mapbox/mapbox-gl-style-spec' import FieldString from './FieldString' import FieldCheckbox from './FieldCheckbox' import InputButton from './InputButton' import Modal from './Modal' import {MdFileDownload} from 'react-icons/md' import style from '../libs/style' import fieldSpecAdditional from '../libs/field-spec-additional' export default class ModalExport 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 = format( style.stripAccessTokens( style.replaceAccessTokens(this.props.mapStyle) ) ); const blob = new Blob([tokenStyle], {type: "application/json;charset=utf-8"}); let exportName; if(this.props.mapStyle.name) { exportName = Slugify(this.props.mapStyle.name, { replacement: '_', lower: true }) } else { exportName = this.props.mapStyle.id } saveAs(blob, exportName + ".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.

Download
} }