vislite 0.5.2-alpha.1 → 0.5.2

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.
Files changed (191) hide show
  1. package/.editorconfig +18 -18
  2. package/AUTHORS.txt +6 -6
  3. package/CHANGELOG +143 -137
  4. package/LICENSE +20 -20
  5. package/README.md +69 -69
  6. package/lib/Buffer/index.umd.js +36 -36
  7. package/lib/Buffer/index.umd.min.js +2 -2
  8. package/lib/Canvas/index.umd.js +650 -650
  9. package/lib/Canvas/index.umd.min.js +2 -2
  10. package/lib/Cardinal/index.umd.js +91 -91
  11. package/lib/Cardinal/index.umd.min.js +2 -2
  12. package/lib/Eoap/index.umd.js +34 -34
  13. package/lib/Eoap/index.umd.min.js +2 -2
  14. package/lib/Geometry/index.umd.js +142 -142
  15. package/lib/Geometry/index.umd.min.js +2 -2
  16. package/lib/Hermite/index.umd.js +36 -36
  17. package/lib/Hermite/index.umd.min.js +2 -2
  18. package/lib/Matrix4/index.umd.js +119 -119
  19. package/lib/Matrix4/index.umd.min.js +2 -2
  20. package/lib/Mercator/index.umd.js +20 -20
  21. package/lib/Mercator/index.umd.min.js +2 -2
  22. package/lib/OralCanvas/index.es.js +598 -598
  23. package/lib/OralCanvas/index.es.min.js +2 -2
  24. package/lib/OralWebGL/index.es.js +532 -532
  25. package/lib/OralWebGL/index.es.min.js +3 -3
  26. package/lib/SVG/index.umd.js +470 -405
  27. package/lib/SVG/index.umd.min.js +3 -3
  28. package/lib/Shader/index.umd.js +69 -69
  29. package/lib/Shader/index.umd.min.js +3 -3
  30. package/lib/Texture/index.umd.js +53 -53
  31. package/lib/Texture/index.umd.min.js +2 -2
  32. package/lib/TreeLayout/index.umd.js +363 -363
  33. package/lib/TreeLayout/index.umd.min.js +2 -2
  34. package/lib/WebGL/index.umd.js +579 -579
  35. package/lib/WebGL/index.umd.min.js +3 -3
  36. package/lib/animation/index.umd.js +72 -72
  37. package/lib/animation/index.umd.min.js +2 -2
  38. package/lib/formatColor/index.umd.js +40 -40
  39. package/lib/formatColor/index.umd.min.js +2 -2
  40. package/lib/getLoopColors/index.umd.js +36 -36
  41. package/lib/getLoopColors/index.umd.min.js +2 -2
  42. package/lib/getWebGLContext/index.umd.js +44 -44
  43. package/lib/getWebGLContext/index.umd.min.js +2 -2
  44. package/lib/index.umd.js +2744 -2662
  45. package/lib/index.umd.min.js +3 -3
  46. package/lib/move/index.umd.js +27 -0
  47. package/lib/move/index.umd.min.js +11 -0
  48. package/lib/resizeObserver/index.umd.js +29 -29
  49. package/lib/resizeObserver/index.umd.min.js +2 -2
  50. package/lib/rotate/index.umd.js +8 -8
  51. package/lib/rotate/index.umd.min.js +2 -2
  52. package/lib/ruler/index.umd.js +126 -126
  53. package/lib/ruler/index.umd.min.js +2 -2
  54. package/lib/scale/index.umd.js +26 -0
  55. package/lib/scale/index.umd.min.js +11 -0
  56. package/lib/throttle/index.umd.js +49 -49
  57. package/lib/throttle/index.umd.min.js +2 -2
  58. package/lib/viewHandler/index.umd.js +120 -120
  59. package/lib/viewHandler/index.umd.min.js +2 -2
  60. package/miniprogram/ui-canvas/index.js +107 -107
  61. package/miniprogram/ui-canvas/index.json +4 -4
  62. package/miniprogram/ui-canvas/index.wxml +4 -4
  63. package/miniprogram/ui-canvas/index.wxss +5 -5
  64. package/package/Buffer/index.ts +2 -2
  65. package/package/Canvas/index.ts +2 -2
  66. package/package/Cardinal/index.ts +2 -2
  67. package/package/Eoap/index.ts +2 -2
  68. package/package/Geometry/index.ts +2 -2
  69. package/package/Hermite/index.ts +2 -2
  70. package/package/Matrix4/index.ts +2 -2
  71. package/package/Mercator/index.ts +2 -2
  72. package/package/OralCanvas/index.ts +2 -2
  73. package/package/OralWebGL/index.ts +2 -2
  74. package/package/SVG/index.ts +2 -2
  75. package/package/Shader/index.ts +39 -39
  76. package/package/Texture/index.ts +2 -2
  77. package/package/TreeLayout/index.ts +2 -2
  78. package/package/WebGL/index.ts +2 -2
  79. package/package/animation/index.ts +2 -2
  80. package/package/formatColor/index.ts +2 -2
  81. package/package/getLoopColors/index.ts +2 -2
  82. package/package/getWebGLContext/index.ts +39 -39
  83. package/package/index.ts +76 -72
  84. package/package/move/index.ts +3 -0
  85. package/package/resizeObserver/index.ts +2 -2
  86. package/package/rotate/index.ts +2 -2
  87. package/package/ruler/index.ts +2 -2
  88. package/package/scale/index.ts +3 -0
  89. package/package/throttle/index.ts +2 -2
  90. package/package/viewHandler/index.ts +2 -2
  91. package/package.json +66 -66
  92. package/src/Canvas.ts +67 -67
  93. package/src/Eoap.ts +66 -66
  94. package/src/Geometry.ts +82 -82
  95. package/src/Matrix4/index.ts +76 -76
  96. package/src/Matrix4/move.ts +12 -12
  97. package/src/Matrix4/rotate.ts +15 -15
  98. package/src/Matrix4/scale.ts +11 -11
  99. package/src/Matrix4/transform.ts +64 -64
  100. package/src/Mercator.ts +27 -27
  101. package/src/SVG.ts +24 -24
  102. package/src/TreeLayout/index.ts +186 -186
  103. package/src/WebGL.ts +66 -66
  104. package/src/animation.ts +98 -98
  105. package/src/common/assemble.ts +22 -22
  106. package/src/common/canvas/arc.ts +50 -50
  107. package/src/common/canvas/config.ts +158 -158
  108. package/src/common/canvas/gradient.ts +29 -29
  109. package/src/common/canvas/index.ts +168 -168
  110. package/src/common/canvas/painter.ts +426 -426
  111. package/src/common/canvas/texts.ts +18 -18
  112. package/src/common/geometry/prism-horizontal.ts +33 -33
  113. package/src/common/geometry/prism-vertical.ts +40 -40
  114. package/src/common/geometry/sphere-fragment.ts +39 -39
  115. package/src/common/geometry/tool/circle.ts +11 -11
  116. package/src/common/mergeOption.ts +6 -6
  117. package/src/common/setStyle.ts +5 -5
  118. package/src/common/svg/config.ts +186 -174
  119. package/src/common/svg/gradient.ts +63 -0
  120. package/src/common/svg/index.ts +356 -344
  121. package/src/common/svg/tool.ts +44 -44
  122. package/src/common/tree/index.ts +25 -25
  123. package/src/common/tree/toInnerTree.ts +56 -56
  124. package/src/common/tree/toPlainTree.ts +131 -131
  125. package/src/common/webgl/buffer.ts +79 -79
  126. package/src/common/webgl/doDraw.ts +108 -108
  127. package/src/common/webgl/getColorFactory.ts +26 -26
  128. package/src/common/webgl/getShader.ts +48 -48
  129. package/src/common/webgl/getTexture.ts +11 -11
  130. package/src/common/webgl/getWebGLContext.ts +27 -27
  131. package/src/common/webgl/index.ts +223 -223
  132. package/src/common/webgl/shader.ts +75 -75
  133. package/src/common/webgl/texture.ts +96 -96
  134. package/src/formatColor.ts +44 -44
  135. package/src/getLoopColors.ts +42 -42
  136. package/src/interpolation/Cardinal.ts +110 -110
  137. package/src/interpolation/Hermite.ts +65 -65
  138. package/src/move.ts +8 -0
  139. package/src/resizeObserver.ts +36 -36
  140. package/src/rotate.ts +7 -7
  141. package/src/ruler.ts +188 -188
  142. package/src/scale.ts +7 -0
  143. package/src/shader/fsColor.c +7 -7
  144. package/src/shader/fsColors.c +7 -7
  145. package/src/shader/fsCube.c +8 -8
  146. package/src/shader/fsImage.c +8 -8
  147. package/src/shader/vsColor.c +17 -17
  148. package/src/shader/vsColors.c +13 -13
  149. package/src/shader/vsCube.c +13 -13
  150. package/src/shader/vsImage.c +13 -13
  151. package/src/throttle.ts +51 -51
  152. package/src/viewHandler.ts +158 -158
  153. package/types/Buffer.d.ts +23 -23
  154. package/types/Canvas.d.ts +300 -300
  155. package/types/CanvasConfig.d.ts +106 -106
  156. package/types/CanvasOption.d.ts +7 -7
  157. package/types/Cardinal.d.ts +13 -13
  158. package/types/Geometry.d.ts +40 -40
  159. package/types/GeometryOption.d.ts +11 -11
  160. package/types/GeometryResult.d.ts +18 -18
  161. package/types/Gradient.d.ts +14 -14
  162. package/types/Hermite.d.ts +18 -18
  163. package/types/Map.d.ts +9 -9
  164. package/types/Matrix4.d.ts +42 -42
  165. package/types/Object3D.d.ts +114 -114
  166. package/types/SVG.d.ts +238 -215
  167. package/types/SVGConfig.d.ts +76 -76
  168. package/types/Scene3D.d.ts +6 -6
  169. package/types/Shader.d.ts +21 -21
  170. package/types/Texture.d.ts +16 -16
  171. package/types/Tree.d.ts +69 -69
  172. package/types/TreeConfig.d.ts +24 -24
  173. package/types/TreeLayout.d.ts +54 -54
  174. package/types/TreeOption.d.ts +48 -48
  175. package/types/WebGL.d.ts +38 -38
  176. package/types/WebGLOption.d.ts +7 -7
  177. package/types/animation.d.ts +6 -6
  178. package/types/formatColor.d.ts +2 -2
  179. package/types/getLoopColors.d.ts +2 -2
  180. package/types/getWebGLContext.d.ts +2 -2
  181. package/types/index.d.ts +175 -169
  182. package/types/move.d.ts +3 -0
  183. package/types/painterConfig.d.ts +2 -2
  184. package/types/resizeObserver.d.ts +2 -2
  185. package/types/rotate.d.ts +2 -2
  186. package/types/ruler.d.ts +7 -7
  187. package/types/scale.d.ts +3 -0
  188. package/types/throttle.d.ts +4 -4
  189. package/types/throttleOption.d.ts +21 -21
  190. package/types/viewHandler.d.ts +13 -13
  191. package/uni-app/ui-canvas.vue +226 -226
