| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | import React, { Component } from 'react';import PropTypes from 'prop-types';import $ from 'jquery';import './vector-map.scss';/** Wrapper component for jquery-vectormap plugin */class VectorMap extends Component {    static propTypes = {        /** series entry of options object */        series: PropTypes.object.isRequired,        /** markers entry of options object */        markers: PropTypes.array.isRequired,        /** jvectormap options object */        options: PropTypes.object.isRequired,        /** height of the container element */        height: PropTypes.string    }    static defaultProps = {        height: '300px'    }    componentDidMount() {        // jquery Vector Map        require('ika.jvectormap/jquery-jvectormap-1.2.2.min.js');        require('ika.jvectormap/jquery-jvectormap-world-mill-en.js');        require('ika.jvectormap/jquery-jvectormap-us-mill-en.js');        require('ika.jvectormap/jquery-jvectormap-1.2.2.css');        require('@/components/Maps/jquery-jvectormap.id.js');        window.requestAnimationFrame(() => this.drawMap());    }    drawMap() {        this.props.options.markers = this.props.markers;        this.props.options.series = this.props.series;        $(this.mapElement).vectorMap(this.props.options);    }    componentWillUnmount() {        const map = $(this.mapElement).vectorMap('get', 'mapObject');        map.remove()    }    setRef = node => this.mapElement = node    render() {        return (            <div ref={this.setRef} style={{ height: this.props.height }} />        )    }}export default VectorMap;
 |