vislite 1.2.0-beta.0 → 1.2.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/AUTHORS.txt +6 -6
- package/CHANGELOG +1 -1
- package/LICENSE +20 -20
- package/lib/Buffer/index.es.js +1 -1
- package/lib/Buffer/index.es.min.js +1 -1
- package/lib/Canvas/index.es.js +1 -1
- package/lib/Canvas/index.es.min.js +1 -1
- package/lib/Cardinal/index.es.js +1 -1
- package/lib/Cardinal/index.es.min.js +1 -1
- package/lib/Eoap/index.es.js +1 -1
- package/lib/Eoap/index.es.min.js +1 -1
- package/lib/Hermite/index.es.js +1 -1
- package/lib/Hermite/index.es.min.js +1 -1
- package/lib/Matrix4/index.es.js +1 -1
- package/lib/Matrix4/index.es.min.js +1 -1
- package/lib/Mercator/index.es.js +1 -1
- package/lib/Mercator/index.es.min.js +1 -1
- package/lib/RawCanvas/index.es.js +1 -1
- package/lib/RawCanvas/index.es.min.js +1 -1
- package/lib/SVG/index.es.js +1 -1
- package/lib/SVG/index.es.min.js +1 -1
- package/lib/Shader/index.es.js +1 -1
- package/lib/Shader/index.es.min.js +1 -1
- package/lib/Texture/index.es.js +1 -1
- package/lib/Texture/index.es.min.js +1 -1
- package/lib/TreeLayout/index.es.js +1 -1
- package/lib/TreeLayout/index.es.min.js +1 -1
- package/lib/animation/index.es.js +1 -1
- package/lib/animation/index.es.min.js +1 -1
- package/lib/assemble/index.es.js +1 -1
- package/lib/assemble/index.es.min.js +1 -1
- package/lib/getLoopColors/index.es.js +1 -1
- package/lib/getLoopColors/index.es.min.js +1 -1
- package/lib/getWebGLContext/index.es.js +1 -1
- package/lib/getWebGLContext/index.es.min.js +1 -1
- package/lib/index.umd.js +1 -1
- package/lib/index.umd.min.js +1 -1
- package/lib/initOption/index.es.js +1 -1
- package/lib/initOption/index.es.min.js +1 -1
- package/lib/mergeOption/index.es.js +1 -1
- package/lib/mergeOption/index.es.min.js +1 -1
- package/lib/move/index.es.js +1 -1
- package/lib/move/index.es.min.js +1 -1
- package/lib/rotate/index.es.js +1 -1
- package/lib/rotate/index.es.min.js +1 -1
- package/lib/ruler/index.es.js +1 -1
- package/lib/ruler/index.es.min.js +1 -1
- package/lib/scale/index.es.js +1 -1
- package/lib/scale/index.es.min.js +1 -1
- package/lib/throttle/index.es.js +1 -1
- package/lib/throttle/index.es.min.js +1 -1
- package/miniprogram/ui-canvas/drawImage.js +35 -35
- package/miniprogram/ui-canvas/index.json +4 -4
- package/miniprogram/ui-canvas/index.wxml +4 -4
- package/miniprogram/ui-canvas/index.wxss +5 -5
- package/package/Buffer/index.ts +2 -2
- package/package/Canvas/index.ts +2 -2
- package/package/Cardinal/index.ts +2 -2
- package/package/Eoap/index.ts +2 -2
- package/package/Hermite/index.ts +2 -2
- package/package/Matrix4/index.ts +2 -2
- package/package/Mercator/index.ts +2 -2
- package/package/RawCanvas/index.ts +2 -2
- package/package/SVG/index.ts +2 -2
- package/package/Shader/index.ts +2 -2
- package/package/Texture/index.ts +2 -2
- package/package/TreeLayout/index.ts +2 -2
- package/package/animation/index.ts +2 -2
- package/package/assemble/index.ts +2 -2
- package/package/getLoopColors/index.ts +2 -2
- package/package/getWebGLContext/index.ts +40 -40
- package/package/index.ts +75 -75
- package/package/initOption/index.ts +2 -2
- package/package/mergeOption/index.ts +2 -2
- package/package/move/index.ts +2 -2
- package/package/rotate/index.ts +2 -2
- package/package/ruler/index.ts +2 -2
- package/package/scale/index.ts +2 -2
- package/package/throttle/index.ts +2 -2
- package/package.json +78 -78
- package/src/Eoap.ts +66 -66
- package/src/Matrix4/index.ts +84 -84
- package/src/Matrix4/move.ts +12 -12
- package/src/Matrix4/rotate.ts +15 -15
- package/src/Matrix4/scale.ts +11 -11
- package/src/Matrix4/transform.ts +64 -64
- package/src/Mercator.ts +27 -27
- package/src/SVG.ts +24 -24
- package/src/common/assemble.ts +22 -22
- package/src/common/canvas/arc.ts +51 -51
- package/src/common/canvas/config.ts +158 -158
- package/src/common/canvas/texts.ts +18 -18
- package/src/common/option.ts +29 -29
- package/src/common/setStyle.ts +5 -5
- package/src/common/svg/gradient.ts +53 -53
- package/src/common/tree/index.ts +25 -25
- package/src/common/tree/toInnerTree.ts +59 -59
- package/src/common/tree/toPlainTree.ts +132 -132
- package/src/common/webgl/buffer.ts +79 -79
- package/src/common/webgl/getWebGLContext.ts +45 -45
- package/src/common/webgl/shader.ts +75 -75
- package/src/common/webgl/texture.ts +97 -97
- package/src/interpolation/Cardinal.ts +110 -110
- package/src/interpolation/Hermite.ts +65 -65
- package/src/layout/TreeLayout.ts +188 -188
- package/src/move.ts +7 -7
- package/src/rotate.ts +7 -7
- package/src/ruler.ts +209 -209
- package/src/scale.ts +6 -6
- package/types/Buffer.d.ts +23 -23
- package/types/CanvasOption.d.ts +8 -8
- package/types/CanvasOpts.d.ts +9 -9
- package/types/Cardinal.d.ts +13 -13
- package/types/Gradient.d.ts +14 -14
- package/types/Hermite.d.ts +18 -18
- package/types/Map.d.ts +9 -9
- package/types/Matrix4.d.ts +47 -47
- package/types/SVG.d.ts +243 -243
- package/types/Shader.d.ts +16 -16
- package/types/Texture.d.ts +16 -16
- package/types/Tree.d.ts +69 -69
- package/types/TreeConfig.d.ts +36 -36
- package/types/TreeLayout.d.ts +54 -54
- package/types/TreeOption.d.ts +48 -48
- package/types/animation.d.ts +5 -5
- package/types/getWebGLContext.d.ts +7 -7
- package/types/move.d.ts +5 -5
- package/types/rotate.d.ts +5 -5
- package/types/ruler.d.ts +10 -10
- package/types/scale.d.ts +5 -5
- package/types/throttle.d.ts +5 -5
- package/types/ui-canvas.d.ts +4 -4
- package/uni-app/drawImage.js +19 -19
- package/uni-app/ui-canvas.vue +284 -284
|
@@ -1,158 +1,158 @@
|
|
|
1
|
-
import type CanvasConfigType from "../../../types/CanvasConfig"
|
|
2
|
-
|
|
3
|
-
import arc from "./arc"
|
|
4
|
-
|
|
5
|
-
// 文字统一设置方法
|
|
6
|
-
export const initText = function (
|
|
7
|
-
painter: CanvasRenderingContext2D,
|
|
8
|
-
config: CanvasConfigType,
|
|
9
|
-
x: number,
|
|
10
|
-
y: number,
|
|
11
|
-
deg: number
|
|
12
|
-
) {
|
|
13
|
-
painter.beginPath();
|
|
14
|
-
painter.translate(x, y);
|
|
15
|
-
painter.rotate(deg);
|
|
16
|
-
painter.font =
|
|
17
|
-
config.fontStyle +
|
|
18
|
-
" " +
|
|
19
|
-
config.fontWeight +
|
|
20
|
-
" " +
|
|
21
|
-
config.fontSize +
|
|
22
|
-
"px " +
|
|
23
|
-
config.fontFamily;
|
|
24
|
-
return painter
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
// 画弧统一设置方法
|
|
28
|
-
export const initArc = function (
|
|
29
|
-
painter: CanvasRenderingContext2D,
|
|
30
|
-
config: CanvasConfigType,
|
|
31
|
-
cx: number,
|
|
32
|
-
cy: number,
|
|
33
|
-
r1: number,
|
|
34
|
-
r2: number,
|
|
35
|
-
beginDeg: number,
|
|
36
|
-
deg: number
|
|
37
|
-
) {
|
|
38
|
-
if (r1 > r2) {
|
|
39
|
-
const temp = r1
|
|
40
|
-
r1 = r2
|
|
41
|
-
r2 = temp
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
beginDeg = beginDeg % (Math.PI * 2)
|
|
45
|
-
|
|
46
|
-
// 当|deg|>=2π的时候都认为是一个圆环
|
|
47
|
-
// 为什么不取2π比较,是怕部分浏览器浮点不精确
|
|
48
|
-
if (deg >= Math.PI * 1.999999 || deg <= -Math.PI * 1.999999) {
|
|
49
|
-
deg = Math.PI * 2
|
|
50
|
-
} else {
|
|
51
|
-
deg = deg % (Math.PI * 2)
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
arc(
|
|
55
|
-
beginDeg,
|
|
56
|
-
deg,
|
|
57
|
-
cx,
|
|
58
|
-
cy,
|
|
59
|
-
r1,
|
|
60
|
-
r2,
|
|
61
|
-
function (
|
|
62
|
-
beginA: number,
|
|
63
|
-
endA: number,
|
|
64
|
-
begInnerX: number,
|
|
65
|
-
begInnerY: number,
|
|
66
|
-
begOuterX: number,
|
|
67
|
-
begOuterY: number,
|
|
68
|
-
endInnerX: number,
|
|
69
|
-
endInnerY: number,
|
|
70
|
-
endOuterX: number,
|
|
71
|
-
endOuterY: number,
|
|
72
|
-
r: number
|
|
73
|
-
) {
|
|
74
|
-
if (r < 0) r = -r
|
|
75
|
-
painter.beginPath()
|
|
76
|
-
painter.moveTo(begInnerX, begInnerY)
|
|
77
|
-
painter.arc(
|
|
78
|
-
// (圆心x,圆心y,半径,开始角度,结束角度,true逆时针/false顺时针)
|
|
79
|
-
cx,
|
|
80
|
-
cy,
|
|
81
|
-
r1,
|
|
82
|
-
beginA,
|
|
83
|
-
endA,
|
|
84
|
-
false
|
|
85
|
-
)
|
|
86
|
-
// 结尾
|
|
87
|
-
if (config.arcEndCap == "round")
|
|
88
|
-
painter.arc(
|
|
89
|
-
(endInnerX + endOuterX) * 0.5,
|
|
90
|
-
(endInnerY + endOuterY) * 0.5,
|
|
91
|
-
r,
|
|
92
|
-
endA - Math.PI,
|
|
93
|
-
endA,
|
|
94
|
-
true
|
|
95
|
-
)
|
|
96
|
-
else if (config.arcEndCap == "-round")
|
|
97
|
-
painter.arc(
|
|
98
|
-
(endInnerX + endOuterX) * 0.5,
|
|
99
|
-
(endInnerY + endOuterY) * 0.5,
|
|
100
|
-
r,
|
|
101
|
-
endA - Math.PI,
|
|
102
|
-
endA,
|
|
103
|
-
false
|
|
104
|
-
)
|
|
105
|
-
else painter.lineTo(endOuterX, endOuterY)
|
|
106
|
-
|
|
107
|
-
painter.arc(cx, cy, r2, endA, beginA, true)
|
|
108
|
-
// 开头
|
|
109
|
-
if (config.arcStartCap == "round")
|
|
110
|
-
painter.arc(
|
|
111
|
-
(begInnerX + begOuterX) * 0.5,
|
|
112
|
-
(begInnerY + begOuterY) * 0.5,
|
|
113
|
-
r,
|
|
114
|
-
beginA,
|
|
115
|
-
beginA - Math.PI,
|
|
116
|
-
true
|
|
117
|
-
)
|
|
118
|
-
else if (config.arcStartCap == "-round")
|
|
119
|
-
painter.arc(
|
|
120
|
-
(begInnerX + begOuterX) * 0.5,
|
|
121
|
-
(begInnerY + begOuterY) * 0.5,
|
|
122
|
-
r,
|
|
123
|
-
beginA,
|
|
124
|
-
beginA - Math.PI,
|
|
125
|
-
false
|
|
126
|
-
)
|
|
127
|
-
else painter.lineTo(begInnerX, begInnerY)
|
|
128
|
-
}
|
|
129
|
-
)
|
|
130
|
-
if (config.arcStartCap == "butt") painter.closePath()
|
|
131
|
-
return painter
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
// 画圆统一设置方法
|
|
135
|
-
export const initCircle = function (
|
|
136
|
-
painter: CanvasRenderingContext2D,
|
|
137
|
-
cx: number,
|
|
138
|
-
cy: number,
|
|
139
|
-
r: number
|
|
140
|
-
) {
|
|
141
|
-
painter.beginPath()
|
|
142
|
-
painter.moveTo(cx + r, cy)
|
|
143
|
-
painter.arc(cx, cy, r, 0, Math.PI * 2)
|
|
144
|
-
return painter
|
|
145
|
-
};
|
|
146
|
-
|
|
147
|
-
// 画矩形统一设置方法
|
|
148
|
-
export const initRect = function (
|
|
149
|
-
painter: CanvasRenderingContext2D,
|
|
150
|
-
x: number,
|
|
151
|
-
y: number,
|
|
152
|
-
width: number,
|
|
153
|
-
height: number
|
|
154
|
-
) {
|
|
155
|
-
painter.beginPath()
|
|
156
|
-
painter.rect(x, y, width, height)
|
|
157
|
-
return painter
|
|
158
|
-
}
|
|
1
|
+
import type CanvasConfigType from "../../../types/CanvasConfig"
|
|
2
|
+
|
|
3
|
+
import arc from "./arc"
|
|
4
|
+
|
|
5
|
+
// 文字统一设置方法
|
|
6
|
+
export const initText = function (
|
|
7
|
+
painter: CanvasRenderingContext2D,
|
|
8
|
+
config: CanvasConfigType,
|
|
9
|
+
x: number,
|
|
10
|
+
y: number,
|
|
11
|
+
deg: number
|
|
12
|
+
) {
|
|
13
|
+
painter.beginPath();
|
|
14
|
+
painter.translate(x, y);
|
|
15
|
+
painter.rotate(deg);
|
|
16
|
+
painter.font =
|
|
17
|
+
config.fontStyle +
|
|
18
|
+
" " +
|
|
19
|
+
config.fontWeight +
|
|
20
|
+
" " +
|
|
21
|
+
config.fontSize +
|
|
22
|
+
"px " +
|
|
23
|
+
config.fontFamily;
|
|
24
|
+
return painter
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// 画弧统一设置方法
|
|
28
|
+
export const initArc = function (
|
|
29
|
+
painter: CanvasRenderingContext2D,
|
|
30
|
+
config: CanvasConfigType,
|
|
31
|
+
cx: number,
|
|
32
|
+
cy: number,
|
|
33
|
+
r1: number,
|
|
34
|
+
r2: number,
|
|
35
|
+
beginDeg: number,
|
|
36
|
+
deg: number
|
|
37
|
+
) {
|
|
38
|
+
if (r1 > r2) {
|
|
39
|
+
const temp = r1
|
|
40
|
+
r1 = r2
|
|
41
|
+
r2 = temp
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
beginDeg = beginDeg % (Math.PI * 2)
|
|
45
|
+
|
|
46
|
+
// 当|deg|>=2π的时候都认为是一个圆环
|
|
47
|
+
// 为什么不取2π比较,是怕部分浏览器浮点不精确
|
|
48
|
+
if (deg >= Math.PI * 1.999999 || deg <= -Math.PI * 1.999999) {
|
|
49
|
+
deg = Math.PI * 2
|
|
50
|
+
} else {
|
|
51
|
+
deg = deg % (Math.PI * 2)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
arc(
|
|
55
|
+
beginDeg,
|
|
56
|
+
deg,
|
|
57
|
+
cx,
|
|
58
|
+
cy,
|
|
59
|
+
r1,
|
|
60
|
+
r2,
|
|
61
|
+
function (
|
|
62
|
+
beginA: number,
|
|
63
|
+
endA: number,
|
|
64
|
+
begInnerX: number,
|
|
65
|
+
begInnerY: number,
|
|
66
|
+
begOuterX: number,
|
|
67
|
+
begOuterY: number,
|
|
68
|
+
endInnerX: number,
|
|
69
|
+
endInnerY: number,
|
|
70
|
+
endOuterX: number,
|
|
71
|
+
endOuterY: number,
|
|
72
|
+
r: number
|
|
73
|
+
) {
|
|
74
|
+
if (r < 0) r = -r
|
|
75
|
+
painter.beginPath()
|
|
76
|
+
painter.moveTo(begInnerX, begInnerY)
|
|
77
|
+
painter.arc(
|
|
78
|
+
// (圆心x,圆心y,半径,开始角度,结束角度,true逆时针/false顺时针)
|
|
79
|
+
cx,
|
|
80
|
+
cy,
|
|
81
|
+
r1,
|
|
82
|
+
beginA,
|
|
83
|
+
endA,
|
|
84
|
+
false
|
|
85
|
+
)
|
|
86
|
+
// 结尾
|
|
87
|
+
if (config.arcEndCap == "round")
|
|
88
|
+
painter.arc(
|
|
89
|
+
(endInnerX + endOuterX) * 0.5,
|
|
90
|
+
(endInnerY + endOuterY) * 0.5,
|
|
91
|
+
r,
|
|
92
|
+
endA - Math.PI,
|
|
93
|
+
endA,
|
|
94
|
+
true
|
|
95
|
+
)
|
|
96
|
+
else if (config.arcEndCap == "-round")
|
|
97
|
+
painter.arc(
|
|
98
|
+
(endInnerX + endOuterX) * 0.5,
|
|
99
|
+
(endInnerY + endOuterY) * 0.5,
|
|
100
|
+
r,
|
|
101
|
+
endA - Math.PI,
|
|
102
|
+
endA,
|
|
103
|
+
false
|
|
104
|
+
)
|
|
105
|
+
else painter.lineTo(endOuterX, endOuterY)
|
|
106
|
+
|
|
107
|
+
painter.arc(cx, cy, r2, endA, beginA, true)
|
|
108
|
+
// 开头
|
|
109
|
+
if (config.arcStartCap == "round")
|
|
110
|
+
painter.arc(
|
|
111
|
+
(begInnerX + begOuterX) * 0.5,
|
|
112
|
+
(begInnerY + begOuterY) * 0.5,
|
|
113
|
+
r,
|
|
114
|
+
beginA,
|
|
115
|
+
beginA - Math.PI,
|
|
116
|
+
true
|
|
117
|
+
)
|
|
118
|
+
else if (config.arcStartCap == "-round")
|
|
119
|
+
painter.arc(
|
|
120
|
+
(begInnerX + begOuterX) * 0.5,
|
|
121
|
+
(begInnerY + begOuterY) * 0.5,
|
|
122
|
+
r,
|
|
123
|
+
beginA,
|
|
124
|
+
beginA - Math.PI,
|
|
125
|
+
false
|
|
126
|
+
)
|
|
127
|
+
else painter.lineTo(begInnerX, begInnerY)
|
|
128
|
+
}
|
|
129
|
+
)
|
|
130
|
+
if (config.arcStartCap == "butt") painter.closePath()
|
|
131
|
+
return painter
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// 画圆统一设置方法
|
|
135
|
+
export const initCircle = function (
|
|
136
|
+
painter: CanvasRenderingContext2D,
|
|
137
|
+
cx: number,
|
|
138
|
+
cy: number,
|
|
139
|
+
r: number
|
|
140
|
+
) {
|
|
141
|
+
painter.beginPath()
|
|
142
|
+
painter.moveTo(cx + r, cy)
|
|
143
|
+
painter.arc(cx, cy, r, 0, Math.PI * 2)
|
|
144
|
+
return painter
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
// 画矩形统一设置方法
|
|
148
|
+
export const initRect = function (
|
|
149
|
+
painter: CanvasRenderingContext2D,
|
|
150
|
+
x: number,
|
|
151
|
+
y: number,
|
|
152
|
+
width: number,
|
|
153
|
+
height: number
|
|
154
|
+
) {
|
|
155
|
+
painter.beginPath()
|
|
156
|
+
painter.rect(x, y, width, height)
|
|
157
|
+
return painter
|
|
158
|
+
}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
export default function (painter: CanvasRenderingContext2D, contents: string, width: number, height: number, doback: (content: string, top: number) => void) {
|
|
2
|
-
|
|
3
|
-
let lineNumber = 0, content = ""
|
|
4
|
-
for (let i = 0; i < contents.length; i++) {
|
|
5
|
-
if (painter.measureText(content + contents[i]).width > width || /\n$/.test(content)) {
|
|
6
|
-
lineNumber += 1
|
|
7
|
-
doback(content, (lineNumber - 0.5) * height)
|
|
8
|
-
|
|
9
|
-
content = contents[i]
|
|
10
|
-
} else if (i == contents.length - 1) {
|
|
11
|
-
lineNumber += 1
|
|
12
|
-
doback(content + contents[i], (lineNumber - 0.5) * height)
|
|
13
|
-
} else {
|
|
14
|
-
content += contents[i]
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
return lineNumber * height
|
|
1
|
+
export default function (painter: CanvasRenderingContext2D, contents: string, width: number, height: number, doback: (content: string, top: number) => void) {
|
|
2
|
+
|
|
3
|
+
let lineNumber = 0, content = ""
|
|
4
|
+
for (let i = 0; i < contents.length; i++) {
|
|
5
|
+
if (painter.measureText(content + contents[i]).width > width || /\n$/.test(content)) {
|
|
6
|
+
lineNumber += 1
|
|
7
|
+
doback(content, (lineNumber - 0.5) * height)
|
|
8
|
+
|
|
9
|
+
content = contents[i]
|
|
10
|
+
} else if (i == contents.length - 1) {
|
|
11
|
+
lineNumber += 1
|
|
12
|
+
doback(content + contents[i], (lineNumber - 0.5) * height)
|
|
13
|
+
} else {
|
|
14
|
+
content += contents[i]
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return lineNumber * height
|
|
19
19
|
}
|
package/src/common/option.ts
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
import { isPlainObject } from "./type"
|
|
2
|
-
|
|
3
|
-
// 初始化配置
|
|
4
|
-
export function initOption(setOption: any, defaultOption: any) {
|
|
5
|
-
for (const key in setOption) {
|
|
6
|
-
defaultOption[key] = setOption[key]
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
return defaultOption
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
// 合并配置
|
|
13
|
-
export function mergeOption(oldOption: any, newOption: any) {
|
|
14
|
-
(function doit(oldOption, newOption) {
|
|
15
|
-
|
|
16
|
-
for (const key in newOption) {
|
|
17
|
-
const value = newOption[key]
|
|
18
|
-
|
|
19
|
-
if (isPlainObject(value)) {
|
|
20
|
-
if (!oldOption[key]) oldOption[key] = {}
|
|
21
|
-
|
|
22
|
-
doit(oldOption[key], newOption[key])
|
|
23
|
-
} else {
|
|
24
|
-
oldOption[key] = value
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
})(oldOption, newOption)
|
|
1
|
+
import { isPlainObject } from "./type"
|
|
2
|
+
|
|
3
|
+
// 初始化配置
|
|
4
|
+
export function initOption(setOption: any, defaultOption: any) {
|
|
5
|
+
for (const key in setOption) {
|
|
6
|
+
defaultOption[key] = setOption[key]
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
return defaultOption
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// 合并配置
|
|
13
|
+
export function mergeOption(oldOption: any, newOption: any) {
|
|
14
|
+
(function doit(oldOption, newOption) {
|
|
15
|
+
|
|
16
|
+
for (const key in newOption) {
|
|
17
|
+
const value = newOption[key]
|
|
18
|
+
|
|
19
|
+
if (isPlainObject(value)) {
|
|
20
|
+
if (!oldOption[key]) oldOption[key] = {}
|
|
21
|
+
|
|
22
|
+
doit(oldOption[key], newOption[key])
|
|
23
|
+
} else {
|
|
24
|
+
oldOption[key] = value
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
})(oldOption, newOption)
|
|
30
30
|
}
|
package/src/common/setStyle.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
// 修改样式
|
|
2
|
-
export default function (el: HTMLElement | SVGElement, styles: any) {
|
|
3
|
-
for (const key in styles) {
|
|
4
|
-
el.style[key as any] = styles[key]
|
|
5
|
-
}
|
|
1
|
+
// 修改样式
|
|
2
|
+
export default function (el: HTMLElement | SVGElement, styles: any) {
|
|
3
|
+
for (const key in styles) {
|
|
4
|
+
el.style[key as any] = styles[key]
|
|
5
|
+
}
|
|
6
6
|
}
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
import { initDefs } from './config'
|
|
2
|
-
import { toNode, setAttribute } from "./tool"
|
|
3
|
-
|
|
4
|
-
let enhanceGradient = function (gradient: SVGElement, gradientId: string) {
|
|
5
|
-
const enhanceGradient = {
|
|
6
|
-
"value": function () {
|
|
7
|
-
return "url(#" + gradientId + ")";
|
|
8
|
-
},
|
|
9
|
-
"setColor": function (stop: number, color: string) {
|
|
10
|
-
|
|
11
|
-
const stopEl = toNode("stop")
|
|
12
|
-
gradient.appendChild(stopEl)
|
|
13
|
-
setAttribute(stopEl, "offset", (stop * 100) + "%")
|
|
14
|
-
setAttribute(stopEl, "style", "stop-color:" + color + ";")
|
|
15
|
-
|
|
16
|
-
return enhanceGradient
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
return enhanceGradient
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// 线性渐变
|
|
23
|
-
export const linearGradient = function (el: SVGElement, x0: number, y0: number, x1: number, y1: number) {
|
|
24
|
-
|
|
25
|
-
const defs = initDefs(el)
|
|
26
|
-
const gradientId = "vislite-lg-" + new Date().valueOf() + "-" + Math.random()
|
|
27
|
-
|
|
28
|
-
const linearGradient = toNode("linearGradient")
|
|
29
|
-
defs.appendChild(linearGradient)
|
|
30
|
-
setAttribute(linearGradient, "id", gradientId)
|
|
31
|
-
setAttribute(linearGradient, "x1", x0 + "%")
|
|
32
|
-
setAttribute(linearGradient, "y1", y0 + "%")
|
|
33
|
-
setAttribute(linearGradient, "x2", x1 + "%")
|
|
34
|
-
setAttribute(linearGradient, "y2", y1 + "%")
|
|
35
|
-
|
|
36
|
-
return enhanceGradient(linearGradient, gradientId)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// 环形渐变
|
|
40
|
-
export const radialGradient = function (el: SVGElement, cx: number, cy: number, r: number) {
|
|
41
|
-
|
|
42
|
-
const defs = initDefs(el)
|
|
43
|
-
const gradientId = "vislite-rg-" + new Date().valueOf() + "-" + Math.random()
|
|
44
|
-
|
|
45
|
-
const radialGradient = toNode("radialGradient")
|
|
46
|
-
defs.appendChild(radialGradient)
|
|
47
|
-
setAttribute(radialGradient, "id", gradientId)
|
|
48
|
-
setAttribute(radialGradient, "cx", cx + "%")
|
|
49
|
-
setAttribute(radialGradient, "cy", cy + "%")
|
|
50
|
-
setAttribute(radialGradient, "r", r + "%")
|
|
51
|
-
|
|
52
|
-
return enhanceGradient(radialGradient, gradientId)
|
|
53
|
-
}
|
|
1
|
+
import { initDefs } from './config'
|
|
2
|
+
import { toNode, setAttribute } from "./tool"
|
|
3
|
+
|
|
4
|
+
let enhanceGradient = function (gradient: SVGElement, gradientId: string) {
|
|
5
|
+
const enhanceGradient = {
|
|
6
|
+
"value": function () {
|
|
7
|
+
return "url(#" + gradientId + ")";
|
|
8
|
+
},
|
|
9
|
+
"setColor": function (stop: number, color: string) {
|
|
10
|
+
|
|
11
|
+
const stopEl = toNode("stop")
|
|
12
|
+
gradient.appendChild(stopEl)
|
|
13
|
+
setAttribute(stopEl, "offset", (stop * 100) + "%")
|
|
14
|
+
setAttribute(stopEl, "style", "stop-color:" + color + ";")
|
|
15
|
+
|
|
16
|
+
return enhanceGradient
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return enhanceGradient
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// 线性渐变
|
|
23
|
+
export const linearGradient = function (el: SVGElement, x0: number, y0: number, x1: number, y1: number) {
|
|
24
|
+
|
|
25
|
+
const defs = initDefs(el)
|
|
26
|
+
const gradientId = "vislite-lg-" + new Date().valueOf() + "-" + Math.random()
|
|
27
|
+
|
|
28
|
+
const linearGradient = toNode("linearGradient")
|
|
29
|
+
defs.appendChild(linearGradient)
|
|
30
|
+
setAttribute(linearGradient, "id", gradientId)
|
|
31
|
+
setAttribute(linearGradient, "x1", x0 + "%")
|
|
32
|
+
setAttribute(linearGradient, "y1", y0 + "%")
|
|
33
|
+
setAttribute(linearGradient, "x2", x1 + "%")
|
|
34
|
+
setAttribute(linearGradient, "y2", y1 + "%")
|
|
35
|
+
|
|
36
|
+
return enhanceGradient(linearGradient, gradientId)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// 环形渐变
|
|
40
|
+
export const radialGradient = function (el: SVGElement, cx: number, cy: number, r: number) {
|
|
41
|
+
|
|
42
|
+
const defs = initDefs(el)
|
|
43
|
+
const gradientId = "vislite-rg-" + new Date().valueOf() + "-" + Math.random()
|
|
44
|
+
|
|
45
|
+
const radialGradient = toNode("radialGradient")
|
|
46
|
+
defs.appendChild(radialGradient)
|
|
47
|
+
setAttribute(radialGradient, "id", gradientId)
|
|
48
|
+
setAttribute(radialGradient, "cx", cx + "%")
|
|
49
|
+
setAttribute(radialGradient, "cy", cy + "%")
|
|
50
|
+
setAttribute(radialGradient, "r", r + "%")
|
|
51
|
+
|
|
52
|
+
return enhanceGradient(radialGradient, gradientId)
|
|
53
|
+
}
|
package/src/common/tree/index.ts
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import type TreeConfigType from '../../../types/TreeConfig'
|
|
2
|
-
import type { TreeResultType } from '../../../types/Tree'
|
|
3
|
-
|
|
4
|
-
import toPlainTree from './toPlainTree'
|
|
5
|
-
import { initOption } from '../option'
|
|
6
|
-
|
|
7
|
-
class Tree {
|
|
8
|
-
readonly name: string = 'Tree'
|
|
9
|
-
|
|
10
|
-
private __config: TreeConfigType
|
|
11
|
-
|
|
12
|
-
constructor(config: TreeConfigType = {}) {
|
|
13
|
-
this.__config = initOption(config, {
|
|
14
|
-
root: (initTree: any) => initTree,
|
|
15
|
-
children: (parentTree: any) => parentTree.children,
|
|
16
|
-
id: (treedata: any) => treedata.name
|
|
17
|
-
})
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
use(initTree: any, noOpens = {}): TreeResultType {
|
|
21
|
-
return toPlainTree(initTree, this.__config, noOpens)
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
|
|
1
|
+
import type TreeConfigType from '../../../types/TreeConfig'
|
|
2
|
+
import type { TreeResultType } from '../../../types/Tree'
|
|
3
|
+
|
|
4
|
+
import toPlainTree from './toPlainTree'
|
|
5
|
+
import { initOption } from '../option'
|
|
6
|
+
|
|
7
|
+
class Tree {
|
|
8
|
+
readonly name: string = 'Tree'
|
|
9
|
+
|
|
10
|
+
private __config: TreeConfigType
|
|
11
|
+
|
|
12
|
+
constructor(config: TreeConfigType = {}) {
|
|
13
|
+
this.__config = initOption(config, {
|
|
14
|
+
root: (initTree: any) => initTree,
|
|
15
|
+
children: (parentTree: any) => parentTree.children,
|
|
16
|
+
id: (treedata: any) => treedata.name
|
|
17
|
+
})
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
use(initTree: any, noOpens = {}): TreeResultType {
|
|
21
|
+
return toPlainTree(initTree, this.__config, noOpens)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
}
|
|
25
|
+
|
|
26
26
|
export default Tree
|