hudini 0.11.1 → 0.12.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/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/radial-progress/index.d.ts +2 -0
- package/dist/components/radial-progress/index.d.ts.map +1 -0
- package/dist/components/radial-progress/index.js +2 -0
- package/dist/components/radial-progress/index.js.map +1 -0
- package/dist/components/radial-progress/radial-progress.d.ts +115 -0
- package/dist/components/radial-progress/radial-progress.d.ts.map +1 -0
- package/dist/components/radial-progress/radial-progress.js +293 -0
- package/dist/components/radial-progress/radial-progress.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,OAAO,CAAC;AACtB,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,OAAO,CAAC;AACtB,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
|
package/dist/components/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,OAAO,CAAC;AACtB,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,OAAO,CAAC;AACtB,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/radial-progress/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/radial-progress/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { GameObjects, Scene } from 'phaser';
|
|
2
|
+
import { FontSizeKey, type ColorToken } from 'phaser-wind';
|
|
3
|
+
export type RadialProgressParams = {
|
|
4
|
+
/** The scene this progress bar belongs to */
|
|
5
|
+
scene: Scene;
|
|
6
|
+
/** X coordinate of the progress bar */
|
|
7
|
+
x: number;
|
|
8
|
+
/** Y coordinate of the progress bar */
|
|
9
|
+
y: number;
|
|
10
|
+
/** Radius of the progress bar in pixels */
|
|
11
|
+
radius: number;
|
|
12
|
+
/** Background color of the progress bar track */
|
|
13
|
+
backgroundColor?: ColorToken;
|
|
14
|
+
/** Alpha of the background color */
|
|
15
|
+
backgroundAlpha?: number;
|
|
16
|
+
/** Color of the progress bar fill */
|
|
17
|
+
progressColor?: ColorToken;
|
|
18
|
+
/** Thickness of the progress bar in pixels */
|
|
19
|
+
thickness?: number;
|
|
20
|
+
/** Initial progress value (0-100) */
|
|
21
|
+
progress?: number;
|
|
22
|
+
/** Start angle of the progress bar in degrees */
|
|
23
|
+
startAngle?: number;
|
|
24
|
+
/** Whether to show the percentage text in the center */
|
|
25
|
+
showText?: boolean;
|
|
26
|
+
/** Color of the percentage text */
|
|
27
|
+
textColor?: ColorToken;
|
|
28
|
+
/** Font size of the percentage text */
|
|
29
|
+
fontSize?: FontSizeKey;
|
|
30
|
+
/** Alpha of the percentage text */
|
|
31
|
+
textAlpha?: number;
|
|
32
|
+
};
|
|
33
|
+
export declare class RadialProgress extends GameObjects.Container {
|
|
34
|
+
backgroundProgressBar: GameObjects.Graphics;
|
|
35
|
+
progressBar: GameObjects.Graphics;
|
|
36
|
+
radialArc: GameObjects.Graphics;
|
|
37
|
+
percentageText?: GameObjects.Text | undefined;
|
|
38
|
+
private pw;
|
|
39
|
+
private radius;
|
|
40
|
+
private thickness;
|
|
41
|
+
private backgroundColor;
|
|
42
|
+
private backgroundAlpha;
|
|
43
|
+
private progressColor;
|
|
44
|
+
private currentProgress;
|
|
45
|
+
private startAngle;
|
|
46
|
+
private showText;
|
|
47
|
+
private textColor;
|
|
48
|
+
private fontSize;
|
|
49
|
+
private textAlpha;
|
|
50
|
+
constructor({ scene, x, y, radius, thickness, backgroundColor, backgroundAlpha, progressColor, progress, startAngle, showText, textColor, fontSize, textAlpha, }: RadialProgressParams);
|
|
51
|
+
/**
|
|
52
|
+
* Sets the progress value (0-100)
|
|
53
|
+
* @param progress Progress value between 0 and 100
|
|
54
|
+
* @param animate Whether to animate the change (default: true)
|
|
55
|
+
*/
|
|
56
|
+
setProgress(progress: number, animate?: boolean): this;
|
|
57
|
+
/**
|
|
58
|
+
* Gets the current progress value
|
|
59
|
+
* @returns Current progress value (0-100)
|
|
60
|
+
*/
|
|
61
|
+
getProgress(): number;
|
|
62
|
+
/**
|
|
63
|
+
* Sets the background color of the progress bar
|
|
64
|
+
* @param color Background color token
|
|
65
|
+
*/
|
|
66
|
+
setBackgroundColor(color: ColorToken): this;
|
|
67
|
+
/**
|
|
68
|
+
* Sets the background alpha of the progress bar
|
|
69
|
+
* @param alpha Background alpha value (0-1)
|
|
70
|
+
*/
|
|
71
|
+
setBackgroundAlpha(alpha: number): this;
|
|
72
|
+
/**
|
|
73
|
+
* Sets the progress color of the progress bar
|
|
74
|
+
* @param color Progress color token
|
|
75
|
+
*/
|
|
76
|
+
setProgressColor(color: ColorToken): this;
|
|
77
|
+
/**
|
|
78
|
+
* Sets whether to show the percentage text
|
|
79
|
+
* @param show Whether to show the text
|
|
80
|
+
*/
|
|
81
|
+
setShowText(show: boolean): this;
|
|
82
|
+
/**
|
|
83
|
+
* Sets the text color
|
|
84
|
+
* @param color Text color token
|
|
85
|
+
*/
|
|
86
|
+
setTextColor(color: ColorToken): this;
|
|
87
|
+
/**
|
|
88
|
+
* Sets the font size
|
|
89
|
+
* @param size Font size in pixels
|
|
90
|
+
*/
|
|
91
|
+
setFontSize(size: FontSizeKey): this;
|
|
92
|
+
/**
|
|
93
|
+
* Sets the text alpha
|
|
94
|
+
* @param alpha Alpha value (0-1)
|
|
95
|
+
*/
|
|
96
|
+
setTextAlpha(alpha: number): this;
|
|
97
|
+
/**
|
|
98
|
+
* Sets the radius of the progress bar
|
|
99
|
+
* @param radius New radius in pixels
|
|
100
|
+
*/
|
|
101
|
+
setRadius(radius: number): this;
|
|
102
|
+
/**
|
|
103
|
+
* Destroys the component and cleans up animations
|
|
104
|
+
*/
|
|
105
|
+
destroy(): void;
|
|
106
|
+
private createBackgroundSprite;
|
|
107
|
+
private createRadialArc;
|
|
108
|
+
private createPercentageText;
|
|
109
|
+
setThickness(thickness: number): void;
|
|
110
|
+
private setupContainer;
|
|
111
|
+
private updateProgressBar;
|
|
112
|
+
private updatePercentageText;
|
|
113
|
+
private recreateSprites;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=radial-progress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radial-progress.d.ts","sourceRoot":"","sources":["../../../src/components/radial-progress/radial-progress.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
2
|
+
import { GameObjects } from 'phaser';
|
|
3
|
+
import { getPWFromScene } from '../../utils/get-pw-from-scene';
|
|
4
|
+
const A_HUNDRED = 100;
|
|
5
|
+
const THREE_SIXTY = 360;
|
|
6
|
+
const START_ANGLE = 270;
|
|
7
|
+
const DEFAULT_THICKNESS = 4;
|
|
8
|
+
const DEFAULT_BACKGROUND_ALPHA = 0.2;
|
|
9
|
+
const DEFAULT_TEXT_COLOR = 'white';
|
|
10
|
+
const DEFAULT_FONT_SIZE = 'base';
|
|
11
|
+
const DEFAULT_TEXT_ALPHA = 1;
|
|
12
|
+
export class RadialProgress extends GameObjects.Container {
|
|
13
|
+
backgroundProgressBar;
|
|
14
|
+
progressBar;
|
|
15
|
+
radialArc;
|
|
16
|
+
percentageText;
|
|
17
|
+
pw;
|
|
18
|
+
radius;
|
|
19
|
+
thickness;
|
|
20
|
+
backgroundColor;
|
|
21
|
+
backgroundAlpha;
|
|
22
|
+
progressColor;
|
|
23
|
+
currentProgress;
|
|
24
|
+
startAngle;
|
|
25
|
+
showText;
|
|
26
|
+
textColor;
|
|
27
|
+
fontSize;
|
|
28
|
+
textAlpha;
|
|
29
|
+
constructor({ scene, x, y, radius, thickness = DEFAULT_THICKNESS, backgroundColor = 'gray-200', backgroundAlpha = DEFAULT_BACKGROUND_ALPHA, progressColor = 'blue-500', progress = 0, startAngle = START_ANGLE, showText = false, textColor = DEFAULT_TEXT_COLOR, fontSize = DEFAULT_FONT_SIZE, textAlpha = DEFAULT_TEXT_ALPHA, }) {
|
|
30
|
+
super(scene, x, y);
|
|
31
|
+
this.pw = getPWFromScene(scene);
|
|
32
|
+
this.radius = radius;
|
|
33
|
+
this.thickness = thickness;
|
|
34
|
+
this.backgroundColor = backgroundColor;
|
|
35
|
+
this.backgroundAlpha = backgroundAlpha;
|
|
36
|
+
this.progressColor = progressColor;
|
|
37
|
+
this.currentProgress = Math.max(0, Math.min(A_HUNDRED, progress));
|
|
38
|
+
this.startAngle = startAngle;
|
|
39
|
+
this.showText = showText;
|
|
40
|
+
this.textColor = textColor;
|
|
41
|
+
this.fontSize = fontSize;
|
|
42
|
+
this.textAlpha = textAlpha;
|
|
43
|
+
this.createBackgroundSprite();
|
|
44
|
+
this.createRadialArc();
|
|
45
|
+
if (this.showText) {
|
|
46
|
+
this.createPercentageText();
|
|
47
|
+
}
|
|
48
|
+
this.setupContainer();
|
|
49
|
+
this.updateProgressBar();
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Sets the progress value (0-100)
|
|
53
|
+
* @param progress Progress value between 0 and 100
|
|
54
|
+
* @param animate Whether to animate the change (default: true)
|
|
55
|
+
*/
|
|
56
|
+
setProgress(progress, animate = true) {
|
|
57
|
+
const newProgress = Math.max(0, Math.min(A_HUNDRED, progress));
|
|
58
|
+
if (this.currentProgress === newProgress) {
|
|
59
|
+
return this;
|
|
60
|
+
}
|
|
61
|
+
if (animate) {
|
|
62
|
+
const target = { value: this.currentProgress };
|
|
63
|
+
this.scene.tweens.add({
|
|
64
|
+
targets: target,
|
|
65
|
+
value: newProgress,
|
|
66
|
+
duration: 300,
|
|
67
|
+
ease: 'Power2',
|
|
68
|
+
onUpdate: () => {
|
|
69
|
+
this.currentProgress = target.value;
|
|
70
|
+
this.updateProgressBar();
|
|
71
|
+
this.updatePercentageText();
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
this.currentProgress = newProgress;
|
|
77
|
+
this.updateProgressBar();
|
|
78
|
+
this.updatePercentageText();
|
|
79
|
+
}
|
|
80
|
+
return this;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Gets the current progress value
|
|
84
|
+
* @returns Current progress value (0-100)
|
|
85
|
+
*/
|
|
86
|
+
getProgress() {
|
|
87
|
+
return this.currentProgress;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Sets the background color of the progress bar
|
|
91
|
+
* @param color Background color token
|
|
92
|
+
*/
|
|
93
|
+
setBackgroundColor(color) {
|
|
94
|
+
if (this.backgroundColor === color) {
|
|
95
|
+
return this;
|
|
96
|
+
}
|
|
97
|
+
this.backgroundColor = color;
|
|
98
|
+
this.recreateSprites();
|
|
99
|
+
return this;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Sets the background alpha of the progress bar
|
|
103
|
+
* @param alpha Background alpha value (0-1)
|
|
104
|
+
*/
|
|
105
|
+
setBackgroundAlpha(alpha) {
|
|
106
|
+
if (this.backgroundAlpha === alpha) {
|
|
107
|
+
return this;
|
|
108
|
+
}
|
|
109
|
+
this.backgroundAlpha = alpha;
|
|
110
|
+
this.recreateSprites();
|
|
111
|
+
return this;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Sets the progress color of the progress bar
|
|
115
|
+
* @param color Progress color token
|
|
116
|
+
*/
|
|
117
|
+
setProgressColor(color) {
|
|
118
|
+
if (this.progressColor === color) {
|
|
119
|
+
return this;
|
|
120
|
+
}
|
|
121
|
+
this.progressColor = color;
|
|
122
|
+
this.recreateSprites();
|
|
123
|
+
return this;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Sets whether to show the percentage text
|
|
127
|
+
* @param show Whether to show the text
|
|
128
|
+
*/
|
|
129
|
+
setShowText(show) {
|
|
130
|
+
if (this.showText === show) {
|
|
131
|
+
return this;
|
|
132
|
+
}
|
|
133
|
+
this.showText = show;
|
|
134
|
+
if (show && !this.percentageText) {
|
|
135
|
+
this.createPercentageText();
|
|
136
|
+
if (this.percentageText) {
|
|
137
|
+
this.add(this.percentageText);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else if (!show && this.percentageText) {
|
|
141
|
+
this.remove(this.percentageText);
|
|
142
|
+
this.percentageText.destroy();
|
|
143
|
+
this.percentageText = undefined;
|
|
144
|
+
}
|
|
145
|
+
return this;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Sets the text color
|
|
149
|
+
* @param color Text color token
|
|
150
|
+
*/
|
|
151
|
+
setTextColor(color) {
|
|
152
|
+
if (this.textColor === color) {
|
|
153
|
+
return this;
|
|
154
|
+
}
|
|
155
|
+
this.textColor = color;
|
|
156
|
+
if (this.percentageText) {
|
|
157
|
+
this.percentageText.destroy();
|
|
158
|
+
this.createPercentageText();
|
|
159
|
+
this.add(this.percentageText);
|
|
160
|
+
}
|
|
161
|
+
return this;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Sets the font size
|
|
165
|
+
* @param size Font size in pixels
|
|
166
|
+
*/
|
|
167
|
+
setFontSize(size) {
|
|
168
|
+
if (this.fontSize === size) {
|
|
169
|
+
return this;
|
|
170
|
+
}
|
|
171
|
+
this.fontSize = size;
|
|
172
|
+
if (this.percentageText) {
|
|
173
|
+
this.percentageText.destroy();
|
|
174
|
+
this.createPercentageText();
|
|
175
|
+
this.add(this.percentageText);
|
|
176
|
+
}
|
|
177
|
+
return this;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Sets the text alpha
|
|
181
|
+
* @param alpha Alpha value (0-1)
|
|
182
|
+
*/
|
|
183
|
+
setTextAlpha(alpha) {
|
|
184
|
+
if (this.textAlpha === alpha) {
|
|
185
|
+
return this;
|
|
186
|
+
}
|
|
187
|
+
this.textAlpha = alpha;
|
|
188
|
+
if (this.percentageText) {
|
|
189
|
+
this.percentageText.setAlpha(this.textAlpha);
|
|
190
|
+
}
|
|
191
|
+
return this;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Sets the radius of the progress bar
|
|
195
|
+
* @param radius New radius in pixels
|
|
196
|
+
*/
|
|
197
|
+
setRadius(radius) {
|
|
198
|
+
if (this.radius === radius) {
|
|
199
|
+
return this;
|
|
200
|
+
}
|
|
201
|
+
this.radius = radius;
|
|
202
|
+
this.recreateSprites();
|
|
203
|
+
return this;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Destroys the component and cleans up animations
|
|
207
|
+
*/
|
|
208
|
+
destroy() {
|
|
209
|
+
super.destroy();
|
|
210
|
+
}
|
|
211
|
+
createBackgroundSprite() {
|
|
212
|
+
const bgGraphic = this.scene.add.graphics();
|
|
213
|
+
// Draw a circle with alpha background
|
|
214
|
+
bgGraphic.fillStyle(this.pw.color.hex(this.backgroundColor), this.backgroundAlpha);
|
|
215
|
+
bgGraphic.beginPath();
|
|
216
|
+
bgGraphic.arc(0, 0, this.radius, 0, Phaser.Math.PI2, false);
|
|
217
|
+
bgGraphic.closePath();
|
|
218
|
+
bgGraphic.fillPath();
|
|
219
|
+
this.backgroundProgressBar = bgGraphic;
|
|
220
|
+
}
|
|
221
|
+
createRadialArc() {
|
|
222
|
+
const graphics = this.scene.add.graphics();
|
|
223
|
+
graphics.lineStyle(this.thickness, this.pw.color.hex(this.progressColor), 1);
|
|
224
|
+
graphics.beginPath();
|
|
225
|
+
graphics.arc(0, 0, this.radius, this.startAngle, Phaser.Math.DegToRad(THREE_SIXTY), true);
|
|
226
|
+
graphics.strokePath();
|
|
227
|
+
this.radialArc = graphics;
|
|
228
|
+
}
|
|
229
|
+
createPercentageText() {
|
|
230
|
+
this.percentageText = this.scene.add.text(0, 0, `${Math.round(this.currentProgress)}%`, {
|
|
231
|
+
fontSize: this.pw.fontSize.css(this.fontSize),
|
|
232
|
+
color: this.pw.color.rgb(this.textColor),
|
|
233
|
+
fontStyle: 'bold',
|
|
234
|
+
});
|
|
235
|
+
this.percentageText.setOrigin(0.5);
|
|
236
|
+
this.percentageText.setAlpha(this.textAlpha);
|
|
237
|
+
}
|
|
238
|
+
setThickness(thickness) {
|
|
239
|
+
this.thickness = thickness;
|
|
240
|
+
this.recreateSprites();
|
|
241
|
+
}
|
|
242
|
+
setupContainer() {
|
|
243
|
+
const children = [this.backgroundProgressBar, this.radialArc];
|
|
244
|
+
if (this.percentageText) {
|
|
245
|
+
children.push(this.percentageText);
|
|
246
|
+
}
|
|
247
|
+
this.add(children);
|
|
248
|
+
}
|
|
249
|
+
updateProgressBar() {
|
|
250
|
+
if (!this.radialArc)
|
|
251
|
+
return;
|
|
252
|
+
this.radialArc.clear();
|
|
253
|
+
const startAngleRad = Phaser.Math.DegToRad(this.startAngle);
|
|
254
|
+
const sweepRad = Phaser.Math.DegToRad((this.currentProgress / A_HUNDRED) * THREE_SIXTY);
|
|
255
|
+
const endAngleRad = startAngleRad + sweepRad;
|
|
256
|
+
const isFullCircle = this.currentProgress >= A_HUNDRED;
|
|
257
|
+
this.radialArc.lineStyle(this.thickness, this.pw.color.hex(this.progressColor), 1);
|
|
258
|
+
this.radialArc.beginPath();
|
|
259
|
+
if (isFullCircle) {
|
|
260
|
+
this.radialArc.arc(0, 0, this.radius, 0, Phaser.Math.PI2, false);
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
this.radialArc.arc(0, 0, this.radius, startAngleRad, endAngleRad, false);
|
|
264
|
+
}
|
|
265
|
+
this.radialArc.strokePath();
|
|
266
|
+
}
|
|
267
|
+
updatePercentageText() {
|
|
268
|
+
if (this.percentageText) {
|
|
269
|
+
this.percentageText.setText(`${Math.round(this.currentProgress)}%`);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
recreateSprites() {
|
|
273
|
+
const children = [this.backgroundProgressBar, this.radialArc];
|
|
274
|
+
if (this.percentageText) {
|
|
275
|
+
children.push(this.percentageText);
|
|
276
|
+
}
|
|
277
|
+
this.remove(children);
|
|
278
|
+
this.backgroundProgressBar.destroy();
|
|
279
|
+
this.radialArc.destroy();
|
|
280
|
+
if (this.percentageText) {
|
|
281
|
+
this.percentageText.destroy();
|
|
282
|
+
this.percentageText = undefined;
|
|
283
|
+
}
|
|
284
|
+
this.createBackgroundSprite();
|
|
285
|
+
this.createRadialArc();
|
|
286
|
+
if (this.showText) {
|
|
287
|
+
this.createPercentageText();
|
|
288
|
+
}
|
|
289
|
+
this.setupContainer();
|
|
290
|
+
this.updateProgressBar();
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
//# sourceMappingURL=radial-progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radial-progress.js","sourceRoot":"","sources":["../../../src/components/radial-progress/radial-progress.ts"],"names":[],"mappings":"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"}
|