vislite 0.5.2-alpha.0 → 0.5.2-alpha.1

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 (180) hide show
  1. package/.editorconfig +18 -18
  2. package/AUTHORS.txt +6 -6
  3. package/CHANGELOG +136 -136
  4. package/LICENSE +20 -20
  5. package/README.md +69 -69
  6. package/lib/Buffer/index.umd.js +55 -0
  7. package/lib/Buffer/index.umd.min.js +11 -0
  8. package/lib/Canvas/index.umd.js +721 -0
  9. package/lib/Canvas/index.umd.min.js +11 -0
  10. package/lib/Cardinal/index.umd.js +112 -0
  11. package/lib/Cardinal/index.umd.min.js +11 -0
  12. package/lib/Eoap/index.umd.js +53 -0
  13. package/lib/Eoap/index.umd.min.js +11 -0
  14. package/lib/Geometry/index.umd.js +205 -0
  15. package/lib/Geometry/index.umd.min.js +11 -0
  16. package/lib/Hermite/index.umd.js +55 -0
  17. package/lib/Hermite/index.umd.min.js +11 -0
  18. package/lib/Matrix4/index.umd.js +146 -0
  19. package/lib/Matrix4/index.umd.min.js +11 -0
  20. package/lib/Mercator/index.umd.js +39 -0
  21. package/lib/Mercator/index.umd.min.js +11 -0
  22. package/lib/OralCanvas/index.es.js +657 -0
  23. package/lib/OralCanvas/index.es.min.js +11 -0
  24. package/lib/OralWebGL/index.es.js +611 -0
  25. package/lib/OralWebGL/index.es.min.js +11 -0
  26. package/lib/SVG/index.umd.js +475 -0
  27. package/lib/SVG/index.umd.min.js +11 -0
  28. package/lib/Shader/index.umd.js +134 -0
  29. package/lib/Shader/index.umd.min.js +11 -0
  30. package/lib/Texture/index.umd.js +72 -0
  31. package/lib/Texture/index.umd.min.js +11 -0
  32. package/lib/TreeLayout/index.umd.js +430 -0
  33. package/lib/TreeLayout/index.umd.min.js +11 -0
  34. package/lib/WebGL/index.umd.js +684 -0
  35. package/lib/WebGL/index.umd.min.js +11 -0
  36. package/lib/animation/index.umd.js +91 -0
  37. package/lib/animation/index.umd.min.js +11 -0
  38. package/lib/formatColor/index.umd.js +59 -0
  39. package/lib/formatColor/index.umd.min.js +11 -0
  40. package/lib/getLoopColors/index.umd.js +55 -0
  41. package/lib/getLoopColors/index.umd.min.js +11 -0
  42. package/lib/getWebGLContext/index.umd.js +65 -0
  43. package/lib/getWebGLContext/index.umd.min.js +11 -0
  44. package/lib/index.umd.js +2834 -0
  45. package/lib/index.umd.min.js +11 -0
  46. package/lib/resizeObserver/index.umd.js +48 -0
  47. package/lib/resizeObserver/index.umd.min.js +11 -0
  48. package/lib/rotate/index.umd.js +27 -0
  49. package/lib/rotate/index.umd.min.js +11 -0
  50. package/lib/ruler/index.umd.js +145 -0
  51. package/lib/ruler/index.umd.min.js +11 -0
  52. package/lib/throttle/index.umd.js +70 -0
  53. package/lib/throttle/index.umd.min.js +11 -0
  54. package/lib/viewHandler/index.umd.js +139 -0
  55. package/lib/viewHandler/index.umd.min.js +11 -0
  56. package/miniprogram/ui-canvas/index.js +107 -107
  57. package/miniprogram/ui-canvas/index.json +4 -4
  58. package/miniprogram/ui-canvas/index.wxml +4 -4
  59. package/miniprogram/ui-canvas/index.wxss +5 -5
  60. package/package/Buffer/index.ts +2 -2
  61. package/package/Canvas/index.ts +2 -2
  62. package/package/Cardinal/index.ts +2 -2
  63. package/package/Eoap/index.ts +2 -2
  64. package/package/Geometry/index.ts +2 -2
  65. package/package/Hermite/index.ts +2 -2
  66. package/package/Matrix4/index.ts +2 -2
  67. package/package/Mercator/index.ts +2 -2
  68. package/package/OralCanvas/index.ts +2 -2
  69. package/package/OralWebGL/index.ts +2 -2
  70. package/package/SVG/index.ts +2 -2
  71. package/package/Shader/index.ts +39 -39
  72. package/package/Texture/index.ts +2 -2
  73. package/package/TreeLayout/index.ts +2 -2
  74. package/package/WebGL/index.ts +2 -2
  75. package/package/animation/index.ts +2 -2
  76. package/package/formatColor/index.ts +2 -2
  77. package/package/getLoopColors/index.ts +2 -2
  78. package/package/getWebGLContext/index.ts +39 -39
  79. package/package/index.ts +72 -72
  80. package/package/resizeObserver/index.ts +2 -2
  81. package/package/rotate/index.ts +2 -2
  82. package/package/ruler/index.ts +2 -2
  83. package/package/throttle/index.ts +2 -2
  84. package/package/viewHandler/index.ts +2 -2
  85. package/package.json +66 -66
  86. package/src/Canvas.ts +67 -67
  87. package/src/Eoap.ts +66 -66
  88. package/src/Geometry.ts +82 -82
  89. package/src/Matrix4/index.ts +76 -76
  90. package/src/Matrix4/move.ts +12 -12
  91. package/src/Matrix4/rotate.ts +15 -15
  92. package/src/Matrix4/scale.ts +11 -11
  93. package/src/Matrix4/transform.ts +64 -64
  94. package/src/Mercator.ts +27 -27
  95. package/src/SVG.ts +24 -24
  96. package/src/TreeLayout/index.ts +186 -186
  97. package/src/WebGL.ts +66 -66
  98. package/src/animation.ts +98 -98
  99. package/src/common/assemble.ts +22 -22
  100. package/src/common/canvas/arc.ts +50 -50
  101. package/src/common/canvas/config.ts +158 -158
  102. package/src/common/canvas/gradient.ts +29 -29
  103. package/src/common/canvas/index.ts +168 -168
  104. package/src/common/canvas/painter.ts +426 -426
  105. package/src/common/canvas/texts.ts +18 -18
  106. package/src/common/geometry/prism-horizontal.ts +33 -33
  107. package/src/common/geometry/prism-vertical.ts +40 -40
  108. package/src/common/geometry/sphere-fragment.ts +39 -39
  109. package/src/common/geometry/tool/circle.ts +11 -11
  110. package/src/common/mergeOption.ts +6 -6
  111. package/src/common/setStyle.ts +5 -5
  112. package/src/common/svg/config.ts +174 -174
  113. package/src/common/svg/index.ts +344 -344
  114. package/src/common/svg/tool.ts +44 -44
  115. package/src/common/tree/index.ts +25 -25
  116. package/src/common/tree/toInnerTree.ts +56 -56
  117. package/src/common/tree/toPlainTree.ts +131 -131
  118. package/src/common/webgl/buffer.ts +79 -79
  119. package/src/common/webgl/doDraw.ts +108 -108
  120. package/src/common/webgl/getColorFactory.ts +26 -26
  121. package/src/common/webgl/getShader.ts +48 -48
  122. package/src/common/webgl/getTexture.ts +11 -11
  123. package/src/common/webgl/getWebGLContext.ts +27 -27
  124. package/src/common/webgl/index.ts +223 -223
  125. package/src/common/webgl/shader.ts +75 -75
  126. package/src/common/webgl/texture.ts +96 -96
  127. package/src/formatColor.ts +44 -44
  128. package/src/getLoopColors.ts +42 -42
  129. package/src/interpolation/Cardinal.ts +110 -110
  130. package/src/interpolation/Hermite.ts +65 -65
  131. package/src/resizeObserver.ts +36 -36
  132. package/src/rotate.ts +7 -7
  133. package/src/ruler.ts +188 -188
  134. package/src/shader/fsColor.c +7 -7
  135. package/src/shader/fsColors.c +7 -7
  136. package/src/shader/fsCube.c +8 -8
  137. package/src/shader/fsImage.c +8 -8
  138. package/src/shader/vsColor.c +17 -17
  139. package/src/shader/vsColors.c +13 -13
  140. package/src/shader/vsCube.c +13 -13
  141. package/src/shader/vsImage.c +13 -13
  142. package/src/throttle.ts +51 -51
  143. package/src/viewHandler.ts +158 -158
  144. package/types/Buffer.d.ts +23 -23
  145. package/types/Canvas.d.ts +300 -300
  146. package/types/CanvasConfig.d.ts +106 -106
  147. package/types/CanvasOption.d.ts +7 -7
  148. package/types/Cardinal.d.ts +13 -13
  149. package/types/Geometry.d.ts +40 -40
  150. package/types/GeometryOption.d.ts +11 -11
  151. package/types/GeometryResult.d.ts +18 -18
  152. package/types/Gradient.d.ts +14 -14
  153. package/types/Hermite.d.ts +18 -18
  154. package/types/Map.d.ts +9 -9
  155. package/types/Matrix4.d.ts +42 -42
  156. package/types/Object3D.d.ts +114 -114
  157. package/types/SVG.d.ts +215 -215
  158. package/types/SVGConfig.d.ts +76 -76
  159. package/types/Scene3D.d.ts +6 -6
  160. package/types/Shader.d.ts +21 -21
  161. package/types/Texture.d.ts +16 -16
  162. package/types/Tree.d.ts +69 -69
  163. package/types/TreeConfig.d.ts +24 -24
  164. package/types/TreeLayout.d.ts +54 -54
  165. package/types/TreeOption.d.ts +48 -48
  166. package/types/WebGL.d.ts +38 -38
  167. package/types/WebGLOption.d.ts +7 -7
  168. package/types/animation.d.ts +6 -6
  169. package/types/formatColor.d.ts +2 -2
  170. package/types/getLoopColors.d.ts +2 -2
  171. package/types/getWebGLContext.d.ts +2 -2
  172. package/types/index.d.ts +169 -169
  173. package/types/painterConfig.d.ts +2 -2
  174. package/types/resizeObserver.d.ts +2 -2
  175. package/types/rotate.d.ts +2 -2
  176. package/types/ruler.d.ts +7 -7
  177. package/types/throttle.d.ts +4 -4
  178. package/types/throttleOption.d.ts +21 -21
  179. package/types/viewHandler.d.ts +13 -13
  180. package/uni-app/ui-canvas.vue +226 -226
