├── .prettierrc
├── .gitignore
├── .travis.yml
├── src
├── .babelrc
├── leaflet.js
├── LeafletModel.js
├── LeafletView.js
└── LeafletCoordSys.js
├── example
├── package.json
├── leaflet-single-layer.html
├── yarn.lock
├── package-lock.json
├── single-layer.js
└── leaflet-multiple-layers.html
├── .eslintrc.json
├── package.json
├── LICENSE
├── rollup.config.js
├── README.md
├── dist
├── echarts-leaflet.esm.js
└── echarts-leaflet.js
└── yarn.lock
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true
3 | }
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .DS_Store
3 | .project
4 | .cache
5 | example/dist
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - "8"
4 |
5 | script:
6 | - npm run lint
--------------------------------------------------------------------------------
/src/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["env", {
4 | "modules": false
5 | }]
6 | ],
7 | "plugins": ["external-helpers"]
8 | }
--------------------------------------------------------------------------------
/example/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "example",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "license": "MIT",
6 | "dependencies": {
7 | "echarts": "^3.8.5",
8 | "echarts-leaflet": "^1.0.0",
9 | "leaflet": "^1.3.1"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "browser": true,
4 | "es6": true
5 | },
6 | "parserOptions": {
7 | "sourceType": "module"
8 | },
9 | "rules": {
10 | "indent": ["error", 2],
11 | "object-curly-spacing": ["error", "always"]
12 | },
13 | "extends": "google"
14 | }
--------------------------------------------------------------------------------
/example/leaflet-single-layer.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 |
8 |
9 |
10 |
11 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/example/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | echarts-leaflet@^1.0.0:
6 | version "1.0.0"
7 | resolved "https://registry.yarnpkg.com/echarts-leaflet/-/echarts-leaflet-1.0.0.tgz#f021fd0a1125402621ef285b2d48ebacdc956927"
8 |
9 | echarts@^3.8.5:
10 | version "3.8.5"
11 | resolved "https://registry.yarnpkg.com/echarts/-/echarts-3.8.5.tgz#58e4a51d2743c6fb75257b0dc0a9cf9f5378ac0e"
12 | dependencies:
13 | zrender "3.7.4"
14 |
15 | leaflet@^1.3.1:
16 | version "1.3.1"
17 | resolved "https://registry.yarnpkg.com/leaflet/-/leaflet-1.3.1.tgz#86f336d2fb0e2d0ff446677049a5dc34cf0ea60e"
18 |
19 | zrender@3.7.4:
20 | version "3.7.4"
21 | resolved "https://registry.yarnpkg.com/zrender/-/zrender-3.7.4.tgz#f847d53948481ef6d42906d1ea9aeec7acbefdf2"
22 |
--------------------------------------------------------------------------------
/src/leaflet.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Leftlet component extension
3 | */
4 |
5 | import echarts from 'echarts/lib/echarts';
6 | import LeafletCoordSys from './LeafletCoordSys';
7 |
8 | import './LeafletModel';
9 | import './LeafletView';
10 |
11 | echarts.registerCoordinateSystem('leaflet', LeafletCoordSys);
12 |
13 | echarts.registerAction(
14 | {
15 | type: 'leafletRoam',
16 | event: 'leafletRoam',
17 | update: 'updateLayout',
18 | },
19 | function(payload, ecModel) {
20 | ecModel.eachComponent('leaflet', function(leafletModel) {
21 | const leaflet = leafletModel.getLeaflet();
22 | const center = leaflet.getCenter();
23 | leafletModel.setCenterAndZoom(
24 | [center.lng, center.lat],
25 | leaflet.getZoom()
26 | );
27 | });
28 | }
29 | );
30 |
31 | export const version = '1.0.0';
32 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "echarts-leaflet",
3 | "version": "1.1.0",
4 | "description": "leaflet extension for echarts",
5 | "main": "dist/echarts-leaflet.js",
6 | "scripts": {
7 | "lint": "./node_modules/.bin/eslint src/*.js"
8 | },
9 | "repository": "git@github.com:gnijuohz/echarts-leaflet.git",
10 | "author": "Jing Zhou ",
11 | "license": "MIT",
12 | "peerDependencies": {
13 | "echarts": "^3.6.2",
14 | "leaflet": "^1.1.0"
15 | },
16 | "devDependencies": {
17 | "babel-core": "^6.26.0",
18 | "babel-plugin-external-helpers": "^6.22.0",
19 | "babel-preset-env": "^1.6.1",
20 | "eslint": "^4.12.1",
21 | "eslint-config-google": "^0.9.1",
22 | "rollup-plugin-babel": "^3.0.2",
23 | "rollup-plugin-commonjs": "^9.1.0",
24 | "rollup-plugin-node-resolve": "^3.0.0"
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017-2018 Jing Zhou
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/example/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "example",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "echarts": {
8 | "version": "3.8.5",
9 | "resolved": "https://registry.npmjs.org/echarts/-/echarts-3.8.5.tgz",
10 | "integrity": "sha512-E+nnROMfCeiLeoT/fZyX8SE8mKzwkTjyemyoBF543oqjRtjTSKQAVDEihMXy4oC6pJS0tYGdMqCA2ATk8onyRg==",
11 | "requires": {
12 | "zrender": "3.7.4"
13 | }
14 | },
15 | "echarts-leaflet": {
16 | "version": "1.0.0",
17 | "resolved": "https://registry.npmjs.org/echarts-leaflet/-/echarts-leaflet-1.0.0.tgz",
18 | "integrity": "sha512-eCys5lx5ylffcSjtJd/A/EK/JiZhg/XQTeBa8GKHjxoEA6vfcNKEMk4ux5AAu5/xTP0pI/HEkeGWFMoivXt0nQ=="
19 | },
20 | "leaflet": {
21 | "version": "1.3.1",
22 | "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.3.1.tgz",
23 | "integrity": "sha512-adQOIzh+bfdridLM1xIgJ9VnJbAUY3wqs/ueF+ITla+PLQ1z47USdBKUf+iD9FuUA8RtlT6j6hZBfZoA6mW+XQ=="
24 | },
25 | "zrender": {
26 | "version": "3.7.4",
27 | "resolved": "https://registry.npmjs.org/zrender/-/zrender-3.7.4.tgz",
28 | "integrity": "sha512-5Nz7+L1wIoL0+Pp/iOP56jD6eD017qC9VRSgUBheXBiAHgOBJZ4uh4/g6e83acIwa8RKSyZf/FlceKu5ntUuxQ=="
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/LeafletModel.js:
--------------------------------------------------------------------------------
1 | import echarts from 'echarts/lib/echarts';
2 |
3 | /**
4 | * compare if two arrays of length 2 are equal
5 | * @param {Array} a array of length 2
6 | * @param {Array} b array of length 2
7 | * @return {Boolean}
8 | */
9 | function v2Equal(a, b) {
10 | return a && b && a[0] === b[0] && a[1] === b[1];
11 | }
12 |
13 | export default echarts.extendComponentModel({
14 | type: 'leaflet',
15 |
16 | getLeaflet: function() {
17 | // __map is injected when creating LeafletCoordSys
18 | return this.__map;
19 | },
20 |
21 | setCenterAndZoom: function(center, zoom) {
22 | this.option.center = center;
23 | this.option.zoom = zoom;
24 | },
25 |
26 | centerOrZoomChanged: function(center, zoom) {
27 | const option = this.option;
28 | return !(v2Equal(center, option.center) && zoom === option.zoom);
29 | },
30 |
31 | defaultOption: {
32 | center: [104.114129, 37.550339],
33 | zoom: 2,
34 | mapStyle: {},
35 | roam: false,
36 | layerControl: {},
37 | tiles: [
38 | {
39 | urlTemplate: 'http://{s}.tile.osm.org/{z}/{x}/{y}.png',
40 | options: {
41 | attribution:
42 | '© OpenStreetMap contributors',
43 | },
44 | },
45 | ],
46 | },
47 | });
48 |
--------------------------------------------------------------------------------
/rollup.config.js:
--------------------------------------------------------------------------------
1 | import resolve from 'rollup-plugin-node-resolve';
2 | import babel from 'rollup-plugin-babel';
3 | import commonjs from 'rollup-plugin-commonjs';
4 |
5 |
6 | export default [{
7 | input: './src/Leaflet.js',
8 | external: ['echarts/lib/echarts', 'leaflet/src/Leaflet'],
9 | output: {
10 | name: 'leaflet',
11 | format: 'umd',
12 | globals: {
13 | 'echarts/lib/echarts': 'echarts',
14 | 'leaflet/src/Leaflet': 'L',
15 | },
16 | file: './dist/echarts-leaflet.js',
17 | },
18 | plugins: [
19 | resolve(),
20 | commonjs({
21 | namedExports: {
22 | 'node_modules/echarts/lib/echarts.js': 'echarts',
23 | 'node_modules/leaflet/src/Leaflet.js': 'L',
24 | },
25 | }),
26 | babel({
27 | exclude: 'node_modules/**',
28 | }),
29 | ],
30 | },
31 | {
32 | input: './src/Leaflet.js',
33 | external: ['echarts/lib/echarts', 'leaflet/src/Leaflet'],
34 | output: {
35 | name: 'leaflet',
36 | format: 'es',
37 | globals: {
38 | 'echarts/lib/echarts': 'echarts',
39 | 'leaflet/src/Leaflet': 'L',
40 | },
41 | file: './dist/echarts-leaflet.esm.js',
42 | },
43 | plugins: [
44 | resolve(),
45 | commonjs({
46 | namedExports: {
47 | 'node_modules/echarts/lib/echarts.js': 'echarts',
48 | 'node_modules/leaflet/src/Leaflet.js': 'L',
49 | },
50 | }),
51 | babel({
52 | exclude: 'node_modules/**',
53 | }),
54 | ],
55 | }];
56 |
--------------------------------------------------------------------------------
/src/LeafletView.js:
--------------------------------------------------------------------------------
1 | import echarts from 'echarts/lib/echarts';
2 |
3 | export default echarts.extendComponentView({
4 | type: 'leaflet',
5 |
6 | render: function(leafletModel, ecModel, api) {
7 | let rendering = true;
8 |
9 | const leaflet = leafletModel.getLeaflet();
10 | const moveContainer = api.getZr().painter.getViewportRoot().parentNode;
11 | const coordSys = leafletModel.coordinateSystem;
12 |
13 | const moveHandler = function(type, target) {
14 | if (rendering) {
15 | return;
16 | }
17 | const offsetEl = leaflet._mapPane;
18 | // calculate new mapOffset
19 | let transformStyle = offsetEl.style.transform;
20 | let dx = 0;
21 | let dy = 0;
22 | if (transformStyle) {
23 | transformStyle = transformStyle.replace('translate3d(', '');
24 | let parts = transformStyle.split(',');
25 | dx = -parseInt(parts[0], 10);
26 | dy = -parseInt(parts[1], 10);
27 | } else {
28 | // browsers that don't support transform: matrix
29 | dx = -parseInt(offsetEl.style.left, 10);
30 | dy = -parseInt(offsetEl.style.top, 10);
31 | }
32 | let mapOffset = [dx, dy];
33 | moveContainer.style.left = `${mapOffset[0]}px`;
34 | moveContainer.style.top = `${mapOffset[1]}px`;
35 |
36 | coordSys.setMapOffset(mapOffset);
37 | leafletModel.__mapOffset = mapOffset;
38 |
39 | api.dispatchAction({
40 | type: 'leafletRoam',
41 | });
42 | };
43 |
44 | /**
45 | * handler for map zoomEnd event
46 | */
47 | function zoomEndHandler() {
48 | if (rendering) return;
49 | api.dispatchAction({
50 | type: 'leafletRoam',
51 | });
52 | }
53 |
54 | /**
55 | * handler for map zoom event
56 | */
57 | function zoomHandler() {
58 | moveHandler();
59 | }
60 |
61 | if (this._oldMoveHandler) {
62 | leaflet.off('move', this._oldMoveHandler);
63 | }
64 | if (this._oldZoomHandler) {
65 | leaflet.off('zoom', this._oldZoomHandler);
66 | }
67 | if (this._oldZoomEndHandler) {
68 | leaflet.off('zoomend', this._oldZoomEndHandler);
69 | }
70 |
71 | leaflet.on('move', moveHandler);
72 | leaflet.on('zoom', zoomHandler);
73 | leaflet.on('zoomend', zoomEndHandler);
74 |
75 | this._oldMoveHandler = moveHandler;
76 | this._oldZoomHandler = zoomHandler;
77 | this._oldZoomEndHandler = zoomEndHandler;
78 |
79 | const roam = leafletModel.get('roam');
80 | // can move
81 | if (roam && roam !== 'scale') {
82 | leaflet.dragging.enable();
83 | } else {
84 | leaflet.dragging.disable();
85 | }
86 | // can zoom (may need to be more fine-grained)
87 | if (roam && roam !== 'move') {
88 | leaflet.scrollWheelZoom.enable();
89 | leaflet.doubleClickZoom.enable();
90 | leaflet.touchZoom.enable();
91 | } else {
92 | leaflet.scrollWheelZoom.disable();
93 | leaflet.doubleClickZoom.disable();
94 | leaflet.touchZoom.disable();
95 | }
96 |
97 | rendering = false;
98 | },
99 | });
100 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ECharts leaflet extension
2 |
3 | [](https://travis-ci.org/gnijuohz/echarts-leaflet)
4 |
5 | ## Install
6 |
7 | `npm i echarts-leaflet`
8 |
9 | ## Usage
10 |
11 | There are two ways to use this extension, the two examples in the `example` folder demonstrate each approach.
12 |
13 | ### Use it directly through the script tag
14 |
15 | ```html
16 |
17 |
18 |
19 |
20 | ```
21 |
22 | See [this example](./example/leaflet-multiple-layers.html).
23 |
24 | ### Use it as ES Module
25 |
26 | ```
27 | import echarts from 'echarts/lib/echarts';
28 | import 'echarts/lib/chart/scatter';
29 | import 'echarts/lib/chart/effectScatter';
30 |
31 | import 'echarts-leaflet';
32 | ```
33 |
34 | See [this example](./example/leaflet-single-layer.html). To run it, use `parcel leaflet-single-layer.html`. The usage of parcel can be found [here](https://parceljs.org/).
35 |
36 | ## ECharts Option
37 |
38 | You can use one or more tile layers via the `tiles` option. It's an array of
39 | layers.
40 |
41 | The default tile layer uses `http://{s}.tile.osm.org/{z}/{x}/{y}.png`
42 |
43 | ```javascript
44 | option = {
45 | leaflet: {
46 | center: [120.13066322374, 30.240018034923],
47 | zoom: 3,
48 | roam: true,
49 | tiles: [{
50 | label: 'OpenStreetMap',
51 | urlTemplate: 'https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png',
52 | options: {
53 | attribution: '© OpenStreetMap, Tiles courtesy of Humanitarian OpenStreetMap Team'
54 | }
55 | }]
56 | },
57 | series: [{
58 | coordinateSystem: 'leaflet',
59 | }]
60 | }
61 | ```
62 |
63 | Specify multiple layers. You can choose a base layer to use via the layer control.
64 |
65 | ```javascript
66 | {
67 | layerControl: {
68 | position: 'topleft'
69 | },
70 | tiles: [{
71 | label: '天地图',
72 | urlTemplate: 'http://t2.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z}',
73 | options: {
74 | attribution: 'tianditu.com'
75 | }
76 | }, {
77 | label: 'Open Street Map',
78 | urlTemplate: 'https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png',
79 | options: {
80 | attribution: '© OpenStreetMap, Tiles courtesy of Humanitarian OpenStreetMap Team'
81 | }
82 | }]
83 | }
84 | ```
85 |
86 | If you don't specify a label for a tile, it won't show up in the layer control. Therefore the following option will add two base layers to the map and there is no way to switch between them.
87 |
88 | ```javascript
89 | {
90 | layerControl: {
91 | position: 'topleft'
92 | },
93 | tiles: [{
94 | urlTemplate: 'http://t2.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z}',
95 | options: {
96 | attribution: 'tianditu.com'
97 | }
98 | }, {
99 | urlTemplate: 'https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png',
100 | options: {
101 | attribution: '© OpenStreetMap, Tiles courtesy of Humanitarian OpenStreetMap Team'
102 | }
103 | }]
104 | }
105 | ```
106 |
107 |
108 | ## Demo
109 |
110 | - [全国空气质量(Air quality in China)](http://gnijuohz.github.io/echarts-leaflet/example/leaflet-multiple-layers.html)
111 |
112 | ## Build
113 |
114 | - `yarn install`
115 | - `rollup --config`
116 |
117 | ## Contributors
118 |
119 | - [Jing Zhou](https://github.com/gnijuohz)
120 | - [UltramanWeiLai](https://github.com/UltramanWeiLai)
121 | - [Poyoman39](https://github.com/Poyoman39)
122 |
123 | ## License
124 |
125 | MIT
126 |
--------------------------------------------------------------------------------
/src/LeafletCoordSys.js:
--------------------------------------------------------------------------------
1 | import { util, graphic, matrix } from 'echarts/lib/echarts';
2 | import L from 'leaflet/src/Leaflet';
3 | /**
4 | * constructor for Leaflet CoordSys
5 | * @param {L.map} map
6 | * @param {Object} api
7 | */
8 | function LeafletCoordSys(map, api) {
9 | this._map = map;
10 | this.dimensions = ['lng', 'lat'];
11 | this._mapOffset = [0, 0];
12 | this._api = api;
13 | this._projection = L.Projection.Mercator;
14 | }
15 |
16 | LeafletCoordSys.prototype.dimensions = ['lng', 'lat'];
17 |
18 | LeafletCoordSys.prototype.setZoom = function(zoom) {
19 | this._zoom = zoom;
20 | };
21 |
22 | LeafletCoordSys.prototype.setCenter = function(center) {
23 | this._center = this._projection.project(new L.LatLng(center[1], center[0]));
24 | };
25 |
26 | LeafletCoordSys.prototype.setMapOffset = function(mapOffset) {
27 | this._mapOffset = mapOffset;
28 | };
29 |
30 | LeafletCoordSys.prototype.getLeaflet = function() {
31 | return this._map;
32 | };
33 |
34 | LeafletCoordSys.prototype.dataToPoint = function(data) {
35 | const point = new L.LatLng(data[1], data[0]);
36 | const px = this._map.latLngToLayerPoint(point);
37 | const mapOffset = this._mapOffset;
38 | return [px.x - mapOffset[0], px.y - mapOffset[1]];
39 | };
40 |
41 | LeafletCoordSys.prototype.pointToData = function(pt) {
42 | const mapOffset = this._mapOffset;
43 | const coord = this._map.layerPointToLatLng({
44 | x: pt[0] + mapOffset[0],
45 | y: pt[1] + mapOffset[1],
46 | });
47 | return [coord.lng, coord.lat];
48 | };
49 |
50 | LeafletCoordSys.prototype.convertToPixel = util.curry(
51 | doConvert,
52 | 'dataToPoint'
53 | );
54 |
55 | LeafletCoordSys.prototype.convertFromPixel = util.curry(
56 | doConvert,
57 | 'pointToData'
58 | );
59 |
60 | /**
61 | * find appropriate coordinate system to convert
62 | * @param {*} methodName
63 | * @param {*} ecModel
64 | * @param {*} finder
65 | * @param {*} value
66 | * @return {*} converted value
67 | */
68 | function doConvert(methodName, ecModel, finder, value) {
69 | let leafletModel = finder.leafletModel;
70 | let seriesModel = finder.seriesModel;
71 |
72 | let coordSys = leafletModel
73 | ? leafletModel.coordinateSystem
74 | : seriesModel
75 | ? seriesModel.coordinateSystem || // For map.
76 | (seriesModel.getReferringComponents('leaflet')[0] || {})
77 | .coordinateSystem
78 | : null;
79 | /* eslint-disable no-invalid-this */
80 | return coordSys === this ? coordSys[methodName](value) : null;
81 | }
82 |
83 | LeafletCoordSys.prototype.getViewRect = function() {
84 | const api = this._api;
85 | return new graphic.BoundingRect(0, 0, api.getWidth(), api.getHeight());
86 | };
87 |
88 | LeafletCoordSys.prototype.getRoamTransform = function() {
89 | return matrix.create();
90 | };
91 |
92 | LeafletCoordSys.dimensions = LeafletCoordSys.prototype.dimensions;
93 |
94 | const CustomOverlay = L.Layer.extend({
95 | initialize: function(container) {
96 | this._container = container;
97 | },
98 |
99 | onAdd: function(map) {
100 | let pane = map.getPane(this.options.pane);
101 | pane.appendChild(this._container);
102 |
103 | // Calculate initial position of container with
104 | // `L.Map.latLngToLayerPoint()`, `getPixelOrigin()
105 | // and/or `getPixelBounds()`
106 |
107 | // L.DomUtil.setPosition(this._container, point);
108 |
109 | // Add and position children elements if needed
110 |
111 | // map.on('zoomend viewreset', this._update, this);
112 | },
113 |
114 | onRemove: function(map) {
115 | L.DomUtil.remove(this._container);
116 | // map.off('zoomend viewreset', this._update, this);
117 | },
118 |
119 | _update: function() {
120 | // Recalculate position of container
121 | // L.DomUtil.setPosition(this._container, point);
122 | // Add/remove/reposition children elements if needed
123 | },
124 | });
125 |
126 | LeafletCoordSys.create = function(ecModel, api) {
127 | let leafletCoordSys;
128 | let leafletList = [];
129 | const root = api.getDom();
130 |
131 | // TODO Dispose
132 | ecModel.eachComponent('leaflet', function(leafletModel) {
133 | let viewportRoot = api.getZr().painter.getViewportRoot();
134 | if (typeof L === 'undefined') {
135 | throw new Error('Leaflet api is not loaded');
136 | }
137 | if (leafletCoordSys) {
138 | throw new Error('Only one leaflet component can exist');
139 | }
140 | if (!leafletModel.__map) {
141 | // Not support IE8
142 | let mapRoot = root.querySelector('.ec-extension-leaflet');
143 | if (mapRoot) {
144 | // Reset viewport left and top, which will be changed
145 | // in moving handler in LeafletView
146 | viewportRoot.style.left = '0px';
147 | viewportRoot.style.top = '0px';
148 | root.removeChild(mapRoot);
149 | }
150 | mapRoot = document.createElement('div');
151 | mapRoot.style.cssText = 'width:100%;height:100%';
152 | // Not support IE8
153 | mapRoot.classList.add('ec-extension-leaflet');
154 | root.appendChild(mapRoot);
155 | let map = (leafletModel.__map = L.map(mapRoot));
156 | const tiles = leafletModel.get('tiles');
157 | let baseLayers = {};
158 | let baseLayerAdded = false;
159 | for (let tile of tiles) {
160 | let tileLayer = L.tileLayer(tile.urlTemplate, tile.options);
161 | if (tile.label) {
162 | // only add one baseLayer
163 | if (!baseLayerAdded) {
164 | tileLayer.addTo(map);
165 | baseLayerAdded = true;
166 | }
167 | baseLayers[tile.label] = tileLayer;
168 | } else {
169 | // add all tiles without labels into the map
170 | tileLayer.addTo(map);
171 | }
172 | }
173 | // add layer control when there are more than two layers
174 | if (tiles.length > 1) {
175 | const layerControlOpts = leafletModel.get('layerControl');
176 | L.control.layers(baseLayers, {}, layerControlOpts).addTo(map);
177 | }
178 |
179 | /*
180 | Encapsulate viewportRoot element into
181 | the parent element responsible for moving,
182 | avoiding direct manipulation of viewportRoot elements
183 | affecting related attributes such as offset.
184 | */
185 | let moveContainer = document.createElement('div');
186 | moveContainer.style = 'position: relative;';
187 | moveContainer.appendChild(viewportRoot);
188 |
189 | new CustomOverlay(moveContainer).addTo(map);
190 | }
191 | let map = leafletModel.__map;
192 |
193 | // Set leaflet options
194 | // centerAndZoom before layout and render
195 | const center = leafletModel.get('center');
196 | const zoom = leafletModel.get('zoom');
197 | if (center && zoom) {
198 | map.setView([center[1], center[0]], zoom);
199 | }
200 |
201 | leafletCoordSys = new LeafletCoordSys(map, api);
202 | leafletList.push(leafletCoordSys);
203 | leafletCoordSys.setMapOffset(leafletModel.__mapOffset || [0, 0]);
204 | leafletCoordSys.setZoom(zoom);
205 | leafletCoordSys.setCenter(center);
206 |
207 | leafletModel.coordinateSystem = leafletCoordSys;
208 | });
209 |
210 | ecModel.eachSeries(function(seriesModel) {
211 | if (seriesModel.get('coordinateSystem') === 'leaflet') {
212 | seriesModel.coordinateSystem = leafletCoordSys;
213 | }
214 | });
215 |
216 | return leafletList;
217 | };
218 |
219 | export default LeafletCoordSys;
220 |
--------------------------------------------------------------------------------
/dist/echarts-leaflet.esm.js:
--------------------------------------------------------------------------------
1 | import echarts, { util, graphic, matrix } from 'echarts/lib/echarts';
2 | import L from 'leaflet/src/Leaflet';
3 |
4 | /**
5 | * constructor for Leaflet CoordSys
6 | * @param {L.map} map
7 | * @param {Object} api
8 | */
9 | function LeafletCoordSys(map, api) {
10 | this._map = map;
11 | this.dimensions = ['lng', 'lat'];
12 | this._mapOffset = [0, 0];
13 | this._api = api;
14 | this._projection = L.Projection.Mercator;
15 | }
16 |
17 | LeafletCoordSys.prototype.dimensions = ['lng', 'lat'];
18 |
19 | LeafletCoordSys.prototype.setZoom = function (zoom) {
20 | this._zoom = zoom;
21 | };
22 |
23 | LeafletCoordSys.prototype.setCenter = function (center) {
24 | this._center = this._projection.project(new L.LatLng(center[1], center[0]));
25 | };
26 |
27 | LeafletCoordSys.prototype.setMapOffset = function (mapOffset) {
28 | this._mapOffset = mapOffset;
29 | };
30 |
31 | LeafletCoordSys.prototype.getLeaflet = function () {
32 | return this._map;
33 | };
34 |
35 | LeafletCoordSys.prototype.dataToPoint = function (data) {
36 | var point = new L.LatLng(data[1], data[0]);
37 | var px = this._map.latLngToLayerPoint(point);
38 | var mapOffset = this._mapOffset;
39 | return [px.x - mapOffset[0], px.y - mapOffset[1]];
40 | };
41 |
42 | LeafletCoordSys.prototype.pointToData = function (pt) {
43 | var mapOffset = this._mapOffset;
44 | var coord = this._map.layerPointToLatLng({
45 | x: pt[0] + mapOffset[0],
46 | y: pt[1] + mapOffset[1]
47 | });
48 | return [coord.lng, coord.lat];
49 | };
50 |
51 | LeafletCoordSys.prototype.convertToPixel = util.curry(doConvert, 'dataToPoint');
52 |
53 | LeafletCoordSys.prototype.convertFromPixel = util.curry(doConvert, 'pointToData');
54 |
55 | /**
56 | * find appropriate coordinate system to convert
57 | * @param {*} methodName
58 | * @param {*} ecModel
59 | * @param {*} finder
60 | * @param {*} value
61 | * @return {*} converted value
62 | */
63 | function doConvert(methodName, ecModel, finder, value) {
64 | var leafletModel = finder.leafletModel;
65 | var seriesModel = finder.seriesModel;
66 |
67 | var coordSys = leafletModel ? leafletModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem || // For map.
68 | (seriesModel.getReferringComponents('leaflet')[0] || {}).coordinateSystem : null;
69 | /* eslint-disable no-invalid-this */
70 | return coordSys === this ? coordSys[methodName](value) : null;
71 | }
72 |
73 | LeafletCoordSys.prototype.getViewRect = function () {
74 | var api = this._api;
75 | return new graphic.BoundingRect(0, 0, api.getWidth(), api.getHeight());
76 | };
77 |
78 | LeafletCoordSys.prototype.getRoamTransform = function () {
79 | return matrix.create();
80 | };
81 |
82 | LeafletCoordSys.dimensions = LeafletCoordSys.prototype.dimensions;
83 |
84 | var CustomOverlay = L.Layer.extend({
85 | initialize: function initialize(container) {
86 | this._container = container;
87 | },
88 |
89 | onAdd: function onAdd(map) {
90 | var pane = map.getPane(this.options.pane);
91 | pane.appendChild(this._container);
92 |
93 | // Calculate initial position of container with
94 | // `L.Map.latLngToLayerPoint()`, `getPixelOrigin()
95 | // and/or `getPixelBounds()`
96 |
97 | // L.DomUtil.setPosition(this._container, point);
98 |
99 | // Add and position children elements if needed
100 |
101 | // map.on('zoomend viewreset', this._update, this);
102 | },
103 |
104 | onRemove: function onRemove(map) {
105 | L.DomUtil.remove(this._container);
106 | // map.off('zoomend viewreset', this._update, this);
107 | },
108 |
109 | _update: function _update() {
110 | // Recalculate position of container
111 | // L.DomUtil.setPosition(this._container, point);
112 | // Add/remove/reposition children elements if needed
113 | }
114 | });
115 |
116 | LeafletCoordSys.create = function (ecModel, api) {
117 | var leafletCoordSys = void 0;
118 | var leafletList = [];
119 | var root = api.getDom();
120 |
121 | // TODO Dispose
122 | ecModel.eachComponent('leaflet', function (leafletModel) {
123 | var viewportRoot = api.getZr().painter.getViewportRoot();
124 | if (typeof L === 'undefined') {
125 | throw new Error('Leaflet api is not loaded');
126 | }
127 | if (leafletCoordSys) {
128 | throw new Error('Only one leaflet component can exist');
129 | }
130 | if (!leafletModel.__map) {
131 | // Not support IE8
132 | var mapRoot = root.querySelector('.ec-extension-leaflet');
133 | if (mapRoot) {
134 | // Reset viewport left and top, which will be changed
135 | // in moving handler in LeafletView
136 | viewportRoot.style.left = '0px';
137 | viewportRoot.style.top = '0px';
138 | root.removeChild(mapRoot);
139 | }
140 | mapRoot = document.createElement('div');
141 | mapRoot.style.cssText = 'width:100%;height:100%';
142 | // Not support IE8
143 | mapRoot.classList.add('ec-extension-leaflet');
144 | root.appendChild(mapRoot);
145 | var _map = leafletModel.__map = L.map(mapRoot);
146 | var tiles = leafletModel.get('tiles');
147 | var baseLayers = {};
148 | var baseLayerAdded = false;
149 | var _iteratorNormalCompletion = true;
150 | var _didIteratorError = false;
151 | var _iteratorError = undefined;
152 |
153 | try {
154 | for (var _iterator = tiles[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
155 | var tile = _step.value;
156 |
157 | var tileLayer = L.tileLayer(tile.urlTemplate, tile.options);
158 | if (tile.label) {
159 | // only add one baseLayer
160 | if (!baseLayerAdded) {
161 | tileLayer.addTo(_map);
162 | baseLayerAdded = true;
163 | }
164 | baseLayers[tile.label] = tileLayer;
165 | } else {
166 | // add all tiles without labels into the map
167 | tileLayer.addTo(_map);
168 | }
169 | }
170 | // add layer control when there are more than two layers
171 | } catch (err) {
172 | _didIteratorError = true;
173 | _iteratorError = err;
174 | } finally {
175 | try {
176 | if (!_iteratorNormalCompletion && _iterator.return) {
177 | _iterator.return();
178 | }
179 | } finally {
180 | if (_didIteratorError) {
181 | throw _iteratorError;
182 | }
183 | }
184 | }
185 |
186 | if (tiles.length > 1) {
187 | var layerControlOpts = leafletModel.get('layerControl');
188 | L.control.layers(baseLayers, {}, layerControlOpts).addTo(_map);
189 | }
190 |
191 | /*
192 | Encapsulate viewportRoot element into
193 | the parent element responsible for moving,
194 | avoiding direct manipulation of viewportRoot elements
195 | affecting related attributes such as offset.
196 | */
197 | var moveContainer = document.createElement('div');
198 | moveContainer.style = 'position: relative;';
199 | moveContainer.appendChild(viewportRoot);
200 |
201 | new CustomOverlay(moveContainer).addTo(_map);
202 | }
203 | var map = leafletModel.__map;
204 |
205 | // Set leaflet options
206 | // centerAndZoom before layout and render
207 | var center = leafletModel.get('center');
208 | var zoom = leafletModel.get('zoom');
209 | if (center && zoom) {
210 | map.setView([center[1], center[0]], zoom);
211 | }
212 |
213 | leafletCoordSys = new LeafletCoordSys(map, api);
214 | leafletList.push(leafletCoordSys);
215 | leafletCoordSys.setMapOffset(leafletModel.__mapOffset || [0, 0]);
216 | leafletCoordSys.setZoom(zoom);
217 | leafletCoordSys.setCenter(center);
218 |
219 | leafletModel.coordinateSystem = leafletCoordSys;
220 | });
221 |
222 | ecModel.eachSeries(function (seriesModel) {
223 | if (seriesModel.get('coordinateSystem') === 'leaflet') {
224 | seriesModel.coordinateSystem = leafletCoordSys;
225 | }
226 | });
227 |
228 | return leafletList;
229 | };
230 |
231 | /**
232 | * compare if two arrays of length 2 are equal
233 | * @param {Array} a array of length 2
234 | * @param {Array} b array of length 2
235 | * @return {Boolean}
236 | */
237 | function v2Equal(a, b) {
238 | return a && b && a[0] === b[0] && a[1] === b[1];
239 | }
240 |
241 | echarts.extendComponentModel({
242 | type: 'leaflet',
243 |
244 | getLeaflet: function getLeaflet() {
245 | // __map is injected when creating LeafletCoordSys
246 | return this.__map;
247 | },
248 |
249 | setCenterAndZoom: function setCenterAndZoom(center, zoom) {
250 | this.option.center = center;
251 | this.option.zoom = zoom;
252 | },
253 |
254 | centerOrZoomChanged: function centerOrZoomChanged(center, zoom) {
255 | var option = this.option;
256 | return !(v2Equal(center, option.center) && zoom === option.zoom);
257 | },
258 |
259 | defaultOption: {
260 | center: [104.114129, 37.550339],
261 | zoom: 2,
262 | mapStyle: {},
263 | roam: false,
264 | layerControl: {},
265 | tiles: [{
266 | urlTemplate: 'http://{s}.tile.osm.org/{z}/{x}/{y}.png',
267 | options: {
268 | attribution: '© OpenStreetMap contributors'
269 | }
270 | }]
271 | }
272 | });
273 |
274 | echarts.extendComponentView({
275 | type: 'leaflet',
276 |
277 | render: function render(leafletModel, ecModel, api) {
278 | var rendering = true;
279 |
280 | var leaflet = leafletModel.getLeaflet();
281 | var moveContainer = api.getZr().painter.getViewportRoot().parentNode;
282 | var coordSys = leafletModel.coordinateSystem;
283 |
284 | var moveHandler = function moveHandler(type, target) {
285 | if (rendering) {
286 | return;
287 | }
288 | var offsetEl = leaflet._mapPane;
289 | // calculate new mapOffset
290 | var transformStyle = offsetEl.style.transform;
291 | var dx = 0;
292 | var dy = 0;
293 | if (transformStyle) {
294 | transformStyle = transformStyle.replace('translate3d(', '');
295 | var parts = transformStyle.split(',');
296 | dx = -parseInt(parts[0], 10);
297 | dy = -parseInt(parts[1], 10);
298 | } else {
299 | // browsers that don't support transform: matrix
300 | dx = -parseInt(offsetEl.style.left, 10);
301 | dy = -parseInt(offsetEl.style.top, 10);
302 | }
303 | var mapOffset = [dx, dy];
304 | moveContainer.style.left = mapOffset[0] + 'px';
305 | moveContainer.style.top = mapOffset[1] + 'px';
306 |
307 | coordSys.setMapOffset(mapOffset);
308 | leafletModel.__mapOffset = mapOffset;
309 |
310 | api.dispatchAction({
311 | type: 'leafletRoam'
312 | });
313 | };
314 |
315 | /**
316 | * handler for map zoomEnd event
317 | */
318 | function zoomEndHandler() {
319 | if (rendering) return;
320 | api.dispatchAction({
321 | type: 'leafletRoam'
322 | });
323 | }
324 |
325 | /**
326 | * handler for map zoom event
327 | */
328 | function zoomHandler() {
329 | moveHandler();
330 | }
331 |
332 | if (this._oldMoveHandler) {
333 | leaflet.off('move', this._oldMoveHandler);
334 | }
335 | if (this._oldZoomHandler) {
336 | leaflet.off('zoom', this._oldZoomHandler);
337 | }
338 | if (this._oldZoomEndHandler) {
339 | leaflet.off('zoomend', this._oldZoomEndHandler);
340 | }
341 |
342 | leaflet.on('move', moveHandler);
343 | leaflet.on('zoom', zoomHandler);
344 | leaflet.on('zoomend', zoomEndHandler);
345 |
346 | this._oldMoveHandler = moveHandler;
347 | this._oldZoomHandler = zoomHandler;
348 | this._oldZoomEndHandler = zoomEndHandler;
349 |
350 | var roam = leafletModel.get('roam');
351 | // can move
352 | if (roam && roam !== 'scale') {
353 | leaflet.dragging.enable();
354 | } else {
355 | leaflet.dragging.disable();
356 | }
357 | // can zoom (may need to be more fine-grained)
358 | if (roam && roam !== 'move') {
359 | leaflet.scrollWheelZoom.enable();
360 | leaflet.doubleClickZoom.enable();
361 | leaflet.touchZoom.enable();
362 | } else {
363 | leaflet.scrollWheelZoom.disable();
364 | leaflet.doubleClickZoom.disable();
365 | leaflet.touchZoom.disable();
366 | }
367 |
368 | rendering = false;
369 | }
370 | });
371 |
372 | /**
373 | * Leftlet component extension
374 | */
375 |
376 | echarts.registerCoordinateSystem('leaflet', LeafletCoordSys);
377 |
378 | echarts.registerAction({
379 | type: 'leafletRoam',
380 | event: 'leafletRoam',
381 | update: 'updateLayout'
382 | }, function (payload, ecModel) {
383 | ecModel.eachComponent('leaflet', function (leafletModel) {
384 | var leaflet = leafletModel.getLeaflet();
385 | var center = leaflet.getCenter();
386 | leafletModel.setCenterAndZoom([center.lng, center.lat], leaflet.getZoom());
387 | });
388 | });
389 |
390 | var version = '1.0.0';
391 |
392 | export { version };
393 |
--------------------------------------------------------------------------------
/dist/echarts-leaflet.js:
--------------------------------------------------------------------------------
1 | (function (global, factory) {
2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('echarts/lib/echarts'), require('leaflet/src/Leaflet')) :
3 | typeof define === 'function' && define.amd ? define(['exports', 'echarts/lib/echarts', 'leaflet/src/Leaflet'], factory) :
4 | (global = global || self, factory(global.leaflet = {}, global.echarts, global.L));
5 | }(this, function (exports, echarts, L) { 'use strict';
6 |
7 | var echarts__default = 'default' in echarts ? echarts['default'] : echarts;
8 | L = L && L.hasOwnProperty('default') ? L['default'] : L;
9 |
10 | /**
11 | * constructor for Leaflet CoordSys
12 | * @param {L.map} map
13 | * @param {Object} api
14 | */
15 | function LeafletCoordSys(map, api) {
16 | this._map = map;
17 | this.dimensions = ['lng', 'lat'];
18 | this._mapOffset = [0, 0];
19 | this._api = api;
20 | this._projection = L.Projection.Mercator;
21 | }
22 |
23 | LeafletCoordSys.prototype.dimensions = ['lng', 'lat'];
24 |
25 | LeafletCoordSys.prototype.setZoom = function (zoom) {
26 | this._zoom = zoom;
27 | };
28 |
29 | LeafletCoordSys.prototype.setCenter = function (center) {
30 | this._center = this._projection.project(new L.LatLng(center[1], center[0]));
31 | };
32 |
33 | LeafletCoordSys.prototype.setMapOffset = function (mapOffset) {
34 | this._mapOffset = mapOffset;
35 | };
36 |
37 | LeafletCoordSys.prototype.getLeaflet = function () {
38 | return this._map;
39 | };
40 |
41 | LeafletCoordSys.prototype.dataToPoint = function (data) {
42 | var point = new L.LatLng(data[1], data[0]);
43 | var px = this._map.latLngToLayerPoint(point);
44 | var mapOffset = this._mapOffset;
45 | return [px.x - mapOffset[0], px.y - mapOffset[1]];
46 | };
47 |
48 | LeafletCoordSys.prototype.pointToData = function (pt) {
49 | var mapOffset = this._mapOffset;
50 | var coord = this._map.layerPointToLatLng({
51 | x: pt[0] + mapOffset[0],
52 | y: pt[1] + mapOffset[1]
53 | });
54 | return [coord.lng, coord.lat];
55 | };
56 |
57 | LeafletCoordSys.prototype.convertToPixel = echarts.util.curry(doConvert, 'dataToPoint');
58 |
59 | LeafletCoordSys.prototype.convertFromPixel = echarts.util.curry(doConvert, 'pointToData');
60 |
61 | /**
62 | * find appropriate coordinate system to convert
63 | * @param {*} methodName
64 | * @param {*} ecModel
65 | * @param {*} finder
66 | * @param {*} value
67 | * @return {*} converted value
68 | */
69 | function doConvert(methodName, ecModel, finder, value) {
70 | var leafletModel = finder.leafletModel;
71 | var seriesModel = finder.seriesModel;
72 |
73 | var coordSys = leafletModel ? leafletModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem || // For map.
74 | (seriesModel.getReferringComponents('leaflet')[0] || {}).coordinateSystem : null;
75 | /* eslint-disable no-invalid-this */
76 | return coordSys === this ? coordSys[methodName](value) : null;
77 | }
78 |
79 | LeafletCoordSys.prototype.getViewRect = function () {
80 | var api = this._api;
81 | return new echarts.graphic.BoundingRect(0, 0, api.getWidth(), api.getHeight());
82 | };
83 |
84 | LeafletCoordSys.prototype.getRoamTransform = function () {
85 | return echarts.matrix.create();
86 | };
87 |
88 | LeafletCoordSys.dimensions = LeafletCoordSys.prototype.dimensions;
89 |
90 | var CustomOverlay = L.Layer.extend({
91 | initialize: function initialize(container) {
92 | this._container = container;
93 | },
94 |
95 | onAdd: function onAdd(map) {
96 | var pane = map.getPane(this.options.pane);
97 | pane.appendChild(this._container);
98 |
99 | // Calculate initial position of container with
100 | // `L.Map.latLngToLayerPoint()`, `getPixelOrigin()
101 | // and/or `getPixelBounds()`
102 |
103 | // L.DomUtil.setPosition(this._container, point);
104 |
105 | // Add and position children elements if needed
106 |
107 | // map.on('zoomend viewreset', this._update, this);
108 | },
109 |
110 | onRemove: function onRemove(map) {
111 | L.DomUtil.remove(this._container);
112 | // map.off('zoomend viewreset', this._update, this);
113 | },
114 |
115 | _update: function _update() {
116 | // Recalculate position of container
117 | // L.DomUtil.setPosition(this._container, point);
118 | // Add/remove/reposition children elements if needed
119 | }
120 | });
121 |
122 | LeafletCoordSys.create = function (ecModel, api) {
123 | var leafletCoordSys = void 0;
124 | var leafletList = [];
125 | var root = api.getDom();
126 |
127 | // TODO Dispose
128 | ecModel.eachComponent('leaflet', function (leafletModel) {
129 | var viewportRoot = api.getZr().painter.getViewportRoot();
130 | if (typeof L === 'undefined') {
131 | throw new Error('Leaflet api is not loaded');
132 | }
133 | if (leafletCoordSys) {
134 | throw new Error('Only one leaflet component can exist');
135 | }
136 | if (!leafletModel.__map) {
137 | // Not support IE8
138 | var mapRoot = root.querySelector('.ec-extension-leaflet');
139 | if (mapRoot) {
140 | // Reset viewport left and top, which will be changed
141 | // in moving handler in LeafletView
142 | viewportRoot.style.left = '0px';
143 | viewportRoot.style.top = '0px';
144 | root.removeChild(mapRoot);
145 | }
146 | mapRoot = document.createElement('div');
147 | mapRoot.style.cssText = 'width:100%;height:100%';
148 | // Not support IE8
149 | mapRoot.classList.add('ec-extension-leaflet');
150 | root.appendChild(mapRoot);
151 | var _map = leafletModel.__map = L.map(mapRoot);
152 | var tiles = leafletModel.get('tiles');
153 | var baseLayers = {};
154 | var baseLayerAdded = false;
155 | var _iteratorNormalCompletion = true;
156 | var _didIteratorError = false;
157 | var _iteratorError = undefined;
158 |
159 | try {
160 | for (var _iterator = tiles[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
161 | var tile = _step.value;
162 |
163 | var tileLayer = L.tileLayer(tile.urlTemplate, tile.options);
164 | if (tile.label) {
165 | // only add one baseLayer
166 | if (!baseLayerAdded) {
167 | tileLayer.addTo(_map);
168 | baseLayerAdded = true;
169 | }
170 | baseLayers[tile.label] = tileLayer;
171 | } else {
172 | // add all tiles without labels into the map
173 | tileLayer.addTo(_map);
174 | }
175 | }
176 | // add layer control when there are more than two layers
177 | } catch (err) {
178 | _didIteratorError = true;
179 | _iteratorError = err;
180 | } finally {
181 | try {
182 | if (!_iteratorNormalCompletion && _iterator.return) {
183 | _iterator.return();
184 | }
185 | } finally {
186 | if (_didIteratorError) {
187 | throw _iteratorError;
188 | }
189 | }
190 | }
191 |
192 | if (tiles.length > 1) {
193 | var layerControlOpts = leafletModel.get('layerControl');
194 | L.control.layers(baseLayers, {}, layerControlOpts).addTo(_map);
195 | }
196 |
197 | /*
198 | Encapsulate viewportRoot element into
199 | the parent element responsible for moving,
200 | avoiding direct manipulation of viewportRoot elements
201 | affecting related attributes such as offset.
202 | */
203 | var moveContainer = document.createElement('div');
204 | moveContainer.style = 'position: relative;';
205 | moveContainer.appendChild(viewportRoot);
206 |
207 | new CustomOverlay(moveContainer).addTo(_map);
208 | }
209 | var map = leafletModel.__map;
210 |
211 | // Set leaflet options
212 | // centerAndZoom before layout and render
213 | var center = leafletModel.get('center');
214 | var zoom = leafletModel.get('zoom');
215 | if (center && zoom) {
216 | map.setView([center[1], center[0]], zoom);
217 | }
218 |
219 | leafletCoordSys = new LeafletCoordSys(map, api);
220 | leafletList.push(leafletCoordSys);
221 | leafletCoordSys.setMapOffset(leafletModel.__mapOffset || [0, 0]);
222 | leafletCoordSys.setZoom(zoom);
223 | leafletCoordSys.setCenter(center);
224 |
225 | leafletModel.coordinateSystem = leafletCoordSys;
226 | });
227 |
228 | ecModel.eachSeries(function (seriesModel) {
229 | if (seriesModel.get('coordinateSystem') === 'leaflet') {
230 | seriesModel.coordinateSystem = leafletCoordSys;
231 | }
232 | });
233 |
234 | return leafletList;
235 | };
236 |
237 | /**
238 | * compare if two arrays of length 2 are equal
239 | * @param {Array} a array of length 2
240 | * @param {Array} b array of length 2
241 | * @return {Boolean}
242 | */
243 | function v2Equal(a, b) {
244 | return a && b && a[0] === b[0] && a[1] === b[1];
245 | }
246 |
247 | echarts__default.extendComponentModel({
248 | type: 'leaflet',
249 |
250 | getLeaflet: function getLeaflet() {
251 | // __map is injected when creating LeafletCoordSys
252 | return this.__map;
253 | },
254 |
255 | setCenterAndZoom: function setCenterAndZoom(center, zoom) {
256 | this.option.center = center;
257 | this.option.zoom = zoom;
258 | },
259 |
260 | centerOrZoomChanged: function centerOrZoomChanged(center, zoom) {
261 | var option = this.option;
262 | return !(v2Equal(center, option.center) && zoom === option.zoom);
263 | },
264 |
265 | defaultOption: {
266 | center: [104.114129, 37.550339],
267 | zoom: 2,
268 | mapStyle: {},
269 | roam: false,
270 | layerControl: {},
271 | tiles: [{
272 | urlTemplate: 'http://{s}.tile.osm.org/{z}/{x}/{y}.png',
273 | options: {
274 | attribution: '© OpenStreetMap contributors'
275 | }
276 | }]
277 | }
278 | });
279 |
280 | echarts__default.extendComponentView({
281 | type: 'leaflet',
282 |
283 | render: function render(leafletModel, ecModel, api) {
284 | var rendering = true;
285 |
286 | var leaflet = leafletModel.getLeaflet();
287 | var moveContainer = api.getZr().painter.getViewportRoot().parentNode;
288 | var coordSys = leafletModel.coordinateSystem;
289 |
290 | var moveHandler = function moveHandler(type, target) {
291 | if (rendering) {
292 | return;
293 | }
294 | var offsetEl = leaflet._mapPane;
295 | // calculate new mapOffset
296 | var transformStyle = offsetEl.style.transform;
297 | var dx = 0;
298 | var dy = 0;
299 | if (transformStyle) {
300 | transformStyle = transformStyle.replace('translate3d(', '');
301 | var parts = transformStyle.split(',');
302 | dx = -parseInt(parts[0], 10);
303 | dy = -parseInt(parts[1], 10);
304 | } else {
305 | // browsers that don't support transform: matrix
306 | dx = -parseInt(offsetEl.style.left, 10);
307 | dy = -parseInt(offsetEl.style.top, 10);
308 | }
309 | var mapOffset = [dx, dy];
310 | moveContainer.style.left = mapOffset[0] + 'px';
311 | moveContainer.style.top = mapOffset[1] + 'px';
312 |
313 | coordSys.setMapOffset(mapOffset);
314 | leafletModel.__mapOffset = mapOffset;
315 |
316 | api.dispatchAction({
317 | type: 'leafletRoam'
318 | });
319 | };
320 |
321 | /**
322 | * handler for map zoomEnd event
323 | */
324 | function zoomEndHandler() {
325 | if (rendering) return;
326 | api.dispatchAction({
327 | type: 'leafletRoam'
328 | });
329 | }
330 |
331 | /**
332 | * handler for map zoom event
333 | */
334 | function zoomHandler() {
335 | moveHandler();
336 | }
337 |
338 | if (this._oldMoveHandler) {
339 | leaflet.off('move', this._oldMoveHandler);
340 | }
341 | if (this._oldZoomHandler) {
342 | leaflet.off('zoom', this._oldZoomHandler);
343 | }
344 | if (this._oldZoomEndHandler) {
345 | leaflet.off('zoomend', this._oldZoomEndHandler);
346 | }
347 |
348 | leaflet.on('move', moveHandler);
349 | leaflet.on('zoom', zoomHandler);
350 | leaflet.on('zoomend', zoomEndHandler);
351 |
352 | this._oldMoveHandler = moveHandler;
353 | this._oldZoomHandler = zoomHandler;
354 | this._oldZoomEndHandler = zoomEndHandler;
355 |
356 | var roam = leafletModel.get('roam');
357 | // can move
358 | if (roam && roam !== 'scale') {
359 | leaflet.dragging.enable();
360 | } else {
361 | leaflet.dragging.disable();
362 | }
363 | // can zoom (may need to be more fine-grained)
364 | if (roam && roam !== 'move') {
365 | leaflet.scrollWheelZoom.enable();
366 | leaflet.doubleClickZoom.enable();
367 | leaflet.touchZoom.enable();
368 | } else {
369 | leaflet.scrollWheelZoom.disable();
370 | leaflet.doubleClickZoom.disable();
371 | leaflet.touchZoom.disable();
372 | }
373 |
374 | rendering = false;
375 | }
376 | });
377 |
378 | /**
379 | * Leftlet component extension
380 | */
381 |
382 | echarts__default.registerCoordinateSystem('leaflet', LeafletCoordSys);
383 |
384 | echarts__default.registerAction({
385 | type: 'leafletRoam',
386 | event: 'leafletRoam',
387 | update: 'updateLayout'
388 | }, function (payload, ecModel) {
389 | ecModel.eachComponent('leaflet', function (leafletModel) {
390 | var leaflet = leafletModel.getLeaflet();
391 | var center = leaflet.getCenter();
392 | leafletModel.setCenterAndZoom([center.lng, center.lat], leaflet.getZoom());
393 | });
394 | });
395 |
396 | var version = '1.0.0';
397 |
398 | exports.version = version;
399 |
400 | Object.defineProperty(exports, '__esModule', { value: true });
401 |
402 | }));
403 |
--------------------------------------------------------------------------------
/example/single-layer.js:
--------------------------------------------------------------------------------
1 | import echarts from 'echarts/lib/echarts';
2 | import 'echarts/lib/chart/scatter';
3 | import 'echarts/lib/chart/effectScatter';
4 |
5 | import 'echarts-leaflet/dist/echarts-leaflet';
6 |
7 | var data = [{
8 | name: '海门',
9 | value: 9
10 | },
11 | {
12 | name: '鄂尔多斯',
13 | value: 12
14 | },
15 | {
16 | name: '招远',
17 | value: 12
18 | },
19 | {
20 | name: '舟山',
21 | value: 12
22 | },
23 | {
24 | name: '齐齐哈尔',
25 | value: 14
26 | },
27 | {
28 | name: '盐城',
29 | value: 15
30 | },
31 | {
32 | name: '赤峰',
33 | value: 16
34 | },
35 | {
36 | name: '青岛',
37 | value: 18
38 | },
39 | {
40 | name: '乳山',
41 | value: 18
42 | },
43 | {
44 | name: '金昌',
45 | value: 19
46 | },
47 | {
48 | name: '泉州',
49 | value: 21
50 | },
51 | {
52 | name: '莱西',
53 | value: 21
54 | },
55 | {
56 | name: '日照',
57 | value: 21
58 | },
59 | {
60 | name: '胶南',
61 | value: 22
62 | },
63 | {
64 | name: '南通',
65 | value: 23
66 | },
67 | {
68 | name: '拉萨',
69 | value: 24
70 | },
71 | {
72 | name: '云浮',
73 | value: 24
74 | },
75 | {
76 | name: '梅州',
77 | value: 25
78 | },
79 | {
80 | name: '文登',
81 | value: 25
82 | },
83 | {
84 | name: '上海',
85 | value: 25
86 | },
87 | {
88 | name: '攀枝花',
89 | value: 25
90 | },
91 | {
92 | name: '威海',
93 | value: 25
94 | },
95 | {
96 | name: '承德',
97 | value: 25
98 | },
99 | {
100 | name: '厦门',
101 | value: 26
102 | },
103 | {
104 | name: '汕尾',
105 | value: 26
106 | },
107 | {
108 | name: '潮州',
109 | value: 26
110 | },
111 | {
112 | name: '丹东',
113 | value: 27
114 | },
115 | {
116 | name: '太仓',
117 | value: 27
118 | },
119 | {
120 | name: '曲靖',
121 | value: 27
122 | },
123 | {
124 | name: '烟台',
125 | value: 28
126 | },
127 | {
128 | name: '福州',
129 | value: 29
130 | },
131 | {
132 | name: '瓦房店',
133 | value: 30
134 | },
135 | {
136 | name: '即墨',
137 | value: 30
138 | },
139 | {
140 | name: '抚顺',
141 | value: 31
142 | },
143 | {
144 | name: '玉溪',
145 | value: 31
146 | },
147 | {
148 | name: '张家口',
149 | value: 31
150 | },
151 | {
152 | name: '阳泉',
153 | value: 31
154 | },
155 | {
156 | name: '莱州',
157 | value: 32
158 | },
159 | {
160 | name: '湖州',
161 | value: 32
162 | },
163 | {
164 | name: '汕头',
165 | value: 32
166 | },
167 | {
168 | name: '昆山',
169 | value: 33
170 | },
171 | {
172 | name: '宁波',
173 | value: 33
174 | },
175 | {
176 | name: '湛江',
177 | value: 33
178 | },
179 | {
180 | name: '揭阳',
181 | value: 34
182 | },
183 | {
184 | name: '荣成',
185 | value: 34
186 | },
187 | {
188 | name: '连云港',
189 | value: 35
190 | },
191 | {
192 | name: '葫芦岛',
193 | value: 35
194 | },
195 | {
196 | name: '常熟',
197 | value: 36
198 | },
199 | {
200 | name: '东莞',
201 | value: 36
202 | },
203 | {
204 | name: '河源',
205 | value: 36
206 | },
207 | {
208 | name: '淮安',
209 | value: 36
210 | },
211 | {
212 | name: '泰州',
213 | value: 36
214 | },
215 | {
216 | name: '南宁',
217 | value: 37
218 | },
219 | {
220 | name: '营口',
221 | value: 37
222 | },
223 | {
224 | name: '惠州',
225 | value: 37
226 | },
227 | {
228 | name: '江阴',
229 | value: 37
230 | },
231 | {
232 | name: '蓬莱',
233 | value: 37
234 | },
235 | {
236 | name: '韶关',
237 | value: 38
238 | },
239 | {
240 | name: '嘉峪关',
241 | value: 38
242 | },
243 | {
244 | name: '广州',
245 | value: 38
246 | },
247 | {
248 | name: '延安',
249 | value: 38
250 | },
251 | {
252 | name: '太原',
253 | value: 39
254 | },
255 | {
256 | name: '清远',
257 | value: 39
258 | },
259 | {
260 | name: '中山',
261 | value: 39
262 | },
263 | {
264 | name: '昆明',
265 | value: 39
266 | },
267 | {
268 | name: '寿光',
269 | value: 40
270 | },
271 | {
272 | name: '盘锦',
273 | value: 40
274 | },
275 | {
276 | name: '长治',
277 | value: 41
278 | },
279 | {
280 | name: '深圳',
281 | value: 41
282 | },
283 | {
284 | name: '珠海',
285 | value: 42
286 | },
287 | {
288 | name: '宿迁',
289 | value: 43
290 | },
291 | {
292 | name: '咸阳',
293 | value: 43
294 | },
295 | {
296 | name: '铜川',
297 | value: 44
298 | },
299 | {
300 | name: '平度',
301 | value: 44
302 | },
303 | {
304 | name: '佛山',
305 | value: 44
306 | },
307 | {
308 | name: '海口',
309 | value: 44
310 | },
311 | {
312 | name: '江门',
313 | value: 45
314 | },
315 | {
316 | name: '章丘',
317 | value: 45
318 | },
319 | {
320 | name: '肇庆',
321 | value: 46
322 | },
323 | {
324 | name: '大连',
325 | value: 47
326 | },
327 | {
328 | name: '临汾',
329 | value: 47
330 | },
331 | {
332 | name: '吴江',
333 | value: 47
334 | },
335 | {
336 | name: '石嘴山',
337 | value: 49
338 | },
339 | {
340 | name: '沈阳',
341 | value: 50
342 | },
343 | {
344 | name: '苏州',
345 | value: 50
346 | },
347 | {
348 | name: '茂名',
349 | value: 50
350 | },
351 | {
352 | name: '嘉兴',
353 | value: 51
354 | },
355 | {
356 | name: '长春',
357 | value: 51
358 | },
359 | {
360 | name: '胶州',
361 | value: 52
362 | },
363 | {
364 | name: '银川',
365 | value: 52
366 | },
367 | {
368 | name: '张家港',
369 | value: 52
370 | },
371 | {
372 | name: '三门峡',
373 | value: 53
374 | },
375 | {
376 | name: '锦州',
377 | value: 54
378 | },
379 | {
380 | name: '南昌',
381 | value: 54
382 | },
383 | {
384 | name: '柳州',
385 | value: 54
386 | },
387 | {
388 | name: '三亚',
389 | value: 54
390 | },
391 | {
392 | name: '自贡',
393 | value: 56
394 | },
395 | {
396 | name: '吉林',
397 | value: 56
398 | },
399 | {
400 | name: '阳江',
401 | value: 57
402 | },
403 | {
404 | name: '泸州',
405 | value: 57
406 | },
407 | {
408 | name: '西宁',
409 | value: 57
410 | },
411 | {
412 | name: '宜宾',
413 | value: 58
414 | },
415 | {
416 | name: '呼和浩特',
417 | value: 58
418 | },
419 | {
420 | name: '成都',
421 | value: 58
422 | },
423 | {
424 | name: '大同',
425 | value: 58
426 | },
427 | {
428 | name: '镇江',
429 | value: 59
430 | },
431 | {
432 | name: '桂林',
433 | value: 59
434 | },
435 | {
436 | name: '张家界',
437 | value: 59
438 | },
439 | {
440 | name: '宜兴',
441 | value: 59
442 | },
443 | {
444 | name: '北海',
445 | value: 60
446 | },
447 | {
448 | name: '西安',
449 | value: 61
450 | },
451 | {
452 | name: '金坛',
453 | value: 62
454 | },
455 | {
456 | name: '东营',
457 | value: 62
458 | },
459 | {
460 | name: '牡丹江',
461 | value: 63
462 | },
463 | {
464 | name: '遵义',
465 | value: 63
466 | },
467 | {
468 | name: '绍兴',
469 | value: 63
470 | },
471 | {
472 | name: '扬州',
473 | value: 64
474 | },
475 | {
476 | name: '常州',
477 | value: 64
478 | },
479 | {
480 | name: '潍坊',
481 | value: 65
482 | },
483 | {
484 | name: '重庆',
485 | value: 66
486 | },
487 | {
488 | name: '台州',
489 | value: 67
490 | },
491 | {
492 | name: '南京',
493 | value: 67
494 | },
495 | {
496 | name: '滨州',
497 | value: 70
498 | },
499 | {
500 | name: '贵阳',
501 | value: 71
502 | },
503 | {
504 | name: '无锡',
505 | value: 71
506 | },
507 | {
508 | name: '本溪',
509 | value: 71
510 | },
511 | {
512 | name: '克拉玛依',
513 | value: 72
514 | },
515 | {
516 | name: '渭南',
517 | value: 72
518 | },
519 | {
520 | name: '马鞍山',
521 | value: 72
522 | },
523 | {
524 | name: '宝鸡',
525 | value: 72
526 | },
527 | {
528 | name: '焦作',
529 | value: 75
530 | },
531 | {
532 | name: '句容',
533 | value: 75
534 | },
535 | {
536 | name: '北京',
537 | value: 79
538 | },
539 | {
540 | name: '徐州',
541 | value: 79
542 | },
543 | {
544 | name: '衡水',
545 | value: 80
546 | },
547 | {
548 | name: '包头',
549 | value: 80
550 | },
551 | {
552 | name: '绵阳',
553 | value: 80
554 | },
555 | {
556 | name: '乌鲁木齐',
557 | value: 84
558 | },
559 | {
560 | name: '枣庄',
561 | value: 84
562 | },
563 | {
564 | name: '杭州',
565 | value: 84
566 | },
567 | {
568 | name: '淄博',
569 | value: 85
570 | },
571 | {
572 | name: '鞍山',
573 | value: 86
574 | },
575 | {
576 | name: '溧阳',
577 | value: 86
578 | },
579 | {
580 | name: '库尔勒',
581 | value: 86
582 | },
583 | {
584 | name: '安阳',
585 | value: 90
586 | },
587 | {
588 | name: '开封',
589 | value: 90
590 | },
591 | {
592 | name: '济南',
593 | value: 92
594 | },
595 | {
596 | name: '德阳',
597 | value: 93
598 | },
599 | {
600 | name: '温州',
601 | value: 95
602 | },
603 | {
604 | name: '九江',
605 | value: 96
606 | },
607 | {
608 | name: '邯郸',
609 | value: 98
610 | },
611 | {
612 | name: '临安',
613 | value: 99
614 | },
615 | {
616 | name: '兰州',
617 | value: 99
618 | },
619 | {
620 | name: '沧州',
621 | value: 100
622 | },
623 | {
624 | name: '临沂',
625 | value: 103
626 | },
627 | {
628 | name: '南充',
629 | value: 104
630 | },
631 | {
632 | name: '天津',
633 | value: 105
634 | },
635 | {
636 | name: '富阳',
637 | value: 106
638 | },
639 | {
640 | name: '泰安',
641 | value: 112
642 | },
643 | {
644 | name: '诸暨',
645 | value: 112
646 | },
647 | {
648 | name: '郑州',
649 | value: 113
650 | },
651 | {
652 | name: '哈尔滨',
653 | value: 114
654 | },
655 | {
656 | name: '聊城',
657 | value: 116
658 | },
659 | {
660 | name: '芜湖',
661 | value: 117
662 | },
663 | {
664 | name: '唐山',
665 | value: 119
666 | },
667 | {
668 | name: '平顶山',
669 | value: 119
670 | },
671 | {
672 | name: '邢台',
673 | value: 119
674 | },
675 | {
676 | name: '德州',
677 | value: 120
678 | },
679 | {
680 | name: '济宁',
681 | value: 120
682 | },
683 | {
684 | name: '荆州',
685 | value: 127
686 | },
687 | {
688 | name: '宜昌',
689 | value: 130
690 | },
691 | {
692 | name: '义乌',
693 | value: 132
694 | },
695 | {
696 | name: '丽水',
697 | value: 133
698 | },
699 | {
700 | name: '洛阳',
701 | value: 134
702 | },
703 | {
704 | name: '秦皇岛',
705 | value: 136
706 | },
707 | {
708 | name: '株洲',
709 | value: 143
710 | },
711 | {
712 | name: '石家庄',
713 | value: 147
714 | },
715 | {
716 | name: '莱芜',
717 | value: 148
718 | },
719 | {
720 | name: '常德',
721 | value: 152
722 | },
723 | {
724 | name: '保定',
725 | value: 153
726 | },
727 | {
728 | name: '湘潭',
729 | value: 154
730 | },
731 | {
732 | name: '金华',
733 | value: 157
734 | },
735 | {
736 | name: '岳阳',
737 | value: 169
738 | },
739 | {
740 | name: '长沙',
741 | value: 175
742 | },
743 | {
744 | name: '衢州',
745 | value: 177
746 | },
747 | {
748 | name: '廊坊',
749 | value: 193
750 | },
751 | {
752 | name: '菏泽',
753 | value: 194
754 | },
755 | {
756 | name: '合肥',
757 | value: 229
758 | },
759 | {
760 | name: '武汉',
761 | value: 273
762 | },
763 | {
764 | name: '大庆',
765 | value: 279
766 | }
767 | ];
768 |
769 | var geoCoordMap = {
770 | '海门': [121.15, 31.89],
771 | '鄂尔多斯': [109.781327, 39.608266],
772 | '招远': [120.38, 37.35],
773 | '舟山': [122.207216, 29.985295],
774 | '齐齐哈尔': [123.97, 47.33],
775 | '盐城': [120.13, 33.38],
776 | '赤峰': [118.87, 42.28],
777 | '青岛': [120.33, 36.07],
778 | '乳山': [121.52, 36.89],
779 | '金昌': [102.188043, 38.520089],
780 | '泉州': [118.58, 24.93],
781 | '莱西': [120.53, 36.86],
782 | '日照': [119.46, 35.42],
783 | '胶南': [119.97, 35.88],
784 | '南通': [121.05, 32.08],
785 | '拉萨': [91.11, 29.97],
786 | '云浮': [112.02, 22.93],
787 | '梅州': [116.1, 24.55],
788 | '文登': [122.05, 37.2],
789 | '上海': [121.48, 31.22],
790 | '攀枝花': [101.718637, 26.582347],
791 | '威海': [122.1, 37.5],
792 | '承德': [117.93, 40.97],
793 | '厦门': [118.1, 24.46],
794 | '汕尾': [115.375279, 22.786211],
795 | '潮州': [116.63, 23.68],
796 | '丹东': [124.37, 40.13],
797 | '太仓': [121.1, 31.45],
798 | '曲靖': [103.79, 25.51],
799 | '烟台': [121.39, 37.52],
800 | '福州': [119.3, 26.08],
801 | '瓦房店': [121.979603, 39.627114],
802 | '即墨': [120.45, 36.38],
803 | '抚顺': [123.97, 41.97],
804 | '玉溪': [102.52, 24.35],
805 | '张家口': [114.87, 40.82],
806 | '阳泉': [113.57, 37.85],
807 | '莱州': [119.942327, 37.177017],
808 | '湖州': [120.1, 30.86],
809 | '汕头': [116.69, 23.39],
810 | '昆山': [120.95, 31.39],
811 | '宁波': [121.56, 29.86],
812 | '湛江': [110.359377, 21.270708],
813 | '揭阳': [116.35, 23.55],
814 | '荣成': [122.41, 37.16],
815 | '连云港': [119.16, 34.59],
816 | '葫芦岛': [120.836932, 40.711052],
817 | '常熟': [120.74, 31.64],
818 | '东莞': [113.75, 23.04],
819 | '河源': [114.68, 23.73],
820 | '淮安': [119.15, 33.5],
821 | '泰州': [119.9, 32.49],
822 | '南宁': [108.33, 22.84],
823 | '营口': [122.18, 40.65],
824 | '惠州': [114.4, 23.09],
825 | '江阴': [120.26, 31.91],
826 | '蓬莱': [120.75, 37.8],
827 | '韶关': [113.62, 24.84],
828 | '嘉峪关': [98.289152, 39.77313],
829 | '广州': [113.23, 23.16],
830 | '延安': [109.47, 36.6],
831 | '太原': [112.53, 37.87],
832 | '清远': [113.01, 23.7],
833 | '中山': [113.38, 22.52],
834 | '昆明': [102.73, 25.04],
835 | '寿光': [118.73, 36.86],
836 | '盘锦': [122.070714, 41.119997],
837 | '长治': [113.08, 36.18],
838 | '深圳': [114.07, 22.62],
839 | '珠海': [113.52, 22.3],
840 | '宿迁': [118.3, 33.96],
841 | '咸阳': [108.72, 34.36],
842 | '铜川': [109.11, 35.09],
843 | '平度': [119.97, 36.77],
844 | '佛山': [113.11, 23.05],
845 | '海口': [110.35, 20.02],
846 | '江门': [113.06, 22.61],
847 | '章丘': [117.53, 36.72],
848 | '肇庆': [112.44, 23.05],
849 | '大连': [121.62, 38.92],
850 | '临汾': [111.5, 36.08],
851 | '吴江': [120.63, 31.16],
852 | '石嘴山': [106.39, 39.04],
853 | '沈阳': [123.38, 41.8],
854 | '苏州': [120.62, 31.32],
855 | '茂名': [110.88, 21.68],
856 | '嘉兴': [120.76, 30.77],
857 | '长春': [125.35, 43.88],
858 | '胶州': [120.03336, 36.264622],
859 | '银川': [106.27, 38.47],
860 | '张家港': [120.555821, 31.875428],
861 | '三门峡': [111.19, 34.76],
862 | '锦州': [121.15, 41.13],
863 | '南昌': [115.89, 28.68],
864 | '柳州': [109.4, 24.33],
865 | '三亚': [109.511909, 18.252847],
866 | '自贡': [104.778442, 29.33903],
867 | '吉林': [126.57, 43.87],
868 | '阳江': [111.95, 21.85],
869 | '泸州': [105.39, 28.91],
870 | '西宁': [101.74, 36.56],
871 | '宜宾': [104.56, 29.77],
872 | '呼和浩特': [111.65, 40.82],
873 | '成都': [104.06, 30.67],
874 | '大同': [113.3, 40.12],
875 | '镇江': [119.44, 32.2],
876 | '桂林': [110.28, 25.29],
877 | '张家界': [110.479191, 29.117096],
878 | '宜兴': [119.82, 31.36],
879 | '北海': [109.12, 21.49],
880 | '西安': [108.95, 34.27],
881 | '金坛': [119.56, 31.74],
882 | '东营': [118.49, 37.46],
883 | '牡丹江': [129.58, 44.6],
884 | '遵义': [106.9, 27.7],
885 | '绍兴': [120.58, 30.01],
886 | '扬州': [119.42, 32.39],
887 | '常州': [119.95, 31.79],
888 | '潍坊': [119.1, 36.62],
889 | '重庆': [106.54, 29.59],
890 | '台州': [121.420757, 28.656386],
891 | '南京': [118.78, 32.04],
892 | '滨州': [118.03, 37.36],
893 | '贵阳': [106.71, 26.57],
894 | '无锡': [120.29, 31.59],
895 | '本溪': [123.73, 41.3],
896 | '克拉玛依': [84.77, 45.59],
897 | '渭南': [109.5, 34.52],
898 | '马鞍山': [118.48, 31.56],
899 | '宝鸡': [107.15, 34.38],
900 | '焦作': [113.21, 35.24],
901 | '句容': [119.16, 31.95],
902 | '北京': [116.46, 39.92],
903 | '徐州': [117.2, 34.26],
904 | '衡水': [115.72, 37.72],
905 | '包头': [110, 40.58],
906 | '绵阳': [104.73, 31.48],
907 | '乌鲁木齐': [87.68, 43.77],
908 | '枣庄': [117.57, 34.86],
909 | '杭州': [120.19, 30.26],
910 | '淄博': [118.05, 36.78],
911 | '鞍山': [122.85, 41.12],
912 | '溧阳': [119.48, 31.43],
913 | '库尔勒': [86.06, 41.68],
914 | '安阳': [114.35, 36.1],
915 | '开封': [114.35, 34.79],
916 | '济南': [117, 36.65],
917 | '德阳': [104.37, 31.13],
918 | '温州': [120.65, 28.01],
919 | '九江': [115.97, 29.71],
920 | '邯郸': [114.47, 36.6],
921 | '临安': [119.72, 30.23],
922 | '兰州': [103.73, 36.03],
923 | '沧州': [116.83, 38.33],
924 | '临沂': [118.35, 35.05],
925 | '南充': [106.110698, 30.837793],
926 | '天津': [117.2, 39.13],
927 | '富阳': [119.95, 30.07],
928 | '泰安': [117.13, 36.18],
929 | '诸暨': [120.23, 29.71],
930 | '郑州': [113.65, 34.76],
931 | '哈尔滨': [126.63, 45.75],
932 | '聊城': [115.97, 36.45],
933 | '芜湖': [118.38, 31.33],
934 | '唐山': [118.02, 39.63],
935 | '平顶山': [113.29, 33.75],
936 | '邢台': [114.48, 37.05],
937 | '德州': [116.29, 37.45],
938 | '济宁': [116.59, 35.38],
939 | '荆州': [112.239741, 30.335165],
940 | '宜昌': [111.3, 30.7],
941 | '义乌': [120.06, 29.32],
942 | '丽水': [119.92, 28.45],
943 | '洛阳': [112.44, 34.7],
944 | '秦皇岛': [119.57, 39.95],
945 | '株洲': [113.16, 27.83],
946 | '石家庄': [114.48, 38.03],
947 | '莱芜': [117.67, 36.19],
948 | '常德': [111.69, 29.05],
949 | '保定': [115.48, 38.85],
950 | '湘潭': [112.91, 27.87],
951 | '金华': [119.64, 29.12],
952 | '岳阳': [113.09, 29.37],
953 | '长沙': [113, 28.21],
954 | '衢州': [118.88, 28.97],
955 | '廊坊': [116.7, 39.53],
956 | '菏泽': [115.480656, 35.23375],
957 | '合肥': [117.27, 31.86],
958 | '武汉': [114.31, 30.52],
959 | '大庆': [125.03, 46.58]
960 | };
961 |
962 | var convertData = function (data) {
963 | var res = [];
964 | for (var i = 0; i < data.length; i++) {
965 | var geoCoord = geoCoordMap[data[i].name];
966 | if (geoCoord) {
967 | res.push({
968 | name: data[i].name,
969 | value: geoCoord.concat(data[i].value)
970 | });
971 | }
972 | }
973 | return res;
974 | };
975 |
976 | var myChart = echarts.init(document.getElementById('main'));
977 |
978 | myChart.setOption({
979 | title: {
980 | text: '全国主要城市空气质量',
981 | subtext: 'data from PM25.in',
982 | sublink: 'http://www.pm25.in',
983 | left: 'center',
984 | textStyle: {
985 | color: '#fff'
986 | }
987 | },
988 | tooltip: {
989 | trigger: 'item'
990 | },
991 | leaflet: {
992 | center: [104.114129, 37.550339],
993 | zoom: 4,
994 | roam: true,
995 | },
996 | series: [{
997 | name: 'pm2.5',
998 | type: 'scatter',
999 | coordinateSystem: 'leaflet',
1000 | data: convertData(data),
1001 | symbolSize: function (val) {
1002 | return val[2] / 10;
1003 | },
1004 | label: {
1005 | normal: {
1006 | formatter: '{b}',
1007 | position: 'right',
1008 | show: false
1009 | },
1010 | emphasis: {
1011 | show: true
1012 | }
1013 | },
1014 | itemStyle: {
1015 | normal: {
1016 | color: '#ddb926'
1017 | }
1018 | }
1019 | },
1020 | {
1021 | name: 'Top 5',
1022 | type: 'effectScatter',
1023 | coordinateSystem: 'leaflet',
1024 | data: convertData(data.sort(function (a, b) {
1025 | return b.value - a.value;
1026 | }).slice(0, 6)),
1027 | symbolSize: function (val) {
1028 | return val[2] / 10;
1029 | },
1030 | showEffectOn: 'emphasis',
1031 | rippleEffect: {
1032 | brushType: 'stroke'
1033 | },
1034 | hoverAnimation: true,
1035 | label: {
1036 | normal: {
1037 | formatter: '{b}',
1038 | position: 'right',
1039 | show: true
1040 | }
1041 | },
1042 | itemStyle: {
1043 | normal: {
1044 | color: '#f4e925',
1045 | shadowBlur: 10,
1046 | shadowColor: '#333'
1047 | }
1048 | },
1049 | zlevel: 1
1050 | }
1051 | ]
1052 | });
1053 |
1054 | setTimeout(()=> {
1055 | myChart.convertToPixel('leaflet', [0, 0]);
1056 | }, 2000);
1057 |
1058 | // https://developer.mozilla.org/en-US/docs/Web/Events/resize
1059 | (function () {
1060 | var throttle = function (type, name, obj) {
1061 | obj = obj || window;
1062 | var running = false;
1063 | var func = function () {
1064 | if (running) {
1065 | return;
1066 | }
1067 | running = true;
1068 | requestAnimationFrame(function () {
1069 | obj.dispatchEvent(new CustomEvent(name));
1070 | running = false;
1071 | });
1072 | };
1073 | obj.addEventListener(type, func);
1074 | };
1075 |
1076 | /* init - you can init any event */
1077 | throttle("resize", "optimizedResize");
1078 | })();
1079 |
1080 | // handle event
1081 | window.addEventListener("optimizedResize", function () {
1082 | myChart.resize({
1083 | width: 'auto',
1084 | height: 'auto'
1085 | });
1086 | });
--------------------------------------------------------------------------------
/example/leaflet-multiple-layers.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
22 |
23 |
1117 |
1118 |
1119 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | acorn-jsx@^3.0.0:
6 | version "3.0.1"
7 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
8 | dependencies:
9 | acorn "^3.0.4"
10 |
11 | acorn@^3.0.4:
12 | version "3.3.0"
13 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
14 |
15 | acorn@^5.2.1:
16 | version "5.3.0"
17 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.3.0.tgz#7446d39459c54fb49a80e6ee6478149b940ec822"
18 |
19 | ajv-keywords@^2.1.0:
20 | version "2.1.1"
21 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762"
22 |
23 | ajv@^5.2.3, ajv@^5.3.0:
24 | version "5.5.2"
25 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
26 | dependencies:
27 | co "^4.6.0"
28 | fast-deep-equal "^1.0.0"
29 | fast-json-stable-stringify "^2.0.0"
30 | json-schema-traverse "^0.3.0"
31 |
32 | ansi-escapes@^3.0.0:
33 | version "3.0.0"
34 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92"
35 |
36 | ansi-regex@^2.0.0:
37 | version "2.1.1"
38 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
39 |
40 | ansi-regex@^3.0.0:
41 | version "3.0.0"
42 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
43 |
44 | ansi-styles@^2.2.1:
45 | version "2.2.1"
46 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
47 |
48 | ansi-styles@^3.1.0:
49 | version "3.2.0"
50 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88"
51 | dependencies:
52 | color-convert "^1.9.0"
53 |
54 | argparse@^1.0.7:
55 | version "1.0.9"
56 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
57 | dependencies:
58 | sprintf-js "~1.0.2"
59 |
60 | arr-diff@^2.0.0:
61 | version "2.0.0"
62 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
63 | dependencies:
64 | arr-flatten "^1.0.1"
65 |
66 | arr-flatten@^1.0.1:
67 | version "1.1.0"
68 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
69 |
70 | array-union@^1.0.1:
71 | version "1.0.2"
72 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
73 | dependencies:
74 | array-uniq "^1.0.1"
75 |
76 | array-uniq@^1.0.1:
77 | version "1.0.3"
78 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
79 |
80 | array-unique@^0.2.1:
81 | version "0.2.1"
82 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
83 |
84 | arrify@^1.0.0:
85 | version "1.0.1"
86 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
87 |
88 | babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
89 | version "6.26.0"
90 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
91 | dependencies:
92 | chalk "^1.1.3"
93 | esutils "^2.0.2"
94 | js-tokens "^3.0.2"
95 |
96 | babel-core@^6.26.0:
97 | version "6.26.0"
98 | resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8"
99 | dependencies:
100 | babel-code-frame "^6.26.0"
101 | babel-generator "^6.26.0"
102 | babel-helpers "^6.24.1"
103 | babel-messages "^6.23.0"
104 | babel-register "^6.26.0"
105 | babel-runtime "^6.26.0"
106 | babel-template "^6.26.0"
107 | babel-traverse "^6.26.0"
108 | babel-types "^6.26.0"
109 | babylon "^6.18.0"
110 | convert-source-map "^1.5.0"
111 | debug "^2.6.8"
112 | json5 "^0.5.1"
113 | lodash "^4.17.4"
114 | minimatch "^3.0.4"
115 | path-is-absolute "^1.0.1"
116 | private "^0.1.7"
117 | slash "^1.0.0"
118 | source-map "^0.5.6"
119 |
120 | babel-generator@^6.26.0:
121 | version "6.26.0"
122 | resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5"
123 | dependencies:
124 | babel-messages "^6.23.0"
125 | babel-runtime "^6.26.0"
126 | babel-types "^6.26.0"
127 | detect-indent "^4.0.0"
128 | jsesc "^1.3.0"
129 | lodash "^4.17.4"
130 | source-map "^0.5.6"
131 | trim-right "^1.0.1"
132 |
133 | babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
134 | version "6.24.1"
135 | resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664"
136 | dependencies:
137 | babel-helper-explode-assignable-expression "^6.24.1"
138 | babel-runtime "^6.22.0"
139 | babel-types "^6.24.1"
140 |
141 | babel-helper-call-delegate@^6.24.1:
142 | version "6.24.1"
143 | resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
144 | dependencies:
145 | babel-helper-hoist-variables "^6.24.1"
146 | babel-runtime "^6.22.0"
147 | babel-traverse "^6.24.1"
148 | babel-types "^6.24.1"
149 |
150 | babel-helper-define-map@^6.24.1:
151 | version "6.26.0"
152 | resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f"
153 | dependencies:
154 | babel-helper-function-name "^6.24.1"
155 | babel-runtime "^6.26.0"
156 | babel-types "^6.26.0"
157 | lodash "^4.17.4"
158 |
159 | babel-helper-explode-assignable-expression@^6.24.1:
160 | version "6.24.1"
161 | resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa"
162 | dependencies:
163 | babel-runtime "^6.22.0"
164 | babel-traverse "^6.24.1"
165 | babel-types "^6.24.1"
166 |
167 | babel-helper-function-name@^6.24.1:
168 | version "6.24.1"
169 | resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
170 | dependencies:
171 | babel-helper-get-function-arity "^6.24.1"
172 | babel-runtime "^6.22.0"
173 | babel-template "^6.24.1"
174 | babel-traverse "^6.24.1"
175 | babel-types "^6.24.1"
176 |
177 | babel-helper-get-function-arity@^6.24.1:
178 | version "6.24.1"
179 | resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d"
180 | dependencies:
181 | babel-runtime "^6.22.0"
182 | babel-types "^6.24.1"
183 |
184 | babel-helper-hoist-variables@^6.24.1:
185 | version "6.24.1"
186 | resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76"
187 | dependencies:
188 | babel-runtime "^6.22.0"
189 | babel-types "^6.24.1"
190 |
191 | babel-helper-optimise-call-expression@^6.24.1:
192 | version "6.24.1"
193 | resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
194 | dependencies:
195 | babel-runtime "^6.22.0"
196 | babel-types "^6.24.1"
197 |
198 | babel-helper-regex@^6.24.1:
199 | version "6.26.0"
200 | resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72"
201 | dependencies:
202 | babel-runtime "^6.26.0"
203 | babel-types "^6.26.0"
204 | lodash "^4.17.4"
205 |
206 | babel-helper-remap-async-to-generator@^6.24.1:
207 | version "6.24.1"
208 | resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b"
209 | dependencies:
210 | babel-helper-function-name "^6.24.1"
211 | babel-runtime "^6.22.0"
212 | babel-template "^6.24.1"
213 | babel-traverse "^6.24.1"
214 | babel-types "^6.24.1"
215 |
216 | babel-helper-replace-supers@^6.24.1:
217 | version "6.24.1"
218 | resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a"
219 | dependencies:
220 | babel-helper-optimise-call-expression "^6.24.1"
221 | babel-messages "^6.23.0"
222 | babel-runtime "^6.22.0"
223 | babel-template "^6.24.1"
224 | babel-traverse "^6.24.1"
225 | babel-types "^6.24.1"
226 |
227 | babel-helpers@^6.24.1:
228 | version "6.24.1"
229 | resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2"
230 | dependencies:
231 | babel-runtime "^6.22.0"
232 | babel-template "^6.24.1"
233 |
234 | babel-messages@^6.23.0:
235 | version "6.23.0"
236 | resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
237 | dependencies:
238 | babel-runtime "^6.22.0"
239 |
240 | babel-plugin-check-es2015-constants@^6.22.0:
241 | version "6.22.0"
242 | resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
243 | dependencies:
244 | babel-runtime "^6.22.0"
245 |
246 | babel-plugin-external-helpers@^6.22.0:
247 | version "6.22.0"
248 | resolved "https://registry.yarnpkg.com/babel-plugin-external-helpers/-/babel-plugin-external-helpers-6.22.0.tgz#2285f48b02bd5dede85175caf8c62e86adccefa1"
249 | dependencies:
250 | babel-runtime "^6.22.0"
251 |
252 | babel-plugin-syntax-async-functions@^6.8.0:
253 | version "6.13.0"
254 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
255 |
256 | babel-plugin-syntax-exponentiation-operator@^6.8.0:
257 | version "6.13.0"
258 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de"
259 |
260 | babel-plugin-syntax-trailing-function-commas@^6.22.0:
261 | version "6.22.0"
262 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3"
263 |
264 | babel-plugin-transform-async-to-generator@^6.22.0:
265 | version "6.24.1"
266 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761"
267 | dependencies:
268 | babel-helper-remap-async-to-generator "^6.24.1"
269 | babel-plugin-syntax-async-functions "^6.8.0"
270 | babel-runtime "^6.22.0"
271 |
272 | babel-plugin-transform-es2015-arrow-functions@^6.22.0:
273 | version "6.22.0"
274 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
275 | dependencies:
276 | babel-runtime "^6.22.0"
277 |
278 | babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
279 | version "6.22.0"
280 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
281 | dependencies:
282 | babel-runtime "^6.22.0"
283 |
284 | babel-plugin-transform-es2015-block-scoping@^6.23.0:
285 | version "6.26.0"
286 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f"
287 | dependencies:
288 | babel-runtime "^6.26.0"
289 | babel-template "^6.26.0"
290 | babel-traverse "^6.26.0"
291 | babel-types "^6.26.0"
292 | lodash "^4.17.4"
293 |
294 | babel-plugin-transform-es2015-classes@^6.23.0:
295 | version "6.24.1"
296 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"
297 | dependencies:
298 | babel-helper-define-map "^6.24.1"
299 | babel-helper-function-name "^6.24.1"
300 | babel-helper-optimise-call-expression "^6.24.1"
301 | babel-helper-replace-supers "^6.24.1"
302 | babel-messages "^6.23.0"
303 | babel-runtime "^6.22.0"
304 | babel-template "^6.24.1"
305 | babel-traverse "^6.24.1"
306 | babel-types "^6.24.1"
307 |
308 | babel-plugin-transform-es2015-computed-properties@^6.22.0:
309 | version "6.24.1"
310 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3"
311 | dependencies:
312 | babel-runtime "^6.22.0"
313 | babel-template "^6.24.1"
314 |
315 | babel-plugin-transform-es2015-destructuring@^6.23.0:
316 | version "6.23.0"
317 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
318 | dependencies:
319 | babel-runtime "^6.22.0"
320 |
321 | babel-plugin-transform-es2015-duplicate-keys@^6.22.0:
322 | version "6.24.1"
323 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e"
324 | dependencies:
325 | babel-runtime "^6.22.0"
326 | babel-types "^6.24.1"
327 |
328 | babel-plugin-transform-es2015-for-of@^6.23.0:
329 | version "6.23.0"
330 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
331 | dependencies:
332 | babel-runtime "^6.22.0"
333 |
334 | babel-plugin-transform-es2015-function-name@^6.22.0:
335 | version "6.24.1"
336 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
337 | dependencies:
338 | babel-helper-function-name "^6.24.1"
339 | babel-runtime "^6.22.0"
340 | babel-types "^6.24.1"
341 |
342 | babel-plugin-transform-es2015-literals@^6.22.0:
343 | version "6.22.0"
344 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
345 | dependencies:
346 | babel-runtime "^6.22.0"
347 |
348 | babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1:
349 | version "6.24.1"
350 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"
351 | dependencies:
352 | babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
353 | babel-runtime "^6.22.0"
354 | babel-template "^6.24.1"
355 |
356 | babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
357 | version "6.26.0"
358 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a"
359 | dependencies:
360 | babel-plugin-transform-strict-mode "^6.24.1"
361 | babel-runtime "^6.26.0"
362 | babel-template "^6.26.0"
363 | babel-types "^6.26.0"
364 |
365 | babel-plugin-transform-es2015-modules-systemjs@^6.23.0:
366 | version "6.24.1"
367 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"
368 | dependencies:
369 | babel-helper-hoist-variables "^6.24.1"
370 | babel-runtime "^6.22.0"
371 | babel-template "^6.24.1"
372 |
373 | babel-plugin-transform-es2015-modules-umd@^6.23.0:
374 | version "6.24.1"
375 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"
376 | dependencies:
377 | babel-plugin-transform-es2015-modules-amd "^6.24.1"
378 | babel-runtime "^6.22.0"
379 | babel-template "^6.24.1"
380 |
381 | babel-plugin-transform-es2015-object-super@^6.22.0:
382 | version "6.24.1"
383 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d"
384 | dependencies:
385 | babel-helper-replace-supers "^6.24.1"
386 | babel-runtime "^6.22.0"
387 |
388 | babel-plugin-transform-es2015-parameters@^6.23.0:
389 | version "6.24.1"
390 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
391 | dependencies:
392 | babel-helper-call-delegate "^6.24.1"
393 | babel-helper-get-function-arity "^6.24.1"
394 | babel-runtime "^6.22.0"
395 | babel-template "^6.24.1"
396 | babel-traverse "^6.24.1"
397 | babel-types "^6.24.1"
398 |
399 | babel-plugin-transform-es2015-shorthand-properties@^6.22.0:
400 | version "6.24.1"
401 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"
402 | dependencies:
403 | babel-runtime "^6.22.0"
404 | babel-types "^6.24.1"
405 |
406 | babel-plugin-transform-es2015-spread@^6.22.0:
407 | version "6.22.0"
408 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
409 | dependencies:
410 | babel-runtime "^6.22.0"
411 |
412 | babel-plugin-transform-es2015-sticky-regex@^6.22.0:
413 | version "6.24.1"
414 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
415 | dependencies:
416 | babel-helper-regex "^6.24.1"
417 | babel-runtime "^6.22.0"
418 | babel-types "^6.24.1"
419 |
420 | babel-plugin-transform-es2015-template-literals@^6.22.0:
421 | version "6.22.0"
422 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
423 | dependencies:
424 | babel-runtime "^6.22.0"
425 |
426 | babel-plugin-transform-es2015-typeof-symbol@^6.23.0:
427 | version "6.23.0"
428 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
429 | dependencies:
430 | babel-runtime "^6.22.0"
431 |
432 | babel-plugin-transform-es2015-unicode-regex@^6.22.0:
433 | version "6.24.1"
434 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
435 | dependencies:
436 | babel-helper-regex "^6.24.1"
437 | babel-runtime "^6.22.0"
438 | regexpu-core "^2.0.0"
439 |
440 | babel-plugin-transform-exponentiation-operator@^6.22.0:
441 | version "6.24.1"
442 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e"
443 | dependencies:
444 | babel-helper-builder-binary-assignment-operator-visitor "^6.24.1"
445 | babel-plugin-syntax-exponentiation-operator "^6.8.0"
446 | babel-runtime "^6.22.0"
447 |
448 | babel-plugin-transform-regenerator@^6.22.0:
449 | version "6.26.0"
450 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f"
451 | dependencies:
452 | regenerator-transform "^0.10.0"
453 |
454 | babel-plugin-transform-strict-mode@^6.24.1:
455 | version "6.24.1"
456 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758"
457 | dependencies:
458 | babel-runtime "^6.22.0"
459 | babel-types "^6.24.1"
460 |
461 | babel-preset-env@^1.6.1:
462 | version "1.6.1"
463 | resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48"
464 | dependencies:
465 | babel-plugin-check-es2015-constants "^6.22.0"
466 | babel-plugin-syntax-trailing-function-commas "^6.22.0"
467 | babel-plugin-transform-async-to-generator "^6.22.0"
468 | babel-plugin-transform-es2015-arrow-functions "^6.22.0"
469 | babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
470 | babel-plugin-transform-es2015-block-scoping "^6.23.0"
471 | babel-plugin-transform-es2015-classes "^6.23.0"
472 | babel-plugin-transform-es2015-computed-properties "^6.22.0"
473 | babel-plugin-transform-es2015-destructuring "^6.23.0"
474 | babel-plugin-transform-es2015-duplicate-keys "^6.22.0"
475 | babel-plugin-transform-es2015-for-of "^6.23.0"
476 | babel-plugin-transform-es2015-function-name "^6.22.0"
477 | babel-plugin-transform-es2015-literals "^6.22.0"
478 | babel-plugin-transform-es2015-modules-amd "^6.22.0"
479 | babel-plugin-transform-es2015-modules-commonjs "^6.23.0"
480 | babel-plugin-transform-es2015-modules-systemjs "^6.23.0"
481 | babel-plugin-transform-es2015-modules-umd "^6.23.0"
482 | babel-plugin-transform-es2015-object-super "^6.22.0"
483 | babel-plugin-transform-es2015-parameters "^6.23.0"
484 | babel-plugin-transform-es2015-shorthand-properties "^6.22.0"
485 | babel-plugin-transform-es2015-spread "^6.22.0"
486 | babel-plugin-transform-es2015-sticky-regex "^6.22.0"
487 | babel-plugin-transform-es2015-template-literals "^6.22.0"
488 | babel-plugin-transform-es2015-typeof-symbol "^6.23.0"
489 | babel-plugin-transform-es2015-unicode-regex "^6.22.0"
490 | babel-plugin-transform-exponentiation-operator "^6.22.0"
491 | babel-plugin-transform-regenerator "^6.22.0"
492 | browserslist "^2.1.2"
493 | invariant "^2.2.2"
494 | semver "^5.3.0"
495 |
496 | babel-register@^6.26.0:
497 | version "6.26.0"
498 | resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071"
499 | dependencies:
500 | babel-core "^6.26.0"
501 | babel-runtime "^6.26.0"
502 | core-js "^2.5.0"
503 | home-or-tmp "^2.0.0"
504 | lodash "^4.17.4"
505 | mkdirp "^0.5.1"
506 | source-map-support "^0.4.15"
507 |
508 | babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0:
509 | version "6.26.0"
510 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
511 | dependencies:
512 | core-js "^2.4.0"
513 | regenerator-runtime "^0.11.0"
514 |
515 | babel-template@^6.24.1, babel-template@^6.26.0:
516 | version "6.26.0"
517 | resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
518 | dependencies:
519 | babel-runtime "^6.26.0"
520 | babel-traverse "^6.26.0"
521 | babel-types "^6.26.0"
522 | babylon "^6.18.0"
523 | lodash "^4.17.4"
524 |
525 | babel-traverse@^6.24.1, babel-traverse@^6.26.0:
526 | version "6.26.0"
527 | resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
528 | dependencies:
529 | babel-code-frame "^6.26.0"
530 | babel-messages "^6.23.0"
531 | babel-runtime "^6.26.0"
532 | babel-types "^6.26.0"
533 | babylon "^6.18.0"
534 | debug "^2.6.8"
535 | globals "^9.18.0"
536 | invariant "^2.2.2"
537 | lodash "^4.17.4"
538 |
539 | babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0:
540 | version "6.26.0"
541 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
542 | dependencies:
543 | babel-runtime "^6.26.0"
544 | esutils "^2.0.2"
545 | lodash "^4.17.4"
546 | to-fast-properties "^1.0.3"
547 |
548 | babylon@^6.18.0:
549 | version "6.18.0"
550 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
551 |
552 | balanced-match@^1.0.0:
553 | version "1.0.0"
554 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
555 |
556 | brace-expansion@^1.1.7:
557 | version "1.1.8"
558 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
559 | dependencies:
560 | balanced-match "^1.0.0"
561 | concat-map "0.0.1"
562 |
563 | braces@^1.8.2:
564 | version "1.8.5"
565 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
566 | dependencies:
567 | expand-range "^1.8.1"
568 | preserve "^0.2.0"
569 | repeat-element "^1.1.2"
570 |
571 | browserslist@^2.1.2:
572 | version "2.11.1"
573 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.11.1.tgz#02fda29d9a2164b879100126e7b0d0b57e43a7bb"
574 | dependencies:
575 | caniuse-lite "^1.0.30000789"
576 | electron-to-chromium "^1.3.30"
577 |
578 | builtin-modules@^1.1.0:
579 | version "1.1.1"
580 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
581 |
582 | caller-path@^0.1.0:
583 | version "0.1.0"
584 | resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
585 | dependencies:
586 | callsites "^0.2.0"
587 |
588 | callsites@^0.2.0:
589 | version "0.2.0"
590 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
591 |
592 | caniuse-lite@^1.0.30000789:
593 | version "1.0.30000791"
594 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000791.tgz#8e35745efd483a3e23bb7d350990326d2319fc16"
595 |
596 | chalk@^1.1.3:
597 | version "1.1.3"
598 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
599 | dependencies:
600 | ansi-styles "^2.2.1"
601 | escape-string-regexp "^1.0.2"
602 | has-ansi "^2.0.0"
603 | strip-ansi "^3.0.0"
604 | supports-color "^2.0.0"
605 |
606 | chalk@^2.0.0, chalk@^2.1.0:
607 | version "2.3.0"
608 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba"
609 | dependencies:
610 | ansi-styles "^3.1.0"
611 | escape-string-regexp "^1.0.5"
612 | supports-color "^4.0.0"
613 |
614 | chardet@^0.4.0:
615 | version "0.4.2"
616 | resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
617 |
618 | circular-json@^0.3.1:
619 | version "0.3.3"
620 | resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66"
621 |
622 | cli-cursor@^2.1.0:
623 | version "2.1.0"
624 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
625 | dependencies:
626 | restore-cursor "^2.0.0"
627 |
628 | cli-width@^2.0.0:
629 | version "2.2.0"
630 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
631 |
632 | co@^4.6.0:
633 | version "4.6.0"
634 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
635 |
636 | color-convert@^1.9.0:
637 | version "1.9.1"
638 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
639 | dependencies:
640 | color-name "^1.1.1"
641 |
642 | color-name@^1.1.1:
643 | version "1.1.3"
644 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
645 |
646 | concat-map@0.0.1:
647 | version "0.0.1"
648 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
649 |
650 | concat-stream@^1.6.0:
651 | version "1.6.0"
652 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
653 | dependencies:
654 | inherits "^2.0.3"
655 | readable-stream "^2.2.2"
656 | typedarray "^0.0.6"
657 |
658 | convert-source-map@^1.5.0:
659 | version "1.5.1"
660 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5"
661 |
662 | core-js@^2.4.0, core-js@^2.5.0:
663 | version "2.5.3"
664 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e"
665 |
666 | core-util-is@~1.0.0:
667 | version "1.0.2"
668 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
669 |
670 | cross-spawn@^5.1.0:
671 | version "5.1.0"
672 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
673 | dependencies:
674 | lru-cache "^4.0.1"
675 | shebang-command "^1.2.0"
676 | which "^1.2.9"
677 |
678 | debug@^2.6.8:
679 | version "2.6.9"
680 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
681 | dependencies:
682 | ms "2.0.0"
683 |
684 | debug@^3.1.0:
685 | version "3.1.0"
686 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
687 | dependencies:
688 | ms "2.0.0"
689 |
690 | deep-is@~0.1.3:
691 | version "0.1.3"
692 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
693 |
694 | del@^2.0.2:
695 | version "2.2.2"
696 | resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8"
697 | dependencies:
698 | globby "^5.0.0"
699 | is-path-cwd "^1.0.0"
700 | is-path-in-cwd "^1.0.0"
701 | object-assign "^4.0.1"
702 | pify "^2.0.0"
703 | pinkie-promise "^2.0.0"
704 | rimraf "^2.2.8"
705 |
706 | detect-indent@^4.0.0:
707 | version "4.0.0"
708 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
709 | dependencies:
710 | repeating "^2.0.0"
711 |
712 | doctrine@^2.0.2:
713 | version "2.1.0"
714 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
715 | dependencies:
716 | esutils "^2.0.2"
717 |
718 | echarts@^3.6.2:
719 | version "3.6.2"
720 | resolved "https://registry.yarnpkg.com/echarts/-/echarts-3.6.2.tgz#862954c8b5810bff87a48b0de0416ed8c4bb1c36"
721 | dependencies:
722 | zrender "^3.5.2"
723 |
724 | electron-releases@^2.1.0:
725 | version "2.1.0"
726 | resolved "https://registry.yarnpkg.com/electron-releases/-/electron-releases-2.1.0.tgz#c5614bf811f176ce3c836e368a0625782341fd4e"
727 |
728 | electron-to-chromium@^1.3.30:
729 | version "1.3.30"
730 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.30.tgz#9666f532a64586651fc56a72513692e820d06a80"
731 | dependencies:
732 | electron-releases "^2.1.0"
733 |
734 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
735 | version "1.0.5"
736 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
737 |
738 | eslint-config-google@^0.9.1:
739 | version "0.9.1"
740 | resolved "https://registry.yarnpkg.com/eslint-config-google/-/eslint-config-google-0.9.1.tgz#83353c3dba05f72bb123169a4094f4ff120391eb"
741 |
742 | eslint-scope@^3.7.1:
743 | version "3.7.1"
744 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
745 | dependencies:
746 | esrecurse "^4.1.0"
747 | estraverse "^4.1.1"
748 |
749 | eslint-visitor-keys@^1.0.0:
750 | version "1.0.0"
751 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
752 |
753 | eslint@^4.12.1:
754 | version "4.15.0"
755 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.15.0.tgz#89ab38c12713eec3d13afac14e4a89e75ef08145"
756 | dependencies:
757 | ajv "^5.3.0"
758 | babel-code-frame "^6.22.0"
759 | chalk "^2.1.0"
760 | concat-stream "^1.6.0"
761 | cross-spawn "^5.1.0"
762 | debug "^3.1.0"
763 | doctrine "^2.0.2"
764 | eslint-scope "^3.7.1"
765 | eslint-visitor-keys "^1.0.0"
766 | espree "^3.5.2"
767 | esquery "^1.0.0"
768 | esutils "^2.0.2"
769 | file-entry-cache "^2.0.0"
770 | functional-red-black-tree "^1.0.1"
771 | glob "^7.1.2"
772 | globals "^11.0.1"
773 | ignore "^3.3.3"
774 | imurmurhash "^0.1.4"
775 | inquirer "^3.0.6"
776 | is-resolvable "^1.0.0"
777 | js-yaml "^3.9.1"
778 | json-stable-stringify-without-jsonify "^1.0.1"
779 | levn "^0.3.0"
780 | lodash "^4.17.4"
781 | minimatch "^3.0.2"
782 | mkdirp "^0.5.1"
783 | natural-compare "^1.4.0"
784 | optionator "^0.8.2"
785 | path-is-inside "^1.0.2"
786 | pluralize "^7.0.0"
787 | progress "^2.0.0"
788 | require-uncached "^1.0.3"
789 | semver "^5.3.0"
790 | strip-ansi "^4.0.0"
791 | strip-json-comments "~2.0.1"
792 | table "^4.0.1"
793 | text-table "~0.2.0"
794 |
795 | espree@^3.5.2:
796 | version "3.5.2"
797 | resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.2.tgz#756ada8b979e9dcfcdb30aad8d1a9304a905e1ca"
798 | dependencies:
799 | acorn "^5.2.1"
800 | acorn-jsx "^3.0.0"
801 |
802 | esprima@^4.0.0:
803 | version "4.0.0"
804 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804"
805 |
806 | esquery@^1.0.0:
807 | version "1.0.0"
808 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa"
809 | dependencies:
810 | estraverse "^4.0.0"
811 |
812 | esrecurse@^4.1.0:
813 | version "4.2.0"
814 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163"
815 | dependencies:
816 | estraverse "^4.1.0"
817 | object-assign "^4.0.1"
818 |
819 | estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1:
820 | version "4.2.0"
821 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
822 |
823 | estree-walker@^0.2.1:
824 | version "0.2.1"
825 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e"
826 |
827 | estree-walker@^0.3.0:
828 | version "0.3.1"
829 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.3.1.tgz#e6b1a51cf7292524e7237c312e5fe6660c1ce1aa"
830 |
831 | estree-walker@^0.5.1:
832 | version "0.5.1"
833 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.1.tgz#64fc375053abc6f57d73e9bd2f004644ad3c5854"
834 |
835 | esutils@^2.0.2:
836 | version "2.0.2"
837 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
838 |
839 | expand-brackets@^0.1.4:
840 | version "0.1.5"
841 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
842 | dependencies:
843 | is-posix-bracket "^0.1.0"
844 |
845 | expand-range@^1.8.1:
846 | version "1.8.2"
847 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
848 | dependencies:
849 | fill-range "^2.1.0"
850 |
851 | external-editor@^2.0.4:
852 | version "2.1.0"
853 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48"
854 | dependencies:
855 | chardet "^0.4.0"
856 | iconv-lite "^0.4.17"
857 | tmp "^0.0.33"
858 |
859 | extglob@^0.3.1:
860 | version "0.3.2"
861 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
862 | dependencies:
863 | is-extglob "^1.0.0"
864 |
865 | fast-deep-equal@^1.0.0:
866 | version "1.0.0"
867 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
868 |
869 | fast-json-stable-stringify@^2.0.0:
870 | version "2.0.0"
871 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
872 |
873 | fast-levenshtein@~2.0.4:
874 | version "2.0.6"
875 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
876 |
877 | figures@^2.0.0:
878 | version "2.0.0"
879 | resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
880 | dependencies:
881 | escape-string-regexp "^1.0.5"
882 |
883 | file-entry-cache@^2.0.0:
884 | version "2.0.0"
885 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
886 | dependencies:
887 | flat-cache "^1.2.1"
888 | object-assign "^4.0.1"
889 |
890 | filename-regex@^2.0.0:
891 | version "2.0.1"
892 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
893 |
894 | fill-range@^2.1.0:
895 | version "2.2.3"
896 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
897 | dependencies:
898 | is-number "^2.1.0"
899 | isobject "^2.0.0"
900 | randomatic "^1.1.3"
901 | repeat-element "^1.1.2"
902 | repeat-string "^1.5.2"
903 |
904 | flat-cache@^1.2.1:
905 | version "1.3.0"
906 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481"
907 | dependencies:
908 | circular-json "^0.3.1"
909 | del "^2.0.2"
910 | graceful-fs "^4.1.2"
911 | write "^0.2.1"
912 |
913 | for-in@^1.0.1:
914 | version "1.0.2"
915 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
916 |
917 | for-own@^0.1.4:
918 | version "0.1.5"
919 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
920 | dependencies:
921 | for-in "^1.0.1"
922 |
923 | fs.realpath@^1.0.0:
924 | version "1.0.0"
925 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
926 |
927 | functional-red-black-tree@^1.0.1:
928 | version "1.0.1"
929 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
930 |
931 | glob-base@^0.3.0:
932 | version "0.3.0"
933 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
934 | dependencies:
935 | glob-parent "^2.0.0"
936 | is-glob "^2.0.0"
937 |
938 | glob-parent@^2.0.0:
939 | version "2.0.0"
940 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
941 | dependencies:
942 | is-glob "^2.0.0"
943 |
944 | glob@^7.0.3, glob@^7.0.5, glob@^7.1.2:
945 | version "7.1.2"
946 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
947 | dependencies:
948 | fs.realpath "^1.0.0"
949 | inflight "^1.0.4"
950 | inherits "2"
951 | minimatch "^3.0.4"
952 | once "^1.3.0"
953 | path-is-absolute "^1.0.0"
954 |
955 | globals@^11.0.1:
956 | version "11.1.0"
957 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.1.0.tgz#632644457f5f0e3ae711807183700ebf2e4633e4"
958 |
959 | globals@^9.18.0:
960 | version "9.18.0"
961 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
962 |
963 | globby@^5.0.0:
964 | version "5.0.0"
965 | resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d"
966 | dependencies:
967 | array-union "^1.0.1"
968 | arrify "^1.0.0"
969 | glob "^7.0.3"
970 | object-assign "^4.0.1"
971 | pify "^2.0.0"
972 | pinkie-promise "^2.0.0"
973 |
974 | graceful-fs@^4.1.2:
975 | version "4.1.11"
976 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
977 |
978 | has-ansi@^2.0.0:
979 | version "2.0.0"
980 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
981 | dependencies:
982 | ansi-regex "^2.0.0"
983 |
984 | has-flag@^2.0.0:
985 | version "2.0.0"
986 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
987 |
988 | home-or-tmp@^2.0.0:
989 | version "2.0.0"
990 | resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
991 | dependencies:
992 | os-homedir "^1.0.0"
993 | os-tmpdir "^1.0.1"
994 |
995 | iconv-lite@^0.4.17:
996 | version "0.4.19"
997 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
998 |
999 | ignore@^3.3.3:
1000 | version "3.3.7"
1001 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021"
1002 |
1003 | imurmurhash@^0.1.4:
1004 | version "0.1.4"
1005 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
1006 |
1007 | inflight@^1.0.4:
1008 | version "1.0.6"
1009 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
1010 | dependencies:
1011 | once "^1.3.0"
1012 | wrappy "1"
1013 |
1014 | inherits@2, inherits@^2.0.3, inherits@~2.0.3:
1015 | version "2.0.3"
1016 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
1017 |
1018 | inquirer@^3.0.6:
1019 | version "3.3.0"
1020 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9"
1021 | dependencies:
1022 | ansi-escapes "^3.0.0"
1023 | chalk "^2.0.0"
1024 | cli-cursor "^2.1.0"
1025 | cli-width "^2.0.0"
1026 | external-editor "^2.0.4"
1027 | figures "^2.0.0"
1028 | lodash "^4.3.0"
1029 | mute-stream "0.0.7"
1030 | run-async "^2.2.0"
1031 | rx-lite "^4.0.8"
1032 | rx-lite-aggregates "^4.0.8"
1033 | string-width "^2.1.0"
1034 | strip-ansi "^4.0.0"
1035 | through "^2.3.6"
1036 |
1037 | invariant@^2.2.2:
1038 | version "2.2.2"
1039 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
1040 | dependencies:
1041 | loose-envify "^1.0.0"
1042 |
1043 | is-buffer@^1.1.5:
1044 | version "1.1.6"
1045 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
1046 |
1047 | is-dotfile@^1.0.0:
1048 | version "1.0.3"
1049 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
1050 |
1051 | is-equal-shallow@^0.1.3:
1052 | version "0.1.3"
1053 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
1054 | dependencies:
1055 | is-primitive "^2.0.0"
1056 |
1057 | is-extendable@^0.1.1:
1058 | version "0.1.1"
1059 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
1060 |
1061 | is-extglob@^1.0.0:
1062 | version "1.0.0"
1063 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
1064 |
1065 | is-finite@^1.0.0:
1066 | version "1.0.2"
1067 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
1068 | dependencies:
1069 | number-is-nan "^1.0.0"
1070 |
1071 | is-fullwidth-code-point@^2.0.0:
1072 | version "2.0.0"
1073 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
1074 |
1075 | is-glob@^2.0.0, is-glob@^2.0.1:
1076 | version "2.0.1"
1077 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
1078 | dependencies:
1079 | is-extglob "^1.0.0"
1080 |
1081 | is-module@^1.0.0:
1082 | version "1.0.0"
1083 | resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
1084 |
1085 | is-number@^2.1.0:
1086 | version "2.1.0"
1087 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
1088 | dependencies:
1089 | kind-of "^3.0.2"
1090 |
1091 | is-number@^3.0.0:
1092 | version "3.0.0"
1093 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
1094 | dependencies:
1095 | kind-of "^3.0.2"
1096 |
1097 | is-path-cwd@^1.0.0:
1098 | version "1.0.0"
1099 | resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
1100 |
1101 | is-path-in-cwd@^1.0.0:
1102 | version "1.0.0"
1103 | resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc"
1104 | dependencies:
1105 | is-path-inside "^1.0.0"
1106 |
1107 | is-path-inside@^1.0.0:
1108 | version "1.0.1"
1109 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
1110 | dependencies:
1111 | path-is-inside "^1.0.1"
1112 |
1113 | is-posix-bracket@^0.1.0:
1114 | version "0.1.1"
1115 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
1116 |
1117 | is-primitive@^2.0.0:
1118 | version "2.0.0"
1119 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
1120 |
1121 | is-promise@^2.1.0:
1122 | version "2.1.0"
1123 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
1124 |
1125 | is-resolvable@^1.0.0:
1126 | version "1.0.1"
1127 | resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.1.tgz#acca1cd36dbe44b974b924321555a70ba03b1cf4"
1128 |
1129 | isarray@1.0.0, isarray@~1.0.0:
1130 | version "1.0.0"
1131 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
1132 |
1133 | isexe@^2.0.0:
1134 | version "2.0.0"
1135 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
1136 |
1137 | isobject@^2.0.0:
1138 | version "2.1.0"
1139 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
1140 | dependencies:
1141 | isarray "1.0.0"
1142 |
1143 | js-tokens@^3.0.0, js-tokens@^3.0.2:
1144 | version "3.0.2"
1145 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
1146 |
1147 | js-yaml@^3.9.1:
1148 | version "3.10.0"
1149 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc"
1150 | dependencies:
1151 | argparse "^1.0.7"
1152 | esprima "^4.0.0"
1153 |
1154 | jsesc@^1.3.0:
1155 | version "1.3.0"
1156 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
1157 |
1158 | jsesc@~0.5.0:
1159 | version "0.5.0"
1160 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
1161 |
1162 | json-schema-traverse@^0.3.0:
1163 | version "0.3.1"
1164 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
1165 |
1166 | json-stable-stringify-without-jsonify@^1.0.1:
1167 | version "1.0.1"
1168 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
1169 |
1170 | json5@^0.5.1:
1171 | version "0.5.1"
1172 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
1173 |
1174 | kind-of@^3.0.2:
1175 | version "3.2.2"
1176 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
1177 | dependencies:
1178 | is-buffer "^1.1.5"
1179 |
1180 | kind-of@^4.0.0:
1181 | version "4.0.0"
1182 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
1183 | dependencies:
1184 | is-buffer "^1.1.5"
1185 |
1186 | leaflet@^1.1.0:
1187 | version "1.1.0"
1188 | resolved "https://registry.yarnpkg.com/leaflet/-/leaflet-1.1.0.tgz#63246715cfc783dca6798b843a250e8e6fd84918"
1189 |
1190 | levn@^0.3.0, levn@~0.3.0:
1191 | version "0.3.0"
1192 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
1193 | dependencies:
1194 | prelude-ls "~1.1.2"
1195 | type-check "~0.3.2"
1196 |
1197 | lodash@^4.17.4, lodash@^4.3.0:
1198 | version "4.17.4"
1199 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
1200 |
1201 | loose-envify@^1.0.0:
1202 | version "1.3.1"
1203 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
1204 | dependencies:
1205 | js-tokens "^3.0.0"
1206 |
1207 | lru-cache@^4.0.1:
1208 | version "4.1.1"
1209 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55"
1210 | dependencies:
1211 | pseudomap "^1.0.2"
1212 | yallist "^2.1.2"
1213 |
1214 | magic-string@^0.22.4:
1215 | version "0.22.5"
1216 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e"
1217 | dependencies:
1218 | vlq "^0.2.2"
1219 |
1220 | micromatch@^2.3.11:
1221 | version "2.3.11"
1222 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
1223 | dependencies:
1224 | arr-diff "^2.0.0"
1225 | array-unique "^0.2.1"
1226 | braces "^1.8.2"
1227 | expand-brackets "^0.1.4"
1228 | extglob "^0.3.1"
1229 | filename-regex "^2.0.0"
1230 | is-extglob "^1.0.0"
1231 | is-glob "^2.0.1"
1232 | kind-of "^3.0.2"
1233 | normalize-path "^2.0.1"
1234 | object.omit "^2.0.0"
1235 | parse-glob "^3.0.4"
1236 | regex-cache "^0.4.2"
1237 |
1238 | mimic-fn@^1.0.0:
1239 | version "1.1.0"
1240 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18"
1241 |
1242 | minimatch@^3.0.2, minimatch@^3.0.4:
1243 | version "3.0.4"
1244 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
1245 | dependencies:
1246 | brace-expansion "^1.1.7"
1247 |
1248 | minimist@0.0.8:
1249 | version "0.0.8"
1250 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
1251 |
1252 | mkdirp@^0.5.1:
1253 | version "0.5.1"
1254 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
1255 | dependencies:
1256 | minimist "0.0.8"
1257 |
1258 | ms@2.0.0:
1259 | version "2.0.0"
1260 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
1261 |
1262 | mute-stream@0.0.7:
1263 | version "0.0.7"
1264 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
1265 |
1266 | natural-compare@^1.4.0:
1267 | version "1.4.0"
1268 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
1269 |
1270 | normalize-path@^2.0.1:
1271 | version "2.1.1"
1272 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
1273 | dependencies:
1274 | remove-trailing-separator "^1.0.1"
1275 |
1276 | number-is-nan@^1.0.0:
1277 | version "1.0.1"
1278 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
1279 |
1280 | object-assign@^4.0.1:
1281 | version "4.1.1"
1282 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
1283 |
1284 | object.omit@^2.0.0:
1285 | version "2.0.1"
1286 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
1287 | dependencies:
1288 | for-own "^0.1.4"
1289 | is-extendable "^0.1.1"
1290 |
1291 | once@^1.3.0:
1292 | version "1.4.0"
1293 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1294 | dependencies:
1295 | wrappy "1"
1296 |
1297 | onetime@^2.0.0:
1298 | version "2.0.1"
1299 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
1300 | dependencies:
1301 | mimic-fn "^1.0.0"
1302 |
1303 | optionator@^0.8.2:
1304 | version "0.8.2"
1305 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
1306 | dependencies:
1307 | deep-is "~0.1.3"
1308 | fast-levenshtein "~2.0.4"
1309 | levn "~0.3.0"
1310 | prelude-ls "~1.1.2"
1311 | type-check "~0.3.2"
1312 | wordwrap "~1.0.0"
1313 |
1314 | os-homedir@^1.0.0:
1315 | version "1.0.2"
1316 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
1317 |
1318 | os-tmpdir@^1.0.1, os-tmpdir@~1.0.2:
1319 | version "1.0.2"
1320 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
1321 |
1322 | parse-glob@^3.0.4:
1323 | version "3.0.4"
1324 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
1325 | dependencies:
1326 | glob-base "^0.3.0"
1327 | is-dotfile "^1.0.0"
1328 | is-extglob "^1.0.0"
1329 | is-glob "^2.0.0"
1330 |
1331 | path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
1332 | version "1.0.1"
1333 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1334 |
1335 | path-is-inside@^1.0.1, path-is-inside@^1.0.2:
1336 | version "1.0.2"
1337 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
1338 |
1339 | path-parse@^1.0.5:
1340 | version "1.0.5"
1341 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
1342 |
1343 | pify@^2.0.0:
1344 | version "2.3.0"
1345 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
1346 |
1347 | pinkie-promise@^2.0.0:
1348 | version "2.0.1"
1349 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
1350 | dependencies:
1351 | pinkie "^2.0.0"
1352 |
1353 | pinkie@^2.0.0:
1354 | version "2.0.4"
1355 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
1356 |
1357 | pluralize@^7.0.0:
1358 | version "7.0.0"
1359 | resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
1360 |
1361 | prelude-ls@~1.1.2:
1362 | version "1.1.2"
1363 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
1364 |
1365 | preserve@^0.2.0:
1366 | version "0.2.0"
1367 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
1368 |
1369 | private@^0.1.6, private@^0.1.7:
1370 | version "0.1.8"
1371 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
1372 |
1373 | process-nextick-args@~1.0.6:
1374 | version "1.0.7"
1375 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
1376 |
1377 | progress@^2.0.0:
1378 | version "2.0.0"
1379 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f"
1380 |
1381 | pseudomap@^1.0.2:
1382 | version "1.0.2"
1383 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
1384 |
1385 | randomatic@^1.1.3:
1386 | version "1.1.7"
1387 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c"
1388 | dependencies:
1389 | is-number "^3.0.0"
1390 | kind-of "^4.0.0"
1391 |
1392 | readable-stream@^2.2.2:
1393 | version "2.3.3"
1394 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
1395 | dependencies:
1396 | core-util-is "~1.0.0"
1397 | inherits "~2.0.3"
1398 | isarray "~1.0.0"
1399 | process-nextick-args "~1.0.6"
1400 | safe-buffer "~5.1.1"
1401 | string_decoder "~1.0.3"
1402 | util-deprecate "~1.0.1"
1403 |
1404 | regenerate@^1.2.1:
1405 | version "1.3.3"
1406 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f"
1407 |
1408 | regenerator-runtime@^0.11.0:
1409 | version "0.11.1"
1410 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
1411 |
1412 | regenerator-transform@^0.10.0:
1413 | version "0.10.1"
1414 | resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd"
1415 | dependencies:
1416 | babel-runtime "^6.18.0"
1417 | babel-types "^6.19.0"
1418 | private "^0.1.6"
1419 |
1420 | regex-cache@^0.4.2:
1421 | version "0.4.4"
1422 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd"
1423 | dependencies:
1424 | is-equal-shallow "^0.1.3"
1425 |
1426 | regexpu-core@^2.0.0:
1427 | version "2.0.0"
1428 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
1429 | dependencies:
1430 | regenerate "^1.2.1"
1431 | regjsgen "^0.2.0"
1432 | regjsparser "^0.1.4"
1433 |
1434 | regjsgen@^0.2.0:
1435 | version "0.2.0"
1436 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
1437 |
1438 | regjsparser@^0.1.4:
1439 | version "0.1.5"
1440 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
1441 | dependencies:
1442 | jsesc "~0.5.0"
1443 |
1444 | remove-trailing-separator@^1.0.1:
1445 | version "1.1.0"
1446 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
1447 |
1448 | repeat-element@^1.1.2:
1449 | version "1.1.2"
1450 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
1451 |
1452 | repeat-string@^1.5.2:
1453 | version "1.6.1"
1454 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
1455 |
1456 | repeating@^2.0.0:
1457 | version "2.0.1"
1458 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
1459 | dependencies:
1460 | is-finite "^1.0.0"
1461 |
1462 | require-uncached@^1.0.3:
1463 | version "1.0.3"
1464 | resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
1465 | dependencies:
1466 | caller-path "^0.1.0"
1467 | resolve-from "^1.0.0"
1468 |
1469 | resolve-from@^1.0.0:
1470 | version "1.0.1"
1471 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
1472 |
1473 | resolve@^1.1.6:
1474 | version "1.5.0"
1475 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36"
1476 | dependencies:
1477 | path-parse "^1.0.5"
1478 |
1479 | resolve@^1.5.0:
1480 | version "1.6.0"
1481 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.6.0.tgz#0fbd21278b27b4004481c395349e7aba60a9ff5c"
1482 | dependencies:
1483 | path-parse "^1.0.5"
1484 |
1485 | restore-cursor@^2.0.0:
1486 | version "2.0.0"
1487 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
1488 | dependencies:
1489 | onetime "^2.0.0"
1490 | signal-exit "^3.0.2"
1491 |
1492 | rimraf@^2.2.8:
1493 | version "2.6.2"
1494 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
1495 | dependencies:
1496 | glob "^7.0.5"
1497 |
1498 | rollup-plugin-babel@^3.0.2:
1499 | version "3.0.3"
1500 | resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-3.0.3.tgz#63adedc863130327512a4a9006efc2241c5b7c15"
1501 | dependencies:
1502 | rollup-pluginutils "^1.5.0"
1503 |
1504 | rollup-plugin-commonjs@^9.1.0:
1505 | version "9.1.0"
1506 | resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.1.0.tgz#468341aab32499123ee9a04b22f51d9bf26fdd94"
1507 | dependencies:
1508 | estree-walker "^0.5.1"
1509 | magic-string "^0.22.4"
1510 | resolve "^1.5.0"
1511 | rollup-pluginutils "^2.0.1"
1512 |
1513 | rollup-plugin-node-resolve@^3.0.0:
1514 | version "3.0.2"
1515 | resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.0.2.tgz#38babc12fd404cc2ba1ff68648fe43fa3ffee6b0"
1516 | dependencies:
1517 | builtin-modules "^1.1.0"
1518 | is-module "^1.0.0"
1519 | resolve "^1.1.6"
1520 |
1521 | rollup-pluginutils@^1.5.0:
1522 | version "1.5.2"
1523 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408"
1524 | dependencies:
1525 | estree-walker "^0.2.1"
1526 | minimatch "^3.0.2"
1527 |
1528 | rollup-pluginutils@^2.0.1:
1529 | version "2.0.1"
1530 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz#7ec95b3573f6543a46a6461bd9a7c544525d0fc0"
1531 | dependencies:
1532 | estree-walker "^0.3.0"
1533 | micromatch "^2.3.11"
1534 |
1535 | run-async@^2.2.0:
1536 | version "2.3.0"
1537 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
1538 | dependencies:
1539 | is-promise "^2.1.0"
1540 |
1541 | rx-lite-aggregates@^4.0.8:
1542 | version "4.0.8"
1543 | resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be"
1544 | dependencies:
1545 | rx-lite "*"
1546 |
1547 | rx-lite@*, rx-lite@^4.0.8:
1548 | version "4.0.8"
1549 | resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
1550 |
1551 | safe-buffer@~5.1.0, safe-buffer@~5.1.1:
1552 | version "5.1.1"
1553 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
1554 |
1555 | semver@^5.3.0:
1556 | version "5.4.1"
1557 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
1558 |
1559 | shebang-command@^1.2.0:
1560 | version "1.2.0"
1561 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
1562 | dependencies:
1563 | shebang-regex "^1.0.0"
1564 |
1565 | shebang-regex@^1.0.0:
1566 | version "1.0.0"
1567 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
1568 |
1569 | signal-exit@^3.0.2:
1570 | version "3.0.2"
1571 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
1572 |
1573 | slash@^1.0.0:
1574 | version "1.0.0"
1575 | resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
1576 |
1577 | slice-ansi@1.0.0:
1578 | version "1.0.0"
1579 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d"
1580 | dependencies:
1581 | is-fullwidth-code-point "^2.0.0"
1582 |
1583 | source-map-support@^0.4.15:
1584 | version "0.4.18"
1585 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
1586 | dependencies:
1587 | source-map "^0.5.6"
1588 |
1589 | source-map@^0.5.6:
1590 | version "0.5.7"
1591 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
1592 |
1593 | sprintf-js@~1.0.2:
1594 | version "1.0.3"
1595 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
1596 |
1597 | string-width@^2.1.0, string-width@^2.1.1:
1598 | version "2.1.1"
1599 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
1600 | dependencies:
1601 | is-fullwidth-code-point "^2.0.0"
1602 | strip-ansi "^4.0.0"
1603 |
1604 | string_decoder@~1.0.3:
1605 | version "1.0.3"
1606 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
1607 | dependencies:
1608 | safe-buffer "~5.1.0"
1609 |
1610 | strip-ansi@^3.0.0:
1611 | version "3.0.1"
1612 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
1613 | dependencies:
1614 | ansi-regex "^2.0.0"
1615 |
1616 | strip-ansi@^4.0.0:
1617 | version "4.0.0"
1618 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
1619 | dependencies:
1620 | ansi-regex "^3.0.0"
1621 |
1622 | strip-json-comments@~2.0.1:
1623 | version "2.0.1"
1624 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
1625 |
1626 | supports-color@^2.0.0:
1627 | version "2.0.0"
1628 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
1629 |
1630 | supports-color@^4.0.0:
1631 | version "4.5.0"
1632 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
1633 | dependencies:
1634 | has-flag "^2.0.0"
1635 |
1636 | table@^4.0.1:
1637 | version "4.0.2"
1638 | resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36"
1639 | dependencies:
1640 | ajv "^5.2.3"
1641 | ajv-keywords "^2.1.0"
1642 | chalk "^2.1.0"
1643 | lodash "^4.17.4"
1644 | slice-ansi "1.0.0"
1645 | string-width "^2.1.1"
1646 |
1647 | text-table@~0.2.0:
1648 | version "0.2.0"
1649 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
1650 |
1651 | through@^2.3.6:
1652 | version "2.3.8"
1653 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
1654 |
1655 | tmp@^0.0.33:
1656 | version "0.0.33"
1657 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
1658 | dependencies:
1659 | os-tmpdir "~1.0.2"
1660 |
1661 | to-fast-properties@^1.0.3:
1662 | version "1.0.3"
1663 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
1664 |
1665 | trim-right@^1.0.1:
1666 | version "1.0.1"
1667 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
1668 |
1669 | type-check@~0.3.2:
1670 | version "0.3.2"
1671 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
1672 | dependencies:
1673 | prelude-ls "~1.1.2"
1674 |
1675 | typedarray@^0.0.6:
1676 | version "0.0.6"
1677 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
1678 |
1679 | util-deprecate@~1.0.1:
1680 | version "1.0.2"
1681 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
1682 |
1683 | vlq@^0.2.2:
1684 | version "0.2.3"
1685 | resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26"
1686 |
1687 | which@^1.2.9:
1688 | version "1.3.0"
1689 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a"
1690 | dependencies:
1691 | isexe "^2.0.0"
1692 |
1693 | wordwrap@~1.0.0:
1694 | version "1.0.0"
1695 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
1696 |
1697 | wrappy@1:
1698 | version "1.0.2"
1699 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1700 |
1701 | write@^0.2.1:
1702 | version "0.2.1"
1703 | resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757"
1704 | dependencies:
1705 | mkdirp "^0.5.1"
1706 |
1707 | yallist@^2.1.2:
1708 | version "2.1.2"
1709 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
1710 |
1711 | zrender@^3.5.2:
1712 | version "3.5.2"
1713 | resolved "https://registry.yarnpkg.com/zrender/-/zrender-3.5.2.tgz#e770cbe978b5f4981c1b93d9b84147a3474f21d2"
1714 |
--------------------------------------------------------------------------------