@visactor/vrender-components 0.21.7 → 0.22.0-vstory.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.
- package/cjs/core/base.d.ts +1 -0
- package/cjs/core/base.js +3 -3
- package/cjs/core/base.js.map +1 -1
- package/cjs/index.d.ts +3 -1
- package/cjs/index.js +3 -2
- package/cjs/index.js.map +1 -1
- package/cjs/interface.d.ts +2 -1
- package/cjs/interface.js.map +1 -1
- package/cjs/label/arc.d.ts +2 -0
- package/cjs/label/arc.js +13 -5
- package/cjs/label/arc.js.map +1 -1
- package/cjs/label-item/index.d.ts +2 -0
- package/cjs/label-item/index.js +21 -0
- package/cjs/label-item/index.js.map +1 -0
- package/cjs/label-item/label-item.d.ts +29 -0
- package/cjs/label-item/label-item.js +265 -0
- package/cjs/label-item/label-item.js.map +1 -0
- package/cjs/label-item/register.d.ts +1 -0
- package/cjs/label-item/register.js +15 -0
- package/cjs/label-item/register.js.map +1 -0
- package/cjs/label-item/type.d.ts +31 -0
- package/cjs/label-item/type.js +6 -0
- package/cjs/label-item/type.js.map +1 -0
- package/cjs/poptip/poptip.d.ts +14 -2
- package/cjs/poptip/poptip.js +137 -51
- package/cjs/poptip/poptip.js.map +1 -1
- package/cjs/poptip/type.d.ts +6 -0
- package/cjs/poptip/type.js.map +1 -1
- package/cjs/title/title.js +42 -36
- package/cjs/title/title.js.map +1 -1
- package/cjs/weather/index.d.ts +1 -0
- package/cjs/weather/index.js +21 -0
- package/cjs/weather/index.js.map +1 -0
- package/cjs/weather/register.d.ts +1 -0
- package/cjs/weather/register.js +14 -0
- package/cjs/weather/register.js.map +1 -0
- package/cjs/weather/type.d.ts +24 -0
- package/cjs/weather/type.js +6 -0
- package/cjs/weather/type.js.map +1 -0
- package/cjs/weather/weather-box.d.ts +13 -0
- package/cjs/weather/weather-box.js +129 -0
- package/cjs/weather/weather-box.js.map +1 -0
- package/dist/index.es.js +5898 -4993
- package/es/core/base.d.ts +1 -0
- package/es/core/base.js +4 -3
- package/es/core/base.js.map +1 -1
- package/es/index.d.ts +3 -1
- package/es/index.js +5 -1
- package/es/index.js.map +1 -1
- package/es/interface.d.ts +2 -1
- package/es/interface.js.map +1 -1
- package/es/label/arc.d.ts +2 -0
- package/es/label/arc.js +13 -5
- package/es/label/arc.js.map +1 -1
- package/es/label-item/index.d.ts +2 -0
- package/es/label-item/index.js +4 -0
- package/es/label-item/index.js.map +1 -0
- package/es/label-item/label-item.d.ts +29 -0
- package/es/label-item/label-item.js +263 -0
- package/es/label-item/label-item.js.map +1 -0
- package/es/label-item/register.d.ts +1 -0
- package/es/label-item/register.js +6 -0
- package/es/label-item/register.js.map +1 -0
- package/es/label-item/type.d.ts +31 -0
- package/es/label-item/type.js +2 -0
- package/es/label-item/type.js.map +1 -0
- package/es/poptip/poptip.d.ts +14 -2
- package/es/poptip/poptip.js +136 -49
- package/es/poptip/poptip.js.map +1 -1
- package/es/poptip/type.d.ts +6 -0
- package/es/poptip/type.js.map +1 -1
- package/es/title/title.js +37 -34
- package/es/title/title.js.map +1 -1
- package/es/weather/index.d.ts +1 -0
- package/es/weather/index.js +2 -0
- package/es/weather/index.js.map +1 -0
- package/es/weather/register.d.ts +1 -0
- package/es/weather/register.js +6 -0
- package/es/weather/register.js.map +1 -0
- package/es/weather/type.d.ts +24 -0
- package/es/weather/type.js +2 -0
- package/es/weather/type.js.map +1 -0
- package/es/weather/weather-box.d.ts +13 -0
- package/es/weather/weather-box.js +127 -0
- package/es/weather/weather-box.js.map +1 -0
- package/package.json +5 -5
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import { InputText } from "@visactor/vrender-core";
|
|
2
|
+
|
|
3
|
+
import { AbstractComponent } from "../core/base";
|
|
4
|
+
|
|
5
|
+
import { merge } from "@visactor/vutils";
|
|
6
|
+
|
|
7
|
+
export class StoryLabelItem extends AbstractComponent {
|
|
8
|
+
constructor(attributes, options) {
|
|
9
|
+
super((null == options ? void 0 : options.skipDefault) ? attributes : merge({}, StoryLabelItem.defaultAttributes, attributes));
|
|
10
|
+
}
|
|
11
|
+
render() {
|
|
12
|
+
const {contentOffsetX: contentOffsetX, contentOffsetY: contentOffsetY, lineStyle: lineStyle, symbolStartStyle: symbolStartStyle, symbolEndStyle: symbolEndStyle, symbolStartOuterStyle: symbolStartOuterStyle, titleTop: titleTopText, titleBottom: titleBottomText, titleTopStyle: titleTopStyle, titleBottomStyle: titleBottomStyle, titleSpace: titleSpace, titleTopPanelStyle: titleTopPanelStyle, titleBottomPanelStyle: titleBottomPanelStyle, theme: theme} = this.attribute, group = this.createOrUpdateChild("label-item-container", {
|
|
13
|
+
x: 0,
|
|
14
|
+
y: 0,
|
|
15
|
+
zIndex: 1
|
|
16
|
+
}, "group"), symbolStart = group.createOrUpdateChild("label-item-symbol-start", Object.assign({
|
|
17
|
+
x: 0,
|
|
18
|
+
y: 0
|
|
19
|
+
}, symbolStartStyle), "symbol"), symbolEnd = group.createOrUpdateChild("label-item-symbol-end", Object.assign({
|
|
20
|
+
x: contentOffsetX,
|
|
21
|
+
y: contentOffsetY
|
|
22
|
+
}, symbolEndStyle), "symbol"), symbolStartOut = group.createOrUpdateChild("label-item-symbol-start-out", Object.assign({
|
|
23
|
+
x: 0,
|
|
24
|
+
y: 0
|
|
25
|
+
}, symbolStartOuterStyle), "symbol"), spaceW = titleSpace[0], spaceH = titleSpace[1], titleTopGroup = group.createOrUpdateChild("label-item-title-top-group", {
|
|
26
|
+
x: contentOffsetX,
|
|
27
|
+
y: contentOffsetY,
|
|
28
|
+
clip: !0
|
|
29
|
+
}, "group"), titleTop = titleTopGroup.createOrUpdateChild("label-item-title-top", Object.assign(Object.assign({
|
|
30
|
+
x: spaceW,
|
|
31
|
+
y: -spaceH,
|
|
32
|
+
text: titleTopText
|
|
33
|
+
}, titleTopStyle), {
|
|
34
|
+
textBaseline: "bottom",
|
|
35
|
+
textAlign: "left",
|
|
36
|
+
zIndex: 10
|
|
37
|
+
}), "text"), titleTopBounds = titleTop.AABBBounds;
|
|
38
|
+
contentOffsetX > 0 && titleTopGroup.setAttributes({
|
|
39
|
+
x: contentOffsetX - titleTopBounds.width() - 2 * spaceW
|
|
40
|
+
}), titleTopGroup.setAttributes({
|
|
41
|
+
width: titleTopBounds.width() + 2 * spaceW,
|
|
42
|
+
height: -titleTopBounds.height() - 2 * spaceH
|
|
43
|
+
});
|
|
44
|
+
const titleTopPanel = titleTopGroup.createOrUpdateChild("label-item-title-top-panel", Object.assign(Object.assign({}, titleTopPanelStyle), {
|
|
45
|
+
x: titleTopPanelStyle.padding.left,
|
|
46
|
+
y: (titleTopGroup.attribute.height > 0 ? 0 : titleTopGroup.attribute.height) + titleTopPanelStyle.padding.top,
|
|
47
|
+
width: titleTopGroup.attribute.width - titleTopPanelStyle.padding.left - titleTopPanelStyle.padding.right,
|
|
48
|
+
height: (titleTopGroup.attribute.height > 0 ? 1 : -1) * titleTopGroup.attribute.height - titleTopPanelStyle.padding.bottom - titleTopPanelStyle.padding.top,
|
|
49
|
+
scaleCenter: [ titleTopGroup.attribute.width / 2, titleTopGroup.attribute.height / 2 ]
|
|
50
|
+
}), "rect");
|
|
51
|
+
this._titleTopPanel = titleTopPanel;
|
|
52
|
+
const titleBottomGroup = group.createOrUpdateChild("label-item-title-bottom-group", {
|
|
53
|
+
x: contentOffsetX,
|
|
54
|
+
y: contentOffsetY,
|
|
55
|
+
clip: !0
|
|
56
|
+
}, "group"), titleBottom = titleBottomGroup.createOrUpdateChild("label-item-title-bottom", Object.assign(Object.assign({
|
|
57
|
+
x: spaceW,
|
|
58
|
+
y: spaceH,
|
|
59
|
+
text: titleBottomText
|
|
60
|
+
}, titleBottomStyle), {
|
|
61
|
+
textBaseline: "top",
|
|
62
|
+
textAlign: "left",
|
|
63
|
+
zIndex: 10
|
|
64
|
+
}), "text"), titleBottomBounds = titleBottom.AABBBounds;
|
|
65
|
+
contentOffsetX > 0 && titleBottomGroup.setAttributes({
|
|
66
|
+
x: contentOffsetX - titleBottomBounds.width() - 2 * spaceW
|
|
67
|
+
}), titleBottomGroup.setAttributes({
|
|
68
|
+
width: titleBottomBounds.width() + 2 * spaceW,
|
|
69
|
+
height: titleTopBounds.height() + 2 * spaceH
|
|
70
|
+
});
|
|
71
|
+
const titleBottomPanel = titleBottomGroup.createOrUpdateChild("label-item-title-bottom-panel", Object.assign(Object.assign({}, titleBottomPanelStyle), {
|
|
72
|
+
x: titleBottomPanelStyle.padding.left,
|
|
73
|
+
y: (titleBottomGroup.attribute.height > 0 ? 0 : titleBottomGroup.attribute.height) + titleBottomPanelStyle.padding.top,
|
|
74
|
+
width: titleBottomGroup.attribute.width - titleBottomPanelStyle.padding.left - titleBottomPanelStyle.padding.right,
|
|
75
|
+
height: (titleBottomGroup.attribute.height > 0 ? 1 : -1) * titleBottomGroup.attribute.height - titleBottomPanelStyle.padding.bottom - titleBottomPanelStyle.padding.top,
|
|
76
|
+
scaleCenter: [ titleBottomGroup.attribute.width / 2, titleBottomGroup.attribute.height / 2 ]
|
|
77
|
+
}), "rect");
|
|
78
|
+
this._titleBottomPanel = titleBottomPanel;
|
|
79
|
+
const maxTextWidth = Math.max(titleTop.AABBBounds.width(), titleBottom.AABBBounds.width()) + 2 * spaceW, points = [ {
|
|
80
|
+
x: 0,
|
|
81
|
+
y: 0
|
|
82
|
+
}, contentOffsetX > 0 ? {
|
|
83
|
+
x: contentOffsetX - maxTextWidth,
|
|
84
|
+
y: contentOffsetY
|
|
85
|
+
} : {
|
|
86
|
+
x: contentOffsetX + maxTextWidth,
|
|
87
|
+
y: contentOffsetY
|
|
88
|
+
}, {
|
|
89
|
+
x: contentOffsetX,
|
|
90
|
+
y: contentOffsetY
|
|
91
|
+
} ];
|
|
92
|
+
if ("simple" === theme) {
|
|
93
|
+
points.pop();
|
|
94
|
+
const p = points[1];
|
|
95
|
+
symbolEnd.setAttributes(p);
|
|
96
|
+
}
|
|
97
|
+
const line = group.createOrUpdateChild("label-item-line", Object.assign(Object.assign({
|
|
98
|
+
x: 0,
|
|
99
|
+
y: 0
|
|
100
|
+
}, lineStyle), {
|
|
101
|
+
points: points
|
|
102
|
+
}), "line");
|
|
103
|
+
this._symbolEnd = symbolEnd, this._symbolStart = symbolStart, this._symbolStartOuter = symbolStartOut,
|
|
104
|
+
this._titleTop = titleTop, this._titleBottom = titleBottom, this._line = line;
|
|
105
|
+
}
|
|
106
|
+
appearAnimate(animateConfig) {
|
|
107
|
+
const {duration: duration = 1e3, easing: easing = "quadOut", symbolStartOuterType: symbolStartOuterType = "scale", titleType: titleType = "typewriter", titlePanelType: titlePanelType = "scale"} = animateConfig, symbolTime = duration / 10;
|
|
108
|
+
let symbolStartOuterFrom, symbolStartOuterTo;
|
|
109
|
+
if (this._symbolStart.setAttributes({
|
|
110
|
+
scaleX: 0,
|
|
111
|
+
scaleY: 0
|
|
112
|
+
}), this._symbolStart.animate().to({
|
|
113
|
+
scaleX: 1,
|
|
114
|
+
scaleY: 1
|
|
115
|
+
}, 5 * symbolTime, easing), "scale" === symbolStartOuterType ? (symbolStartOuterFrom = {
|
|
116
|
+
scaleX: 0,
|
|
117
|
+
scaleY: 0
|
|
118
|
+
}, symbolStartOuterTo = {
|
|
119
|
+
scaleX: 1,
|
|
120
|
+
scaleY: 1
|
|
121
|
+
}) : (symbolStartOuterFrom = {
|
|
122
|
+
clipRange: 0
|
|
123
|
+
}, symbolStartOuterTo = {
|
|
124
|
+
clipRange: 1
|
|
125
|
+
}), this._symbolStartOuter.setAttributes(symbolStartOuterFrom), this._symbolStartOuter.animate().to(symbolStartOuterTo, 5 * symbolTime, easing),
|
|
126
|
+
this._symbolEnd.setAttributes({
|
|
127
|
+
scaleX: 0,
|
|
128
|
+
scaleY: 0
|
|
129
|
+
}), this._symbolEnd.animate().wait(8 * symbolTime).to({
|
|
130
|
+
scaleX: 1,
|
|
131
|
+
scaleY: 1
|
|
132
|
+
}, 2 * symbolTime, easing), this._line.setAttributes({
|
|
133
|
+
clipRange: 0
|
|
134
|
+
}), this._line.animate().to({
|
|
135
|
+
clipRange: 1
|
|
136
|
+
}, 9 * symbolTime, easing), "typewriter" === titleType) {
|
|
137
|
+
const titleTopText = this._titleTop.attribute.text;
|
|
138
|
+
this._titleTop.setAttributes({
|
|
139
|
+
text: ""
|
|
140
|
+
}), this._titleTop.animate().wait(5 * symbolTime).play(new InputText({
|
|
141
|
+
text: ""
|
|
142
|
+
}, {
|
|
143
|
+
text: titleTopText
|
|
144
|
+
}, 4 * symbolTime, "linear"));
|
|
145
|
+
const titleBottomText = this._titleBottom.attribute.text;
|
|
146
|
+
this._titleBottom.setAttributes({
|
|
147
|
+
text: ""
|
|
148
|
+
}), this._titleBottom.animate().wait(5 * symbolTime).play(new InputText({
|
|
149
|
+
text: ""
|
|
150
|
+
}, {
|
|
151
|
+
text: titleBottomText
|
|
152
|
+
}, 4 * symbolTime, "linear"));
|
|
153
|
+
} else this._titleTop.setAttributes({
|
|
154
|
+
dy: this._titleTop.AABBBounds.height() + 10
|
|
155
|
+
}), this._titleTop.animate().wait(5 * symbolTime).to({
|
|
156
|
+
dy: 0
|
|
157
|
+
}, 4 * symbolTime, "linear"), this._titleBottom.setAttributes({
|
|
158
|
+
dy: -(10 + this._titleBottom.AABBBounds.height())
|
|
159
|
+
}), this._titleBottom.animate().wait(5 * symbolTime).to({
|
|
160
|
+
dy: 0
|
|
161
|
+
}, 4 * symbolTime, "linear");
|
|
162
|
+
"scale" === titlePanelType ? [ this._titleTopPanel, this._titleBottomPanel ].forEach((panel => {
|
|
163
|
+
const scaleX = panel.attribute.scaleX;
|
|
164
|
+
panel.setAttributes({
|
|
165
|
+
scaleX: 0
|
|
166
|
+
}), panel.animate().to({
|
|
167
|
+
scaleX: scaleX
|
|
168
|
+
}, duration, "circInOut");
|
|
169
|
+
})) : "stroke" === titlePanelType && [ this._titleTopPanel, this._titleBottomPanel ].forEach((panel => {
|
|
170
|
+
const b = panel.AABBBounds, totalLen = 2 * (b.width() + b.height());
|
|
171
|
+
panel.setAttributes({
|
|
172
|
+
lineDash: [ 0, 10 * totalLen ]
|
|
173
|
+
}), panel.animate().to({
|
|
174
|
+
lineDash: [ totalLen, 10 * totalLen ]
|
|
175
|
+
}, duration, "quadOut");
|
|
176
|
+
}));
|
|
177
|
+
}
|
|
178
|
+
disappearAnimate(animateConfig) {
|
|
179
|
+
if ("scale" === animateConfig.mode) {
|
|
180
|
+
const {duration: duration = 1e3, easing: easing = "quadOut"} = animateConfig;
|
|
181
|
+
this.animate().to({
|
|
182
|
+
scaleX: 0,
|
|
183
|
+
scaleY: 0
|
|
184
|
+
}, duration, easing);
|
|
185
|
+
} else {
|
|
186
|
+
const {duration: duration = 1e3, easing: easing = "quadOut"} = animateConfig;
|
|
187
|
+
this._line.animate().to({
|
|
188
|
+
clipRange: 0
|
|
189
|
+
}, duration, easing), this._symbolStart.animate().wait(duration / 2).to({
|
|
190
|
+
scaleX: 0,
|
|
191
|
+
scaleY: 0
|
|
192
|
+
}, duration / 2, easing), this._symbolEnd.animate().to({
|
|
193
|
+
scaleX: 0,
|
|
194
|
+
scaleY: 0
|
|
195
|
+
}, duration, easing), this._titleTop.animate().to({
|
|
196
|
+
dy: this._titleTop.AABBBounds.height() + 10
|
|
197
|
+
}, duration / 2, easing), this._titleBottom.animate().to({
|
|
198
|
+
dy: -(10 + this._titleBottom.AABBBounds.height())
|
|
199
|
+
}, duration / 2, easing), this._symbolStartOuter.animate().wait(duration / 2).to({
|
|
200
|
+
clipRange: 0
|
|
201
|
+
}, duration / 2, easing), this._titleTopPanel.animate().to({
|
|
202
|
+
scaleX: 0
|
|
203
|
+
}, duration, "circInOut"), this._titleBottomPanel.animate().to({
|
|
204
|
+
scaleX: 0
|
|
205
|
+
}, duration, "circInOut");
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
StoryLabelItem.defaultAttributes = {
|
|
211
|
+
contentOffsetX: 100,
|
|
212
|
+
contentOffsetY: -60,
|
|
213
|
+
titleTopStyle: {
|
|
214
|
+
fontSize: 12,
|
|
215
|
+
fill: "white"
|
|
216
|
+
},
|
|
217
|
+
titleBottomStyle: {
|
|
218
|
+
fontSize: 12,
|
|
219
|
+
fill: "white"
|
|
220
|
+
},
|
|
221
|
+
lineStyle: {
|
|
222
|
+
stroke: "white",
|
|
223
|
+
lineWidth: 1
|
|
224
|
+
},
|
|
225
|
+
symbolStartStyle: {
|
|
226
|
+
symbolType: "circle",
|
|
227
|
+
size: 3,
|
|
228
|
+
fill: "white"
|
|
229
|
+
},
|
|
230
|
+
symbolEndStyle: {
|
|
231
|
+
symbolType: "circle",
|
|
232
|
+
size: 3,
|
|
233
|
+
fill: "white"
|
|
234
|
+
},
|
|
235
|
+
symbolStartOuterStyle: {
|
|
236
|
+
symbolType: "M0.5,0A0.5,0.5,0,1,1,-0.5,0A0.5,0.5,0,1,1,0.5,0",
|
|
237
|
+
size: 8,
|
|
238
|
+
stroke: "white"
|
|
239
|
+
},
|
|
240
|
+
titleSpace: [ 2, 2 ],
|
|
241
|
+
titleTopPanelStyle: {
|
|
242
|
+
visible: !1,
|
|
243
|
+
padding: {
|
|
244
|
+
left: 0,
|
|
245
|
+
right: 0,
|
|
246
|
+
bottom: 2,
|
|
247
|
+
top: 2
|
|
248
|
+
},
|
|
249
|
+
cornerRadius: 3
|
|
250
|
+
},
|
|
251
|
+
titleBottomPanelStyle: {
|
|
252
|
+
visible: !1,
|
|
253
|
+
padding: {
|
|
254
|
+
left: 0,
|
|
255
|
+
right: 0,
|
|
256
|
+
bottom: 2,
|
|
257
|
+
top: 2
|
|
258
|
+
},
|
|
259
|
+
cornerRadius: 3
|
|
260
|
+
},
|
|
261
|
+
theme: "default"
|
|
262
|
+
};
|
|
263
|
+
//# sourceMappingURL=label-item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/label-item/label-item.ts"],"names":[],"mappings":"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","file":"label-item.js","sourcesContent":["import type {\n IGroup,\n ILine,\n ILineGraphicAttribute,\n IRect,\n ISymbol,\n ISymbolGraphicAttribute,\n IText\n} from '@visactor/vrender-core';\nimport { ILineAttribute, InputText, ISymbolAttribute } from '@visactor/vrender-core';\nimport { AbstractComponent } from '../core/base';\nimport type { IStoryLabelItemAttrs } from './type';\nimport type { ComponentOptions } from '../interface';\nimport { max, merge } from '@visactor/vutils';\n\nexport class StoryLabelItem extends AbstractComponent<Required<IStoryLabelItemAttrs>> {\n name: 'labelItem';\n private _line?: ILine;\n private _symbolStart: ISymbol;\n private _symbolEnd: ISymbol;\n private _symbolStartOuter: ISymbol;\n private _titleTop: IText;\n private _titleBottom: IText;\n private _titleTopPanel: IRect;\n private _titleBottomPanel: IRect;\n\n static defaultAttributes: Partial<IStoryLabelItemAttrs> = {\n // 内容在X上的偏移量\n contentOffsetX: 100,\n // 内容在Y上的偏移量\n contentOffsetY: -60,\n titleTopStyle: {\n fontSize: 12,\n fill: 'white'\n },\n titleBottomStyle: {\n fontSize: 12,\n fill: 'white'\n },\n lineStyle: {\n stroke: 'white',\n lineWidth: 1\n } as ILineGraphicAttribute,\n // 线段开始端点的样式\n symbolStartStyle: {\n symbolType: 'circle',\n size: 3,\n fill: 'white'\n } as Partial<ISymbolGraphicAttribute>,\n // 线段结束端点的样式\n symbolEndStyle: {\n symbolType: 'circle',\n size: 3,\n fill: 'white'\n } as Partial<ISymbolGraphicAttribute>,\n // 线段开始端点外面包裹symbol的样式\n symbolStartOuterStyle: {\n symbolType: 'M0.5,0A0.5,0.5,0,1,1,-0.5,0A0.5,0.5,0,1,1,0.5,0',\n size: 8,\n stroke: 'white'\n } as Partial<ISymbolGraphicAttribute>,\n titleSpace: [2, 2],\n titleTopPanelStyle: {\n visible: false,\n padding: { left: 0, right: 0, bottom: 2, top: 2 },\n cornerRadius: 3\n },\n titleBottomPanelStyle: {\n visible: false,\n padding: { left: 0, right: 0, bottom: 2, top: 2 },\n cornerRadius: 3\n },\n // 默认和简约两套主题\n theme: 'default'\n };\n\n constructor(attributes: IStoryLabelItemAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, StoryLabelItem.defaultAttributes, attributes));\n }\n\n protected render(): void {\n const {\n contentOffsetX,\n contentOffsetY,\n lineStyle,\n symbolStartStyle,\n symbolEndStyle,\n symbolStartOuterStyle,\n titleTop: titleTopText,\n titleBottom: titleBottomText,\n titleTopStyle,\n titleBottomStyle,\n titleSpace,\n titleTopPanelStyle,\n titleBottomPanelStyle,\n theme\n } = this.attribute;\n\n const group = this.createOrUpdateChild('label-item-container', { x: 0, y: 0, zIndex: 1 }, 'group') as IGroup;\n\n const symbolStart = group.createOrUpdateChild(\n 'label-item-symbol-start',\n { x: 0, y: 0, ...symbolStartStyle },\n 'symbol'\n ) as ISymbol;\n const symbolEnd = group.createOrUpdateChild(\n 'label-item-symbol-end',\n { x: contentOffsetX, y: contentOffsetY, ...symbolEndStyle },\n 'symbol'\n ) as ISymbol;\n const symbolStartOut = group.createOrUpdateChild(\n 'label-item-symbol-start-out',\n { x: 0, y: 0, ...symbolStartOuterStyle },\n 'symbol'\n ) as ISymbol;\n\n const spaceW = titleSpace[0];\n const spaceH = titleSpace[1];\n // 逻辑:group占满,title在group内做偏移\n const titleTopGroup = group.createOrUpdateChild(\n 'label-item-title-top-group',\n { x: contentOffsetX, y: contentOffsetY, clip: true },\n 'group'\n ) as IGroup;\n const titleTop = titleTopGroup.createOrUpdateChild(\n 'label-item-title-top',\n {\n x: spaceW,\n y: -spaceH,\n text: titleTopText,\n ...titleTopStyle,\n textBaseline: 'bottom',\n textAlign: 'left',\n zIndex: 10\n },\n 'text'\n ) as IText;\n const titleTopBounds = titleTop.AABBBounds;\n if (contentOffsetX > 0) {\n titleTopGroup.setAttributes({ x: contentOffsetX - titleTopBounds.width() - spaceW * 2 });\n }\n titleTopGroup.setAttributes({\n width: titleTopBounds.width() + spaceW * 2,\n height: -titleTopBounds.height() - spaceH * 2\n });\n // 添加panel\n const titleTopPanel = titleTopGroup.createOrUpdateChild(\n 'label-item-title-top-panel',\n {\n ...titleTopPanelStyle,\n x: titleTopPanelStyle.padding.left,\n y: (titleTopGroup.attribute.height > 0 ? 0 : titleTopGroup.attribute.height) + titleTopPanelStyle.padding.top,\n width: titleTopGroup.attribute.width - titleTopPanelStyle.padding.left - titleTopPanelStyle.padding.right,\n height:\n (titleTopGroup.attribute.height > 0 ? 1 : -1) * titleTopGroup.attribute.height -\n titleTopPanelStyle.padding.bottom -\n titleTopPanelStyle.padding.top,\n scaleCenter: [titleTopGroup.attribute.width / 2, titleTopGroup.attribute.height / 2]\n },\n 'rect'\n ) as IRect;\n this._titleTopPanel = titleTopPanel;\n\n const titleBottomGroup = group.createOrUpdateChild(\n 'label-item-title-bottom-group',\n { x: contentOffsetX, y: contentOffsetY, clip: true },\n 'group'\n ) as IGroup;\n const titleBottom = titleBottomGroup.createOrUpdateChild(\n 'label-item-title-bottom',\n {\n x: spaceW,\n y: spaceH,\n text: titleBottomText,\n ...titleBottomStyle,\n textBaseline: 'top',\n textAlign: 'left',\n zIndex: 10\n },\n 'text'\n ) as IText;\n const titleBottomBounds = titleBottom.AABBBounds;\n if (contentOffsetX > 0) {\n titleBottomGroup.setAttributes({ x: contentOffsetX - titleBottomBounds.width() - spaceW * 2 });\n }\n titleBottomGroup.setAttributes({\n width: titleBottomBounds.width() + spaceW * 2,\n height: titleTopBounds.height() + spaceH * 2\n });\n // 添加panel\n const titleBottomPanel = titleBottomGroup.createOrUpdateChild(\n 'label-item-title-bottom-panel',\n {\n ...titleBottomPanelStyle,\n x: titleBottomPanelStyle.padding.left,\n y:\n (titleBottomGroup.attribute.height > 0 ? 0 : titleBottomGroup.attribute.height) +\n titleBottomPanelStyle.padding.top,\n width:\n titleBottomGroup.attribute.width - titleBottomPanelStyle.padding.left - titleBottomPanelStyle.padding.right,\n height:\n (titleBottomGroup.attribute.height > 0 ? 1 : -1) * titleBottomGroup.attribute.height -\n titleBottomPanelStyle.padding.bottom -\n titleBottomPanelStyle.padding.top,\n scaleCenter: [titleBottomGroup.attribute.width / 2, titleBottomGroup.attribute.height / 2]\n },\n 'rect'\n ) as IRect;\n this._titleBottomPanel = titleBottomPanel;\n\n const maxTextWidth = Math.max(titleTop.AABBBounds.width(), titleBottom.AABBBounds.width()) + spaceW * 2;\n const points = [\n { x: 0, y: 0 },\n contentOffsetX > 0\n ? { x: contentOffsetX - maxTextWidth, y: contentOffsetY }\n : { x: contentOffsetX + maxTextWidth, y: contentOffsetY },\n { x: contentOffsetX, y: contentOffsetY }\n ];\n // simple风格,不绘制终点,同时文字也要居中\n if (theme === 'simple') {\n points.pop();\n const p = points[1];\n symbolEnd.setAttributes(p);\n }\n const line = group.createOrUpdateChild('label-item-line', { x: 0, y: 0, ...lineStyle, points }, 'line') as ILine;\n\n this._symbolEnd = symbolEnd;\n this._symbolStart = symbolStart;\n this._symbolStartOuter = symbolStartOut;\n this._titleTop = titleTop;\n this._titleBottom = titleBottom;\n this._line = line;\n }\n\n appearAnimate(animateConfig: {\n duration?: number;\n easing?: string;\n symbolStartOuterType?: 'scale' | 'clipRange';\n titleType?: 'typewriter' | 'move';\n titlePanelType?: 'scale' | 'stroke';\n }) {\n const {\n duration = 1000,\n easing = 'quadOut',\n symbolStartOuterType = 'scale',\n titleType = 'typewriter',\n titlePanelType = 'scale'\n } = animateConfig;\n const symbolTime = duration / 10;\n this._symbolStart.setAttributes({ scaleX: 0, scaleY: 0 });\n this._symbolStart.animate().to({ scaleX: 1, scaleY: 1 }, symbolTime * 5, easing as any);\n\n let symbolStartOuterFrom: ISymbolGraphicAttribute;\n let symbolStartOuterTo: ISymbolGraphicAttribute;\n if (symbolStartOuterType === 'scale') {\n symbolStartOuterFrom = { scaleX: 0, scaleY: 0 };\n symbolStartOuterTo = { scaleX: 1, scaleY: 1 };\n } else {\n symbolStartOuterFrom = { clipRange: 0 };\n symbolStartOuterTo = { clipRange: 1 };\n }\n this._symbolStartOuter.setAttributes(symbolStartOuterFrom);\n this._symbolStartOuter.animate().to(symbolStartOuterTo, symbolTime * 5, easing as any);\n\n this._symbolEnd.setAttributes({ scaleX: 0, scaleY: 0 });\n this._symbolEnd\n .animate()\n .wait(symbolTime * 8)\n .to({ scaleX: 1, scaleY: 1 }, symbolTime * 2, easing as any);\n\n this._line.setAttributes({ clipRange: 0 });\n this._line.animate().to({ clipRange: 1 }, symbolTime * 9, easing as any);\n\n if (titleType === 'typewriter') {\n const titleTopText = this._titleTop.attribute.text as string;\n this._titleTop.setAttributes({ text: '' });\n this._titleTop\n .animate()\n .wait(symbolTime * 5)\n .play(new InputText({ text: '' }, { text: titleTopText }, symbolTime * 4, 'linear'));\n\n const titleBottomText = this._titleBottom.attribute.text as string;\n this._titleBottom.setAttributes({ text: '' });\n this._titleBottom\n .animate()\n .wait(symbolTime * 5)\n .play(new InputText({ text: '' }, { text: titleBottomText }, symbolTime * 4, 'linear'));\n } else {\n this._titleTop.setAttributes({ dy: this._titleTop.AABBBounds.height() + 10 });\n this._titleTop\n .animate()\n .wait(symbolTime * 5)\n .to({ dy: 0 }, symbolTime * 4, 'linear');\n\n this._titleBottom.setAttributes({ dy: -(10 + this._titleBottom.AABBBounds.height()) });\n this._titleBottom\n .animate()\n .wait(symbolTime * 5)\n .to({ dy: 0 }, symbolTime * 4, 'linear');\n }\n\n if (titlePanelType === 'scale') {\n [this._titleTopPanel, this._titleBottomPanel].forEach(panel => {\n const scaleX = panel.attribute.scaleX;\n panel.setAttributes({ scaleX: 0 });\n panel.animate().to({ scaleX }, duration, 'circInOut');\n });\n } else if (titlePanelType === 'stroke') {\n [this._titleTopPanel, this._titleBottomPanel].forEach(panel => {\n const b = panel.AABBBounds;\n const totalLen = (b.width() + b.height()) * 2;\n panel.setAttributes({ lineDash: [0, totalLen * 10] });\n panel.animate().to({ lineDash: [totalLen, totalLen * 10] }, duration, 'quadOut');\n });\n }\n }\n\n disappearAnimate(animateConfig: { duration?: number; easing?: string; mode?: 'scale' | 'default' }) {\n if (animateConfig.mode === 'scale') {\n const { duration = 1000, easing = 'quadOut' } = animateConfig;\n this.animate().to({ scaleX: 0, scaleY: 0 }, duration, easing as any);\n } else {\n const { duration = 1000, easing = 'quadOut' } = animateConfig;\n this._line.animate().to({ clipRange: 0 }, duration, easing as any);\n this._symbolStart\n .animate()\n .wait(duration / 2)\n .to({ scaleX: 0, scaleY: 0 }, duration / 2, easing as any);\n this._symbolEnd.animate().to({ scaleX: 0, scaleY: 0 }, duration, easing as any);\n this._titleTop.animate().to({ dy: this._titleTop.AABBBounds.height() + 10 }, duration / 2, easing as any);\n this._titleBottom\n .animate()\n .to({ dy: -(10 + this._titleBottom.AABBBounds.height()) }, duration / 2, easing as any);\n this._symbolStartOuter\n .animate()\n .wait(duration / 2)\n .to({ clipRange: 0 }, duration / 2, easing as any);\n this._titleTopPanel.animate().to({ scaleX: 0 }, duration, 'circInOut');\n this._titleBottomPanel.animate().to({ scaleX: 0 }, duration, 'circInOut');\n }\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function loadLabelItemComponent(): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/label-item/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEnG,MAAM,UAAU,sBAAsB;IACpC,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;IACf,cAAc,EAAE,CAAC;IACjB,YAAY,EAAE,CAAC;AACjB,CAAC","file":"register.js","sourcesContent":["import { registerGroup, registerSymbol, registerLine, registerText } from '@visactor/vrender-kits';\n\nexport function loadLabelItemComponent() {\n registerGroup();\n registerText();\n registerSymbol();\n registerLine();\n}\n"]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { IGroupGraphicAttribute, ILineGraphicAttribute, IRectGraphicAttribute, ISymbolGraphicAttribute, ITextGraphicAttribute } from '@visactor/vrender-core';
|
|
2
|
+
export interface IStoryLabelItemAttrs extends IGroupGraphicAttribute {
|
|
3
|
+
contentOffsetX: number;
|
|
4
|
+
contentOffsetY: number;
|
|
5
|
+
lineStyle?: ILineGraphicAttribute;
|
|
6
|
+
symbolStartStyle?: ISymbolGraphicAttribute;
|
|
7
|
+
symbolEndStyle?: ISymbolGraphicAttribute;
|
|
8
|
+
symbolStartOuterStyle?: ISymbolGraphicAttribute;
|
|
9
|
+
theme?: 'default' | 'simple';
|
|
10
|
+
titleTop?: string | string[];
|
|
11
|
+
titleBottom?: string | string[];
|
|
12
|
+
titleTopStyle?: ITextGraphicAttribute;
|
|
13
|
+
titleBottomStyle?: ITextGraphicAttribute;
|
|
14
|
+
titleSpace?: [number, number];
|
|
15
|
+
titleTopPanelStyle?: IRectGraphicAttribute & {
|
|
16
|
+
padding: {
|
|
17
|
+
left: number;
|
|
18
|
+
right: number;
|
|
19
|
+
top: number;
|
|
20
|
+
bottom: number;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
titleBottomPanelStyle?: IRectGraphicAttribute & {
|
|
24
|
+
padding: {
|
|
25
|
+
left: number;
|
|
26
|
+
right: number;
|
|
27
|
+
top: number;
|
|
28
|
+
bottom: number;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/label-item/type.ts"],"names":[],"mappings":"","file":"type.js","sourcesContent":["import type {\n IGroupGraphicAttribute,\n ILineGraphicAttribute,\n IRectGraphicAttribute,\n ISymbolGraphicAttribute,\n ITextGraphicAttribute\n} from '@visactor/vrender-core';\nimport { ILineAttribute, ISymbolAttribute } from '@visactor/vrender-core';\n\nexport interface IStoryLabelItemAttrs extends IGroupGraphicAttribute {\n // 内容在X上的偏移量\n contentOffsetX: number;\n // 内容在Y上的偏移量\n contentOffsetY: number;\n lineStyle?: ILineGraphicAttribute;\n // 线段开始端点的样式\n symbolStartStyle?: ISymbolGraphicAttribute;\n // 线段结束端点的样式\n symbolEndStyle?: ISymbolGraphicAttribute;\n // 线段开始端点外面包裹symbol的样式\n symbolStartOuterStyle?: ISymbolGraphicAttribute;\n // 默认和简约两套主题\n theme?: 'default' | 'simple';\n // 顶部文字内容\n titleTop?: string | string[];\n // 底部文字内容\n titleBottom?: string | string[];\n // 顶部文字样式\n titleTopStyle?: ITextGraphicAttribute;\n // 底部文字样式\n titleBottomStyle?: ITextGraphicAttribute;\n // 水平和垂直方向的边距\n titleSpace?: [number, number];\n // 顶部的panel\n titleTopPanelStyle?: IRectGraphicAttribute & {\n padding: { left: number; right: number; top: number; bottom: number };\n };\n // 底部的panel\n titleBottomPanelStyle?: IRectGraphicAttribute & {\n padding: { left: number; right: number; top: number; bottom: number };\n };\n}\n"]}
|
package/es/poptip/poptip.d.ts
CHANGED
|
@@ -1,15 +1,27 @@
|
|
|
1
|
+
import { type IGroup, type IText } from '@visactor/vrender-core';
|
|
1
2
|
import { AbstractComponent } from '../core/base';
|
|
2
3
|
import type { ComponentOptions } from '../interface';
|
|
3
4
|
import type { PopTipAttributes } from './type';
|
|
4
5
|
export declare class PopTip extends AbstractComponent<Required<PopTipAttributes>> {
|
|
5
6
|
name: string;
|
|
6
7
|
static defaultAttributes: Partial<PopTipAttributes>;
|
|
8
|
+
titleShape?: IText;
|
|
9
|
+
contentShape?: IText;
|
|
10
|
+
group?: IGroup;
|
|
7
11
|
constructor(attributes: PopTipAttributes, options?: ComponentOptions);
|
|
8
12
|
protected render(): void;
|
|
9
13
|
positionList: string[];
|
|
10
|
-
getAngleAndOffset(position: string, width: number, height: number, size: [number, number]): {
|
|
14
|
+
getAngleAndOffset(position: string, width: number, height: number, size: [number, number], symbolType: 'arrow2Left' | string): {
|
|
11
15
|
angle: number;
|
|
12
16
|
offset: [number, number];
|
|
13
|
-
rectOffset: [number, number];
|
|
14
17
|
};
|
|
18
|
+
appearAnimate(animateConfig: {
|
|
19
|
+
duration?: number;
|
|
20
|
+
easing?: string;
|
|
21
|
+
wave?: number;
|
|
22
|
+
}): void;
|
|
23
|
+
disappearAnimate(animateConfig: {
|
|
24
|
+
duration?: number;
|
|
25
|
+
easing?: string;
|
|
26
|
+
}): void;
|
|
15
27
|
}
|