vislite 1.11.0-alpha.0 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG +1 -1
- package/README-en.md +249 -0
- package/README.md +2 -0
- package/lib/index.umd.js +1 -1
- package/lib/index.umd.min.js +1 -1
- package/package.json +1 -1
package/CHANGELOG
CHANGED
package/README-en.md
ADDED
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
**English** · [中文](./README.md) · [📖 Online Docs](https://oi-contrib.github.io/VISLite)
|
|
2
|
+
|
|
3
|
+
- 💘 Open source is not easy, please <i>[Give a Star on Github](https://github.com/oi-contrib/VISLite) </i>!
|
|
4
|
+
|
|
5
|
+
<img src='https://oi-contrib.github.io/VISLite/images/logo.png' height='300px'/>
|
|
6
|
+
|
|
7
|
+
<p>
|
|
8
|
+
<a href="https://zxl20070701.github.io/toolbox/#/npm-download?packages=vislite&interval=7">
|
|
9
|
+
<img src="https://img.shields.io/npm/dm/vislite.svg" alt="downloads">
|
|
10
|
+
</a>
|
|
11
|
+
<a href="https://www.npmjs.com/package/vislite">
|
|
12
|
+
<img src="https://img.shields.io/npm/v/vislite.svg" alt="npm">
|
|
13
|
+
</a>
|
|
14
|
+
<a href="https://www.jsdelivr.com/package/npm/vislite">
|
|
15
|
+
<img src="https://data.jsdelivr.com/v1/package/npm/vislite/badge" alt="cdn">
|
|
16
|
+
</a>
|
|
17
|
+
<a href="https://github.com/oi-contrib/VISLite/issues">
|
|
18
|
+
<img src="https://img.shields.io/github/issues/oi-contrib/VISLite" alt="issue">
|
|
19
|
+
</a>
|
|
20
|
+
<a href="https://github.com/oi-contrib/VISLite" target='_blank'>
|
|
21
|
+
<img alt="GitHub repo stars" src="https://img.shields.io/github/stars/oi-contrib/VISLite">
|
|
22
|
+
</a>
|
|
23
|
+
<a href="https://github.com/oi-contrib/VISLite">
|
|
24
|
+
<img src="https://img.shields.io/github/forks/oi-contrib/VISLite" alt="forks">
|
|
25
|
+
</a>
|
|
26
|
+
<a href="https://gitee.com/oi-contrib/VISLite" target='_blank'>
|
|
27
|
+
<img alt="Gitee repo stars" src="https://gitee.com/oi-contrib/VISLite/badge/star.svg">
|
|
28
|
+
</a>
|
|
29
|
+
<a href="https://gitee.com/oi-contrib/VISLite">
|
|
30
|
+
<img src="https://gitee.com/oi-contrib/VISLite/badge/fork.svg" alt="forks">
|
|
31
|
+
</a>
|
|
32
|
+
</p>
|
|
33
|
+
|
|
34
|
+
<img src="https://nodei.co/npm/vislite.png?downloads=true&downloadRank=true&stars=true" alt="NPM">
|
|
35
|
+
|
|
36
|
+
# VISLite
|
|
37
|
+
|
|
38
|
+
🚀 A lightweight and elegant cross-platform data visualization solution
|
|
39
|
+
|
|
40
|
+
`VISLite` is a high-performance visualization library built with `TypeScript`. Official website: [https://oi-contrib.github.io/VISLite](https://oi-contrib.github.io/VISLite)
|
|
41
|
+
|
|
42
|
+
It provides unified cross-platform canvas drawing and computing capabilities, allowing developers to focus on business logic and easily implement visualization applications across Web, uni-app, WeChat Mini Program, Alipay Mini Program and other platforms. Except for minor platform differences in initialization configuration, the core business code is completely universal.
|
|
43
|
+
|
|
44
|
+
## Introduction
|
|
45
|
+
|
|
46
|
+
🎯 Lightweight data visualization development library —— Help you build visualization products faster, simpler and more efficiently.
|
|
47
|
+
|
|
48
|
+
> This project has been open sourced on [Open Source China](https://www.oschina.net/p/vislite), welcome to follow and leave comments.
|
|
49
|
+
|
|
50
|
+
## Quick Start
|
|
51
|
+
|
|
52
|
+
### 📦 Installation
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npm install --save vislite
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 🖼️ Prepare Canvas
|
|
59
|
+
|
|
60
|
+
```html
|
|
61
|
+
<div id="root" style="width:500px;height:300px;"></div>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 🎨 Start Drawing
|
|
65
|
+
|
|
66
|
+
Get the painter to draw any content you need. For example, get the Canvas painter to draw a red circle:
|
|
67
|
+
|
|
68
|
+
```js
|
|
69
|
+
import { Canvas } from 'vislite';
|
|
70
|
+
|
|
71
|
+
var painter = new Canvas(document.getElementById('root'));
|
|
72
|
+
|
|
73
|
+
painter.config({
|
|
74
|
+
fillStyle: "red"
|
|
75
|
+
}).fillCircle(200, 150, 100);
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
More complex charts? We provide rich auxiliary APIs. Take tree layout as an example, you can draw a tree diagram in just a few steps:
|
|
79
|
+
|
|
80
|
+
<img src="https://oi-contrib.github.io/VISLite/images/docs/tree.png" width="500"/>
|
|
81
|
+
|
|
82
|
+
```js
|
|
83
|
+
import { Canvas, TreeLayout } from 'vislite';
|
|
84
|
+
|
|
85
|
+
var painter = new Canvas(document.getElementById('root'));
|
|
86
|
+
var treeLayout = new TreeLayout();
|
|
87
|
+
|
|
88
|
+
treeLayout.setOption({
|
|
89
|
+
type: "rect",
|
|
90
|
+
direction: "TB",
|
|
91
|
+
x: 250,
|
|
92
|
+
y: 20,
|
|
93
|
+
width: 500,
|
|
94
|
+
height: 260
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
var data = {
|
|
98
|
+
"name": "Frontend",
|
|
99
|
+
"children": [{
|
|
100
|
+
"name": "Basic",
|
|
101
|
+
"children": [{
|
|
102
|
+
"name": "HTML"
|
|
103
|
+
}, {
|
|
104
|
+
"name": "CSS"
|
|
105
|
+
}, {
|
|
106
|
+
"name": "JavaScript"
|
|
107
|
+
}, {
|
|
108
|
+
"name": "DOM"
|
|
109
|
+
}]
|
|
110
|
+
}, {
|
|
111
|
+
"name": "Framework"
|
|
112
|
+
}, {
|
|
113
|
+
"name": "Techniques"
|
|
114
|
+
}]
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
var tree = treeLayout.use(data);
|
|
118
|
+
|
|
119
|
+
// Draw connections
|
|
120
|
+
painter.config({
|
|
121
|
+
strokeStyle: 'red'
|
|
122
|
+
});
|
|
123
|
+
for (var key in tree.node) {
|
|
124
|
+
var pid = tree.node[key].pid;
|
|
125
|
+
|
|
126
|
+
if (pid) {
|
|
127
|
+
var dist = (tree.node[key].top - tree.node[pid].top) * 0.5;
|
|
128
|
+
|
|
129
|
+
painter
|
|
130
|
+
.beginPath()
|
|
131
|
+
.moveTo(tree.node[key].left, tree.node[key].top)
|
|
132
|
+
.bezierCurveTo(
|
|
133
|
+
tree.node[key].left, tree.node[key].top - dist,
|
|
134
|
+
tree.node[pid].left, tree.node[pid].top + dist,
|
|
135
|
+
tree.node[pid].left, tree.node[pid].top
|
|
136
|
+
).stroke();
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Draw nodes and text
|
|
141
|
+
painter.config({
|
|
142
|
+
strokeStyle: 'red',
|
|
143
|
+
fontSize: 12
|
|
144
|
+
});
|
|
145
|
+
for (var key in tree.node) {
|
|
146
|
+
painter.config({
|
|
147
|
+
fillStyle: "white"
|
|
148
|
+
}).fullCircle(tree.node[key].left, tree.node[key].top, 10);
|
|
149
|
+
|
|
150
|
+
painter.config({
|
|
151
|
+
fillStyle: "black"
|
|
152
|
+
}).fillText(key, tree.node[key].left + 15, tree.node[key].top);
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
For detailed usage of tree layout, please refer to: [《Tutorial / Tree Layout》](https://oi-contrib.github.io/VISLite/#/course/tree-layout)
|
|
157
|
+
|
|
158
|
+
## Core Features
|
|
159
|
+
|
|
160
|
+
### 🧮 Visualization Algorithm Library
|
|
161
|
+
|
|
162
|
+
We have encapsulated commonly used algorithms in visualization development to help you easily draw complex charts. Through simple configuration, you can convert any format of data into drawing data with coordinates:
|
|
163
|
+
|
|
164
|
+
<img src="https://oi-contrib.github.io/VISLite/images/docs/what_1.png" width="400"/>
|
|
165
|
+
|
|
166
|
+
> Demo: [Left-to-right Tree Diagram](https://oi-contrib.github.io/VISLite/#/example/canvas/tree-layout-lr)
|
|
167
|
+
|
|
168
|
+
In addition to [Tree Layout](https://oi-contrib.github.io/VISLite/#/api/treeLayout), we also provide: [Ruler Algorithm](https://oi-contrib.github.io/VISLite/#/api/ruler), [Equirectangular Oblique Azimuthal Projection](https://oi-contrib.github.io/VISLite/#/api/eoap), [Mercator Projection](https://oi-contrib.github.io/VISLite/#/api/mercator), [Interpolation Function](https://oi-contrib.github.io/VISLite/#/api/cardinal), [Transformation Matrix](https://oi-contrib.github.io/VISLite/#/api/matrix4), etc.
|
|
169
|
+
|
|
170
|
+
### 🖌️ Enhanced Painter
|
|
171
|
+
|
|
172
|
+
The painter has been carefully designed to be simpler to use and more powerful. Taking Canvas as an example, we abstract the concept of "region", so that no matter how irregular the shape is, you can easily implement interactions:
|
|
173
|
+
|
|
174
|
+
<img src="https://oi-contrib.github.io/VISLite/images/docs/what_2.png" width="400"/>
|
|
175
|
+
|
|
176
|
+
> Demo: [China Map](https://oi-contrib.github.io/VISLite/#/example/canvas/china)
|
|
177
|
+
|
|
178
|
+
The painter not only designs regions for interaction, but also elegantly encapsulates native APIs with more user-friendly and intuitive interfaces (e.g., WebGL makes 3D development zero-threshold, SVG eliminates the need to memorize obscure attributes). It also automatically eliminates browser compatibility differences.
|
|
179
|
+
|
|
180
|
+
### 📱 Cross-platform Support
|
|
181
|
+
|
|
182
|
+
In addition to Web, it also supports uni-app, WeChat Mini Program, Alipay Mini Program and other platforms with unified APIs, greatly improving code reuse:
|
|
183
|
+
|
|
184
|
+
<img src="https://oi-contrib.github.io/VISLite/images/docs/what_3.png" width="600"/>
|
|
185
|
+
|
|
186
|
+
> Demo: [Money Wave Ball](https://oi-contrib.github.io/VISLite/#/example/svg/money-schedule)
|
|
187
|
+
|
|
188
|
+
Currently `Canvas` supports: Web, native WeChat Mini Program, native Alipay Mini Program, uni-app (compiled to H5, WeChat Mini Program, Alipay Mini Program, etc.). We will continue to expand more platforms and painter types in the future.
|
|
189
|
+
|
|
190
|
+
## Core Advantages
|
|
191
|
+
|
|
192
|
+
- **Flexible import methods**: Supports ES Module / CommonJS import after npm installation, as well as script tag CDN method
|
|
193
|
+
- **On-demand loading**: TS source import, on-demand JS import or full import, multiple modes to choose from
|
|
194
|
+
- **Simplicity and power coexist**: Provides basic visualization components that can be freely combined, and also supports encapsulation solutions for common scenarios
|
|
195
|
+
- **Stable and reliable**: Fully backward compatible within the same major version (except alpha and beta versions), always keep the latest version as the best choice
|
|
196
|
+
|
|
197
|
+
> Version specification: alpha (development version) → beta (testing version) → rc (release candidate) → next (pre-release version) → official release
|
|
198
|
+
|
|
199
|
+
## Feedback
|
|
200
|
+
|
|
201
|
+
We are committed to continuously improving visualization functions and look forward to your valuable suggestions! Welcome to communicate with us through [Issues](https://github.com/oi-contrib/VISLite/issues).
|
|
202
|
+
|
|
203
|
+
All suggestions will be responded to within one week.
|
|
204
|
+
|
|
205
|
+
## Changelog
|
|
206
|
+
|
|
207
|
+
See [CHANGELOG](./CHANGELOG) for details, updated after each official version release.
|
|
208
|
+
|
|
209
|
+
## Roadmap
|
|
210
|
+
|
|
211
|
+
Recent work focus:
|
|
212
|
+
|
|
213
|
+
- Provide commonly used coordinate systems and layout components to accelerate development
|
|
214
|
+
- Continuously optimize documentation (improve readability, enrich examples, improve tutorials)
|
|
215
|
+
|
|
216
|
+
Want a feature? [Tell us](https://github.com/oi-contrib/VISLite/issues) and we'll prioritize it!
|
|
217
|
+
|
|
218
|
+
## Contribution Guide
|
|
219
|
+
|
|
220
|
+
Welcome to participate in the project through the following ways:
|
|
221
|
+
|
|
222
|
+
- **Code maintenance**: Handle new feature development and Bug fixes
|
|
223
|
+
- **Documentation improvement**: Write and optimize interface documentation and tutorials
|
|
224
|
+
- **Test cases**: Supplement test cases in the test directory and examples in the docs directory
|
|
225
|
+
- **Direction discussion**: Participate in discussions on the future development of the project
|
|
226
|
+
|
|
227
|
+
Interested in joining? Please contact us through [issue](https://github.com/oi-contrib/VISLite/issues), please briefly describe the situation, and we will reply as soon as possible.
|
|
228
|
+
|
|
229
|
+
See [VISLite Contribution Guide](./.github/CONTRIBUTING.md) and [AUTHORS.txt](./AUTHORS.txt)
|
|
230
|
+
|
|
231
|
+
## Example Projects
|
|
232
|
+
|
|
233
|
+
Examples developed based on VISLite and related plugins (such as [@vislite/canvas](https://github.com/oi-contrib/vislite-plugin-canvas), [@vislite/chart](https://github.com/oi-contrib/vislite-plugin-chart)):
|
|
234
|
+
|
|
235
|
+
<img src="https://oi-contrib.github.io/VISLite/images/docs/examples/review1.png" style="width:700px;border:2px solid black;margin-bottom:20px;"/>
|
|
236
|
+
<img src="https://oi-contrib.github.io/VISLite/images/docs/examples/review2.png" style="width:700px;border:2px solid black;margin-bottom:20px;"/>
|
|
237
|
+
<img src="https://oi-contrib.github.io/VISLite/images/docs/examples/review3.png" style="width:300px;border:2px solid black;margin-bottom:20px;"/>
|
|
238
|
+
|
|
239
|
+
For more examples, please visit: [VISLite Example Projects](https://rapid-start.github.io/VISLite-examples/index.html)
|
|
240
|
+
|
|
241
|
+
## License
|
|
242
|
+
|
|
243
|
+
MIT License
|
|
244
|
+
|
|
245
|
+
<<<<<<< HEAD
|
|
246
|
+
Copyright (c) [zxl20070701](https://zxl20070701.github.io/notebook/home.html) Step By Step
|
|
247
|
+
=======
|
|
248
|
+
Copyright (c) [zxl20070701](https://zxl20070701.github.io/notebook/home.html) Step By Step
|
|
249
|
+
>>>>>>> dev
|
package/README.md
CHANGED
package/lib/index.umd.js
CHANGED
package/lib/index.umd.min.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* VISLite JavaScript Library v1.11.0
|
|
2
|
+
* VISLite JavaScript Library v1.11.0
|
|
3
3
|
* git+https://github.com/oi-contrib/VISLite.git
|
|
4
4
|
*/
|
|
5
5
|
var t,i;t=this,i=function(){"use strict";var t=function(){function t(t){void 0===t&&(t=.5),this.name="Hermite",this.__u=t}return t.prototype.setP=function(t,i,e,n,r,o){if(!(t<e))throw new Error("The point x-position should be increamented!");this.__a=t,this.__b=e;var s=this.__u*r,a=this.__u*o;return i/=e-t,n/=e-t,this.__MR=[2*i-2*n+s+a,3*n-3*i-2*s-a,s,i],this},t.prototype.use=function(t){if(this.__MR){var i=(t-this.__a)/(this.__b-this.__a),e=i*i;return(i*e*this.__MR[0]+e*this.__MR[1]+i*this.__MR[2]+this.__MR[3])*(this.__b-this.__a)}throw new Error("You shoud first set the position!")},t}(),i=function(){function i(t){void 0===t&&(t=0),this.name="Cardinal",this.__t=t}return i.prototype.setP=function(i){this.__HS={x:[],h:[]};var e,n,r=(i[1][1]-i[0][1])/(i[1][0]-i[0][0]);for(this.__HS.x[0]=i[0][0],e=1;e<i.length;e++){if(i[e][0]<=i[e-1][0])throw new Error("The point position should be increamented!");this.__HS.x[e]=i[e][0],n=e<i.length-1?i[e+1][1]>i[e][1]&&i[e-1][1]>i[e][1]||i[e+1][1]<i[e][1]&&i[e-1][1]<i[e][1]||i[e+1][1]==i[e][1]||i[e-1][1]==i[e][1]?0:(i[e+1][1]-i[e-1][1])/(i[e+1][0]-i[e-1][0]):(i[e][1]-i[e-1][1])/(i[e][0]-i[e-1][0]),this.__HS.h[e-1]=new t(.5*(1-this.__t)).setP(i[e-1][0],i[e-1][1],i[e][0],i[e][1],r,n),r=n}return this},i.prototype.use=function(t){if(this.__HS){for(this.__i=-1;this.__i+1<this.__HS.x.length&&(t>this.__HS.x[this.__i+1]||-1==this.__i&&t>=this.__HS.x[this.__i+1]);)this.__i+=1;return this.__i<0?this.__HS.h[0].use(this.__HS.x[0]):this.__i>=this.__HS.h.length?this.__HS.h[this.__HS.h.length-1].use(this.__HS.x[this.__HS.x.length-1]):this.__HS.h[this.__i].use(t)}throw new Error("You shoud first set the position!")},i}(),e=function(t,i){for(var e=[],n=0;n<4;n++)for(var r=0;r<i.length/4;r++)e[4*r+n]=t[n]*i[4*r]+t[n+4]*i[4*r+1]+t[n+8]*i[4*r+2]+t[n+12]*i[4*r+3];return e},n=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],r=function(){function t(t){void 0===t&&(t=n),this.name="Matrix4",this.__matrix4=t}return t.prototype.setValue=function(t){return void 0===t&&(t=n),this.__matrix4=t,this},t.prototype.move=function(t,i,n,r){return void 0===r&&(r=0),this.__matrix4=e(function(t,i,e,n){void 0===n&&(n=0);var r=Math.sqrt(i*i+e*e+n*n);return[1,0,0,0,0,1,0,0,0,0,1,0,i*t/r,e*t/r,n*t/r,1]}(t,i,n,r),this.__matrix4),this},t.prototype.rotate=function(t,i,n,r,o,s,a){var _=function(t,i,e,n,r,o){if("number"==typeof t&&"number"==typeof i){if("number"!=typeof e?(e=0,n=t,r=i,o=1):"number"==typeof n&&"number"==typeof r&&"number"==typeof o||(n=t,r=i,o=e,t=0,i=0,e=0),t==n&&i==r&&e==o)throw new Error("It's not a legitimate ray!");var s=Math.sqrt((n-t)*(n-t)+(r-i)*(r-i)),a=0!=s?(r-i)/s:1,_=0!=s?(n-t)/s:0,h=(n-t)*_+(r-i)*a,u=o-e,l=Math.sqrt(h*h+u*u),p=0!=l?u/l:1,f=0!=l?h/l:0;return[[a,p*_,_*f,0,-_,a*p,a*f,0,0,-f,p,0,i*_-t*a,e*f-t*_*p-i*a*p,-t*_*f-i*a*f-e*p,1],[a,-_,0,0,p*_,p*a,-f,0,_*f,a*f,p,0,t,i,e,1]]}throw new Error("a1 and b1 is required!")}(i,n,r,o,s,a);return this.__matrix4=e(e(e(_[1],function(t){var i=Math.sin(t),e=Math.cos(t);return[e,i,0,0,-i,e,0,0,0,0,1,0,0,0,0,1]}(t)),_[0]),this.__matrix4),this},t.prototype.scale=function(t,i,n,r,o,s){return void 0===r&&(r=0),void 0===o&&(o=0),void 0===s&&(s=0),this.__matrix4=e(function(t,i,e,n,r,o){return void 0===n&&(n=0),void 0===r&&(r=0),void 0===o&&(o=0),[t,0,0,0,0,i,0,0,0,0,e,0,n-n*t,r-r*i,o-o*e,1]}(t,i,n,r,o,s),this.__matrix4),this},t.prototype.multiply=function(t,i){return void 0===i&&(i=!1),this.__matrix4=i?e(this.__matrix4,t):e(t,this.__matrix4),this},t.prototype.use=function(t,i,n,r){return void 0===n&&(n=0),void 0===r&&(r=1),e(this.__matrix4,[t,i,n,r])},t.prototype.value=function(){return this.__matrix4},t}();function o(t,i,e,n,r){var o=Math.cos(e),s=Math.sin(e);return[(n-t)*o-(r-i)*s+t,(n-t)*s+(r-i)*o+i]}let s,a=[],_=13;function h(t,i,e){arguments.length<2&&(i=400),arguments.length<3&&(e=function(){});let n={timer:function(t,i,e){if(!t)throw new Error("Tick is required!");let r=(new Date).valueOf()+"_"+(1e3*Math.random()).toFixed(0);return a.push({id:r,createTime:new Date,pauseTime:-1,pauseKeepTime:0,status:"running",tick:t,duration:i,callback:e}),n.start(),r},start:function(){if(!s)try{s=globalThis&&globalThis.requestAnimationFrame?globalThis.requestAnimationFrame((function t(){n.tick(),s&&(s=globalThis.requestAnimationFrame(t))})):setInterval(n.tick,_)}catch(t){s=setInterval(n.tick,_)}},tick:function(){let t,i,e,r,o,s,_,h=a;for(a=[],a.length=0,i=0;i<h.length;i++)o=h[i],t=o.createTime,e=o.tick,s=o.duration,r=o.callback,_=(+(new Date).valueOf()-t.valueOf()-o.pauseKeepTime)/s,_=_>1?1:_,"running"===o.status&&e(_),(_<1||"paused"===o.status)&&o.id?a.push(o):r(_);a.length<=0&&n.stop()},stop:function(){if(s){try{globalThis&&globalThis.requestAnimationFrame?globalThis.cancelAnimationFrame(s):clearInterval(s)}catch(t){clearInterval(s)}s=null}}},r=n.timer((function(i){t(i)}),i,e);return{stop:function(){for(let t in a)a[t].id==r&&(a[t].id=void 0)},pause:function(){for(let t in a)a[t].id==r&&-1===a[t].pauseTime&&(a[t].pauseTime=new Date,a[t].status="paused")},resume:function(){for(let t in a)a[t].id==r&&-1!==a[t].pauseTime&&(a[t].pauseKeepTime+=(new Date).valueOf()-a[t].pauseTime.valueOf(),a[t].pauseTime=-1,a[t].status="running")}}}function u(t,i,e,n){if(t<i){var r=i;i=t,t=r}else if(t==i)return[t];var o=function(t){for(var i=t<100&&t>-100?10:.1,e=-1,n=t;10==i?n>=-100&&n<=100:n<=-100||n>=100;)e+=1,n*=i;if(10==i)return Math.pow(10,e);for(var r="0.",o=1;o<e;o++)r+="0";return+(r+"1")}(t-i),s=Math.ceil((t-i)*o/e),a=function(e){var n=({3:2,4:5,6:5,7:5,8:10,9:10,11:10,12:10,13:15,14:15,16:15,17:15,18:20,19:20,21:20,22:20,23:25,24:25,26:25,27:25}[s+e]||s+e)/o,r=Math.floor(i/n)*n,a=[];a.push(r);for(var _=1;a[a.length-1]<t;_++)a.push(r+n*_);return a},_=a(0),h=function(){for(var t=[],e=_[_.length-1]-(null==n?void 0:n.max),r=0;r<_.length;r++)r+1<_.length&&_[r+1]-e<i||t.push(_[r]-e);return t},u=function(){for(var i=[],e=_[0]-(null==n?void 0:n.min),r=0;r<_.length&&(i[r]=_[r]-e,!(t<=i[r]));r++);return i};if(n){if("max"in n&&"min"in n&&n.max>=t&&n.min<=i){var l=function(){if(_[0]>=n.min&&_[_.length-1]<=n.max)return!0;var t=h();if(t[0]>=n.min&&t[t.length-1]<=n.max)return _=t,!0;var i=u();return i[0]>=n.min&&i[t.length-1]<=n.max?(_=i,!0):void 0};if(l())return _;for(var p=1;p<100;p++){if(_=a(p),l())return _;if(_=a(-p),l())return _}}"max"in n&&n.max>=t?n.max<_[_.length-1]&&(_=h()):"min"in n&&n.min<=i&&n.min>_[0]&&(_=u())}for(var f=0;f<_.length;f++){var c=_[f]+"";/\./.test(c)&&(/9{7,}$/.test(c)?(c=c.replace(/9{7,}$/,""),_[f]=+(c.substring(0,c.length-1)+(+c[c.length-1]+1))):/0{7,}\d$/.test(c)&&(_[f]=+c.replace(/0{7,}\d$/,"")))}return _}var l=function(t,i){return l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,i){t.__proto__=i}||function(t,i){for(var e in i)Object.prototype.hasOwnProperty.call(i,e)&&(t[e]=i[e])},l(t,i)};function p(t,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function e(){this.constructor=t}l(t,i),t.prototype=null===i?Object.create(i):(e.prototype=i.prototype,new e)}var f=function(){return f=Object.assign||function(t){for(var i,e=1,n=arguments.length;e<n;e++)for(var r in i=arguments[e])Object.prototype.hasOwnProperty.call(i,r)&&(t[r]=i[r]);return t},f.apply(this,arguments)};"function"==typeof SuppressedError&&SuppressedError;var c=["href","title","show","type","role","actuate"],d=function(t,i){y(t,"stroke-dasharray",i.lineDash.join(",")),y(t,"stroke-width",i.lineWidth+""),y(t,"stroke-linecap",i.lineCap+""),y(t,"stroke-linejoin",i.lineJoin+"")};function g(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}var v=function(t,i,e){c.indexOf(i)>-1?t.setAttributeNS("http://www.w3.org/1999/xlink","xlink:"+i,e+""):t.setAttribute(i,e+"")},y=v;function m(t,i){d(t,i),v(t,"stroke",i.strokeStyle),v(t,"fill",i.fillStyle)}function w(t,i){v(t,"fill",i.fillStyle)}function x(t,i){d(t,i),v(t,"stroke",i.strokeStyle),v(t,"fill","none")}var E=function(t,i,e,n,r){var o=Math.cos(e),s=Math.sin(e);return[+((n-t)*o-(r-i)*s+t).toFixed(7),+((n-t)*s+(r-i)*o+i).toFixed(7)]};function b(t,i,e,n,r,o,s){i<0&&(t+=i,i*=-1);var a,_=[];a=E(0,0,t,r,0),_[0]=a[0],_[1]=a[1],a=E(0,0,i,a[0],a[1]),_[2]=a[0],_[3]=a[1],a=E(0,0,t,o,0),_[4]=a[0],_[5]=a[1],a=E(0,0,i,a[0],a[1]),_[6]=a[0],_[7]=a[1],s(t,t+i,_[0]+e,_[1]+n,_[4]+e,_[5]+n,_[2]+e,_[3]+n,_[6]+e,_[7]+n,.5*(o-r))}var T=function(t){var i=t.getElementsByTagName("defs");if(i.length<=0){var e=g("defs");return t.appendChild(e),e}return i[0]},P=function(t,i,e,n,r){if("text"!==t.nodeName.toLowerCase())throw new Error("Need a <text> !");y(t,"dy",{top:.5*i.fontSize,middle:0,bottom:.5*-i.fontSize}[i.textBaseline]),function(t,i){for(var e in i)t.style[e]=i[e]}(t,{"text-anchor":{left:"start",right:"end",center:"middle"}[i.textAlign],"dominant-baseline":"central","font-size":i.fontSize+"px","font-family":i.fontFamily}),y(t,"x",e),y(t,"y",n),"number"==typeof r&&y(t,"transform","rotate("+(r%=360)+","+e+","+n+")")},C=function(t,i,e,n){if("circle"!==t.nodeName.toLowerCase())throw new Error("Need a <circle> !");y(t,"cx",i),y(t,"cy",e),y(t,"r",n)},R=function(t,i){if("path"!==t.nodeName.toLowerCase())throw new Error("Need a <path> !");y(t,"d",i)},M=function(t,i,e,n,r,o){if("path"!==t.nodeName.toLowerCase())throw new Error("Need a <path> !");var s=[];if(Array.isArray(i.rectRadius)&&i.rectRadius.length>0)for(var a=0;a<4;a++)s.push.apply(s,i.rectRadius);o<0&&(n-=o*=-1),r<0&&(e-=r*=-1);var _="";s.length>=4?(_="M"+(e+s[0])+" "+n,_+="L"+(e+r-s[1])+" "+n,_+="A"+s[1]+" "+s[1]+" 0 0 1 "+(e+r)+" "+(n+s[1]),_+="L"+(e+r)+" "+(n+o-s[2]),_+="A"+s[2]+" "+s[2]+" 0 0 1 "+(e+r-s[2])+" "+(n+o),_+="L"+(e+s[3])+" "+(n+o),_+="A"+s[3]+" "+s[3]+" 0 0 1 "+e+" "+(n+o-s[3]),_+="L"+e+" "+(n+s[0]),_+="A"+s[0]+" "+s[0]+" 0 0 1 "+(e+s[0])+" "+n):(_="M"+e+" "+n,_+="L"+(e+r)+" "+n,_+="L"+(e+r)+" "+(n+o),_+="L"+e+" "+(n+o),_+="Z"),y(t,"d",_)},S=function(t,i,e,n,r,o,s,a){if("path"!==t.nodeName.toLowerCase())throw new Error("Need a <path> !");if(s=s/180*Math.PI,a=a/180*Math.PI,s%=2*Math.PI,r>o){var _=r;r=o,o=_}a>=1.999999*Math.PI||a<=1.999999*-Math.PI?a=1.999999*Math.PI:a%=2*Math.PI,b(s,a,e,n,r,o,(function(e,n,s,a,_,h,u,l,p,f,c){var d=n-e>Math.PI?1:0,g="M"+s+" "+a;c<0&&(c=-c),g+="A"+r+" "+r+" 0 "+d+" 1 "+u+" "+l,"round"==i.arcEndCap?g+="A"+c+" "+c+" 0 1 0 "+p+" "+f:"-round"==i.arcEndCap?g+="A"+c+" "+c+" 0 1 1 "+p+" "+f:g+="L"+p+" "+f,g+="A"+o+" "+o+" 0 "+d+" 0 "+_+" "+h,"round"==i.arcStartCap?g+="A"+c+" "+c+" 0 1 0 "+s+" "+a:"-round"==i.arcStartCap?g+="A"+c+" "+c+" 0 1 1 "+s+" "+a:g+="L"+s+" "+a,"butt"==i.arcStartCap&&(g+="Z"),y(t,"d",g)}))},A=function(t,i){var e={value:function(){return"url(#"+i+")"},setColor:function(i,n){var r=g("stop");return t.appendChild(r),y(r,"offset",100*i+"%"),y(r,"style","stop-color:"+n+";"),e}};return e},I=Object.prototype.toString;function k(t){if(null===t||"object"!=typeof t||"[object Object]"!=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":I.call(t)}(t))return!1;if(null===Object.getPrototypeOf(t))return!0;for(var i=t;null!==Object.getPrototypeOf(i);)i=Object.getPrototypeOf(i);return Object.getPrototypeOf(t)===i}function L(t,i){for(var e in t)i[e]=t[e];return i}function O(t,i){!function t(i,e){for(var n in e){var r=e[n];k(r)?(i[n]||(i[n]={}),t(i[n],e[n])):i[n]=r}}(t,i)}var V=function(){function t(t){this.name="SVG",this.__config={fillStyle:"rgb(0,0,0)",strokeStyle:"rgb(0,0,0)",textAlign:"left",textBaseline:"middle",fontSize:16,fontFamily:"sans-serif",arcStartCap:"butt",arcEndCap:"butt",lineDash:[],lineWidth:1,lineCap:"butt",lineJoin:"miter",rectRadius:[]},this.__path="",this.__currentPosition=[],this.__transform_history=[],this.__transform_current="",this.__svg=t}return t.prototype.config=function(t){if("object"!=typeof t)return this.__config[t];for(var i in t)this.__config[i]=t[i];return this},t.prototype.reset=function(t){return void 0===t&&(t={}),this.config(L(t,{fillStyle:"rgb(0,0,0)",strokeStyle:"rgb(0,0,0)",textAlign:"left",textBaseline:"middle",fontSize:16,fontFamily:"sans-serif",arcStartCap:"butt",arcEndCap:"butt",lineDash:[],lineWidth:1,lineCap:"butt",lineJoin:"miter",rectRadius:[]})),this},t.prototype.useEl=function(t){return this.__useEl=t,this},t.prototype.getEl=function(){return this.__useEl},t.prototype.appendEl=function(t,i){return i=i||this.__svg,"string"==typeof t&&(t=g(t)),i.appendChild(t),this.__useEl=t,this},t.prototype.appendBoard=function(t,i){var e=t;if("string"==typeof t&&(e={text:"text",path:"path",arc:"path",circle:"circle",rect:"path"}[t]||""),""==e)throw new Error("Unsupported drawing method:"+t);return this.appendEl(e,i)},t.prototype.remove=function(){if(!this.__useEl)throw new Error("Currently, no node can be deleted.");return this.__useEl.parentNode.removeChild(this.__useEl),this},t.prototype.attr=function(t){if(!this.__useEl)throw new Error("Currently, no node can be modified or viewed.");if("object"!=typeof t)return function(t,i){return c.indexOf(i)>-1&&(i="xlink:"+i),t.getAttribute(i)}(this.__useEl,t);for(var i in t)y(this.__useEl,i,t[i]);return this},t.prototype.fillText=function(t,i,e,n){return void 0===n&&(n=0),P(this.__useEl,this.__config,i,e,n),this.attr({transform:this.__transform_current}),this.__useEl.textContent=t,w(this.__useEl,this.__config),this},t.prototype.strokeText=function(t,i,e,n){return void 0===n&&(n=0),P(this.__useEl,this.__config,i,e,n),this.attr({transform:this.__transform_current}),this.__useEl.textContent=t,x(this.__useEl,this.__config),this},t.prototype.fullText=function(t,i,e,n){return void 0===n&&(n=0),P(this.__useEl,this.__config,i,e,n),this.attr({transform:this.__transform_current}),this.__useEl.textContent=t,m(this.__useEl,this.__config),this},t.prototype.fillArc=function(t,i,e,n,r,o){return S(this.__useEl,this.__config,t,i,e,n,r,o),this.attr({transform:this.__transform_current}),w(this.__useEl,this.__config),this},t.prototype.strokeArc=function(t,i,e,n,r,o){return S(this.__useEl,this.__config,t,i,e,n,r,o),this.attr({transform:this.__transform_current}),x(this.__useEl,this.__config),this},t.prototype.fullArc=function(t,i,e,n,r,o){return S(this.__useEl,this.__config,t,i,e,n,r,o),this.attr({transform:this.__transform_current}),m(this.__useEl,this.__config),this},t.prototype.fillCircle=function(t,i,e){return C(this.__useEl,t,i,e),this.attr({transform:this.__transform_current}),w(this.__useEl,this.__config),this},t.prototype.strokeCircle=function(t,i,e){return C(this.__useEl,t,i,e),this.attr({transform:this.__transform_current}),x(this.__useEl,this.__config),this},t.prototype.fullCircle=function(t,i,e){return C(this.__useEl,t,i,e),this.attr({transform:this.__transform_current}),m(this.__useEl,this.__config),this},t.prototype.fillRect=function(t,i,e,n){return M(this.__useEl,this.__config,t,i,e,n),this.attr({transform:this.__transform_current}),w(this.__useEl,this.__config),this},t.prototype.strokeRect=function(t,i,e,n){return M(this.__useEl,this.__config,t,i,e,n),this.attr({transform:this.__transform_current}),x(this.__useEl,this.__config),this},t.prototype.fullRect=function(t,i,e,n){return M(this.__useEl,this.__config,t,i,e,n),this.attr({transform:this.__transform_current}),m(this.__useEl,this.__config),this},t.prototype.beginPath=function(){return this.__currentPosition=[],this.__path="",this},t.prototype.closePath=function(){return this.__path+="Z",this},t.prototype.moveTo=function(t,i){return this.__currentPosition=[t,i],this.__path+="M"+t+" "+i,this},t.prototype.lineTo=function(t,i){return this.__currentPosition=[t,i],this.__path+=(""==this.__path?"M":"L")+t+" "+i,this},t.prototype.fill=function(){return R(this.__useEl,this.__path),this.attr({transform:this.__transform_current}),w(this.__useEl,this.__config),this},t.prototype.stroke=function(){return R(this.__useEl,this.__path),this.attr({transform:this.__transform_current}),x(this.__useEl,this.__config),this},t.prototype.full=function(){return R(this.__useEl,this.__path),this.attr({transform:this.__transform_current}),m(this.__useEl,this.__config),this},t.prototype.save=function(){return this.__transform_history.push(this.__transform_current),this},t.prototype.restore=function(){return this.__transform_history.length>0&&(this.__transform_current=this.__transform_history.pop()),this},t.prototype.arc=function(t,i,e,n,r){var s=o(t,i,n/180*Math.PI,t+e,i),a=o(t,i,(n+r)/180*Math.PI,t+e,i);return""==this.__path?this.__path+="M"+s[0]+","+s[1]:s[0]==this.__currentPosition[0]&&s[1]==this.__currentPosition[1]||(this.__path+="L"+s[0]+","+s[1]),this.__path+="A"+e+","+e+" 0 "+(r>180||r<-180?1:0)+","+(r>0?1:0)+" "+a[0]+","+a[1],this},t.prototype.quadraticCurveTo=function(t,i,e,n){return this.__path+="Q"+t+" "+i+","+e+" "+n,this},t.prototype.bezierCurveTo=function(t,i,e,n,r,o){return this.__path+="C"+t+" "+i+","+e+" "+n+","+r+" "+o,this},t.prototype.bind=function(t,i){return this.__useEl.addEventListener(t,(function(t){i.call(this,t,this)}),!1),this},t.prototype.createLinearGradient=function(t,i,e,n){return function(t,i,e,n,r){var o=T(t),s="visliteLg"+(new Date).valueOf()+(1e6*Math.random()).toFixed(0),a=g("linearGradient");return o.appendChild(a),y(a,"id",s),y(a,"x1",i+"%"),y(a,"y1",e+"%"),y(a,"x2",n+"%"),y(a,"y2",r+"%"),A(a,s)}(this.__svg,t,i,e,n)},t.prototype.createRadialGradient=function(t,i,e){return function(t,i,e,n){var r=T(t),o="visliteRg"+(new Date).valueOf()+(1e6*Math.random()).toFixed(0),s=g("radialGradient");return r.appendChild(s),y(s,"id",o),y(s,"cx",i+"%"),y(s,"cy",e+"%"),y(s,"r",n+"%"),A(s,o)}(this.__svg,t,i,e)},t.prototype.translate=function(t,i){return this.__transform_current+=" translate("+t+","+i+")",this},t.prototype.rotate=function(t){return this.__transform_current+=" rotate("+t+")",this},t.prototype.install=function(t){var i=this,e=function(e){if(e in n)throw new Error("VISLite SVG:Method already exists and cannot be overwritten.");n[e]=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];var o=t[e].apply(i,n);return null!=o?o:i}},n=this;for(var r in t)e(r);return this},t}(),B=function(t){function i(i){var e=this;if(!i)throw new Error("VISLite SVG:The mount point requires an HTMLElement type but encountered null.");var n,r=i.clientWidth,o=i.clientHeight,s=i;return s._vislite_svg_?n=s._vislite_svg_[0]:(n=document.createElementNS("http://www.w3.org/2000/svg","svg"),i.appendChild(n),n.setAttribute("width",r+""),n.setAttribute("height",o+""),n.setAttribute("viewBox","0 0 "+r+" "+o),s._vislite_svg_=[n],i.setAttribute("vislite","SVG")),(e=t.call(this,n)||this).__el=i,e}return p(i,t),i.prototype.toDataURL=function(){var t=this;return new Promise((function(i){var e=t.__el.clientWidth,n=t.__el.clientHeight,r=document.createElement("img");r.setAttribute("width",e+""),r.setAttribute("height",n+"");var o="data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' width='"+e+"' height='"+n+"'>"+t.__svg.innerHTML.replace(/"/g,"'")+"</svg>";r.setAttribute("src",o),setTimeout((function(){var t=document.createElement("canvas");t.setAttribute("width",e+""),t.setAttribute("height",n+"");var o=t.getContext("2d");o&&o.drawImage(r,0,0,e,n),i(t.toDataURL())}),100)}))},i}(V),U=function(t,i,e,n,r){return t.beginPath(),t.translate(e,n),t.rotate(r),t.font=i.fontStyle+" "+i.fontWeight+" "+i.fontSize+"px "+i.fontFamily,t},N=function(t,i,e,n,r,o,s,a){if(r>o){var _=r;r=o,o=_}return s%=2*Math.PI,a>=1.999999*Math.PI||a<=1.999999*-Math.PI?a=2*Math.PI:a%=2*Math.PI,b(s,a,e,n,r,o,(function(s,a,_,h,u,l,p,f,c,d,g){g<0&&(g=-g),t.beginPath(),t.moveTo(_,h),t.arc(e,n,r,s,a,!1),"round"==i.arcEndCap?t.arc(.5*(p+c),.5*(f+d),g,a-Math.PI,a,!0):"-round"==i.arcEndCap?t.arc(.5*(p+c),.5*(f+d),g,a-Math.PI,a,!1):t.lineTo(c,d),t.arc(e,n,o,a,s,!0),"round"==i.arcStartCap?t.arc(.5*(_+u),.5*(h+l),g,s,s-Math.PI,!0):"-round"==i.arcStartCap?t.arc(.5*(_+u),.5*(h+l),g,s,s-Math.PI,!1):t.lineTo(_,h)})),"butt"==i.arcStartCap&&t.closePath(),t},F=function(t,i,e,n){return t.beginPath(),t.moveTo(i+n,e),t.arc(i,e,n,0,2*Math.PI),t},D=function(t,i,e,n,r,o){t.beginPath();var s=[];if(Array.isArray(i.rectRadius)&&i.rectRadius.length>0)for(var a=0;a<4;a++)s.push.apply(s,i.rectRadius);return s.length>=4?(t.arc(e+s[0],n+s[0],s[0],Math.PI,1.5*Math.PI),t.arc(e+r-s[1],n+s[1],s[1],1.5*Math.PI,0),t.arc(e+r-s[2],n+o-s[2],s[2],0,.5*Math.PI),t.arc(e+s[3],n+o-s[3],s[3],.5*Math.PI,Math.PI),t.closePath()):t.rect(e,n,r,o),t};function G(t,i,e,n,r){for(var o=0,s="",a=0;a<i.length;a++)t.measureText(s+i[a]).width>e||/\n$/.test(s)?(r(s,((o+=1)-.5)*n),s=i[a]):a==i.length-1?(o+=1,r(s+i[a],(o-.5)*n)):s+=i[a];return o*n}function H(t){var i={fontSize:16,fontFamily:"sans-serif",fontWeight:400,fontStyle:"normal",arcStartCap:"butt",arcEndCap:"butt",rectRadius:[]},e={fillStyle:"black",strokeStyle:"black",lineWidth:1,lineCap:"butt",lineJoin:"miter",lineDash:[],textAlign:"left",textBaseline:"middle",shadowBlur:0,shadowColor:"black"};return"special"==t?i:"init"==t?e:f(f({},i),e)}var z=function(){function t(t,i,e,n,r){void 0===i&&(i={}),void 0===n&&(n=!1),this.__region=null,this.__onlyRegion=!1,this.__onlyView=!1,this.__specialConfig=H("special"),this.__initConfig=H("init"),this.painter=t.getContext("2d",i),this.__region=e,this.__isPainter=n,this.painter.textBaseline="middle",this.painter.textAlign="left",this.painter.shadowColor="black"}return t.prototype.useConfig=function(t,i){if(this.__region&&!this.__onlyView&&["fillStyle","strokeStyle","shadowBlur","shadowColor"].indexOf(t)<0&&this.__region.useConfig(t,i),this.__isPainter&&this.__onlyRegion)return this;if("lineDash"==t)this.painter.setLineDash&&this.painter.setLineDash(i);else if(t in this.__specialConfig)"fontSize"==t&&(i=Math.round(i)),this.__specialConfig[t]=i;else{if(!(t in this.__initConfig))throw new Error("Illegal configuration item of painter : "+t+" !");this.painter[t]=i}return this},t.prototype.fillText=function(t,i,e,n){return void 0===n&&(n=0),this.__region&&!this.__onlyView&&this.__region.fillText(t,i,e,n),this.__isPainter&&this.__onlyRegion||(this.painter.save(),U(this.painter,this.__specialConfig,i,e,n).fillText(t,0,0),this.painter.restore()),this},t.prototype.strokeText=function(t,i,e,n){return void 0===n&&(n=0),this.__region&&!this.__onlyView&&this.__region.strokeText(t,i,e,n),this.__isPainter&&this.__onlyRegion||(this.painter.save(),U(this.painter,this.__specialConfig,i,e,n).strokeText(t,0,0),this.painter.restore()),this},t.prototype.fullText=function(t,i,e,n){return void 0===n&&(n=0),this.__region&&!this.__onlyView&&this.__region.fullText(t,i,e,n),this.__isPainter&&this.__onlyRegion||(this.painter.save(),U(this.painter,this.__specialConfig,i,e,n),this.painter.fillText(t,0,0),this.painter.strokeText(t,0,0),this.painter.restore()),this},t.prototype.fillTexts=function(t,i,e,n,r,o){var s=this;void 0===r&&(r=1.2),void 0===o&&(o=0);var a=0;if(this.__region&&!this.__onlyView&&(a=this.__region.fillTexts(t,i,e,n,r)),this.__isPainter&&this.__onlyRegion)return a;this.painter.save(),U(this.painter,this.__specialConfig,i,e,o);var _=G(this.painter,t,n,this.__specialConfig.fontSize*r,(function(t,i){s.painter.fillText(t,0,i)}));return this.painter.restore(),_},t.prototype.strokeTexts=function(t,i,e,n,r,o){var s=this;void 0===r&&(r=1.2),void 0===o&&(o=0);var a=0;if(this.__region&&!this.__onlyView&&(a=this.__region.fillTexts(t,i,e,n,r)),this.__isPainter&&this.__onlyRegion)return a;this.painter.save(),U(this.painter,this.__specialConfig,i,e,o);var _=G(this.painter,t,n,this.__specialConfig.fontSize*r,(function(t,i){s.painter.strokeText(t,0,i)}));return this.painter.restore(),_},t.prototype.fullTexts=function(t,i,e,n,r,o){var s=this;void 0===r&&(r=1.2),void 0===o&&(o=0);var a=0;if(this.__region&&!this.__onlyView&&(a=this.__region.fillTexts(t,i,e,n,r)),this.__isPainter&&this.__onlyRegion)return a;this.painter.save(),U(this.painter,this.__specialConfig,i,e,o);var _=G(this.painter,t,n,this.__specialConfig.fontSize*r,(function(t,i){s.painter.fillText(t,0,i),s.painter.strokeText(t,0,i)}));return this.painter.restore(),_},t.prototype.beginPath=function(){return this.__region&&!this.__onlyView&&this.__region.beginPath(),this.__isPainter&&this.__onlyRegion||this.painter.beginPath(),this},t.prototype.closePath=function(){return this.__region&&!this.__onlyView&&this.__region.closePath(),this.__isPainter&&this.__onlyRegion||this.painter.closePath(),this},t.prototype.moveTo=function(t,i){return this.__region&&!this.__onlyView&&this.__region.moveTo(t,i),this.__isPainter&&this.__onlyRegion||this.painter.moveTo(Math.round(t)+.5,Math.round(i)+.5),this},t.prototype.lineTo=function(t,i){return this.__region&&!this.__onlyView&&this.__region.lineTo(t,i),this.__isPainter&&this.__onlyRegion||this.painter.lineTo(Math.round(t)+.5,Math.round(i)+.5),this},t.prototype.arc=function(t,i,e,n,r){return this.__region&&!this.__onlyView&&this.__region.arc(t,i,e,n,r),this.__isPainter&&this.__onlyRegion||this.painter.arc(t,i,e,n,n+r,r<0),this},t.prototype.fill=function(){return this.__region&&!this.__onlyView&&this.__region.fill(),this.__isPainter&&this.__onlyRegion||this.painter.fill(),this},t.prototype.stroke=function(){return this.__region&&!this.__onlyView&&this.__region.stroke(),this.__isPainter&&this.__onlyRegion||this.painter.stroke(),this},t.prototype.full=function(){return this.__region&&!this.__onlyView&&this.__region.full(),this.__isPainter&&this.__onlyRegion||(this.painter.fill(),this.painter.stroke()),this},t.prototype.save=function(){return this.__region&&!this.__onlyView&&this.__region.save(),this.__isPainter&&this.__onlyRegion||this.painter.save(),this},t.prototype.restore=function(){return this.__region&&!this.__onlyView&&this.__region.restore(),this.__isPainter&&this.__onlyRegion||this.painter.restore(),this},t.prototype.clip=function(){return this.__region&&!this.__onlyView&&this.__region.clip(),this.__isPainter&&this.__onlyRegion||this.painter.clip(),this},t.prototype.quadraticCurveTo=function(t,i,e,n){return this.__region&&!this.__onlyView&&this.__region.quadraticCurveTo(t,i,e,n),this.__isPainter&&this.__onlyRegion||this.painter.quadraticCurveTo(t,i,e,n),this},t.prototype.bezierCurveTo=function(t,i,e,n,r,o){return this.__region&&!this.__onlyView&&this.__region.bezierCurveTo(t,i,e,n,r,o),this.__isPainter&&this.__onlyRegion||this.painter.bezierCurveTo(t,i,e,n,r,o),this},t.prototype.clearRect=function(t,i,e,n){return this.__region&&!this.__onlyView&&this.__region.clearRect(t,i,e,n),this.__isPainter&&this.__onlyRegion||this.painter.clearRect(t,i,e,n),this},t.prototype.clearCircle=function(t,i,e){return this.__region&&!this.__onlyView&&this.__region.clearCircle(t,i,e),this.__isPainter&&this.__onlyRegion||(this.painter.beginPath(),this.painter.globalCompositeOperation="destination-out",this.painter.arc(t,i,e,0,2*Math.PI),this.painter.fill(),this.painter.globalCompositeOperation="source-over",this.painter.closePath()),this},t.prototype.fillArc=function(t,i,e,n,r,o){return this.__region&&!this.__onlyView&&this.__region.fillArc(t,i,e,n,r,o),this.__isPainter&&this.__onlyRegion||N(this.painter,this.__specialConfig,t,i,e,n,r,o).fill(),this},t.prototype.strokeArc=function(t,i,e,n,r,o){return this.__region&&!this.__onlyView&&this.__region.strokeArc(t,i,e,n,r,o),this.__isPainter&&this.__onlyRegion||N(this.painter,this.__specialConfig,t,i,e,n,r,o).stroke(),this},t.prototype.fullArc=function(t,i,e,n,r,o){return this.__region&&!this.__onlyView&&this.__region.fullArc(t,i,e,n,r,o),this.__isPainter&&this.__onlyRegion||(N(this.painter,this.__specialConfig,t,i,e,n,r,o),this.painter.fill(),this.painter.stroke()),this},t.prototype.fillCircle=function(t,i,e){return this.__region&&!this.__onlyView&&this.__region.fillCircle(t,i,e),this.__isPainter&&this.__onlyRegion||F(this.painter,t,i,e).fill(),this},t.prototype.strokeCircle=function(t,i,e){return this.__region&&!this.__onlyView&&this.__region.strokeCircle(t,i,e),this.__isPainter&&this.__onlyRegion||F(this.painter,t,i,e).stroke(),this},t.prototype.fullCircle=function(t,i,e){return this.__region&&!this.__onlyView&&this.__region.fullCircle(t,i,e),this.__isPainter&&this.__onlyRegion||(F(this.painter,t,i,e),this.painter.fill(),this.painter.stroke()),this},t.prototype.fillRect=function(t,i,e,n){return this.__region&&!this.__onlyView&&this.__region.fillRect(t,i,e,n),this.__isPainter&&this.__onlyRegion||D(this.painter,this.__specialConfig,t,i,e,n).fill(),this},t.prototype.strokeRect=function(t,i,e,n){return this.__region&&!this.__onlyView&&this.__region.strokeRect(t,i,e,n),this.__isPainter&&this.__onlyRegion||D(this.painter,this.__specialConfig,t,i,e,n).stroke(),this},t.prototype.fullRect=function(t,i,e,n){return this.__region&&!this.__onlyView&&this.__region.fullRect(t,i,e,n),this.__isPainter&&this.__onlyRegion||(D(this.painter,this.__specialConfig,t,i,e,n),this.painter.fill(),this.painter.stroke()),this},t.prototype.draw=function(){return Promise.resolve()},t.prototype.drawImage=function(t,i,e,n,r,o){var s=this;return void 0===o&&(o=!1),new Promise((function(a){if(s.__region&&!s.__onlyView&&s.__region.fillRect(i,e,n,r),s.__isPainter&&s.__onlyRegion)a({});else if("string"!=typeof t||o)s.painter.drawImage(t,i,e,n,r),a({});else{var _=new Image;_.onload=function(){s.painter.drawImage(_,i,e,n,r),a({})},_.src=t}}))},t.prototype.translate=function(t,i){return this.painter.translate(t,i),this},t.prototype.rotate=function(t){return this.painter.rotate(t),this},t.prototype.install=function(t){var i=this,e=function(e){if(e in n)throw new Error("VISLite Canvas:Method already exists and cannot be overwritten.");n[e]=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];var o=t[e].apply(i,n);return null!=o?o:i}},n=this;for(var r in t)e(r);return this},t}();function q(t,i,e,n){for(var r=[],o=0;o<n;o++)r[o]=t;return function(){for(var o=0;o<n;o++){if(r[o]+e<i){r[o]=+(r[o]+e).toFixed(7);break}o<n-1&&(r[o]=t)}return r}}var X=function(t,i){var e={value:function(){return t},setColor:function(n,r){return t.addColorStop(i?i(n):n,r),e}};return e},j=function(t){function i(i,e,n,r){void 0===n&&(n={}),void 0===r&&(r=1);var o=t.call(this,i,n,e?new z(e,{willReadFrequently:!0}):void 0,!0,r)||this;return o.name="Canvas",o.__regionList={},o.__regionAssemble=q(0,255,10,3),o.__scaleSize=r,o.setRegion(""),o}return p(i,t),i.prototype.config=function(t){for(var i in t)this.useConfig(i,t[i]);return this},i.prototype.reset=function(t){return void 0===t&&(t={}),this.config(L(t,H())),this},i.prototype.onlyRegion=function(t){return this.__onlyRegion=t,this},i.prototype.onlyView=function(t){return this.__onlyView=t,this},i.prototype.setRegion=function(t){if(this.__region)if(t){if(null==this.__regionList[t]){var i=this.__regionAssemble();this.__regionList[t]="rgb("+i[0]+","+i[1]+","+i[2]+")"}this.__region.useConfig("fillStyle",this.__regionList[t])&&this.__region.useConfig("strokeStyle",this.__regionList[t])}else this.__region.useConfig("fillStyle","#000000")&&this.__region.useConfig("strokeStyle","#000000");return this},i.prototype.getRegion=function(t,i){var e=this;return new Promise((function(n){var r=e.__region?e.__region.painter.getImageData(t-.5,i-.5,1,1):{data:[0,0,0,0]},o=r.data,s=function(){if(e.__region)for(var t in e.__regionList)if("rgb("+o[0]+","+o[1]+","+o[2]+")"==e.__regionList[t]){n(t);break}n("")};o?s():r.then((function(t){o=t,s()}))}))},i.prototype.textWidth=function(t){this.painter.save(),U(this.painter,this.__specialConfig,0,0,0);var i=this.painter.measureText(t+"").width;return this.painter.restore(),i},i.prototype.getContext=function(t){return void 0===t&&(t=!1),t?this.__region?this.__region.painter:null:this.painter},i.prototype.getInfo=function(){return{width:this.painter.canvas.width/this.__scaleSize,height:this.painter.canvas.height/this.__scaleSize}},i.prototype.createLinearGradient=function(t,i,e,n){return function(t,i,e,n,r){var o=t.createLinearGradient(i,e,n,r);return X(o)}(this.painter,t,i,e,n)},i.prototype.createRadialGradient=function(t,i,e){return function(t,i,e,n){var r=t.createRadialGradient(i,e,0,i,e,n);return X(r)}(this.painter,t,i,e)},i.prototype.createConicGradient=function(t,i,e,n){return function(t,i,e,n,r){var o=t.createConicGradient(n,i,e);return X(o,r?function(t){return r/(2*Math.PI)*t}:void 0)}(this.painter,t,i,e,n)},i.prototype.getColor=function(t,i){t*=this.__scaleSize,i*=this.__scaleSize;var e=this.painter.getImageData(t-.5,i-.5,1,1).data;return"rgba("+e[0]+","+e[1]+","+e[2]+","+e[3]+")"},i}(z),W=function(t){function i(i,e,n,r){void 0===e&&(e={}),void 0===n&&(n=0),void 0===r&&(r=0);var o=this;if(!i)throw new Error("VISLite Canvas:The mount point requires an HTMLElement type but encountered null.");e=L(e,{scale:2,region:!0,willReadFrequently:!1}),n=n||i.clientWidth,r=r||i.clientHeight;var s,a=null,_=i;_._vislite_canvas_?(s=_._vislite_canvas_[0],a=_._vislite_canvas_[1]):(s=document.createElement("canvas"),i.appendChild(s),e.region&&(a=document.createElement("canvas")),_._vislite_canvas_=[s,a],i.setAttribute("vislite","Canvas"));for(var h=[a,s],u=0;u<h.length;u++){var l=h[u];l&&(l.style.width=n+"px",l.setAttribute("width",(1===u?e.scale:1)*n+""),l.style.height=r+"px",l.setAttribute("height",(1===u?e.scale:1)*r+""))}return(o=t.call(this,s,a,{willReadFrequently:e.willReadFrequently},e.scale)||this).__canvas=s,o.__el=i,o.painter.scale(e.scale,e.scale),o}return p(i,t),i.prototype.toDataURL=function(t,i){var e=this;return void 0===t&&(t="image/png"),void 0===i&&(i=.92),new Promise((function(n){n(e.__canvas.toDataURL(t,i))}))},i.prototype.bind=function(t,i){var e=this;return this.__el.addEventListener(t,(function(t){e.getRegion(t.offsetX,t.offsetY).then((function(e){i(e,t.offsetX,t.offsetY)}))})),this},i}(j),Y=function(t,i,e){var n=t.createShader(i);if(null==n)throw new Error("Unable to create shader!");if(t.shaderSource(n,e),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS))throw new Error("Failed to compile shader:"+t.getShaderInfoLog(n));return n},$=function(){function t(t){this.__painter=t}return t.prototype.use=function(){return this.__painter.useProgram(this.program),this},t.prototype.compile=function(t,i){return this.program=function(t,i,e){var n=Y(t,t.VERTEX_SHADER,i),r=Y(t,t.FRAGMENT_SHADER,e),o=t.createProgram();if(t.attachShader(o,n),t.attachShader(o,r),t.linkProgram(o),!t.getProgramParameter(o,t.LINK_STATUS))throw new Error("Failed to link program: "+t.getProgramInfoLog(o));return o}(this.__painter,t,i),this},t}(),J=function(){function t(t,i,e){void 0===e&&(e=0),this.__painter=t,this.__type={"2d":t.TEXTURE_2D,cube:t.TEXTURE_CUBE_MAP}[i],this.__texture=function(t,i,e){var n=t.createTexture();return t.activeTexture(t["TEXTURE"+e]),t.bindTexture(i,n),n}(t,this.__type,e),t.texParameteri(this.__type,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(this.__type,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(this.__type,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(this.__type,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE)}return t.prototype.useImage=function(t){return function(t,i,e,n,r,o){t.texImage2D(i,e,n,n,r,o)}(this.__painter,this.__type,0,this.__painter.RGBA,this.__painter.UNSIGNED_BYTE,t),this},t.prototype.useCube=function(t,i,e){return function(t,i,e,n,r,o,s,a,_){for(var h,u=[t.TEXTURE_CUBE_MAP_POSITIVE_X,t.TEXTURE_CUBE_MAP_NEGATIVE_X,t.TEXTURE_CUBE_MAP_POSITIVE_Y,t.TEXTURE_CUBE_MAP_NEGATIVE_Y,t.TEXTURE_CUBE_MAP_POSITIVE_Z,t.TEXTURE_CUBE_MAP_NEGATIVE_Z],l=0;l<u.length;l++)o[l]&&(h=u[l],t.texImage2D(h,e,n,s,a,0,n,r,null),t.bindTexture(i,_),t.texImage2D(h,e,n,n,r,o[l]));t.generateMipmap(i)}(this.__painter,this.__type,0,this.__painter.RGBA,this.__painter.UNSIGNED_BYTE,t,i,e,this.__texture),this},t}(),Z=function(){function t(t,i){void 0===i&&(i=!1),this.__painter=t,this.__isElement=i,this.__buffer=function(t){return t.createBuffer()}(t),this.__type=i?t.ELEMENT_ARRAY_BUFFER:t.ARRAY_BUFFER}return t.prototype.use=function(){return this.__painter.bindBuffer(this.__type,this.__buffer),this},t.prototype.write=function(t){return function(t,i,e,n){var r=e?t.ELEMENT_ARRAY_BUFFER:t.ARRAY_BUFFER;t.bufferData(r,i,n)}(this.__painter,t,this.__isElement,this.__painter.STATIC_DRAW),this.__fsize=t.BYTES_PER_ELEMENT,this},t.prototype.divide=function(t,i,e,n){return void 0===n&&(n=0),function(t,i,e,n,r,o,s){t.vertexAttribPointer(i,e,n,s,r,o),t.enableVertexAttribArray(i)}(this.__painter,t,i,this.__painter.FLOAT,e*this.__fsize,n*this.__fsize,!1),this},t}(),K=function(t,i,e,n){var r=Math.cos(t),o=Math.sin(t);return[i*r-e*o,i*o+e*r,n]},Q=function(){function t(t,i){void 0===t&&(t=7),void 0===i&&(i=[107,36]),this.name="Eoap",this.__scale=t,this.__center=i}return t.prototype.use=function(t,i){var e,n,r,o,s,a,_=(e=(360-i)/180*Math.PI,n=100*this.__scale,r=0,o=0,s=Math.cos(e),a=Math.sin(e),[o*a+n*s,r,o*s-n*a]);return _=K(t/180*Math.PI,_[0],_[1],_[2]),_=K((90-this.__center[0])/180*Math.PI,_[0],_[1],_[2]),_=function(t,i,e,n){var r=Math.cos(t),o=Math.sin(t);return[i,e*r-n*o,e*o+n*r]}((90-this.__center[1])/180*Math.PI,_[0],_[1],_[2]),[-_[0],_[1],_[2]]},t}(),tt=function(t,i){void 0===t&&(t=7),void 0===i&&(i=[107,36]),this.name="Mercator";var e=100*t*Math.PI/180,n=e*i[0],r=-1*e*i[1];this.use=function(t,i){return[.8*(e*t-n),-1*e*i-r,0]}};function it(t){for(var i=null,e=null,n=null,r=null,o=function(t){for(var o=0;o<t.length;o++)for(var s=0;s<t[o].length;s++){var a=t[o][s][0],_=t[o][s][1];(null==i||i>a)&&(i=a),(null==e||e<a)&&(e=a),(null==n||n>_)&&(n=_),(null==r||r<_)&&(r=_)}},s=t.features,a=0;a<s.length;a++)if("Polygon"==s[a].geometry.type)o(s[a].geometry.coordinates);else if("MultiPolygon"==s[a].geometry.type)for(var _=0;_<s[a].geometry.coordinates.length;_++)o(s[a].geometry.coordinates[_]);return[i,e,n,r]}function et(){for(var t=[],i=0;i<arguments.length;i++)t[i]=arguments[i];for(var e=null,n=null,r=null,o=null,s=0,a=t;s<a.length;s++){var _=it(a[s]),h=_[0],u=_[1],l=_[2],p=_[3];(null==e||h<e)&&(e=h),(null==n||u>n)&&(n=u),(null==r||l<r)&&(r=l),(null==o||p>o)&&(o=p)}return[e,n,r,o]}var nt=function(){function t(t){void 0===t&&(t={}),this.name="MapCoordinate",this.__config=L(t,{api:"Mercator",width:400,height:300,left:0,top:0})}return t.prototype.$$updateMap=function(){var t=this.__boundary,i=t[0],e=t[1],n=t[2],r=t[3];if("Eoap"==this.__config.api){var o=.836*this.__config.width/(e-i),s=.557*this.__config.height/(r-n);this.__map=new Q(o<s?o:s,[.5*(i+e)*.9778,.5*(n+r)*1.025])}else{if("Mercator"!=this.__config.api)throw new Error("Unexpected API types:"+this.__config.api);o=.72*this.__config.width/(e-i),s=.575*this.__config.height/(r-n),this.__map=new tt(o<s?o:s,[.5*(i+e),.5*(n+r)])}},t.prototype.setConfig=function(t){return O(this.__config,t),this.$$updateMap(),this},t.prototype.setGeos=function(){for(var t=[],i=0;i<arguments.length;i++)t[i]=arguments[i];return this.__boundary=et.apply(void 0,t),this.$$updateMap(),this},t.prototype.use=function(t,i){if(this.__map){var e=this.__map.use(t,i);return[this.__config.left+.5*this.__config.width+e[0],this.__config.top+.5*this.__config.height+e[1]]}throw new Error("Geographic data not set")},t}(),rt=function(){function t(t){void 0===t&&(t={}),this.name="Tree",this.__config=L(t,{root:function(t){return t},children:function(t){return t.children},id:function(t){return t.name}})}return t.prototype.use=function(t,i){return void 0===i&&(i={}),function(t,i,e){void 0===e&&(e={});var n=function(t,i){var e,n,r={},o=i.root(t);e=n=i.id(o),r[e]={data:o,pid:null,id:e,isOpen:!0,show:!0,deg:0,children:[]};var s=1;return function n(o,a){var _=i.children(o,t);s+=_?_.length:0;for(var h=0;_&&h<_.length;h++)e=i.id(_[h]),r[a].children.push(e),r[e]={data:_[h],pid:a,id:e,isOpen:!0,show:!0,deg:0,children:[]},n(_[h],e)}(o,e),{rid:n,value:r,num:s}}(t,i),r=n.value,o=n.rid;if(1==n.num)return r[o].left=.5,r[o].top=.5,r[o].show=!0,{deep:1,node:r,root:o,size:1};var s=[],a=0,_=0;for(var h in e[o]?(r[o].left=.5,r[o].top=.5,r[o].show=!0,a=1):function t(i,n){n>_&&(_=n);var o=0;if(!e[i.id])for(o=0;o<i.children.length;o++)t(r[i.children[o]],n+1);if(r[i.id].left=n+.5,0==o?(null==s[n]&&(s[n]=-.5),null==s[n-1]&&(s[n-1]=-.5),r[i.id].top=s[n]+1,s[n]+1+.5*(r[i.pid].children.length-1)-1<s[n-1]&&(r[i.id].top=s[n-1]+1-.5*(r[i.pid].children.length-1))):r[i.id].top=.5*(r[i.children[0]].top+r[i.children[o-1]].top),r[i.id].top<=s[n])var h=s[n]+1-r[i.id].top((function t(i,e){r[i].top+=h,s[e]<r[i].top&&(s[e]=r[i].top);for(var n=0;n<r[i].children.length;n++)t(r[i].children[n],e+1)}))(i.id,n);s[n]=r[i.id].top,r[i.id].top+.5>a&&(a=r[i.id].top+.5)}(r[o],0),e)e[h]&&(r[h].isOpen=!1,function t(i,e,n){for(var o=0;o<r[i].children.length;o++)r[r[i].children[o]].left=e,r[r[i].children[o]].top=n,r[r[i].children[o]].show=!1,t(r[i].children[o],e,n)}(h,r[h].left,r[h].top));return{node:r,root:o,size:a,deep:_+1}}(t,this.__config,i)},t}(),ot=function(t){function i(){var i=null!==t&&t.apply(this,arguments)||this;return i.name="TreeLayout",i.__option={offsetX:0,offsetY:0,duration:500,type:"plain",direction:"LR",x:100,y:100,width:100,height:100,radius:100},i.__noOpens={},i}return p(i,t),i.prototype.setOption=function(t){return L(t,this.__option),this},i.prototype.use=function(i,e){void 0===e&&(e={});var n=t.prototype.use.call(this,i,e);if(0!=this.__option.offsetX||0!=this.__option.offsetY)for(var r in n.node)if(!n.node[r].show){var s=0,a=r;do{a=n.node[a].pid,s++}while(!n.node[a].show);n.node[r].left+=this.__option.offsetX*s,n.node[r].top+=this.__option.offsetY*s}if("rect"==this.__option.type){if("LR"==this.__option.direction||"RL"==this.__option.direction){var _=this.__option.height/n.size,h=this.__option.width/(n.deep-1),u=this.__option.y-.5*this.__option.height,l="LR"==this.__option.direction?1:-1;for(var r in n.node)1==n.deep?(n.node[r].left=this.__option.x+.5*this.__option.width*l,n.node[r].top=this.__option.y):(n.node[r].left=this.__option.x+(n.node[r].left-.5)*h*l,n.node[r].top=n.node[r].top*_+u)}else if("TB"==this.__option.direction||"BT"==this.__option.direction)for(var r in _=this.__option.width/n.size,h=this.__option.height/(n.deep-1),u=this.__option.x-.5*this.__option.width,l="TB"==this.__option.direction?1:-1,n.node)if(n.node[r].deg="TB"==this.__option.direction?.5*Math.PI:-.5*Math.PI,1==n.deep)n.node[r].left=this.__option.x,n.node[r].top=this.__option.y+.5*this.__option.height*l;else{var p=n.node[r].left;n.node[r].left=n.node[r].top*_+u,n.node[r].top=this.__option.y+(p-.5)*h*l}}else if("circle"==this.__option.type){var f=this.__option.x,c=this.__option.y,d=2*Math.PI/n.size,g=this.__option.radius/(n.deep-1);for(var r in n.node)if(.5==n.node[r].left)n.node[r].left=f,n.node[r].top=c;else{var v=o(f,c,d*n.node[r].top,f+(n.node[r].left-.5)*g,c);n.node[r].deg=d*n.node[r].top,n.node[r].left=v[0],n.node[r].top=v[1]}}return n},i.prototype.bind=function(t,i,e){return void 0===e&&(e={}),this.__rback=i,this.__oralTree=t,this.__noOpens=e,this.__preTree=this.use(this.__oralTree,this.__noOpens),this.__rback(this.__preTree),this},i.prototype.unbind=function(){return this.__rback=function(){return null},this.__oralTree=null,this.__preTree=null,this.__noOpens={},this},i.prototype.doUpdate=function(){var t=this,i=this.use(this.__oralTree,this.__noOpens),e=JSON.parse(JSON.stringify(i));return h((function(n){if(t.__preTree)for(var r in e.node)(i.node[r].show||t.__preTree.node[r].show)&&(e.node[r].show=!0,e.node[r].left=t.__preTree.node[r].left+(i.node[r].left-t.__preTree.node[r].left)*n,e.node[r].top=t.__preTree.node[r].top+(i.node[r].top-t.__preTree.node[r].top)*n);t.__rback(e)}),this.__option.duration,(function(){t.__preTree=i,t.__rback(t.__preTree)})),this},i.prototype.closeNode=function(t){return this.__preTree?(this.__noOpens[t]=!0,this.doUpdate(),this):this},i.prototype.openNode=function(t){return this.__preTree?(this.__noOpens[t]=!1,this.doUpdate(),this):this},i.prototype.toggleNode=function(t){return this.__preTree?(this.__noOpens[t]=!this.__noOpens[t],this.doUpdate(),this):this},i}(rt),st=function(){function t(t){void 0===t&&(t={}),this.name="PieLayout",this.__option={cx:200,cy:200,radius:[50,100],duration:200},this.__hoverIndex=-1,this.__config=L(t,{name:function(t,i){return t.name},value:function(t,i){return t.value}})}return t.prototype.setOption=function(t){return L(t,this.__option),this},t.prototype.use=function(t,i){void 0===i&&(i=-1);for(var e={count:t.length,cx:this.__option.cx,cy:this.__option.cy,radius:this.__option.radius,hoverIndex:i,node:[]},n=0,r=[],s=[],a=0;a<t.length;a++)r[a]=this.__config.name(t[a],t),s[a]=this.__config.value(t[a],t),n+=s[a];var _,h=-.5*Math.PI;for(a=0;a<t.length;a++){_=s[a]/n*Math.PI*2;var u=[this.__option.radius[0]*(1+(this.__option.radius[0]>0&&i===a?-.1:0)),this.__option.radius[1]*(1+(i===a?.05:0))],l=h+.5*_,p=Math.max(this.__option.radius[0],this.__option.radius[1]),f=o(e.cx,e.cy,l,e.cx+p,e.cy),c=o(e.cx,e.cy,l,e.cx+p+15,e.cy),d=f[0]>e.cx?1:-1,g=[c[0]+20*d,c[1]],v=[c[0]+25*d,c[1]];e.node[a]={value:s[a],name:r[a],beginDeg:h,deg:_,isHover:i===a,radius:u,label:{line:[f,c,g],position:v,align:-1===d?"right":"left"}},h+=_}return e},t.prototype.bind=function(t,i){return this.__rback=i,this.__oralPie=t,this.__prePie=this.use(this.__oralPie,this.__hoverIndex),this.__rback(this.__prePie),this},t.prototype.unbind=function(){return this.__rback=function(){return null},this.__oralPie=null,this.__prePie=null,this.__hoverIndex=-1,this},t.prototype.setHover=function(t){return this.__prePie&&this.__hoverIndex!==t?(this.__hoverIndex=t,this.doUpdate(),this):this},t.prototype.doUpdate=function(){var t=this,i=this.use(this.__oralPie,this.__hoverIndex),e=JSON.parse(JSON.stringify(i));return h((function(n){if(t.__prePie)for(var r=0;r<e.count;r++)e.node[r].radius[0]=t.__prePie.node[r].radius[0]+(i.node[r].radius[0]-t.__prePie.node[r].radius[0])*n,e.node[r].radius[1]=t.__prePie.node[r].radius[1]+(i.node[r].radius[1]-t.__prePie.node[r].radius[1])*n;t.__rback(e)}),this.__option.duration,(function(){t.__prePie=i,t.__rback(t.__prePie)})),this},t}(),at=function(){function t(t){void 0===t&&(t={}),this.name="BarLayout",this.__option={x:50,y:350,width:400,height:300,category:"xAxis",duration:200},this.__config=L(t,{})}return t.prototype.setOption=function(t){return L(t,this.__option),this},t.prototype.use=function(t){var i={coordinate:{x:this.__option.x,y:this.__option.y,width:this.__option.width,height:this.__option.height,xAxis:{type:"xAxis"===this.__option.category?"category":"value",data:[]},yAxis:{type:"xAxis"===this.__option.category?"value":"category",data:[]}},node:[]},e=void 0,n=void 0;if(t.data)for(var r=0,o=t.data;r<o.length;r++){var s=o[r];(void 0===e||s>e)&&(e=s),(void 0===n||s<n)&&(n=s)}else{if(!t.value)throw new Error("No data leads to parsing errors");for(var a=0,_=t.value;a<_.length;a++)for(var h=0,l=_[a].data;h<l.length;h++)s=l[h],(void 0===e||s>e)&&(e=s),(void 0===n||s<n)&&(n=s)}var p,f,c=u(e||0,n||0,5);"xAxis"===this.__option.category?(i.coordinate.xAxis.data=t.category,i.coordinate.yAxis.data=c,p=this.__option.width,f=-1*this.__option.height):(i.coordinate.xAxis.data=c,i.coordinate.yAxis.data=t.category,p=this.__option.height,f=this.__option.width);var d=[],g=p/t.category.length,v=.9*g,y=.05*g;if(t.data)for(var m=0;m<t.data.length;m++)d.push([y+g*m,v]);else{var w=v/t.value.length,x=.9*w,E=.05*w;for(m=0;m<t.value[0].data.length;m++){d[m]=[];for(var b=0;b<t.value.length;b++)d[m].push([y+g*m+w*b+E,x])}}var T=f/(c[c.length-1]-c[0]),P=function(t){return T*(t-c[0])};if("xAxis"===this.__option.category)if(t.data){var C=[];for(m=0;m<t.data.length;m++)C.push({x:this.__option.x+d[m][0],y:this.__option.y,width:d[m][1],height:P(t.data[m]),value:t.data[m]});i.node.push({bar:C})}else for(b=0;b<t.value.length;b++){for(C=[],m=0;m<t.value[b].data.length;m++)C.push({x:this.__option.x+d[m][b][0],y:this.__option.y,width:d[m][b][1],height:P(t.value[b].data[m]),value:t.value[b].data[m]});i.node.push({name:t.value[b].name,bar:C})}else if(t.data){for(C=[],m=0;m<t.data.length;m++)C.push({x:this.__option.x,y:this.__option.y-this.__option.height+d[m][0],width:P(t.data[m]),height:d[m][1],value:t.data[m]});i.node.push({bar:C})}else for(b=0;b<t.value.length;b++){for(C=[],m=0;m<t.value[b].data.length;m++)C.push({x:this.__option.x,y:this.__option.y-this.__option.height+d[m][b][0],width:P(t.value[b].data[m]),height:d[m][b][1],value:t.value[b].data[m]});i.node.push({name:t.value[b].name,bar:C})}return i},t.prototype.bind=function(t,i){return this.__rback=i,this.__oralBar=t,this.__preBar=this.use(this.__oralBar),this.__rback(this.__preBar),this},t.prototype.unbind=function(){return this.__rback=function(){return null},this.__oralBar=null,this.__preBar=null,this},t.prototype.doUpdate=function(){var t=this,i=this.use(this.__oralBar),e=JSON.parse(JSON.stringify(i));return h((function(i){t.__preBar||t.__rback(e)}),this.__option.duration,(function(){t.__preBar=i,t.__rback(t.__preBar)})),this},t}(),_t={Cardinal:i,Hermite:t,Matrix4:r,rotate:o,move:function(t,i,e,n,r){var o=Math.sqrt(t*t+i*i);return[t*e/o+n,i*e/o+r]},scale:function(t,i,e,n,r){return[e*(n-t)+t,e*(r-i)+i]},getLoopColors:function(t,i,e){void 0===i&&(i=1);var n=e?e(i):["rgba(84,112,198,"+i+")","rgba(145,204,117,"+i+")","rgba(250,200,88,"+i+")","rgba(238,102,102,"+i+")","rgba(115,192,222,"+i+")","rgba(59,162,114,"+i+")","rgba(252,132,82,"+i+")","rgba(154,96,180,"+i+")","rgba(234,124,204,"+i+")"],r=[];if(t<=n.length)return n;if(t%n.length==0)for(var o=0;o<t/n.length;o++)r=r.concat(n);else{for(var s=1;s<t/n.length;s++)r=r.concat(n);if(t%n.length==1)r=r.concat(n[4]);else for(var a=0;a<t%n.length;a++)r=r.concat(n[a])}return r},animation:function(t,i,e){return h(t,i||400,e||function(){}).stop},ruler:u,SVG:B,Canvas:W,RawCanvas:j,getWebGLContext:function(t,i,e){if(void 0===i&&(i=1),!t)throw new Error("VISLite getWebGLContext:The mount point requires an HTMLElement type but encountered null.");var n,r=t.clientWidth,o=t.clientHeight,s=t;return s._vislite_canvas_?n=s._vislite_canvas_:(n=document.createElement("canvas"),t.appendChild(n),s._vislite_canvas_=n,t.setAttribute("vislite","WebGL")),n.style.width=r+"px",n.setAttribute("width",r+""),n.style.height=o+"px",n.setAttribute("height",o+""),function(t,i,e,n){void 0===e&&(e={}),void 0===n&&(n="scaleToFill");for(var r=["experimental-webgl","webkit-3d","moz-webgl"],o=t.getContext("webgl",e),s=0;s<r.length;s++){try{o=t.getContext(r[s],e)}catch(t){}if(o)break}if(!o)throw new Error("Non canvas or browser does not support webgl.");var a=o.canvas.width,_=o.canvas.height,h=i,u=i;"aspectFit"==n?a>_?h*=_/a:_>a&&(u*=a/_):"aspectFill"==n&&(a>_?u*=a/_:_>a&&(h*=_/a));var l=a*h,p=_*u;return o.viewport(.5*(a-l),.5*(_-p),l,p),o.depthFunc(o.LEQUAL),o.enable(o.DEPTH_TEST),o}(n,i,{},e)},Shader:$,Texture:J,Buffer:Z,Eoap:Q,Mercator:tt,throttle:function(t,i){let e={time:200,keep:!1,opportunity:"end"};if(i)for(let t in i)e[t]=i[t];let n,r=!1,o=!1,s=!1;return function(){const i=this;if(n=arguments,r)o=!0,s=!0;else{"end"!=e.opportunity&&t.apply(i,n),r=!0;let a=setInterval((()=>{o?e.keep||t.apply(i,n):("begin"!=e.opportunity&&(s||"end"==e.opportunity)&&t.apply(i,n),r=!1,s=!1,clearInterval(a)),o=!1}),e.time)}}},assemble:q,MapCoordinate:nt,TreeLayout:ot,PieLayout:st,BarLayout:at,initOption:L,mergeOption:O};return _t},"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(t="undefined"!=typeof globalThis?globalThis:t||self).VISLite=i();
|