vislite 1.9.1 → 1.10.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 CHANGED
@@ -372,3 +372,9 @@ v1.9.1:
372
372
  1、调整打包若干细节
373
373
  2、优化uni-app(Vue3版本)的在支付宝小程序中不合理的警告提示
374
374
  3、针对SVG画笔优化初始化方式
375
+ v1.10.0:
376
+ date:2026-05-01
377
+ changes:
378
+ - 优化改造
379
+ 1、校对或补充types相关文件
380
+ 2、简化依赖
package/README.md CHANGED
@@ -33,31 +33,35 @@
33
33
 
34
34
  # VISLite
35
35
 
36
- `VISLite`是一个使用`TypeScript`开发的可视化库。官网地址:[https://oi-contrib.github.io/VISLite](https://oi-contrib.github.io/VISLite)
36
+ 🚀 一款轻量、优雅的跨端数据可视化解决方案
37
37
 
38
- 主要提供了跨端的画布和计算,开发人员只需要按照文档的描述就可以非常简单的完成包括Web、uni-app、微信小程序、支付宝小程序等平台的可视化开发,除了初始化时可能存在一些差异外,主要的业务代码部分在不同端完全一致。
38
+ `VISLite` 是一个使用 `TypeScript` 构建的高性能可视化库。官网地址:[https://oi-contrib.github.io/VISLite](https://oi-contrib.github.io/VISLite)
39
+
40
+ 它提供了统一的跨端画布绘制与计算能力,让开发者只需关注业务逻辑,即可轻松实现 Web、uni-app、微信小程序、支付宝小程序等多平台的可视化应用。除初始化配置存在细微平台差异外,核心业务代码完全通用。
39
41
 
40
42
  ## 简介
41
43
 
42
- 这是一个轻量级的数据可视化资源库,目标是:帮助你更快速、简单、高效的开发出任意的可视化业务产品。
44
+ 🎯 轻量级数据可视化开发库 —— 助你更快速、简洁、高效地构建可视化产品。
43
45
 
44
46
  > 本项目已在[开源中国](https://www.oschina.net/p/vislite)中开源,欢迎关注和留言。
45
47
 
46
- ## 如何使用?
48
+ ## 快速开始
47
49
 
48
- 首先,需要进行安装:
50
+ ### 📦 安装
49
51
 
50
- ```js
52
+ ```bash
51
53
  npm install --save vislite
52
54
  ```
53
55
 
54
- 然后,准备好画布:
56
+ ### 🖼️ 准备画布
55
57
 
56
58
  ```html
57
59
  <div id="root" style="width:500px;height:300px;"></div>
58
60
  ```
59
61
 
60
- 现在,就可以获取画笔绘制自己需要的内容了。比如获取canvas画笔,绘制一个红色的圆:
62
+ ### 🎨 开始绘制
63
+
64
+ 获取画笔即可绘制你需要的任意内容。例如,获取 Canvas 画笔绘制一个红色圆:
61
65
 
62
66
  ```js
63
67
  import { Canvas } from 'vislite';
@@ -69,12 +73,10 @@ painter.config({
69
73
  }).fillCircle(200, 150, 100);
70
74
  ```
71
75
 
72
- 更复杂的图表,我们也提供了丰富的辅助API。比如使用树布局,可以非常快速的绘制一个树图:
76
+ 更复杂的图表?我们提供了丰富的辅助 API。以树布局为例,只需简单几步即可绘制树图:
73
77
 
74
78
  <img src="https://oi-contrib.github.io/VISLite/images/docs/tree.png" width="500"/>
75
79
 
76
- 具体代码如下:
77
-
78
80
  ```js
79
81
  import { Canvas, TreeLayout } from 'vislite';
80
82
 
@@ -119,7 +121,6 @@ painter.config({
119
121
  for (var key in tree.node) {
120
122
  var pid = tree.node[key].pid;
121
123
 
122
- // 如果父结点存在,和父结点连起来
123
124
  if (pid) {
124
125
  var dist = (tree.node[key].top - tree.node[pid].top) * 0.5;
125
126
 
@@ -150,90 +151,90 @@ for (var key in tree.node) {
150
151
  }
151
152
  ```
152
153
 
153
- 关于树布局更具体的使用细节,你可以访问:[ 《教程 / 树布局》 ](https://oi-contrib.github.io/VISLite/#/course/tree-layout)一节。
154
+ 树布局的详细用法,请参阅:[《教程 / 树布局》](https://oi-contrib.github.io/VISLite/#/course/tree-layout)
154
155
 
155
- ## 部分功能
156
+ ## 核心功能
156
157
 
157
- ### 常用的算法
158
+ ### 🧮 可视化算法库
158
159
 
159
- 我们通过提供可视化常用的算法来帮助你绘制复杂图表。比如下面的树图,通过简单的配置就可以把任意格式的数据变成任意绘制的带坐标的数据:
160
+ 我们封装了可视化开发中常用的算法,助你轻松绘制复杂图表。通过简单的配置,即可将任意格式的数据转换为带坐标的绘制数据:
160
161
 
161
162
  <img src="https://oi-contrib.github.io/VISLite/images/docs/what_1.png" width="400"/>
162
163
 
163
- > 上述例子的运行地址:[从左到右树状图](https://oi-contrib.github.io/VISLite/#/example/canvas/tree-layout-lr)
164
+ > 示例运行地址:[从左到右树状图](https://oi-contrib.github.io/VISLite/#/example/canvas/tree-layout-lr)
164
165
 
165
- 除了[树布局](https://oi-contrib.github.io/VISLite/#/api/treeLayout)外,我们还提供了:[刻度尺算法](https://oi-contrib.github.io/VISLite/#/api/ruler)来帮助你计算刻度应该如何确定、[等角斜方位投影](https://oi-contrib.github.io/VISLite/#/api/eoap)[墨卡托投影](https://oi-contrib.github.io/VISLite/#/api/mercator)来绘制地图、[插值函数](https://oi-contrib.github.io/VISLite/#/api/cardinal)来完成折线变光滑的曲线、[变换矩阵](https://oi-contrib.github.io/VISLite/#/api/matrix4)提供各种坐标变换等。
166
+ [树布局](https://oi-contrib.github.io/VISLite/#/api/treeLayout)外,还提供:[刻度尺算法](https://oi-contrib.github.io/VISLite/#/api/ruler)[等角斜方位投影](https://oi-contrib.github.io/VISLite/#/api/eoap)[墨卡托投影](https://oi-contrib.github.io/VISLite/#/api/mercator)[插值函数](https://oi-contrib.github.io/VISLite/#/api/cardinal)[变换矩阵](https://oi-contrib.github.io/VISLite/#/api/matrix4)等。
166
167
 
167
- ### 画笔加强
168
+ ### 🖌️ 增强型画笔
168
169
 
169
- 我们对画笔进行了加强,使得其更简单好用。比如canvas,抽象出区域的概念,使得无论你绘制的图形多么的不规则,都可以很轻松的实现交互功能:
170
+ 画笔经过精心设计,使用更简单、功能更强大。以 Canvas 为例,抽象出「区域」概念,无论图形多么不规则,都能轻松实现交互:
170
171
 
171
172
  <img src="https://oi-contrib.github.io/VISLite/images/docs/what_2.png" width="400"/>
172
173
 
173
- > 上述例子的运行地址:[中国地图](https://oi-contrib.github.io/VISLite/#/example/canvas/china)
174
+ > 示例运行地址:[中国地图](https://oi-contrib.github.io/VISLite/#/example/canvas/china)
174
175
 
175
- 画笔除了像上面那样为了方便交互而补充区域的设计外,还对原来的API进行了一次抽象,使得API更友好简单`(比如WebGL,即使不会3D的人也可以轻松使用,而SVG的使用,你无需去记忆那些晦涩难懂的属性)`,同时,我们还抹平了不同版本浏览器等之间的差异。
176
+ 画笔不仅为交互而设计区域,还对原生 API 进行了优雅封装,接口更友好直观(如 WebGL3D开发零门槛,SVG 无需记忆晦涩属性)。同时自动抹平浏览器兼容性差异。
176
177
 
177
- ### 支持跨端开发
178
+ ### 📱 跨端支持
178
179
 
179
- 除了Web端外,我们还针对uni-app、微信小程序、支付宝小程序等端进行了支持,并且不同端API保持一致,大大提高了代码的复用性:
180
+ Web 端外,还支持 uni-app、微信小程序、支付宝小程序等多端,API 统一,极大提升代码复用率:
180
181
 
181
182
  <img src="https://oi-contrib.github.io/VISLite/images/docs/what_3.png" width="600"/>
182
183
 
183
- > 上述例子的运行地址:[金额波浪球](https://oi-contrib.github.io/VISLite/#/example/svg/money-schedule)
184
+ > 示例运行地址:[金额波浪球](https://oi-contrib.github.io/VISLite/#/example/svg/money-schedule)
184
185
 
185
- 基于实际需要,我们目前对 `Canvas` 提供了跨端支持,除 `Web端` 外,还支持 `原生微信小程序` 、 `原生支付宝小程序` 和 `uni-app端` (编译成H5、微信小程序、支付宝小程序等) ,如果后续有必要,我们会对Canvas支持的端或SVG、WebGL等画笔进行更多端扩展。
186
+ 目前 `Canvas` 已支持:Web、原生微信小程序、原生支付宝小程序、uni-app(编译为 H5、微信小程序、支付宝小程序等)。后续将持续扩展更多端和画笔类型。
186
187
 
187
- ## 特点
188
+ ## 核心优势
188
189
 
189
- - 灵活的引入方式:包括npm安装后按照`ES Module`或`CommonJS`规范引入或直接使用script标签的`CDN`方式。
190
- - 按需引入或全局引入:支持源码TS引入、按需JS引入或者全量引入等多种方式。
191
- - 简单与复杂共存:一方面我们提供了可视化需要的基础功能,你可以按照自己的需要组合使用;另一方面,为了加速开发,我们针对常见的可视化业务场景进行了封装,可以帮助你快速完成,你可以根据实际情况进行选择。
192
- - 向下兼容:我们向你保证,同一个大版本下始终向下兼容`(alphabeta版本为测试版本,不包括)`,因此,无论何时,在同一个大版本号下,最新版本总是最好的选择。
190
+ - **灵活的引入方式**:支持 npm 安装后的 ES Module / CommonJS 引入,以及 script 标签 CDN 方式
191
+ - **按需加载**:源码 TS 引入、按需 JS 引入或全量引入,多种模式按需选择
192
+ - **简洁与强大并存**:提供可视化基础组件可自由组合,同时也支持常见场景的封装方案
193
+ - **稳定可靠**:同一大版本完全向下兼容(alphabeta 版本除外),始终保持最新版本为最优选择
193
194
 
194
- > 版本说明:alpha为开发阶段、beta为发布前测试、rc为候选版本、next为未来版本、无后缀的为正式版本。
195
+ > 版本规范:alpha(开发版)→ beta(测试版)→ rc(候选版)→ next(预发布版)→ 正式版
195
196
 
196
- ## 需求墙
197
+ ## 需求反馈
197
198
 
198
- 我们的目标是不断完善丰富可视化功能,非常希望获得你宝贵的建议和批评,无论任何想法,都可以给我们[留言](https://github.com/oi-contrib/VISLite/issues)告诉我们。
199
+ 我们致力于不断完善可视化功能,期待你的宝贵建议!欢迎通过 [留言](https://github.com/oi-contrib/VISLite/issues) 与我们交流。
199
200
 
200
- 你所提的任何建议我们都会在最长一周内进行反馈说明。
201
+ 所有建议将在一周内得到回复。
201
202
 
202
203
  ## 更新日志
203
204
 
204
- 详见[正式版更新日志](./CHANGELOG),我们会在每次发布完正式版本后更新其内容。
205
+ 详见[正式版更新日志](./CHANGELOG),每次正式版本发布后更新。
205
206
 
206
- ## 下一步
207
+ ## Roadmap
207
208
 
208
- 我们会在这里列出接下来的工作重心:
209
+ 近期工作重点:
209
210
 
210
- - 为加速开发,提供常用坐标系和布局
211
- - 文档优化(提高可读性、丰富用例、补充教程)
211
+ - 提供常用坐标系和布局组件,加速开发
212
+ - 持续优化文档(提升可读性、丰富示例、完善教程)
212
213
 
213
- 给我们[留言](https://github.com/oi-contrib/VISLite/issues)告诉我们你希望快速扩展的功能,我们会优先你的建议考虑哦~
214
+ 有想要的功能?[告诉我们](https://github.com/oi-contrib/VISLite/issues),我们会优先考虑!
214
215
 
215
- ## 参与贡献
216
+ ## 贡献指南
216
217
 
217
- 你可以选择下列一项或多项进行参与:
218
+ 欢迎通过以下方式参与项目:
218
219
 
219
- - 代码维护:由于新功能或一些BUG的出现,对代码进行维护和升级。
220
- - 文档编辑:主要是接口文档和教程需要编辑,这很重要。
221
- - 用例开发和测试:在项目的test文件夹下有一些测试,而在docs文档中存在一些例子需要补充。
222
- - 参与讨论:主要是讨论未来如何发展,改造的方向等。
220
+ - **代码维护**:处理新功能开发与 Bug 修复
221
+ - **文档完善**:接口文档和教程的编写与优化
222
+ - **测试用例**:补充 test 目录下的测试用例和 docs 目录下的示例
223
+ - **方向讨论**:参与项目未来发展的讨论
223
224
 
224
- 如果有意向加入我们,你可以通过提 [issue](https://github.com/oi-contrib/VISLite/issues) 和我们取到联系,请简单说明一下情况,我们会尽快回复。
225
+ 有意加入?请通过 [issue](https://github.com/oi-contrib/VISLite/issues) 联系我们,请简要说明情况,我们会尽快回复。
225
226
 
226
- 你可以查看[VISLite 贡献指南](./.github/CONTRIBUTING.md)文件了解更多细节,查看[AUTHORS.txt](./AUTHORS.txt)了解所有的贡献者。
227
+ 详见 [VISLite 贡献指南](./.github/CONTRIBUTING.md)[AUTHORS.txt](./AUTHORS.txt)
227
228
 
228
- ## 例子项目
229
+ ## 示例项目
229
230
 
230
- 主要是基于本项目及相关项目(比如 [ @vislite/canvas](https://github.com/oi-contrib/vislite-plugin-canvas) [ @vislite/chart](https://github.com/oi-contrib/vislite-plugin-chart))开发的一些用例:
231
+ 基于 VISLite 及相关插件(如 [@vislite/canvas](https://github.com/oi-contrib/vislite-plugin-canvas)、[@vislite/chart](https://github.com/oi-contrib/vislite-plugin-chart))开发的示例:
231
232
 
232
233
  <img src="https://oi-contrib.github.io/VISLite/images/docs/examples/review1.png" style="width:700px;border:2px solid black;margin-bottom:20px;"/>
233
234
  <img src="https://oi-contrib.github.io/VISLite/images/docs/examples/review2.png" style="width:700px;border:2px solid black;margin-bottom:20px;"/>
234
235
  <img src="https://oi-contrib.github.io/VISLite/images/docs/examples/review3.png" style="width:300px;border:2px solid black;margin-bottom:20px;"/>
235
236
 
236
- 更多内容,你可以直接访问: [VISLite 例子项目](https://rapid-start.github.io/VISLite-examples/index.html)
237
+ 更多示例请访问:[VISLite 示例项目](https://rapid-start.github.io/VISLite-examples/index.html)
237
238
 
238
239
  ## 版权
239
240
 
@@ -144,11 +144,11 @@ function ruler (maxValue, minValue, num, option) {
144
144
  }
145
145
 
146
146
  //当前正在运动的动画的tick函数堆栈
147
- var $timers = [];
147
+ let $timers = [];
148
148
  //唯一定时器的定时间隔
149
- var $interval = 13;
149
+ let $interval = 13;
150
150
  //定时器ID
151
- var $timerId;
151
+ let $timerId;
152
152
 
153
153
  /**
154
154
  * 动画轮播
@@ -162,13 +162,13 @@ function animation(doback, duration, callback) {
162
162
  if (arguments.length < 2) duration = 400;
163
163
  if (arguments.length < 3) callback = function () { };
164
164
 
165
- var clock = {
165
+ let clock = {
166
166
  //把tick函数推入堆栈
167
167
  "timer": function (tick, duration, callback) {
168
168
  if (!tick) {
169
169
  throw new Error('Tick is required!');
170
170
  }
171
- var id = new Date().valueOf() + "_" + (Math.random() * 1000).toFixed(0);
171
+ let id = new Date().valueOf() + "_" + (Math.random() * 1000).toFixed(0);
172
172
  $timers.push({
173
173
  "id": id,
174
174
  "createTime": new Date(),
@@ -200,7 +200,7 @@ function animation(doback, duration, callback) {
200
200
 
201
201
  //被定时器调用,遍历timers堆栈
202
202
  "tick": function () {
203
- var createTime, flag, tick, callback, timer, duration, passTime, timers = $timers;
203
+ let createTime, flag, tick, callback, timer, duration, passTime, timers = $timers;
204
204
 
205
205
  $timers = [];
206
206
  $timers.length = 0;
@@ -243,7 +243,7 @@ function animation(doback, duration, callback) {
243
243
  }
244
244
  };
245
245
 
246
- var id = clock.timer(function (deep) {
246
+ let id = clock.timer(function (deep) {
247
247
  //其中deep为0-1,表示改变的程度
248
248
  doback(deep);
249
249
  }, duration, callback);
@@ -252,7 +252,7 @@ function animation(doback, duration, callback) {
252
252
  // 一个函数
253
253
  // 用于在动画结束前结束动画
254
254
  stop: function () {
255
- var i;
255
+ let i;
256
256
  for (i in $timers) {
257
257
  if ($timers[i].id == id) {
258
258
  $timers[i].id = void 0;
@@ -1 +1 @@
1
- function t(t,i){for(var a in t)i[a]=t[a];return i}var i,a=[];var e=function(){function e(i){void 0===i&&(i={}),this.name="BarLayout",this.__option={x:50,y:350,width:400,height:300,category:"xAxis",duration:200},this.__config=t(i,{})}return e.prototype.setOption=function(i){return t(i,this.__option),this},e.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:[]},a=void 0,e=void 0;if(t.data)for(var n=0,r=t.data;n<r.length;n++){var o=r[n];(void 0===a||o>a)&&(a=o),(void 0===e||o<e)&&(e=o)}else{if(!t.value)throw new Error("No data leads to parsing errors");for(var h=0,u=t.value;h<u.length;h++)for(var l=0,s=u[h].data;l<s.length;l++){o=s[l];(void 0===a||o>a)&&(a=o),(void 0===e||o<e)&&(e=o)}}var _,d,f=function(t,i,a,e){if(t<i){var n=i;i=t,t=n}else if(t==i)return[t];var r=function(t){for(var i=t<100&&t>-100?10:.1,a=-1,e=t;10==i?e>=-100&&e<=100:e<=-100||e>=100;)a+=1,e*=i;if(10==i)return Math.pow(10,a);for(var n="0.",r=1;r<a;r++)n+="0";return+(n+"1")}(t-i),o=Math.ceil((t-i)*r/a),h=function(a){var e=({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}[o+a]||o+a)/r,n=Math.floor(i/e)*e,h=[];h.push(n);for(var u=1;h[h.length-1]<t;u++)h.push(n+e*u);return h},u=h(0),l=function(){for(var t=[],a=u[u.length-1]-(null==e?void 0:e.max),n=0;n<u.length;n++)n+1<u.length&&u[n+1]-a<i||t.push(u[n]-a);return t},s=function(){for(var i=[],a=u[0]-(null==e?void 0:e.min),n=0;n<u.length&&(i[n]=u[n]-a,!(t<=i[n]));n++);return i};if(e){if("max"in e&&"min"in e&&e.max>=t&&e.min<=i){var _=function(){if(u[0]>=e.min&&u[u.length-1]<=e.max)return!0;var t=l();if(t[0]>=e.min&&t[t.length-1]<=e.max)return u=t,!0;var i=s();return i[0]>=e.min&&i[t.length-1]<=e.max?(u=i,!0):void 0};if(_())return u;for(var d=1;d<100;d++){if(u=h(d),_())return u;if(u=h(-d),_())return u}}"max"in e&&e.max>=t?e.max<u[u.length-1]&&(u=l()):"min"in e&&e.min<=i&&e.min>u[0]&&(u=s())}for(var f=0;f<u.length;f++){var c=u[f]+"";/\./.test(c)&&(/9{7,}$/.test(c)?(c=c.replace(/9{7,}$/,""),u[f]=+(c.substring(0,c.length-1)+(+c[c.length-1]+1))):/0{7,}\d$/.test(c)&&(u[f]=+c.replace(/0{7,}\d$/,"")))}return u}(a||0,e||0,5);"xAxis"===this.__option.category?(i.coordinate.xAxis.data=t.category,i.coordinate.yAxis.data=f,_=this.__option.width,d=-1*this.__option.height):(i.coordinate.xAxis.data=f,i.coordinate.yAxis.data=t.category,_=this.__option.height,d=this.__option.width);var c=[],v=_/t.category.length,p=.9*v,g=.05*v;if(t.data)for(var x=0;x<t.data.length;x++)c.push([g+v*x,p]);else{var m=p/t.value.length,y=.9*m,b=.05*m;for(x=0;x<t.value[0].data.length;x++){c[x]=[];for(var w=0;w<t.value.length;w++)c[x].push([g+v*x+m*w+b,y])}}var A=d/(f[f.length-1]-f[0]),k=function(t){return A*(t-f[0])};if("xAxis"===this.__option.category)if(t.data){var B=[];for(x=0;x<t.data.length;x++)B.push({x:this.__option.x+c[x][0],y:this.__option.y,width:c[x][1],height:k(t.data[x]),value:t.data[x]});i.node.push({bar:B})}else for(w=0;w<t.value.length;w++){for(B=[],x=0;x<t.value[w].data.length;x++)B.push({x:this.__option.x+c[x][w][0],y:this.__option.y,width:c[x][w][1],height:k(t.value[w].data[x]),value:t.value[w].data[x]});i.node.push({name:t.value[w].name,bar:B})}else if(t.data){for(B=[],x=0;x<t.data.length;x++)B.push({x:this.__option.x,y:this.__option.y-this.__option.height+c[x][0],width:k(t.data[x]),height:c[x][1],value:t.data[x]});i.node.push({bar:B})}else for(w=0;w<t.value.length;w++){for(B=[],x=0;x<t.value[w].data.length;x++)B.push({x:this.__option.x,y:this.__option.y-this.__option.height+c[x][w][0],width:k(t.value[w].data[x]),height:c[x][w][1],value:t.value[w].data[x]});i.node.push({name:t.value[w].name,bar:B})}return i},e.prototype.bind=function(t,i){return this.__rback=i,this.__oralBar=t,this.__preBar=this.use(this.__oralBar),this.__rback(this.__preBar),this},e.prototype.unbind=function(){return this.__rback=function(){return null},this.__oralBar=null,this.__preBar=null,this},e.prototype.doUpdate=function(){var t=this,e=this.use(this.__oralBar),n=JSON.parse(JSON.stringify(e));return function(t,e,n){arguments.length<2&&(e=400),arguments.length<3&&(n=function(){});var r={timer:function(t,i,e){if(!t)throw new Error("Tick is required!");var n=(new Date).valueOf()+"_"+(1e3*Math.random()).toFixed(0);return a.push({id:n,createTime:new Date,tick:t,duration:i,callback:e}),r.start(),n},start:function(){if(!i)try{i=globalThis&&globalThis.requestAnimationFrame?globalThis.requestAnimationFrame((function t(){r.tick(),i&&(i=globalThis.requestAnimationFrame(t))})):setInterval(r.tick,13)}catch(t){i=setInterval(r.tick,13)}},tick:function(){var t,i,e,n,o,h,u,l=a;for((a=[]).length=0,i=0;i<l.length;i++)t=(o=l[i]).createTime,e=o.tick,h=o.duration,n=o.callback,e(u=(u=(+(new Date).valueOf()-t.valueOf())/h)>1?1:u),u<1&&o.id?a.push(o):n(u);a.length<=0&&r.stop()},stop:function(){if(i){try{globalThis&&globalThis.requestAnimationFrame?globalThis.cancelAnimationFrame(i):clearInterval(i)}catch(t){clearInterval(i)}i=null}}},o=r.timer((function(i){t(i)}),e,n)}((function(i){t.__preBar||t.__rback(n)}),this.__option.duration,(function(){t.__preBar=e,t.__rback(t.__preBar)})),this},e}();export{e as default};
1
+ function t(t,i){for(var a in t)i[a]=t[a];return i}let i,a=[];var e=function(){function e(i){void 0===i&&(i={}),this.name="BarLayout",this.__option={x:50,y:350,width:400,height:300,category:"xAxis",duration:200},this.__config=t(i,{})}return e.prototype.setOption=function(i){return t(i,this.__option),this},e.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:[]},a=void 0,e=void 0;if(t.data)for(var n=0,r=t.data;n<r.length;n++){var o=r[n];(void 0===a||o>a)&&(a=o),(void 0===e||o<e)&&(e=o)}else{if(!t.value)throw new Error("No data leads to parsing errors");for(var h=0,l=t.value;h<l.length;h++)for(var u=0,s=l[h].data;u<s.length;u++){o=s[u];(void 0===a||o>a)&&(a=o),(void 0===e||o<e)&&(e=o)}}var _,d,f=function(t,i,a,e){if(t<i){var n=i;i=t,t=n}else if(t==i)return[t];var r=function(t){for(var i=t<100&&t>-100?10:.1,a=-1,e=t;10==i?e>=-100&&e<=100:e<=-100||e>=100;)a+=1,e*=i;if(10==i)return Math.pow(10,a);for(var n="0.",r=1;r<a;r++)n+="0";return+(n+"1")}(t-i),o=Math.ceil((t-i)*r/a),h=function(a){var e=({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}[o+a]||o+a)/r,n=Math.floor(i/e)*e,h=[];h.push(n);for(var l=1;h[h.length-1]<t;l++)h.push(n+e*l);return h},l=h(0),u=function(){for(var t=[],a=l[l.length-1]-(null==e?void 0:e.max),n=0;n<l.length;n++)n+1<l.length&&l[n+1]-a<i||t.push(l[n]-a);return t},s=function(){for(var i=[],a=l[0]-(null==e?void 0:e.min),n=0;n<l.length&&(i[n]=l[n]-a,!(t<=i[n]));n++);return i};if(e){if("max"in e&&"min"in e&&e.max>=t&&e.min<=i){var _=function(){if(l[0]>=e.min&&l[l.length-1]<=e.max)return!0;var t=u();if(t[0]>=e.min&&t[t.length-1]<=e.max)return l=t,!0;var i=s();return i[0]>=e.min&&i[t.length-1]<=e.max?(l=i,!0):void 0};if(_())return l;for(var d=1;d<100;d++){if(l=h(d),_())return l;if(l=h(-d),_())return l}}"max"in e&&e.max>=t?e.max<l[l.length-1]&&(l=u()):"min"in e&&e.min<=i&&e.min>l[0]&&(l=s())}for(var f=0;f<l.length;f++){var c=l[f]+"";/\./.test(c)&&(/9{7,}$/.test(c)?(c=c.replace(/9{7,}$/,""),l[f]=+(c.substring(0,c.length-1)+(+c[c.length-1]+1))):/0{7,}\d$/.test(c)&&(l[f]=+c.replace(/0{7,}\d$/,"")))}return l}(a||0,e||0,5);"xAxis"===this.__option.category?(i.coordinate.xAxis.data=t.category,i.coordinate.yAxis.data=f,_=this.__option.width,d=-1*this.__option.height):(i.coordinate.xAxis.data=f,i.coordinate.yAxis.data=t.category,_=this.__option.height,d=this.__option.width);var c=[],p=_/t.category.length,v=.9*p,g=.05*p;if(t.data)for(var x=0;x<t.data.length;x++)c.push([g+p*x,v]);else{var m=v/t.value.length,y=.9*m,b=.05*m;for(x=0;x<t.value[0].data.length;x++){c[x]=[];for(var w=0;w<t.value.length;w++)c[x].push([g+p*x+m*w+b,y])}}var A=d/(f[f.length-1]-f[0]),k=function(t){return A*(t-f[0])};if("xAxis"===this.__option.category)if(t.data){var B=[];for(x=0;x<t.data.length;x++)B.push({x:this.__option.x+c[x][0],y:this.__option.y,width:c[x][1],height:k(t.data[x]),value:t.data[x]});i.node.push({bar:B})}else for(w=0;w<t.value.length;w++){for(B=[],x=0;x<t.value[w].data.length;x++)B.push({x:this.__option.x+c[x][w][0],y:this.__option.y,width:c[x][w][1],height:k(t.value[w].data[x]),value:t.value[w].data[x]});i.node.push({name:t.value[w].name,bar:B})}else if(t.data){for(B=[],x=0;x<t.data.length;x++)B.push({x:this.__option.x,y:this.__option.y-this.__option.height+c[x][0],width:k(t.data[x]),height:c[x][1],value:t.data[x]});i.node.push({bar:B})}else for(w=0;w<t.value.length;w++){for(B=[],x=0;x<t.value[w].data.length;x++)B.push({x:this.__option.x,y:this.__option.y-this.__option.height+c[x][w][0],width:k(t.value[w].data[x]),height:c[x][w][1],value:t.value[w].data[x]});i.node.push({name:t.value[w].name,bar:B})}return i},e.prototype.bind=function(t,i){return this.__rback=i,this.__oralBar=t,this.__preBar=this.use(this.__oralBar),this.__rback(this.__preBar),this},e.prototype.unbind=function(){return this.__rback=function(){return null},this.__oralBar=null,this.__preBar=null,this},e.prototype.doUpdate=function(){var t=this,e=this.use(this.__oralBar),n=JSON.parse(JSON.stringify(e));return function(t,e,n){arguments.length<2&&(e=400),arguments.length<3&&(n=function(){});let r={timer:function(t,i,e){if(!t)throw new Error("Tick is required!");let n=(new Date).valueOf()+"_"+(1e3*Math.random()).toFixed(0);return a.push({id:n,createTime:new Date,tick:t,duration:i,callback:e}),r.start(),n},start:function(){if(!i)try{i=globalThis&&globalThis.requestAnimationFrame?globalThis.requestAnimationFrame((function t(){r.tick(),i&&(i=globalThis.requestAnimationFrame(t))})):setInterval(r.tick,13)}catch(t){i=setInterval(r.tick,13)}},tick:function(){let t,i,e,n,o,h,l,u=a;for(a=[],a.length=0,i=0;i<u.length;i++)o=u[i],t=o.createTime,e=o.tick,h=o.duration,n=o.callback,l=(+(new Date).valueOf()-t.valueOf())/h,l=l>1?1:l,e(l),l<1&&o.id?a.push(o):n(l);a.length<=0&&r.stop()},stop:function(){if(i){try{globalThis&&globalThis.requestAnimationFrame?globalThis.cancelAnimationFrame(i):clearInterval(i)}catch(t){clearInterval(i)}i=null}}},o=r.timer((function(i){t(i)}),e,n)}((function(i){t.__preBar||t.__rback(n)}),this.__option.duration,(function(){t.__preBar=e,t.__rback(t.__preBar)})),this},e}();export{e as default};
@@ -14,11 +14,11 @@ function rotate (cx, cy, deg, x, y) {
14
14
  }
15
15
 
16
16
  //当前正在运动的动画的tick函数堆栈
17
- var $timers = [];
17
+ let $timers = [];
18
18
  //唯一定时器的定时间隔
19
- var $interval = 13;
19
+ let $interval = 13;
20
20
  //定时器ID
21
- var $timerId;
21
+ let $timerId;
22
22
 
23
23
  /**
24
24
  * 动画轮播
@@ -32,13 +32,13 @@ function animation(doback, duration, callback) {
32
32
  if (arguments.length < 2) duration = 400;
33
33
  if (arguments.length < 3) callback = function () { };
34
34
 
35
- var clock = {
35
+ let clock = {
36
36
  //把tick函数推入堆栈
37
37
  "timer": function (tick, duration, callback) {
38
38
  if (!tick) {
39
39
  throw new Error('Tick is required!');
40
40
  }
41
- var id = new Date().valueOf() + "_" + (Math.random() * 1000).toFixed(0);
41
+ let id = new Date().valueOf() + "_" + (Math.random() * 1000).toFixed(0);
42
42
  $timers.push({
43
43
  "id": id,
44
44
  "createTime": new Date(),
@@ -70,7 +70,7 @@ function animation(doback, duration, callback) {
70
70
 
71
71
  //被定时器调用,遍历timers堆栈
72
72
  "tick": function () {
73
- var createTime, flag, tick, callback, timer, duration, passTime, timers = $timers;
73
+ let createTime, flag, tick, callback, timer, duration, passTime, timers = $timers;
74
74
 
75
75
  $timers = [];
76
76
  $timers.length = 0;
@@ -113,7 +113,7 @@ function animation(doback, duration, callback) {
113
113
  }
114
114
  };
115
115
 
116
- var id = clock.timer(function (deep) {
116
+ let id = clock.timer(function (deep) {
117
117
  //其中deep为0-1,表示改变的程度
118
118
  doback(deep);
119
119
  }, duration, callback);
@@ -122,7 +122,7 @@ function animation(doback, duration, callback) {
122
122
  // 一个函数
123
123
  // 用于在动画结束前结束动画
124
124
  stop: function () {
125
- var i;
125
+ let i;
126
126
  for (i in $timers) {
127
127
  if ($timers[i].id == id) {
128
128
  $timers[i].id = void 0;
@@ -1 +1 @@
1
- function t(t,i){for(var e in t)i[e]=t[e];return i}function i(t,i,e,n,r){var o=Math.cos(e),a=Math.sin(e);return[(n-t)*o-(r-i)*a+t,(n-t)*a+(r-i)*o+i]}var e,n=[];var r=function(){function r(i){void 0===i&&(i={}),this.name="PieLayout",this.__option={cx:200,cy:200,radius:[50,100],duration:200},this.__hoverIndex=-1,this.__config=t(i,{name:function(t,i){return t.name},value:function(t,i){return t.value}})}return r.prototype.setOption=function(i){return t(i,this.__option),this},r.prototype.use=function(t,e){void 0===e&&(e=-1);for(var n={count:t.length,cx:this.__option.cx,cy:this.__option.cy,radius:this.__option.radius,hoverIndex:e,node:[]},r=0,o=[],a=[],s=0;s<t.length;s++)o[s]=this.__config.name(t[s],t),a[s]=this.__config.value(t[s],t),r+=a[s];var u,_=-.5*Math.PI;for(s=0;s<t.length;s++){u=a[s]/r*Math.PI*2;var h=[this.__option.radius[0]*(1+(this.__option.radius[0]>0&&e===s?-.1:0)),this.__option.radius[1]*(1+(e===s?.05:0))],c=_+.5*u,l=Math.max(this.__option.radius[0],this.__option.radius[1]),d=i(n.cx,n.cy,c,n.cx+l,n.cy),p=i(n.cx,n.cy,c,n.cx+l+15,n.cy),f=d[0]>n.cx?1:-1,v=[p[0]+20*f,p[1]],g=[p[0]+25*f,p[1]];n.node[s]={value:a[s],name:o[s],beginDeg:_,deg:u,isHover:e===s,radius:h,label:{line:[d,p,v],position:g,align:-1===f?"right":"left"}},_+=u}return n},r.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},r.prototype.unbind=function(){return this.__rback=function(){return null},this.__oralPie=null,this.__prePie=null,this.__hoverIndex=-1,this},r.prototype.setHover=function(t){return this.__prePie&&this.__hoverIndex!==t?(this.__hoverIndex=t,this.doUpdate(),this):this},r.prototype.doUpdate=function(){var t=this,i=this.use(this.__oralPie,this.__hoverIndex),r=JSON.parse(JSON.stringify(i));return function(t,i,r){arguments.length<2&&(i=400),arguments.length<3&&(r=function(){});var o={timer:function(t,i,e){if(!t)throw new Error("Tick is required!");var r=(new Date).valueOf()+"_"+(1e3*Math.random()).toFixed(0);return n.push({id:r,createTime:new Date,tick:t,duration:i,callback:e}),o.start(),r},start:function(){if(!e)try{e=globalThis&&globalThis.requestAnimationFrame?globalThis.requestAnimationFrame((function t(){o.tick(),e&&(e=globalThis.requestAnimationFrame(t))})):setInterval(o.tick,13)}catch(t){e=setInterval(o.tick,13)}},tick:function(){var t,i,e,r,a,s,u,_=n;for((n=[]).length=0,i=0;i<_.length;i++)t=(a=_[i]).createTime,e=a.tick,s=a.duration,r=a.callback,e(u=(u=(+(new Date).valueOf()-t.valueOf())/s)>1?1:u),u<1&&a.id?n.push(a):r(u);n.length<=0&&o.stop()},stop:function(){if(e){try{globalThis&&globalThis.requestAnimationFrame?globalThis.cancelAnimationFrame(e):clearInterval(e)}catch(t){clearInterval(e)}e=null}}},a=o.timer((function(i){t(i)}),i,r)}((function(e){if(t.__prePie)for(var n=0;n<r.count;n++)r.node[n].radius[0]=t.__prePie.node[n].radius[0]+(i.node[n].radius[0]-t.__prePie.node[n].radius[0])*e,r.node[n].radius[1]=t.__prePie.node[n].radius[1]+(i.node[n].radius[1]-t.__prePie.node[n].radius[1])*e;t.__rback(r)}),this.__option.duration,(function(){t.__prePie=i,t.__rback(t.__prePie)})),this},r}();export{r as default};
1
+ function t(t,i){for(var e in t)i[e]=t[e];return i}function i(t,i,e,n,r){var o=Math.cos(e),a=Math.sin(e);return[(n-t)*o-(r-i)*a+t,(n-t)*a+(r-i)*o+i]}let e,n=[];var r=function(){function r(i){void 0===i&&(i={}),this.name="PieLayout",this.__option={cx:200,cy:200,radius:[50,100],duration:200},this.__hoverIndex=-1,this.__config=t(i,{name:function(t,i){return t.name},value:function(t,i){return t.value}})}return r.prototype.setOption=function(i){return t(i,this.__option),this},r.prototype.use=function(t,e){void 0===e&&(e=-1);for(var n={count:t.length,cx:this.__option.cx,cy:this.__option.cy,radius:this.__option.radius,hoverIndex:e,node:[]},r=0,o=[],a=[],s=0;s<t.length;s++)o[s]=this.__config.name(t[s],t),a[s]=this.__config.value(t[s],t),r+=a[s];var u,_=-.5*Math.PI;for(s=0;s<t.length;s++){u=a[s]/r*Math.PI*2;var h=[this.__option.radius[0]*(1+(this.__option.radius[0]>0&&e===s?-.1:0)),this.__option.radius[1]*(1+(e===s?.05:0))],c=_+.5*u,l=Math.max(this.__option.radius[0],this.__option.radius[1]),d=i(n.cx,n.cy,c,n.cx+l,n.cy),p=i(n.cx,n.cy,c,n.cx+l+15,n.cy),f=d[0]>n.cx?1:-1,v=[p[0]+20*f,p[1]],g=[p[0]+25*f,p[1]];n.node[s]={value:a[s],name:o[s],beginDeg:_,deg:u,isHover:e===s,radius:h,label:{line:[d,p,v],position:g,align:-1===f?"right":"left"}},_+=u}return n},r.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},r.prototype.unbind=function(){return this.__rback=function(){return null},this.__oralPie=null,this.__prePie=null,this.__hoverIndex=-1,this},r.prototype.setHover=function(t){return this.__prePie&&this.__hoverIndex!==t?(this.__hoverIndex=t,this.doUpdate(),this):this},r.prototype.doUpdate=function(){var t=this,i=this.use(this.__oralPie,this.__hoverIndex),r=JSON.parse(JSON.stringify(i));return function(t,i,r){arguments.length<2&&(i=400),arguments.length<3&&(r=function(){});let o={timer:function(t,i,e){if(!t)throw new Error("Tick is required!");let r=(new Date).valueOf()+"_"+(1e3*Math.random()).toFixed(0);return n.push({id:r,createTime:new Date,tick:t,duration:i,callback:e}),o.start(),r},start:function(){if(!e)try{e=globalThis&&globalThis.requestAnimationFrame?globalThis.requestAnimationFrame((function t(){o.tick(),e&&(e=globalThis.requestAnimationFrame(t))})):setInterval(o.tick,13)}catch(t){e=setInterval(o.tick,13)}},tick:function(){let t,i,e,r,a,s,u,_=n;for(n=[],n.length=0,i=0;i<_.length;i++)a=_[i],t=a.createTime,e=a.tick,s=a.duration,r=a.callback,u=(+(new Date).valueOf()-t.valueOf())/s,u=u>1?1:u,e(u),u<1&&a.id?n.push(a):r(u);n.length<=0&&o.stop()},stop:function(){if(e){try{globalThis&&globalThis.requestAnimationFrame?globalThis.cancelAnimationFrame(e):clearInterval(e)}catch(t){clearInterval(e)}e=null}}},a=o.timer((function(i){t(i)}),i,r)}((function(e){if(t.__prePie)for(var n=0;n<r.count;n++)r.node[n].radius[0]=t.__prePie.node[n].radius[0]+(i.node[n].radius[0]-t.__prePie.node[n].radius[0])*e,r.node[n].radius[1]=t.__prePie.node[n].radius[1]+(i.node[n].radius[1]-t.__prePie.node[n].radius[1])*e;t.__rback(r)}),this.__option.duration,(function(){t.__prePie=i,t.__rback(t.__prePie)})),this},r}();export{r as default};
@@ -184,11 +184,11 @@ var Tree = (function () {
184
184
  }());
185
185
 
186
186
  //当前正在运动的动画的tick函数堆栈
187
- var $timers = [];
187
+ let $timers = [];
188
188
  //唯一定时器的定时间隔
189
- var $interval = 13;
189
+ let $interval = 13;
190
190
  //定时器ID
191
- var $timerId;
191
+ let $timerId;
192
192
 
193
193
  /**
194
194
  * 动画轮播
@@ -202,13 +202,13 @@ function animation(doback, duration, callback) {
202
202
  if (arguments.length < 2) duration = 400;
203
203
  if (arguments.length < 3) callback = function () { };
204
204
 
205
- var clock = {
205
+ let clock = {
206
206
  //把tick函数推入堆栈
207
207
  "timer": function (tick, duration, callback) {
208
208
  if (!tick) {
209
209
  throw new Error('Tick is required!');
210
210
  }
211
- var id = new Date().valueOf() + "_" + (Math.random() * 1000).toFixed(0);
211
+ let id = new Date().valueOf() + "_" + (Math.random() * 1000).toFixed(0);
212
212
  $timers.push({
213
213
  "id": id,
214
214
  "createTime": new Date(),
@@ -240,7 +240,7 @@ function animation(doback, duration, callback) {
240
240
 
241
241
  //被定时器调用,遍历timers堆栈
242
242
  "tick": function () {
243
- var createTime, flag, tick, callback, timer, duration, passTime, timers = $timers;
243
+ let createTime, flag, tick, callback, timer, duration, passTime, timers = $timers;
244
244
 
245
245
  $timers = [];
246
246
  $timers.length = 0;
@@ -283,7 +283,7 @@ function animation(doback, duration, callback) {
283
283
  }
284
284
  };
285
285
 
286
- var id = clock.timer(function (deep) {
286
+ let id = clock.timer(function (deep) {
287
287
  //其中deep为0-1,表示改变的程度
288
288
  doback(deep);
289
289
  }, duration, callback);
@@ -292,7 +292,7 @@ function animation(doback, duration, callback) {
292
292
  // 一个函数
293
293
  // 用于在动画结束前结束动画
294
294
  stop: function () {
295
- var i;
295
+ let i;
296
296
  for (i in $timers) {
297
297
  if ($timers[i].id == id) {
298
298
  $timers[i].id = void 0;
@@ -1 +1 @@
1
- var t=function(e,o){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o])},t(e,o)};"function"==typeof SuppressedError&&SuppressedError;function e(t,e){for(var o in t)e[o]=t[o];return e}var o,n=function(){function t(t){void 0===t&&(t={}),this.name="Tree",this.__config=e(t,{root:function(t){return t},children:function(t){return t.children},id:function(t){return t.name}})}return t.prototype.use=function(t,e){return void 0===e&&(e={}),function(t,e,o){void 0===o&&(o={});var n=function(t,e){var o,n,i={},r=e.root(t);o=n=e.id(r),i[o]={data:r,pid:null,id:o,isOpen:!0,show:!0,deg:0,children:[]};var p=1;return function n(r,s){var h=e.children(r,t);p+=h?h.length:0;for(var d=0;h&&d<h.length;d++)o=e.id(h[d]),i[s].children.push(o),i[o]={data:h[d],pid:s,id:o,isOpen:!0,show:!0,deg:0,children:[]},n(h[d],o)}(r,o),{rid:n,value:i,num:p}}(t,e),i=n.value,r=n.rid;if(1==n.num)return i[r].left=.5,i[r].top=.5,i[r].show=!0,{deep:1,node:i,root:r,size:1};var p=[],s=0,h=0;for(var d in o[r]?(i[r].left=.5,i[r].top=.5,i[r].show=!0,s=1):function t(e,n){n>h&&(h=n);var r=0;if(!o[e.id])for(r=0;r<e.children.length;r++)t(i[e.children[r]],n+1);if(i[e.id].left=n+.5,0==r?(null==p[n]&&(p[n]=-.5),null==p[n-1]&&(p[n-1]=-.5),i[e.id].top=p[n]+1,p[n]+1+.5*(i[e.pid].children.length-1)-1<p[n-1]&&(i[e.id].top=p[n-1]+1-.5*(i[e.pid].children.length-1))):i[e.id].top=.5*(i[e.children[0]].top+i[e.children[r-1]].top),i[e.id].top<=p[n])var d=p[n]+1-i[e.id].top((function t(e,o){i[e].top+=d,p[o]<i[e].top&&(p[o]=i[e].top);for(var n=0;n<i[e].children.length;n++)t(i[e].children[n],o+1)}))(e.id,n);p[n]=i[e.id].top,i[e.id].top+.5>s&&(s=i[e.id].top+.5)}(i[r],0),o)o[d]&&(i[d].isOpen=!1,function t(e,o,n){for(var r=0;r<i[e].children.length;r++)i[i[e].children[r]].left=o,i[i[e].children[r]].top=n,i[i[e].children[r]].show=!1,t(i[e].children[r],o,n)}(d,i[d].left,i[d].top));return{node:i,root:r,size:s,deep:h+1}}(t,this.__config,e)},t}(),i=[];function r(t,e,o,n,i){var r=Math.cos(o),p=Math.sin(o);return[(n-t)*r-(i-e)*p+t,(n-t)*p+(i-e)*r+e]}var p=function(n){function p(){var t=null!==n&&n.apply(this,arguments)||this;return t.name="TreeLayout",t.__option={offsetX:0,offsetY:0,duration:500,type:"plain",direction:"LR",x:100,y:100,width:100,height:100,radius:100},t.__noOpens={},t}return function(e,o){if("function"!=typeof o&&null!==o)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");function n(){this.constructor=e}t(e,o),e.prototype=null===o?Object.create(o):(n.prototype=o.prototype,new n)}(p,n),p.prototype.setOption=function(t){return e(t,this.__option),this},p.prototype.use=function(t,e){void 0===e&&(e={});var o=n.prototype.use.call(this,t,e);if(0!=this.__option.offsetX||0!=this.__option.offsetY)for(var i in o.node)if(!o.node[i].show){var p=0,s=i;do{s=o.node[s].pid,p++}while(!o.node[s].show);o.node[i].left+=this.__option.offsetX*p,o.node[i].top+=this.__option.offsetY*p}if("rect"==this.__option.type){if("LR"==this.__option.direction||"RL"==this.__option.direction){var h=this.__option.height/o.size,d=this.__option.width/(o.deep-1),_=this.__option.y-.5*this.__option.height,l="LR"==this.__option.direction?1:-1;for(var i in o.node)1==o.deep?(o.node[i].left=this.__option.x+.5*this.__option.width*l,o.node[i].top=this.__option.y):(o.node[i].left=this.__option.x+(o.node[i].left-.5)*d*l,o.node[i].top=o.node[i].top*h+_)}else if("TB"==this.__option.direction||"BT"==this.__option.direction){h=this.__option.width/o.size,d=this.__option.height/(o.deep-1),_=this.__option.x-.5*this.__option.width,l="TB"==this.__option.direction?1:-1;for(var i in o.node)if(o.node[i].deg="TB"==this.__option.direction?.5*Math.PI:-.5*Math.PI,1==o.deep)o.node[i].left=this.__option.x,o.node[i].top=this.__option.y+.5*this.__option.height*l;else{var a=o.node[i].left;o.node[i].left=o.node[i].top*h+_,o.node[i].top=this.__option.y+(a-.5)*d*l}}}else if("circle"==this.__option.type){var f=this.__option.x,c=this.__option.y,u=2*Math.PI/o.size,v=this.__option.radius/(o.deep-1);for(var i in o.node)if(.5==o.node[i].left)o.node[i].left=f,o.node[i].top=c;else{var T=r(f,c,u*o.node[i].top,f+(o.node[i].left-.5)*v,c);o.node[i].deg=u*o.node[i].top,o.node[i].left=T[0],o.node[i].top=T[1]}}return o},p.prototype.bind=function(t,e,o){return void 0===o&&(o={}),this.__rback=e,this.__oralTree=t,this.__noOpens=o,this.__preTree=this.use(this.__oralTree,this.__noOpens),this.__rback(this.__preTree),this},p.prototype.unbind=function(){return this.__rback=function(){return null},this.__oralTree=null,this.__preTree=null,this.__noOpens={},this},p.prototype.doUpdate=function(){var t=this,e=this.use(this.__oralTree,this.__noOpens),n=JSON.parse(JSON.stringify(e));return function(t,e,n){arguments.length<2&&(e=400),arguments.length<3&&(n=function(){});var r={timer:function(t,e,o){if(!t)throw new Error("Tick is required!");var n=(new Date).valueOf()+"_"+(1e3*Math.random()).toFixed(0);return i.push({id:n,createTime:new Date,tick:t,duration:e,callback:o}),r.start(),n},start:function(){if(!o)try{o=globalThis&&globalThis.requestAnimationFrame?globalThis.requestAnimationFrame((function t(){r.tick(),o&&(o=globalThis.requestAnimationFrame(t))})):setInterval(r.tick,13)}catch(t){o=setInterval(r.tick,13)}},tick:function(){var t,e,o,n,p,s,h,d=i;for((i=[]).length=0,e=0;e<d.length;e++)t=(p=d[e]).createTime,o=p.tick,s=p.duration,n=p.callback,o(h=(h=(+(new Date).valueOf()-t.valueOf())/s)>1?1:h),h<1&&p.id?i.push(p):n(h);i.length<=0&&r.stop()},stop:function(){if(o){try{globalThis&&globalThis.requestAnimationFrame?globalThis.cancelAnimationFrame(o):clearInterval(o)}catch(t){clearInterval(o)}o=null}}},p=r.timer((function(e){t(e)}),e,n)}((function(o){if(t.__preTree)for(var i in n.node)(e.node[i].show||t.__preTree.node[i].show)&&(n.node[i].show=!0,n.node[i].left=t.__preTree.node[i].left+(e.node[i].left-t.__preTree.node[i].left)*o,n.node[i].top=t.__preTree.node[i].top+(e.node[i].top-t.__preTree.node[i].top)*o);t.__rback(n)}),this.__option.duration,(function(){t.__preTree=e,t.__rback(t.__preTree)})),this},p.prototype.closeNode=function(t){return this.__preTree?(this.__noOpens[t]=!0,this.doUpdate(),this):this},p.prototype.openNode=function(t){return this.__preTree?(this.__noOpens[t]=!1,this.doUpdate(),this):this},p.prototype.toggleNode=function(t){return this.__preTree?(this.__noOpens[t]=!this.__noOpens[t],this.doUpdate(),this):this},p}(n);export{p as default};
1
+ var t=function(e,o){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o])},t(e,o)};"function"==typeof SuppressedError&&SuppressedError;function e(t,e){for(var o in t)e[o]=t[o];return e}var o=function(){function t(t){void 0===t&&(t={}),this.name="Tree",this.__config=e(t,{root:function(t){return t},children:function(t){return t.children},id:function(t){return t.name}})}return t.prototype.use=function(t,e){return void 0===e&&(e={}),function(t,e,o){void 0===o&&(o={});var n=function(t,e){var o,n,i={},r=e.root(t);o=n=e.id(r),i[o]={data:r,pid:null,id:o,isOpen:!0,show:!0,deg:0,children:[]};var p=1;return function n(r,s){var h=e.children(r,t);p+=h?h.length:0;for(var d=0;h&&d<h.length;d++)o=e.id(h[d]),i[s].children.push(o),i[o]={data:h[d],pid:s,id:o,isOpen:!0,show:!0,deg:0,children:[]},n(h[d],o)}(r,o),{rid:n,value:i,num:p}}(t,e),i=n.value,r=n.rid;if(1==n.num)return i[r].left=.5,i[r].top=.5,i[r].show=!0,{deep:1,node:i,root:r,size:1};var p=[],s=0,h=0;for(var d in o[r]?(i[r].left=.5,i[r].top=.5,i[r].show=!0,s=1):function t(e,n){n>h&&(h=n);var r=0;if(!o[e.id])for(r=0;r<e.children.length;r++)t(i[e.children[r]],n+1);if(i[e.id].left=n+.5,0==r?(null==p[n]&&(p[n]=-.5),null==p[n-1]&&(p[n-1]=-.5),i[e.id].top=p[n]+1,p[n]+1+.5*(i[e.pid].children.length-1)-1<p[n-1]&&(i[e.id].top=p[n-1]+1-.5*(i[e.pid].children.length-1))):i[e.id].top=.5*(i[e.children[0]].top+i[e.children[r-1]].top),i[e.id].top<=p[n])var d=p[n]+1-i[e.id].top((function t(e,o){i[e].top+=d,p[o]<i[e].top&&(p[o]=i[e].top);for(var n=0;n<i[e].children.length;n++)t(i[e].children[n],o+1)}))(e.id,n);p[n]=i[e.id].top,i[e.id].top+.5>s&&(s=i[e.id].top+.5)}(i[r],0),o)o[d]&&(i[d].isOpen=!1,function t(e,o,n){for(var r=0;r<i[e].children.length;r++)i[i[e].children[r]].left=o,i[i[e].children[r]].top=n,i[i[e].children[r]].show=!1,t(i[e].children[r],o,n)}(d,i[d].left,i[d].top));return{node:i,root:r,size:s,deep:h+1}}(t,this.__config,e)},t}();let n,i=[];function r(t,e,o,n,i){var r=Math.cos(o),p=Math.sin(o);return[(n-t)*r-(i-e)*p+t,(n-t)*p+(i-e)*r+e]}var p=function(o){function p(){var t=null!==o&&o.apply(this,arguments)||this;return t.name="TreeLayout",t.__option={offsetX:0,offsetY:0,duration:500,type:"plain",direction:"LR",x:100,y:100,width:100,height:100,radius:100},t.__noOpens={},t}return function(e,o){if("function"!=typeof o&&null!==o)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");function n(){this.constructor=e}t(e,o),e.prototype=null===o?Object.create(o):(n.prototype=o.prototype,new n)}(p,o),p.prototype.setOption=function(t){return e(t,this.__option),this},p.prototype.use=function(t,e){void 0===e&&(e={});var n=o.prototype.use.call(this,t,e);if(0!=this.__option.offsetX||0!=this.__option.offsetY)for(var i in n.node)if(!n.node[i].show){var p=0,s=i;do{s=n.node[s].pid,p++}while(!n.node[s].show);n.node[i].left+=this.__option.offsetX*p,n.node[i].top+=this.__option.offsetY*p}if("rect"==this.__option.type){if("LR"==this.__option.direction||"RL"==this.__option.direction){var h=this.__option.height/n.size,d=this.__option.width/(n.deep-1),_=this.__option.y-.5*this.__option.height,l="LR"==this.__option.direction?1:-1;for(var i in n.node)1==n.deep?(n.node[i].left=this.__option.x+.5*this.__option.width*l,n.node[i].top=this.__option.y):(n.node[i].left=this.__option.x+(n.node[i].left-.5)*d*l,n.node[i].top=n.node[i].top*h+_)}else if("TB"==this.__option.direction||"BT"==this.__option.direction){h=this.__option.width/n.size,d=this.__option.height/(n.deep-1),_=this.__option.x-.5*this.__option.width,l="TB"==this.__option.direction?1:-1;for(var i in n.node)if(n.node[i].deg="TB"==this.__option.direction?.5*Math.PI:-.5*Math.PI,1==n.deep)n.node[i].left=this.__option.x,n.node[i].top=this.__option.y+.5*this.__option.height*l;else{var a=n.node[i].left;n.node[i].left=n.node[i].top*h+_,n.node[i].top=this.__option.y+(a-.5)*d*l}}}else if("circle"==this.__option.type){var f=this.__option.x,c=this.__option.y,u=2*Math.PI/n.size,v=this.__option.radius/(n.deep-1);for(var i in n.node)if(.5==n.node[i].left)n.node[i].left=f,n.node[i].top=c;else{var T=r(f,c,u*n.node[i].top,f+(n.node[i].left-.5)*v,c);n.node[i].deg=u*n.node[i].top,n.node[i].left=T[0],n.node[i].top=T[1]}}return n},p.prototype.bind=function(t,e,o){return void 0===o&&(o={}),this.__rback=e,this.__oralTree=t,this.__noOpens=o,this.__preTree=this.use(this.__oralTree,this.__noOpens),this.__rback(this.__preTree),this},p.prototype.unbind=function(){return this.__rback=function(){return null},this.__oralTree=null,this.__preTree=null,this.__noOpens={},this},p.prototype.doUpdate=function(){var t=this,e=this.use(this.__oralTree,this.__noOpens),o=JSON.parse(JSON.stringify(e));return function(t,e,o){arguments.length<2&&(e=400),arguments.length<3&&(o=function(){});let r={timer:function(t,e,o){if(!t)throw new Error("Tick is required!");let n=(new Date).valueOf()+"_"+(1e3*Math.random()).toFixed(0);return i.push({id:n,createTime:new Date,tick:t,duration:e,callback:o}),r.start(),n},start:function(){if(!n)try{n=globalThis&&globalThis.requestAnimationFrame?globalThis.requestAnimationFrame((function t(){r.tick(),n&&(n=globalThis.requestAnimationFrame(t))})):setInterval(r.tick,13)}catch(t){n=setInterval(r.tick,13)}},tick:function(){let t,e,o,n,p,s,h,d=i;for(i=[],i.length=0,e=0;e<d.length;e++)p=d[e],t=p.createTime,o=p.tick,s=p.duration,n=p.callback,h=(+(new Date).valueOf()-t.valueOf())/s,h=h>1?1:h,o(h),h<1&&p.id?i.push(p):n(h);i.length<=0&&r.stop()},stop:function(){if(n){try{globalThis&&globalThis.requestAnimationFrame?globalThis.cancelAnimationFrame(n):clearInterval(n)}catch(t){clearInterval(n)}n=null}}},p=r.timer((function(e){t(e)}),e,o)}((function(n){if(t.__preTree)for(var i in o.node)(e.node[i].show||t.__preTree.node[i].show)&&(o.node[i].show=!0,o.node[i].left=t.__preTree.node[i].left+(e.node[i].left-t.__preTree.node[i].left)*n,o.node[i].top=t.__preTree.node[i].top+(e.node[i].top-t.__preTree.node[i].top)*n);t.__rback(o)}),this.__option.duration,(function(){t.__preTree=e,t.__rback(t.__preTree)})),this},p.prototype.closeNode=function(t){return this.__preTree?(this.__noOpens[t]=!0,this.doUpdate(),this):this},p.prototype.openNode=function(t){return this.__preTree?(this.__noOpens[t]=!1,this.doUpdate(),this):this},p.prototype.toggleNode=function(t){return this.__preTree?(this.__noOpens[t]=!this.__noOpens[t],this.doUpdate(),this):this},p}(o);export{p as default};
@@ -1,9 +1,9 @@
1
1
  //当前正在运动的动画的tick函数堆栈
2
- var $timers = [];
2
+ let $timers = [];
3
3
  //唯一定时器的定时间隔
4
- var $interval = 13;
4
+ let $interval = 13;
5
5
  //定时器ID
6
- var $timerId;
6
+ let $timerId;
7
7
 
8
8
  /**
9
9
  * 动画轮播
@@ -17,13 +17,13 @@ function animation(doback, duration, callback) {
17
17
  if (arguments.length < 2) duration = 400;
18
18
  if (arguments.length < 3) callback = function () { };
19
19
 
20
- var clock = {
20
+ let clock = {
21
21
  //把tick函数推入堆栈
22
22
  "timer": function (tick, duration, callback) {
23
23
  if (!tick) {
24
24
  throw new Error('Tick is required!');
25
25
  }
26
- var id = new Date().valueOf() + "_" + (Math.random() * 1000).toFixed(0);
26
+ let id = new Date().valueOf() + "_" + (Math.random() * 1000).toFixed(0);
27
27
  $timers.push({
28
28
  "id": id,
29
29
  "createTime": new Date(),
@@ -55,7 +55,7 @@ function animation(doback, duration, callback) {
55
55
 
56
56
  //被定时器调用,遍历timers堆栈
57
57
  "tick": function () {
58
- var createTime, flag, tick, callback, timer, duration, passTime, timers = $timers;
58
+ let createTime, flag, tick, callback, timer, duration, passTime, timers = $timers;
59
59
 
60
60
  $timers = [];
61
61
  $timers.length = 0;
@@ -98,7 +98,7 @@ function animation(doback, duration, callback) {
98
98
  }
99
99
  };
100
100
 
101
- var id = clock.timer(function (deep) {
101
+ let id = clock.timer(function (deep) {
102
102
  //其中deep为0-1,表示改变的程度
103
103
  doback(deep);
104
104
  }, duration, callback);
@@ -107,7 +107,7 @@ function animation(doback, duration, callback) {
107
107
  // 一个函数
108
108
  // 用于在动画结束前结束动画
109
109
  stop: function () {
110
- var i;
110
+ let i;
111
111
  for (i in $timers) {
112
112
  if ($timers[i].id == id) {
113
113
  $timers[i].id = void 0;
@@ -1 +1 @@
1
- var t,e=[],i=13;function n(n,a,r){return function(n,a,r){arguments.length<2&&(a=400),arguments.length<3&&(r=function(){});var o={timer:function(t,i,n){if(!t)throw new Error("Tick is required!");var a=(new Date).valueOf()+"_"+(1e3*Math.random()).toFixed(0);return e.push({id:a,createTime:new Date,tick:t,duration:i,callback:n}),o.start(),a},start:function(){if(!t)try{t=globalThis&&globalThis.requestAnimationFrame?globalThis.requestAnimationFrame((function e(){o.tick(),t&&(t=globalThis.requestAnimationFrame(e))})):setInterval(o.tick,i)}catch(e){t=setInterval(o.tick,i)}},tick:function(){var t,i,n,a,r,l,c,u=e;for((e=[]).length=0,i=0;i<u.length;i++)t=(r=u[i]).createTime,n=r.tick,l=r.duration,a=r.callback,n(c=(c=(+(new Date).valueOf()-t.valueOf())/l)>1?1:c),c<1&&r.id?e.push(r):a(c);e.length<=0&&o.stop()},stop:function(){if(t){try{globalThis&&globalThis.requestAnimationFrame?globalThis.cancelAnimationFrame(t):clearInterval(t)}catch(e){clearInterval(t)}t=null}}},l=o.timer((function(t){n(t)}),a,r);return{stop:function(){var t;for(t in e)if(e[t].id==l)return void(e[t].id=void 0)}}}(n,a||400,r||function(){}).stop}export{n as default};
1
+ let t,e=[],i=13;function n(n,a,r){return function(n,a,r){arguments.length<2&&(a=400),arguments.length<3&&(r=function(){});let l={timer:function(t,i,n){if(!t)throw new Error("Tick is required!");let a=(new Date).valueOf()+"_"+(1e3*Math.random()).toFixed(0);return e.push({id:a,createTime:new Date,tick:t,duration:i,callback:n}),l.start(),a},start:function(){if(!t)try{t=globalThis&&globalThis.requestAnimationFrame?globalThis.requestAnimationFrame((function e(){l.tick(),t&&(t=globalThis.requestAnimationFrame(e))})):setInterval(l.tick,i)}catch(e){t=setInterval(l.tick,i)}},tick:function(){let t,i,n,a,r,o,c,u=e;for(e=[],e.length=0,i=0;i<u.length;i++)r=u[i],t=r.createTime,n=r.tick,o=r.duration,a=r.callback,c=(+(new Date).valueOf()-t.valueOf())/o,c=c>1?1:c,n(c),c<1&&r.id?e.push(r):a(c);e.length<=0&&l.stop()},stop:function(){if(t){try{globalThis&&globalThis.requestAnimationFrame?globalThis.cancelAnimationFrame(t):clearInterval(t)}catch(e){clearInterval(t)}t=null}}},o=l.timer((function(t){n(t)}),a,r);return{stop:function(){let t;for(t in e)if(e[t].id==o)return void(e[t].id=void 0)}}}(n,a||400,r||function(){}).stop}export{n as default};
package/lib/index.umd.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * VISLite JavaScript Library v1.9.1
2
+ * VISLite JavaScript Library v1.10.0
3
3
  * git+https://github.com/oi-contrib/VISLite.git
4
4
  */
5
5
  (function (global, factory) {
@@ -294,11 +294,11 @@
294
294
  }
295
295
 
296
296
  //当前正在运动的动画的tick函数堆栈
297
- var $timers = [];
297
+ let $timers = [];
298
298
  //唯一定时器的定时间隔
299
- var $interval = 13;
299
+ let $interval = 13;
300
300
  //定时器ID
301
- var $timerId;
301
+ let $timerId;
302
302
 
303
303
  /**
304
304
  * 动画轮播
@@ -312,13 +312,13 @@
312
312
  if (arguments.length < 2) duration = 400;
313
313
  if (arguments.length < 3) callback = function () { };
314
314
 
315
- var clock = {
315
+ let clock = {
316
316
  //把tick函数推入堆栈
317
317
  "timer": function (tick, duration, callback) {
318
318
  if (!tick) {
319
319
  throw new Error('Tick is required!');
320
320
  }
321
- var id = new Date().valueOf() + "_" + (Math.random() * 1000).toFixed(0);
321
+ let id = new Date().valueOf() + "_" + (Math.random() * 1000).toFixed(0);
322
322
  $timers.push({
323
323
  "id": id,
324
324
  "createTime": new Date(),
@@ -350,7 +350,7 @@
350
350
 
351
351
  //被定时器调用,遍历timers堆栈
352
352
  "tick": function () {
353
- var createTime, flag, tick, callback, timer, duration, passTime, timers = $timers;
353
+ let createTime, flag, tick, callback, timer, duration, passTime, timers = $timers;
354
354
 
355
355
  $timers = [];
356
356
  $timers.length = 0;
@@ -393,7 +393,7 @@
393
393
  }
394
394
  };
395
395
 
396
- var id = clock.timer(function (deep) {
396
+ let id = clock.timer(function (deep) {
397
397
  //其中deep为0-1,表示改变的程度
398
398
  doback(deep);
399
399
  }, duration, callback);
@@ -402,7 +402,7 @@
402
402
  // 一个函数
403
403
  // 用于在动画结束前结束动画
404
404
  stop: function () {
405
- var i;
405
+ let i;
406
406
  for (i in $timers) {
407
407
  if ($timers[i].id == id) {
408
408
  $timers[i].id = void 0;
@@ -2288,7 +2288,7 @@
2288
2288
  function throttle(callback, _option) {
2289
2289
 
2290
2290
  // 缺省值
2291
- var option = {
2291
+ let option = {
2292
2292
  time: 200,
2293
2293
  keep: false,
2294
2294
  opportunity: "end"
@@ -2296,12 +2296,12 @@
2296
2296
 
2297
2297
  // 校对
2298
2298
  if (_option) {
2299
- for (var key in _option) {
2299
+ for (let key in _option) {
2300
2300
  option[key] = _option[key];
2301
2301
  }
2302
2302
  }
2303
2303
 
2304
- var hadInterval = false, hadClick = false, oneClick = false, arg;
2304
+ let hadInterval = false, hadClick = false, oneClick = false, arg;
2305
2305
  return function () {
2306
2306
  const _this = this;
2307
2307
  arg = arguments;
@@ -2313,7 +2313,7 @@
2313
2313
  }
2314
2314
  hadInterval = true;
2315
2315
 
2316
- var interval = setInterval(() => {
2316
+ let interval = setInterval(() => {
2317
2317
  if (hadClick) {
2318
2318
  if (!option.keep) {
2319
2319
  callback.apply(_this, arg);