@@ -0,0 +1,72 @@
1
+ /*!
2
+ * VISLite JavaScript Library v0.5.2-alpha.1
3
+ * git+https://github.com/oi-contrib/VISLite.git
4
+ *
5
+ * Copyright zxl20070701
6
+ * Released under the MIT license
7
+ * https://zxl20070701.github.io/notebook/home.html
8
+ *
9
+ * Publish Date: Thu Oct 12 2023 15:44:35 GMT+0800 (China Standard Time)
10
+ */
11
+ (function (global, factory) {
12
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
13
+ typeof define === 'function' && define.amd ? define(factory) :
14
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.VISLite_Texture = factory());
15
+ })(this, (function () { 'use strict';
16
+
17
+ var initTexture = function (painter, type, unit) {
18
+ var texture = painter.createTexture();
19
+ painter.activeTexture(painter['TEXTURE' + unit]);
20
+ painter.bindTexture(type, texture);
21
+ return texture;
22
+ };
23
+ var linkImage = function (painter, type, level, format, textureType, image) {
24
+ painter.texImage2D(type, level, format, format, textureType, image);
25
+ };
26
+ var linkCube = function (painter, type, level, format, textureType, images, width, height, texture) {
27
+ var types = [
28
+ painter.TEXTURE_CUBE_MAP_POSITIVE_X,
29
+ painter.TEXTURE_CUBE_MAP_NEGATIVE_X,
30
+ painter.TEXTURE_CUBE_MAP_POSITIVE_Y,
31
+ painter.TEXTURE_CUBE_MAP_NEGATIVE_Y,
32
+ painter.TEXTURE_CUBE_MAP_POSITIVE_Z,
33
+ painter.TEXTURE_CUBE_MAP_NEGATIVE_Z
34
+ ], target;
35
+ for (var i = 0; i < types.length; i++) {
36
+ if (images[i]) {
37
+ target = types[i];
38
+ painter.texImage2D(target, level, format, width, height, 0, format, textureType, null);
39
+ painter.bindTexture(type, texture);
40
+ painter.texImage2D(target, level, format, format, textureType, images[i]);
41
+ }
42
+ }
43
+ painter.generateMipmap(type);
44
+ };
45
+ var TextureObject = (function () {
46
+ function TextureObject(painter, type, unit) {
47
+ if (unit === void 0) { unit = 0; }
48
+ this.__painter = painter;
49
+ this.__type = {
50
+ "2d": painter.TEXTURE_2D,
51
+ "cube": painter.TEXTURE_CUBE_MAP
52
+ }[type];
53
+ this.__texture = initTexture(painter, this.__type, unit);
54
+ painter.texParameteri(this.__type, painter.TEXTURE_MIN_FILTER, painter.NEAREST);
55
+ painter.texParameteri(this.__type, painter.TEXTURE_MAG_FILTER, painter.NEAREST);
56
+ painter.texParameteri(this.__type, painter.TEXTURE_WRAP_S, painter.CLAMP_TO_EDGE);
57
+ painter.texParameteri(this.__type, painter.TEXTURE_WRAP_T, painter.CLAMP_TO_EDGE);
58
+ }
59
+ TextureObject.prototype.useImage = function (image) {
60
+ linkImage(this.__painter, this.__type, 0, this.__painter.RGBA, this.__painter.UNSIGNED_BYTE, image);
61
+ return this;
62
+ };
63
+ TextureObject.prototype.useCube = function (images, width, height) {
64
+ linkCube(this.__painter, this.__type, 0, this.__painter.RGBA, this.__painter.UNSIGNED_BYTE, images, width, height, this.__texture);
65
+ return this;
66
+ };
67
+ return TextureObject;
68
+ }());
69
+
70
+ return TextureObject;
71
+
72
+ }));
@@ -0,0 +1,11 @@
1
+ /*!
2
+ * VISLite JavaScript Library v0.5.2-alpha.1
3
+ * git+https://github.com/oi-contrib/VISLite.git
4
+ *
5
+ * Copyright zxl20070701
6
+ * Released under the MIT license
7
+ * https://zxl20070701.github.io/notebook/home.html
8
+ *
9
+ * Publish Date: Thu Oct 12 2023 15:44:35 GMT+0800 (China Standard Time)
10
+ */
11
+ var e,t;e=this,t=function(){"use strict";return function(){function e(e,t,_){void 0===_&&(_=0),this.__painter=e,this.__type={"2d":e.TEXTURE_2D,cube:e.TEXTURE_CUBE_MAP}[t],this.__texture=function(e,t,_){var E=e.createTexture();return e.activeTexture(e["TEXTURE"+_]),e.bindTexture(t,E),E}(e,this.__type,_),e.texParameteri(this.__type,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(this.__type,e.TEXTURE_MAG_FILTER,e.NEAREST),e.texParameteri(this.__type,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(this.__type,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)}return e.prototype.useImage=function(e){return function(e,t,_,E,i,T){e.texImage2D(t,_,E,E,i,T)}(this.__painter,this.__type,0,this.__painter.RGBA,this.__painter.UNSIGNED_BYTE,e),this},e.prototype.useCube=function(e,t,_){return function(e,t,_,E,i,T,r,n,u){for(var a,s=[e.TEXTURE_CUBE_MAP_POSITIVE_X,e.TEXTURE_CUBE_MAP_NEGATIVE_X,e.TEXTURE_CUBE_MAP_POSITIVE_Y,e.TEXTURE_CUBE_MAP_NEGATIVE_Y,e.TEXTURE_CUBE_MAP_POSITIVE_Z,e.TEXTURE_CUBE_MAP_NEGATIVE_Z],p=0;p<s.length;p++)T[p]&&(a=s[p],e.texImage2D(a,_,E,r,n,0,E,i,null),e.bindTexture(t,u),e.texImage2D(a,_,E,E,i,T[p]));e.generateMipmap(t)}(this.__painter,this.__type,0,this.__painter.RGBA,this.__painter.UNSIGNED_BYTE,e,t,_,this.__texture),this},e}()},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).VISLite_Texture=t();
@@ -0,0 +1,430 @@
1
+ /*!
2
+ * VISLite JavaScript Library v0.5.2-alpha.1
3
+ * git+https://github.com/oi-contrib/VISLite.git
4
+ *
5
+ * Copyright zxl20070701
6
+ * Released under the MIT license
7
+ * https://zxl20070701.github.io/notebook/home.html
8
+ *
9
+ * Publish Date: Thu Oct 12 2023 15:44:35 GMT+0800 (China Standard Time)
10
+ */
11
+ (function (global, factory) {
12
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
13
+ typeof define === 'function' && define.amd ? define(factory) :
14
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.VISLite_TreeLayout = factory());
15
+ })(this, (function () { 'use strict';
16
+
17
+ /******************************************************************************
18
+ Copyright (c) Microsoft Corporation.
19
+
20
+ Permission to use, copy, modify, and/or distribute this software for any
21
+ purpose with or without fee is hereby granted.
22
+
23
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
24
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
25
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
26
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
27
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
28
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
29
+ PERFORMANCE OF THIS SOFTWARE.
30
+ ***************************************************************************** */
31
+ /* global Reflect, Promise, SuppressedError, Symbol */
32
+
33
+ var extendStatics = function(d, b) {
34
+ extendStatics = Object.setPrototypeOf ||
35
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
36
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
37
+ return extendStatics(d, b);
38
+ };
39
+
40
+ function __extends(d, b) {
41
+ if (typeof b !== "function" && b !== null)
42
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
43
+ extendStatics(d, b);
44
+ function __() { this.constructor = d; }
45
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
46
+ }
47
+
48
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
49
+ var e = new Error(message);
50
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
51
+ };
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
+ };
88
+ });
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
+ }
171
+ }
172
+
173
+ function mergeOption (option, defaultOption) {
174
+ for (var key in option) {
175
+ defaultOption[key] = option[key];
176
+ }
177
+ return defaultOption;
178
+ }
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;
195
+ }());
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
+ };
267
+ }
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
+ ];
275
+ }
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;
426
+ }(Tree));
427
+
428
+ return TreeLayout;
429
+
430
+ }));
@@ -0,0 +1,11 @@
1
+ /*!
2
+ * VISLite JavaScript Library v0.5.2-alpha.1
3
+ * git+https://github.com/oi-contrib/VISLite.git
4
+ *
5
+ * Copyright zxl20070701
6
+ * Released under the MIT license
7
+ * https://zxl20070701.github.io/notebook/home.html
8
+ *
9
+ * Publish Date: Thu Oct 12 2023 15:44:35 GMT+0800 (China Standard Time)
10
+ */
11
+ var t,e;t=this,e=function(){"use strict";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 e(t,e){for(var o in t)e[o]=t[o];return e}"function"==typeof SuppressedError&&SuppressedError;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){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,children:[]};var p=1;return function n(r,s){var d=e.children(r,t);p+=d?d.length:0;for(var _=0;d&&_<d.length;_++)o=e.id(d[_]),i[s].children.push(o),i[o]={data:d[_],pid:s,id:o,isOpen:!0,show:!0,children:[]},n(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,d=0;for(var _ in o[r]?(i[r].left=.5,i[r].top=.5,i[r].show=!0,s=1):function t(e,n){n>d&&(d=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 _=p[n]+1-i[e.id].top((function t(e,o){i[e].top+=_,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[_]&&(i[_].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)}(_,i[_].left,i[_].top));return{node:i,root:r,size:s,deep:d+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 d=this.__option.height/o.size,_=this.__option.width/(o.deep-1),h=this.__option.y-.5*this.__option.height,f="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*f,o.node[i].top=this.__option.y):(o.node[i].left=this.__option.x+(o.node[i].left-.5)*_*f,o.node[i].top=o.node[i].top*d+h)}else if("TB"==this.__option.direction||"BT"==this.__option.direction)for(var i in d=this.__option.width/o.size,_=this.__option.height/(o.deep-1),h=this.__option.x-.5*this.__option.width,f="TB"==this.__option.direction?1:-1,o.node)if(1==o.deep)o.node[i].left=this.__option.x,o.node[i].top=this.__option.y+.5*this.__option.height*f;else{var l=o.node[i].left;o.node[i].left=o.node[i].top*d+h,o.node[i].top=this.__option.y+(l-.5)*_*f}}else if("circle"==this.__option.type){var u=this.__option.x,c=this.__option.y,a=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=u,o.node[i].top=c;else{var y=r(u,c,a*o.node[i].top,u+(o.node[i].left-.5)*v,c);o.node[i].left=y[0],o.node[i].top=y[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=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));!function(t,e,n){void 0===e&&(e=400),void 0===n&&(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(){o||(o=setInterval(r.tick,13))},tick:function(){var t,e,o,n,p,s,d,_=i;for((i=[]).length=0,e=0;e<_.length;e++)t=(p=_[e]).createTime,o=p.tick,s=p.duration,n=p.callback,o(d=(d=(+(new Date).valueOf()-t.valueOf())/s)>1?1:d),d<1&&p.id?i.push(p):n(d);i.length<=0&&r.stop()},stop:function(){o&&(clearInterval(o),o=null)}};r.timer((function(e){t(e)}),e,n)}((function(o){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)}))},p.prototype.closeNode=function(t){if(this.__preTree)return this.__noOpens[t]=!0,this.doUpdate(),this},p.prototype.openNode=function(t){if(this.__preTree)return this.__noOpens[t]=!1,this.doUpdate(),this},p.prototype.toggleNode=function(t){if(this.__preTree)return this.__noOpens[t]=!this.__noOpens[t],this.doUpdate(),this},p}(n);return p},"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).VISLite_TreeLayout=e();