@@ -1,12 +1,12 @@
1
1
  /*!
2
- * VISLite JavaScript Library v0.5.2-alpha.1
2
+ * VISLite JavaScript Library v0.5.2
3
3
  * git+https://github.com/oi-contrib/VISLite.git
4
4
  *
5
5
  * Copyright zxl20070701
6
6
  * Released under the MIT license
7
7
  * https://zxl20070701.github.io/notebook/home.html
8
8
  *
9
- * Publish Date: Thu Oct 12 2023 15:44:35 GMT+0800 (China Standard Time)
9
+ * Publish Date: Sat Nov 04 2023 09:25:44 GMT+0800 (中国标准时间)
10
10
  */
11
11
  (function (global, factory) {
12
12
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
@@ -50,379 +50,379 @@
50
50
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
51
51
  };
52
52
 
53
- var toInnerTree = (function (initTree, config) {
54
- var tempTree = {};
55
- var temp = config.root(initTree), id, rid;
56
- id = rid = config.id(temp);
57
- tempTree[id] = {
58
- "data": temp,
59
- "pid": null,
60
- "id": id,
61
- "isOpen": true,
62
- "show": true,
63
- "children": []
64
- };
65
- var num = 1;
66
- (function createTree(pdata, pid) {
67
- var children = config.children(pdata, initTree);
68
- num += children ? children.length : 0;
69
- for (var flag = 0; children && flag < children.length; flag++) {
70
- id = config.id(children[flag]);
71
- tempTree[pid].children.push(id);
72
- tempTree[id] = {
73
- "data": children[flag],
74
- "pid": pid,
75
- "id": id,
76
- "isOpen": true,
77
- "show": true,
78
- "children": []
79
- };
80
- createTree(children[flag], id);
81
- }
82
- })(temp, id);
83
- return {
84
- rid: rid,
85
- value: tempTree,
86
- num: num
87
- };
53
+ var toInnerTree = (function (initTree, config) {
54
+ var tempTree = {};
55
+ var temp = config.root(initTree), id, rid;
56
+ id = rid = config.id(temp);
57
+ tempTree[id] = {
58
+ "data": temp,
59
+ "pid": null,
60
+ "id": id,
61
+ "isOpen": true,
62
+ "show": true,
63
+ "children": []
64
+ };
65
+ var num = 1;
66
+ (function createTree(pdata, pid) {
67
+ var children = config.children(pdata, initTree);
68
+ num += children ? children.length : 0;
69
+ for (var flag = 0; children && flag < children.length; flag++) {
70
+ id = config.id(children[flag]);
71
+ tempTree[pid].children.push(id);
72
+ tempTree[id] = {
73
+ "data": children[flag],
74
+ "pid": pid,
75
+ "id": id,
76
+ "isOpen": true,
77
+ "show": true,
78
+ "children": []
79
+ };
80
+ createTree(children[flag], id);
81
+ }
82
+ })(temp, id);
83
+ return {
84
+ rid: rid,
85
+ value: tempTree,
86
+ num: num
87
+ };
88
88
  });
89
89
 
90
- function toPlainTree (initTree, config, noOpens) {
91
- var treeData = toInnerTree(initTree, config);
92
- var alltreedata = treeData.value;
93
- var rootid = treeData.rid;
94
- if (treeData.num == 1) {
95
- alltreedata[rootid].left = 0.5;
96
- alltreedata[rootid].top = 0.5;
97
- alltreedata[rootid].show = true;
98
- return {
99
- deep: 1,
100
- node: alltreedata,
101
- root: rootid,
102
- size: 1
103
- };
104
- }
105
- else {
106
- var beforeDis_1 = [], size_1 = 0, maxDeep_1 = 0;
107
- if (noOpens[rootid]) {
108
- alltreedata[rootid].left = 0.5;
109
- alltreedata[rootid].top = 0.5;
110
- alltreedata[rootid].show = true;
111
- size_1 = 1;
112
- }
113
- else {
114
- (function positionCalc(pNode, deep) {
115
- if (deep > maxDeep_1)
116
- maxDeep_1 = deep;
117
- var flag = 0;
118
- if (!noOpens[pNode.id]) {
119
- for (flag = 0; flag < pNode.children.length; flag++)
120
- positionCalc(alltreedata[pNode.children[flag]], deep + 1);
121
- }
122
- alltreedata[pNode.id].left = deep + 0.5;
123
- if (flag == 0) {
124
- if (beforeDis_1[deep] == void 0)
125
- beforeDis_1[deep] = -0.5;
126
- if (beforeDis_1[deep - 1] == void 0)
127
- beforeDis_1[deep - 1] = -0.5;
128
- alltreedata[pNode.id].top = beforeDis_1[deep] + 1;
129
- var pTop = beforeDis_1[deep] + 1 + (alltreedata[pNode.pid].children.length - 1) * 0.5;
130
- if (pTop - 1 < beforeDis_1[deep - 1])
131
- alltreedata[pNode.id].top = beforeDis_1[deep - 1] + 1 - (alltreedata[pNode.pid].children.length - 1) * 0.5;
132
- }
133
- else {
134
- alltreedata[pNode.id].top = (alltreedata[pNode.children[0]].top + alltreedata[pNode.children[flag - 1]].top) * 0.5;
135
- }
136
- if (alltreedata[pNode.id].top <= beforeDis_1[deep]) {
137
- var needUp_1 = beforeDis_1[deep] + 1 - alltreedata[pNode.id].top(function doUp(_pid, _deep) {
138
- alltreedata[_pid].top += needUp_1;
139
- if (beforeDis_1[_deep] < alltreedata[_pid].top)
140
- beforeDis_1[_deep] = alltreedata[_pid].top;
141
- for (var _flag = 0; _flag < alltreedata[_pid].children.length; _flag++) {
142
- doUp(alltreedata[_pid].children[_flag], _deep + 1);
143
- }
144
- })(pNode.id, deep);
145
- }
146
- beforeDis_1[deep] = alltreedata[pNode.id].top;
147
- if (alltreedata[pNode.id].top + 0.5 > size_1)
148
- size_1 = alltreedata[pNode.id].top + 0.5;
149
- })(alltreedata[rootid], 0);
150
- }
151
- for (var key in noOpens) {
152
- if (noOpens[key]) {
153
- alltreedata[key].isOpen = false;
154
- (function updateHidden(pid, left, top) {
155
- for (var index = 0; index < alltreedata[pid].children.length; index++) {
156
- alltreedata[alltreedata[pid].children[index]].left = left;
157
- alltreedata[alltreedata[pid].children[index]].top = top;
158
- alltreedata[alltreedata[pid].children[index]].show = false;
159
- updateHidden(alltreedata[pid].children[index], left, top);
160
- }
161
- })(key, alltreedata[key].left, alltreedata[key].top);
162
- }
163
- }
164
- return {
165
- "node": alltreedata,
166
- "root": rootid,
167
- "size": size_1,
168
- "deep": maxDeep_1 + 1
169
- };
170
- }
90
+ function toPlainTree (initTree, config, noOpens) {
91
+ var treeData = toInnerTree(initTree, config);
92
+ var alltreedata = treeData.value;
93
+ var rootid = treeData.rid;
94
+ if (treeData.num == 1) {
95
+ alltreedata[rootid].left = 0.5;
96
+ alltreedata[rootid].top = 0.5;
97
+ alltreedata[rootid].show = true;
98
+ return {
99
+ deep: 1,
100
+ node: alltreedata,
101
+ root: rootid,
102
+ size: 1
103
+ };
104
+ }
105
+ else {
106
+ var beforeDis_1 = [], size_1 = 0, maxDeep_1 = 0;
107
+ if (noOpens[rootid]) {
108
+ alltreedata[rootid].left = 0.5;
109
+ alltreedata[rootid].top = 0.5;
110
+ alltreedata[rootid].show = true;
111
+ size_1 = 1;
112
+ }
113
+ else {
114
+ (function positionCalc(pNode, deep) {
115
+ if (deep > maxDeep_1)
116
+ maxDeep_1 = deep;
117
+ var flag = 0;
118
+ if (!noOpens[pNode.id]) {
119
+ for (flag = 0; flag < pNode.children.length; flag++)
120
+ positionCalc(alltreedata[pNode.children[flag]], deep + 1);
121
+ }
122
+ alltreedata[pNode.id].left = deep + 0.5;
123
+ if (flag == 0) {
124
+ if (beforeDis_1[deep] == void 0)
125
+ beforeDis_1[deep] = -0.5;
126
+ if (beforeDis_1[deep - 1] == void 0)
127
+ beforeDis_1[deep - 1] = -0.5;
128
+ alltreedata[pNode.id].top = beforeDis_1[deep] + 1;
129
+ var pTop = beforeDis_1[deep] + 1 + (alltreedata[pNode.pid].children.length - 1) * 0.5;
130
+ if (pTop - 1 < beforeDis_1[deep - 1])
131
+ alltreedata[pNode.id].top = beforeDis_1[deep - 1] + 1 - (alltreedata[pNode.pid].children.length - 1) * 0.5;
132
+ }
133
+ else {
134
+ alltreedata[pNode.id].top = (alltreedata[pNode.children[0]].top + alltreedata[pNode.children[flag - 1]].top) * 0.5;
135
+ }
136
+ if (alltreedata[pNode.id].top <= beforeDis_1[deep]) {
137
+ var needUp_1 = beforeDis_1[deep] + 1 - alltreedata[pNode.id].top(function doUp(_pid, _deep) {
138
+ alltreedata[_pid].top += needUp_1;
139
+ if (beforeDis_1[_deep] < alltreedata[_pid].top)
140
+ beforeDis_1[_deep] = alltreedata[_pid].top;
141
+ for (var _flag = 0; _flag < alltreedata[_pid].children.length; _flag++) {
142
+ doUp(alltreedata[_pid].children[_flag], _deep + 1);
143
+ }
144
+ })(pNode.id, deep);
145
+ }
146
+ beforeDis_1[deep] = alltreedata[pNode.id].top;
147
+ if (alltreedata[pNode.id].top + 0.5 > size_1)
148
+ size_1 = alltreedata[pNode.id].top + 0.5;
149
+ })(alltreedata[rootid], 0);
150
+ }
151
+ for (var key in noOpens) {
152
+ if (noOpens[key]) {
153
+ alltreedata[key].isOpen = false;
154
+ (function updateHidden(pid, left, top) {
155
+ for (var index = 0; index < alltreedata[pid].children.length; index++) {
156
+ alltreedata[alltreedata[pid].children[index]].left = left;
157
+ alltreedata[alltreedata[pid].children[index]].top = top;
158
+ alltreedata[alltreedata[pid].children[index]].show = false;
159
+ updateHidden(alltreedata[pid].children[index], left, top);
160
+ }
161
+ })(key, alltreedata[key].left, alltreedata[key].top);
162
+ }
163
+ }
164
+ return {
165
+ "node": alltreedata,
166
+ "root": rootid,
167
+ "size": size_1,
168
+ "deep": maxDeep_1 + 1
169
+ };
170
+ }
171
171
  }
172
172
 
173
- function mergeOption (option, defaultOption) {
174
- for (var key in option) {
175
- defaultOption[key] = option[key];
176
- }
177
- return defaultOption;
173
+ function mergeOption (option, defaultOption) {
174
+ for (var key in option) {
175
+ defaultOption[key] = option[key];
176
+ }
177
+ return defaultOption;
178
178
  }
179
179
 
180
- var Tree = (function () {
181
- function Tree(config) {
182
- if (config === void 0) { config = {}; }
183
- this.name = 'Tree';
184
- this.__config = mergeOption(config, {
185
- root: function (initTree) { return initTree; },
186
- children: function (parentTree) { return parentTree.children; },
187
- id: function (treedata) { return treedata.name; }
188
- });
189
- }
190
- Tree.prototype.use = function (initTree, noOpens) {
191
- if (noOpens === void 0) { noOpens = {}; }
192
- return toPlainTree(initTree, this.__config, noOpens);
193
- };
194
- return Tree;
180
+ var Tree = (function () {
181
+ function Tree(config) {
182
+ if (config === void 0) { config = {}; }
183
+ this.name = 'Tree';
184
+ this.__config = mergeOption(config, {
185
+ root: function (initTree) { return initTree; },
186
+ children: function (parentTree) { return parentTree.children; },
187
+ id: function (treedata) { return treedata.name; }
188
+ });
189
+ }
190
+ Tree.prototype.use = function (initTree, noOpens) {
191
+ if (noOpens === void 0) { noOpens = {}; }
192
+ return toPlainTree(initTree, this.__config, noOpens);
193
+ };
194
+ return Tree;
195
195
  }());
196
196
 
197
- var $timers = [];
198
- var $interval = 13;
199
- var $timerId;
200
- function animation (doback, duration, callback) {
201
- if (duration === void 0) { duration = 400; }
202
- if (callback === void 0) { callback = function () { }; }
203
- var clock = {
204
- "timer": function (tick, duration, callback) {
205
- if (!tick) {
206
- throw new Error('Tick is required!');
207
- }
208
- var id = new Date().valueOf() + "_" + (Math.random() * 1000).toFixed(0);
209
- $timers.push({
210
- "id": id,
211
- "createTime": new Date(),
212
- "tick": tick,
213
- "duration": duration,
214
- "callback": callback
215
- });
216
- clock.start();
217
- return id;
218
- },
219
- "start": function () {
220
- if (!$timerId) {
221
- $timerId = setInterval(clock.tick, $interval);
222
- }
223
- },
224
- "tick": function () {
225
- var createTime, flag, tick, callback, timer, duration, passTime, timers = $timers;
226
- $timers = [];
227
- $timers.length = 0;
228
- for (flag = 0; flag < timers.length; flag++) {
229
- timer = timers[flag];
230
- createTime = timer.createTime;
231
- tick = timer.tick;
232
- duration = timer.duration;
233
- callback = timer.callback;
234
- passTime = (+new Date().valueOf() - createTime.valueOf()) / duration;
235
- passTime = passTime > 1 ? 1 : passTime;
236
- tick(passTime);
237
- if (passTime < 1 && timer.id) {
238
- $timers.push(timer);
239
- }
240
- else {
241
- callback(passTime);
242
- }
243
- }
244
- if ($timers.length <= 0) {
245
- clock.stop();
246
- }
247
- },
248
- "stop": function () {
249
- if ($timerId) {
250
- clearInterval($timerId);
251
- $timerId = null;
252
- }
253
- }
254
- };
255
- var id = clock.timer(function (deep) {
256
- doback(deep);
257
- }, duration, callback);
258
- return function () {
259
- var i;
260
- for (i in $timers) {
261
- if ($timers[i].id == id) {
262
- $timers[i].id = void 0;
263
- return;
264
- }
265
- }
266
- };
197
+ var $timers = [];
198
+ var $interval = 13;
199
+ var $timerId;
200
+ function animation (doback, duration, callback) {
201
+ if (duration === void 0) { duration = 400; }
202
+ if (callback === void 0) { callback = function () { }; }
203
+ var clock = {
204
+ "timer": function (tick, duration, callback) {
205
+ if (!tick) {
206
+ throw new Error('Tick is required!');
207
+ }
208
+ var id = new Date().valueOf() + "_" + (Math.random() * 1000).toFixed(0);
209
+ $timers.push({
210
+ "id": id,
211
+ "createTime": new Date(),
212
+ "tick": tick,
213
+ "duration": duration,
214
+ "callback": callback
215
+ });
216
+ clock.start();
217
+ return id;
218
+ },
219
+ "start": function () {
220
+ if (!$timerId) {
221
+ $timerId = setInterval(clock.tick, $interval);
222
+ }
223
+ },
224
+ "tick": function () {
225
+ var createTime, flag, tick, callback, timer, duration, passTime, timers = $timers;
226
+ $timers = [];
227
+ $timers.length = 0;
228
+ for (flag = 0; flag < timers.length; flag++) {
229
+ timer = timers[flag];
230
+ createTime = timer.createTime;
231
+ tick = timer.tick;
232
+ duration = timer.duration;
233
+ callback = timer.callback;
234
+ passTime = (+new Date().valueOf() - createTime.valueOf()) / duration;
235
+ passTime = passTime > 1 ? 1 : passTime;
236
+ tick(passTime);
237
+ if (passTime < 1 && timer.id) {
238
+ $timers.push(timer);
239
+ }
240
+ else {
241
+ callback(passTime);
242
+ }
243
+ }
244
+ if ($timers.length <= 0) {
245
+ clock.stop();
246
+ }
247
+ },
248
+ "stop": function () {
249
+ if ($timerId) {
250
+ clearInterval($timerId);
251
+ $timerId = null;
252
+ }
253
+ }
254
+ };
255
+ var id = clock.timer(function (deep) {
256
+ doback(deep);
257
+ }, duration, callback);
258
+ return function () {
259
+ var i;
260
+ for (i in $timers) {
261
+ if ($timers[i].id == id) {
262
+ $timers[i].id = void 0;
263
+ return;
264
+ }
265
+ }
266
+ };
267
267
  }
268
268
 
269
- function rotate (cx, cy, deg, x, y) {
270
- var cos = Math.cos(deg), sin = Math.sin(deg);
271
- return [
272
- (x - cx) * cos - (y - cy) * sin + cx,
273
- (x - cx) * sin + (y - cy) * cos + cy
274
- ];
269
+ function rotate (cx, cy, deg, x, y) {
270
+ var cos = Math.cos(deg), sin = Math.sin(deg);
271
+ return [
272
+ (x - cx) * cos - (y - cy) * sin + cx,
273
+ (x - cx) * sin + (y - cy) * cos + cy
274
+ ];
275
275
  }
276
276
 
277
- var TreeLayout = (function (_super) {
278
- __extends(TreeLayout, _super);
279
- function TreeLayout() {
280
- var _this = _super !== null && _super.apply(this, arguments) || this;
281
- _this.name = 'TreeLayout';
282
- _this.__option = {
283
- offsetX: 0,
284
- offsetY: 0,
285
- duration: 500,
286
- type: "plain",
287
- direction: "LR",
288
- x: 100,
289
- y: 100,
290
- width: 100,
291
- height: 100,
292
- radius: 100
293
- };
294
- _this.__noOpens = {};
295
- return _this;
296
- }
297
- TreeLayout.prototype.setOption = function (option) {
298
- mergeOption(option, this.__option);
299
- return this;
300
- };
301
- TreeLayout.prototype.use = function (initTree, noOpens) {
302
- if (noOpens === void 0) { noOpens = {}; }
303
- var tree = _super.prototype.use.call(this, initTree, noOpens);
304
- if (this.__option.offsetX != 0 || this.__option.offsetY != 0) {
305
- for (var key in tree.node) {
306
- if (!tree.node[key].show) {
307
- var deep = 0, pid = key;
308
- do {
309
- pid = tree.node[pid].pid;
310
- deep++;
311
- } while (!tree.node[pid].show);
312
- tree.node[key].left += this.__option.offsetX * deep;
313
- tree.node[key].top += this.__option.offsetY * deep;
314
- }
315
- }
316
- }
317
- if (this.__option.type == 'rect') {
318
- if (this.__option.direction == 'LR' || this.__option.direction == "RL") {
319
- var perW = this.__option.height / tree.size;
320
- var perD = this.__option.width / (tree.deep - 1);
321
- var balanceW = this.__option.y - this.__option.height * 0.5;
322
- var flag = this.__option.direction == 'LR' ? 1 : -1;
323
- for (var key in tree.node) {
324
- if (tree.deep == 1) {
325
- tree.node[key].left = this.__option.x + this.__option.width * 0.5 * flag;
326
- tree.node[key].top = this.__option.y;
327
- }
328
- else {
329
- tree.node[key].left = this.__option.x + (tree.node[key].left - 0.5) * perD * flag;
330
- tree.node[key].top = tree.node[key].top * perW + balanceW;
331
- }
332
- }
333
- }
334
- else if (this.__option.direction == 'TB' || this.__option.direction == "BT") {
335
- var perW = this.__option.width / tree.size;
336
- var perD = this.__option.height / (tree.deep - 1);
337
- var balanceW = this.__option.x - this.__option.width * 0.5;
338
- var flag = this.__option.direction == 'TB' ? 1 : -1;
339
- for (var key in tree.node) {
340
- if (tree.deep == 1) {
341
- tree.node[key].left = this.__option.x;
342
- tree.node[key].top = this.__option.y + this.__option.height * 0.5 * flag;
343
- }
344
- else {
345
- var left = tree.node[key].left;
346
- tree.node[key].left = tree.node[key].top * perW + balanceW;
347
- tree.node[key].top = this.__option.y + (left - 0.5) * perD * flag;
348
- }
349
- }
350
- }
351
- }
352
- else if (this.__option.type == 'circle') {
353
- var cx = this.__option.x, cy = this.__option.y;
354
- var deg = Math.PI * 2 / tree.size;
355
- var per = this.__option.radius / (tree.deep - 1);
356
- for (var key in tree.node) {
357
- if (tree.node[key].left == 0.5) {
358
- tree.node[key].left = cx;
359
- tree.node[key].top = cy;
360
- }
361
- else {
362
- var position = rotate(cx, cy, deg * tree.node[key].top, cx + (tree.node[key].left - 0.5) * per, cy);
363
- tree.node[key].left = position[0];
364
- tree.node[key].top = position[1];
365
- }
366
- }
367
- }
368
- return tree;
369
- };
370
- TreeLayout.prototype.bind = function (initTree, renderBack, noOpens) {
371
- if (noOpens === void 0) { noOpens = {}; }
372
- this.__rback = renderBack;
373
- this.__oralTree = initTree;
374
- this.__noOpens = noOpens;
375
- this.__preTree = this.use(this.__oralTree, this.__noOpens);
376
- this.__rback(this.__preTree);
377
- return this;
378
- };
379
- TreeLayout.prototype.unbind = function () {
380
- this.__rback = null;
381
- this.__oralTree = null;
382
- this.__preTree = null;
383
- this.__noOpens = {};
384
- return this;
385
- };
386
- TreeLayout.prototype.doUpdate = function () {
387
- var _this = this;
388
- var newTree = this.use(this.__oralTree, this.__noOpens);
389
- var cacheTree = JSON.parse(JSON.stringify(newTree));
390
- animation(function (deep) {
391
- for (var key in cacheTree.node) {
392
- if (newTree.node[key].show || _this.__preTree.node[key].show) {
393
- cacheTree.node[key].show = true;
394
- cacheTree.node[key].left = _this.__preTree.node[key].left + (newTree.node[key].left - _this.__preTree.node[key].left) * deep;
395
- cacheTree.node[key].top = _this.__preTree.node[key].top + (newTree.node[key].top - _this.__preTree.node[key].top) * deep;
396
- }
397
- }
398
- _this.__rback(cacheTree);
399
- }, this.__option.duration, function () {
400
- _this.__preTree = newTree;
401
- _this.__rback(_this.__preTree);
402
- });
403
- };
404
- TreeLayout.prototype.closeNode = function (id) {
405
- if (!this.__preTree)
406
- return;
407
- this.__noOpens[id] = true;
408
- this.doUpdate();
409
- return this;
410
- };
411
- TreeLayout.prototype.openNode = function (id) {
412
- if (!this.__preTree)
413
- return;
414
- this.__noOpens[id] = false;
415
- this.doUpdate();
416
- return this;
417
- };
418
- TreeLayout.prototype.toggleNode = function (id) {
419
- if (!this.__preTree)
420
- return;
421
- this.__noOpens[id] = !this.__noOpens[id];
422
- this.doUpdate();
423
- return this;
424
- };
425
- return TreeLayout;
277
+ var TreeLayout = (function (_super) {
278
+ __extends(TreeLayout, _super);
279
+ function TreeLayout() {
280
+ var _this = _super !== null && _super.apply(this, arguments) || this;
281
+ _this.name = 'TreeLayout';
282
+ _this.__option = {
283
+ offsetX: 0,
284
+ offsetY: 0,
285
+ duration: 500,
286
+ type: "plain",
287
+ direction: "LR",
288
+ x: 100,
289
+ y: 100,
290
+ width: 100,
291
+ height: 100,
292
+ radius: 100
293
+ };
294
+ _this.__noOpens = {};
295
+ return _this;
296
+ }
297
+ TreeLayout.prototype.setOption = function (option) {
298
+ mergeOption(option, this.__option);
299
+ return this;
300
+ };
301
+ TreeLayout.prototype.use = function (initTree, noOpens) {
302
+ if (noOpens === void 0) { noOpens = {}; }
303
+ var tree = _super.prototype.use.call(this, initTree, noOpens);
304
+ if (this.__option.offsetX != 0 || this.__option.offsetY != 0) {
305
+ for (var key in tree.node) {
306
+ if (!tree.node[key].show) {
307
+ var deep = 0, pid = key;
308
+ do {
309
+ pid = tree.node[pid].pid;
310
+ deep++;
311
+ } while (!tree.node[pid].show);
312
+ tree.node[key].left += this.__option.offsetX * deep;
313
+ tree.node[key].top += this.__option.offsetY * deep;
314
+ }
315
+ }
316
+ }
317
+ if (this.__option.type == 'rect') {
318
+ if (this.__option.direction == 'LR' || this.__option.direction == "RL") {
319
+ var perW = this.__option.height / tree.size;
320
+ var perD = this.__option.width / (tree.deep - 1);
321
+ var balanceW = this.__option.y - this.__option.height * 0.5;
322
+ var flag = this.__option.direction == 'LR' ? 1 : -1;
323
+ for (var key in tree.node) {
324
+ if (tree.deep == 1) {
325
+ tree.node[key].left = this.__option.x + this.__option.width * 0.5 * flag;
326
+ tree.node[key].top = this.__option.y;
327
+ }
328
+ else {
329
+ tree.node[key].left = this.__option.x + (tree.node[key].left - 0.5) * perD * flag;
330
+ tree.node[key].top = tree.node[key].top * perW + balanceW;
331
+ }
332
+ }
333
+ }
334
+ else if (this.__option.direction == 'TB' || this.__option.direction == "BT") {
335
+ var perW = this.__option.width / tree.size;
336
+ var perD = this.__option.height / (tree.deep - 1);
337
+ var balanceW = this.__option.x - this.__option.width * 0.5;
338
+ var flag = this.__option.direction == 'TB' ? 1 : -1;
339
+ for (var key in tree.node) {
340
+ if (tree.deep == 1) {
341
+ tree.node[key].left = this.__option.x;
342
+ tree.node[key].top = this.__option.y + this.__option.height * 0.5 * flag;
343
+ }
344
+ else {
345
+ var left = tree.node[key].left;
346
+ tree.node[key].left = tree.node[key].top * perW + balanceW;
347
+ tree.node[key].top = this.__option.y + (left - 0.5) * perD * flag;
348
+ }
349
+ }
350
+ }
351
+ }
352
+ else if (this.__option.type == 'circle') {
353
+ var cx = this.__option.x, cy = this.__option.y;
354
+ var deg = Math.PI * 2 / tree.size;
355
+ var per = this.__option.radius / (tree.deep - 1);
356
+ for (var key in tree.node) {
357
+ if (tree.node[key].left == 0.5) {
358
+ tree.node[key].left = cx;
359
+ tree.node[key].top = cy;
360
+ }
361
+ else {
362
+ var position = rotate(cx, cy, deg * tree.node[key].top, cx + (tree.node[key].left - 0.5) * per, cy);
363
+ tree.node[key].left = position[0];
364
+ tree.node[key].top = position[1];
365
+ }
366
+ }
367
+ }
368
+ return tree;
369
+ };
370
+ TreeLayout.prototype.bind = function (initTree, renderBack, noOpens) {
371
+ if (noOpens === void 0) { noOpens = {}; }
372
+ this.__rback = renderBack;
373
+ this.__oralTree = initTree;
374
+ this.__noOpens = noOpens;
375
+ this.__preTree = this.use(this.__oralTree, this.__noOpens);
376
+ this.__rback(this.__preTree);
377
+ return this;
378
+ };
379
+ TreeLayout.prototype.unbind = function () {
380
+ this.__rback = null;
381
+ this.__oralTree = null;
382
+ this.__preTree = null;
383
+ this.__noOpens = {};
384
+ return this;
385
+ };
386
+ TreeLayout.prototype.doUpdate = function () {
387
+ var _this = this;
388
+ var newTree = this.use(this.__oralTree, this.__noOpens);
389
+ var cacheTree = JSON.parse(JSON.stringify(newTree));
390
+ animation(function (deep) {
391
+ for (var key in cacheTree.node) {
392
+ if (newTree.node[key].show || _this.__preTree.node[key].show) {
393
+ cacheTree.node[key].show = true;
394
+ cacheTree.node[key].left = _this.__preTree.node[key].left + (newTree.node[key].left - _this.__preTree.node[key].left) * deep;
395
+ cacheTree.node[key].top = _this.__preTree.node[key].top + (newTree.node[key].top - _this.__preTree.node[key].top) * deep;
396
+ }
397
+ }
398
+ _this.__rback(cacheTree);
399
+ }, this.__option.duration, function () {
400
+ _this.__preTree = newTree;
401
+ _this.__rback(_this.__preTree);
402
+ });
403
+ };
404
+ TreeLayout.prototype.closeNode = function (id) {
405
+ if (!this.__preTree)
406
+ return;
407
+ this.__noOpens[id] = true;
408
+ this.doUpdate();
409
+ return this;
410
+ };
411
+ TreeLayout.prototype.openNode = function (id) {
412
+ if (!this.__preTree)
413
+ return;
414
+ this.__noOpens[id] = false;
415
+ this.doUpdate();
416
+ return this;
417
+ };
418
+ TreeLayout.prototype.toggleNode = function (id) {
419
+ if (!this.__preTree)
420
+ return;
421
+ this.__noOpens[id] = !this.__noOpens[id];
422
+ this.doUpdate();
423
+ return this;
424
+ };
425
+ return TreeLayout;
426
426
  }(Tree));
427
427
 
428
428
  return TreeLayout;